Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Channels / MsmqOutputMessage.cs / 1 / MsmqOutputMessage.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel.Channels { using System.Runtime.CompilerServices; using System.IdentityModel.Selectors; using System.IdentityModel.Tokens; using System.ServiceModel; using System.ServiceModel.Security; using System.Transactions; using System.ServiceModel.Security.Tokens; using System.Net.Security; using System.Security.Cryptography.X509Certificates; using SR = System.ServiceModel.SR; class MsmqOutputMessage: NativeMsmqMessage { BufferProperty body; IntProperty bodyType; ByteProperty delivery; IntProperty timeToReachQueue; IntProperty timeToBeReceived; ByteProperty journal; StringProperty deadLetterQueue; IntProperty senderIdType; IntProperty authLevel; BufferProperty senderCert; IntProperty privLevel; ByteProperty trace; BufferProperty messageId; IntProperty encryptionAlgorithm; IntProperty hashAlgorithm; public MsmqOutputMessage(MsmqChannelFactoryBase factory, int bodySize, EndpointAddress remoteAddress) : this(factory, bodySize, remoteAddress, 0) { } protected MsmqOutputMessage(MsmqChannelFactoryBase factory, int bodySize, EndpointAddress remoteAddress, int additionalPropertyCount) : base(15 + additionalPropertyCount) { this.body = new BufferProperty(this, UnsafeNativeMethods.PROPID_M_BODY, bodySize); this.messageId = new BufferProperty(this, UnsafeNativeMethods.PROPID_M_MSGID, UnsafeNativeMethods.PROPID_M_MSGID_SIZE); EnsureBodyTypeProperty(UnsafeNativeMethods.VT_VECTOR | UnsafeNativeMethods.VT_UI1); EnsureJournalProperty((byte)UnsafeNativeMethods.MQMSG_JOURNAL, factory.UseSourceJournal); this.delivery = new ByteProperty(this, UnsafeNativeMethods.PROPID_M_DELIVERY); if (factory.Durable) { this.delivery.Value = (byte)UnsafeNativeMethods.MQMSG_DELIVERY_RECOVERABLE; } else { this.delivery.Value = (byte)UnsafeNativeMethods.MQMSG_DELIVERY_EXPRESS; } if (factory.TimeToLive != TimeSpan.MaxValue) { int totalSeconds = MsmqDuration.FromTimeSpan(factory.TimeToLive); EnsureTimeToReachQueueProperty(totalSeconds); this.timeToBeReceived = new IntProperty(this, UnsafeNativeMethods.PROPID_M_TIME_TO_BE_RECEIVED, totalSeconds); } switch (factory.DeadLetterQueue) { case DeadLetterQueue.None: EnsureJournalProperty((byte)UnsafeNativeMethods.MQMSG_DEADLETTER, false); break; case DeadLetterQueue.System: EnsureJournalProperty((byte)UnsafeNativeMethods.MQMSG_DEADLETTER, true); break; case DeadLetterQueue.Custom: EnsureJournalProperty((byte)UnsafeNativeMethods.MQMSG_DEADLETTER, true); EnsureDeadLetterQueueProperty(factory.DeadLetterQueuePathName); break; } if (MsmqAuthenticationMode.WindowsDomain == factory.MsmqTransportSecurity.MsmqAuthenticationMode) { EnsureSenderIdTypeProperty(UnsafeNativeMethods.MQMSG_SENDERID_TYPE_SID); this.authLevel = new IntProperty(this, UnsafeNativeMethods.PROPID_M_AUTH_LEVEL, UnsafeNativeMethods.MQMSG_AUTH_LEVEL_ALWAYS); this.hashAlgorithm = new IntProperty( this, UnsafeNativeMethods.PROPID_M_HASH_ALG, MsmqSecureHashAlgorithmHelper.ToInt32(factory.MsmqTransportSecurity.MsmqSecureHashAlgorithm)); if (ProtectionLevel.EncryptAndSign == factory.MsmqTransportSecurity.MsmqProtectionLevel) { this.privLevel = new IntProperty(this, UnsafeNativeMethods.PROPID_M_PRIV_LEVEL, UnsafeNativeMethods.MQMSG_PRIV_LEVEL_BODY_ENHANCED); this.encryptionAlgorithm = new IntProperty( this, UnsafeNativeMethods.PROPID_M_ENCRYPTION_ALG, MsmqEncryptionAlgorithmHelper.ToInt32(factory.MsmqTransportSecurity.MsmqEncryptionAlgorithm)); } } else if (MsmqAuthenticationMode.Certificate == factory.MsmqTransportSecurity.MsmqAuthenticationMode) { this.authLevel = new IntProperty(this, UnsafeNativeMethods.PROPID_M_AUTH_LEVEL, UnsafeNativeMethods.MQMSG_AUTH_LEVEL_ALWAYS); this.hashAlgorithm = new IntProperty( this, UnsafeNativeMethods.PROPID_M_HASH_ALG, MsmqSecureHashAlgorithmHelper.ToInt32(factory.MsmqTransportSecurity.MsmqSecureHashAlgorithm)); if (ProtectionLevel.EncryptAndSign == factory.MsmqTransportSecurity.MsmqProtectionLevel) { this.privLevel = new IntProperty(this, UnsafeNativeMethods.PROPID_M_PRIV_LEVEL, UnsafeNativeMethods.MQMSG_PRIV_LEVEL_BODY_ENHANCED); this.encryptionAlgorithm = new IntProperty( this, UnsafeNativeMethods.PROPID_M_ENCRYPTION_ALG, MsmqEncryptionAlgorithmHelper.ToInt32(factory.MsmqTransportSecurity.MsmqEncryptionAlgorithm)); } EnsureSenderIdTypeProperty(UnsafeNativeMethods.MQMSG_SENDERID_TYPE_NONE); this.senderCert = new BufferProperty(this, UnsafeNativeMethods.PROPID_M_SENDER_CERT); } else { this.authLevel = new IntProperty(this, UnsafeNativeMethods.PROPID_M_AUTH_LEVEL, UnsafeNativeMethods.MQMSG_AUTH_LEVEL_NONE); EnsureSenderIdTypeProperty(UnsafeNativeMethods.MQMSG_SENDERID_TYPE_NONE); } this.trace = new ByteProperty(this, UnsafeNativeMethods.PROPID_M_TRACE, (byte)(factory.UseMsmqTracing ? UnsafeNativeMethods.MQMSG_SEND_ROUTE_TO_REPORT_QUEUE : UnsafeNativeMethods.MQMSG_TRACE_NONE)); } public BufferProperty Body { get { return this.body; } } public BufferProperty MessageId { get { return this.messageId; } } internal void ApplyCertificateIfNeeded(SecurityTokenProviderContainer certificateTokenProvider, MsmqAuthenticationMode authenticationMode, TimeSpan timeout) { if (MsmqAuthenticationMode.Certificate == authenticationMode) { if (certificateTokenProvider == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("certificateTokenProvider"); } X509Certificate2 clientCertificate = certificateTokenProvider.GetCertificate(timeout); if (clientCertificate == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperCritical(new InvalidOperationException(SR.GetString(SR.MsmqCertificateNotFound))); this.senderCert.SetBufferReference(clientCertificate.GetRawCertData()); } } protected void EnsureBodyTypeProperty(int value) { if (this.bodyType == null) { this.bodyType = new IntProperty(this, UnsafeNativeMethods.PROPID_M_BODY_TYPE); } this.bodyType.Value = value; } protected void EnsureDeadLetterQueueProperty(string value) { if (value.Length > 0) { if (this.deadLetterQueue == null) { this.deadLetterQueue = new StringProperty(this, UnsafeNativeMethods.PROPID_M_DEADLETTER_QUEUE, value); } else { this.deadLetterQueue.SetValue(value); } } } protected void EnsureSenderIdTypeProperty(int value) { if (this.senderIdType == null) { this.senderIdType = new IntProperty(this, UnsafeNativeMethods.PROPID_M_SENDERID_TYPE); } this.senderIdType.Value = value; } protected void EnsureTimeToReachQueueProperty(int value) { if (this.timeToReachQueue == null) { this.timeToReachQueue = new IntProperty(this, UnsafeNativeMethods.PROPID_M_TIME_TO_REACH_QUEUE); } this.timeToReachQueue.Value = value; } protected void EnsureJournalProperty(byte flag, bool isFlagSet) { if (this.journal == null) { this.journal = new ByteProperty(this, UnsafeNativeMethods.PROPID_M_JOURNAL); } if (isFlagSet) { this.journal.Value |= flag; } else { this.journal.Value &= (byte)~flag; } } } } // 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
- DataTransferEventArgs.cs
- ResXDataNode.cs
- AddValidationError.cs
- MenuEventArgs.cs
- EntityCommandCompilationException.cs
- StyleHelper.cs
- StringValidatorAttribute.cs
- WebPartDescriptionCollection.cs
- ProviderSettings.cs
- FullTrustAssembly.cs
- EventLogEntryCollection.cs
- DataGridViewCellMouseEventArgs.cs
- ParameterCollection.cs
- PrimarySelectionAdorner.cs
- PrivilegeNotHeldException.cs
- MulticastNotSupportedException.cs
- Image.cs
- ActivityInstance.cs
- XmlAttributes.cs
- HGlobalSafeHandle.cs
- GB18030Encoding.cs
- BehaviorEditorPart.cs
- ReadContentAsBinaryHelper.cs
- QuaternionRotation3D.cs
- RequestQueue.cs
- HttpWebResponse.cs
- AssociatedControlConverter.cs
- PauseStoryboard.cs
- RegexNode.cs
- PerformanceCounterPermissionEntryCollection.cs
- SqlCommand.cs
- BindingListCollectionView.cs
- IdentifierCreationService.cs
- RoutedEventArgs.cs
- ToolStripContentPanel.cs
- QueryReaderSettings.cs
- SMSvcHost.cs
- RequestCacheManager.cs
- EndEvent.cs
- __ComObject.cs
- OdbcReferenceCollection.cs
- DataContractJsonSerializer.cs
- ListView.cs
- ControlBuilder.cs
- XmlMapping.cs
- PropertyTabAttribute.cs
- UniqueEventHelper.cs
- XmlSchemaImporter.cs
- WebPartActionVerb.cs
- httpserverutility.cs
- IISMapPath.cs
- DesignerVerbCollection.cs
- CharEntityEncoderFallback.cs
- DeleteStoreRequest.cs
- SqlCacheDependencyDatabase.cs
- GridSplitterAutomationPeer.cs
- TextLineBreak.cs
- AnnotationComponentChooser.cs
- RangeContentEnumerator.cs
- DataGridViewCellValidatingEventArgs.cs
- LinqDataSourceEditData.cs
- MatrixValueSerializer.cs
- AvTrace.cs
- WebConfigurationHostFileChange.cs
- Delegate.cs
- SemanticTag.cs
- securitycriticaldataClass.cs
- WebEvents.cs
- HtmlLink.cs
- TypeExtensions.cs
- Vector3DAnimationUsingKeyFrames.cs
- PrinterUnitConvert.cs
- DataGridViewCellStyleConverter.cs
- OneOfScalarConst.cs
- Size.cs
- EncoderReplacementFallback.cs
- BatchParser.cs
- DetailsViewDeletedEventArgs.cs
- PrimitiveXmlSerializers.cs
- TableRow.cs
- _emptywebproxy.cs
- BamlLocalizer.cs
- WindowsRegion.cs
- DoubleUtil.cs
- RectKeyFrameCollection.cs
- TypeElement.cs
- AncillaryOps.cs
- HostedTransportConfigurationManager.cs
- BamlBinaryReader.cs
- DigestComparer.cs
- SqlDataSourceView.cs
- ConditionCollection.cs
- Rule.cs
- BrowserCapabilitiesCompiler.cs
- FullTextLine.cs
- DataServiceClientException.cs
- PersonalizableTypeEntry.cs
- MethodImplAttribute.cs
- TextElementEnumerator.cs
- OleCmdHelper.cs