Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Base / MS / Internal / IO / Packaging / CompoundFile / UserUseLicenseDictionaryLoader.cs / 1305600 / UserUseLicenseDictionaryLoader.cs
//------------------------------------------------------------------------------
//
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//
// Description:
// This class is a helper to load a set of associations between a user and the use license
// granted to that user.
//
// History:
// 04/19/2005: LGolding: Initial implementation.
// 03/08/2006: IgorBel: switch from a dictionary to a Load helper
//
//
//-----------------------------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Text;
using System.IO;
using System.IO.Packaging;
using System.Windows;
using System.Security.RightsManagement;
using MS.Internal;
namespace MS.Internal.IO.Packaging.CompoundFile
{
internal class UserUseLicenseDictionaryLoader
{
//-----------------------------------------------------
//
// Constructors
//
//-----------------------------------------------------
#region Constructors
///
/// Constructor.
///
internal UserUseLicenseDictionaryLoader(RightsManagementEncryptionTransform rmet)
{
_dict = new Dictionary(ContentUser._contentUserComparer);
//
// This constructor is only called from RightsManagementEncryptionTransform
// .GetEmbeddedUseLicenses. That method passes "this" as the parameter.
// So it can't possibly be null.
//
Invariant.Assert(rmet != null);
Load(rmet);
}
#endregion Constructors
//------------------------------------------------------
//
// Internal Properties
//
//-----------------------------------------------------
#region Internal Properties
internal Dictionary LoadedDictionary
{
get
{
return _dict;
}
}
#endregion Internal Properties
//------------------------------------------------------
//
// Private Methods
//
//------------------------------------------------------
#region Private Methods
///
/// Load the contents of the dictionary from the compound file.
///
///
/// The object that knows how to load use license data from the compound file.
///
///
/// If is null.
///
private void Load(RightsManagementEncryptionTransform rmet )
{
rmet.EnumUseLicenseStreams(
new RightsManagementEncryptionTransform.UseLicenseStreamCallback(
this.AddUseLicenseFromStreamToDictionary
),
null
);
}
///
/// Callback function used by Load. Called once for each use license stream
/// in the compound file. Extracts the user and use license from the specified
/// stream.
///
///
/// The object that knows how to extract license information from the compound file.
///
///
/// The stream containing the user/user license pair to be added to the dictionary.
///
///
/// Caller-supplied parameter to EnumUseLicenseStreams. Not used.
///
///
/// Set to true if the callback function wants to stop the enumeration. This callback
/// function never wants to stop the enumeration, so this parameter is not used.
///
private void
AddUseLicenseFromStreamToDictionary(
RightsManagementEncryptionTransform rmet,
StreamInfo si,
object param,
ref bool stop
)
{
ContentUser user;
using (Stream stream = si.GetStream(FileMode.Open, FileAccess.Read))
{
using(BinaryReader utf8Reader = new BinaryReader(stream, _utf8Encoding))
{
UseLicense useLicense = rmet.LoadUseLicenseAndUserFromStream(utf8Reader, out user);
_dict.Add(user, useLicense);
}
}
}
#endregion Private Methods
//-----------------------------------------------------
//
// Private Fields
//
//------------------------------------------------------
#region Private Fields
//
// The object that provides the implementation of the IDictionary methods.
//
private Dictionary _dict;
//
// Text encoding object used to read or write publish licenses and use licenses.
//
private UTF8Encoding _utf8Encoding = new UTF8Encoding();
#endregion Private Fields
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- MarshalDirectiveException.cs
- BitmapEffectOutputConnector.cs
- PackWebRequest.cs
- UrlPath.cs
- XPathArrayIterator.cs
- SoapHelper.cs
- PrinterResolution.cs
- DefaultHttpHandler.cs
- EncoderFallback.cs
- SqlDataSource.cs
- XmlAttributes.cs
- Root.cs
- PathTooLongException.cs
- DtdParser.cs
- PublisherIdentityPermission.cs
- ProviderUtil.cs
- InfoCardCryptoHelper.cs
- SqlUserDefinedTypeAttribute.cs
- CompiledIdentityConstraint.cs
- Hash.cs
- DefaultClaimSet.cs
- ProviderCommandInfoUtils.cs
- HotCommands.cs
- NullReferenceException.cs
- ExtensibleClassFactory.cs
- OleDbMetaDataFactory.cs
- TimeZone.cs
- CatalogPartChrome.cs
- DelegateHelpers.cs
- StringHelper.cs
- Permission.cs
- PictureBoxDesigner.cs
- UnsafeNativeMethods.cs
- FullTextState.cs
- ThreadAttributes.cs
- CryptoApi.cs
- HiddenField.cs
- CertificateManager.cs
- TemplateBaseAction.cs
- DataColumnMappingCollection.cs
- DrawingImage.cs
- MaskedTextProvider.cs
- SubpageParagraph.cs
- Application.cs
- TextRange.cs
- SerialPort.cs
- SplitContainer.cs
- EventlogProvider.cs
- RuleInfoComparer.cs
- IdentityReference.cs
- IRCollection.cs
- ImmutableObjectAttribute.cs
- ThreadPool.cs
- ConfigurationSchemaErrors.cs
- DataGrid.cs
- FontNameEditor.cs
- TimelineCollection.cs
- SqlFacetAttribute.cs
- RawUIStateInputReport.cs
- ZipFileInfoCollection.cs
- CalendarDay.cs
- NameValueCollection.cs
- DataGridCellItemAutomationPeer.cs
- ScriptModule.cs
- RouteTable.cs
- PtsPage.cs
- SQLRoleProvider.cs
- CursorInteropHelper.cs
- Accessible.cs
- ExponentialEase.cs
- GlobalAllocSafeHandle.cs
- XmlBaseReader.cs
- TabControl.cs
- ImageDrawing.cs
- SmiRecordBuffer.cs
- HttpResponseInternalWrapper.cs
- QilGeneratorEnv.cs
- ConstraintConverter.cs
- Main.cs
- ByteRangeDownloader.cs
- ProgressBarAutomationPeer.cs
- DataGridViewCheckBoxCell.cs
- x509store.cs
- ServerReliableChannelBinder.cs
- KnownTypesHelper.cs
- UrlPath.cs
- InputLanguage.cs
- ScriptServiceAttribute.cs
- ValidatorUtils.cs
- DataSourceControlBuilder.cs
- BinaryObjectReader.cs
- Convert.cs
- BamlRecordWriter.cs
- EntryIndex.cs
- ValueUtilsSmi.cs
- RawStylusInputReport.cs
- TargetParameterCountException.cs
- AsymmetricSecurityProtocol.cs
- ResolveResponse.cs
- updatecommandorderer.cs