Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / MsmqIntegration / MsmqIntegrationInputMessage.cs / 1 / MsmqIntegrationInputMessage.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel.MsmqIntegration { using System.ServiceModel.Channels; class MsmqIntegrationInputMessage : MsmqInputMessage { ByteProperty acknowledge; StringProperty adminQueue; IntProperty adminQueueLength; IntProperty appSpecific; IntProperty arrivedTime; IntProperty senderIdType; ByteProperty authenticated; IntProperty bodyType; BufferProperty correlationId; StringProperty destinationQueue; IntProperty destinationQueueLength; BufferProperty extension; IntProperty extensionLength; StringProperty label; IntProperty labelLength; ByteProperty priority; StringProperty responseFormatName; IntProperty responseFormatNameLength; IntProperty sentTime; IntProperty timeToReachQueue; IntProperty privacyLevel; const int initialQueueNameLength = 256; const int initialExtensionLength = 0; const int initialLabelLength = 128; const int maxSize = 4 * 1024 * 1024; public MsmqIntegrationInputMessage() : this(maxSize) {} public MsmqIntegrationInputMessage(int maxBufferSize) : this(new SizeQuota(maxBufferSize)) {} protected MsmqIntegrationInputMessage(SizeQuota bufferSizeQuota) : base(22, bufferSizeQuota) { this.acknowledge = new ByteProperty(this, UnsafeNativeMethods.PROPID_M_ACKNOWLEDGE); this.adminQueue = new StringProperty(this, UnsafeNativeMethods.PROPID_M_ADMIN_QUEUE, initialQueueNameLength); this.adminQueueLength = new IntProperty(this, UnsafeNativeMethods.PROPID_M_ADMIN_QUEUE_LEN, initialQueueNameLength); this.appSpecific = new IntProperty(this, UnsafeNativeMethods.PROPID_M_APPSPECIFIC); this.arrivedTime = new IntProperty(this, UnsafeNativeMethods.PROPID_M_ARRIVEDTIME); this.senderIdType = new IntProperty(this, UnsafeNativeMethods.PROPID_M_SENDERID_TYPE); this.authenticated = new ByteProperty(this, UnsafeNativeMethods.PROPID_M_AUTHENTICATED); this.bodyType = new IntProperty(this, UnsafeNativeMethods.PROPID_M_BODY_TYPE); this.correlationId = new BufferProperty(this, UnsafeNativeMethods.PROPID_M_CORRELATIONID, UnsafeNativeMethods.PROPID_M_CORRELATIONID_SIZE); this.destinationQueue = new StringProperty(this, UnsafeNativeMethods.PROPID_M_DEST_FORMAT_NAME, initialQueueNameLength); this.destinationQueueLength = new IntProperty(this, UnsafeNativeMethods.PROPID_M_DEST_FORMAT_NAME_LEN, initialQueueNameLength); this.extension = new BufferProperty(this, UnsafeNativeMethods.PROPID_M_EXTENSION, bufferSizeQuota.AllocIfAvailable(initialExtensionLength)); this.extensionLength = new IntProperty(this, UnsafeNativeMethods.PROPID_M_EXTENSION_LEN, initialExtensionLength); this.label = new StringProperty(this, UnsafeNativeMethods.PROPID_M_LABEL, initialLabelLength); this.labelLength = new IntProperty(this, UnsafeNativeMethods.PROPID_M_LABEL_LEN, initialLabelLength); this.priority = new ByteProperty(this, UnsafeNativeMethods.PROPID_M_PRIORITY); this.responseFormatName = new StringProperty(this, UnsafeNativeMethods.PROPID_M_RESP_FORMAT_NAME, initialQueueNameLength); this.responseFormatNameLength = new IntProperty(this, UnsafeNativeMethods.PROPID_M_RESP_FORMAT_NAME_LEN, initialQueueNameLength); this.sentTime = new IntProperty(this, UnsafeNativeMethods.PROPID_M_SENTTIME); this.timeToReachQueue = new IntProperty(this, UnsafeNativeMethods.PROPID_M_TIME_TO_REACH_QUEUE); this.privacyLevel = new IntProperty(this, UnsafeNativeMethods.PROPID_M_PRIV_LEVEL); } protected override void OnGrowBuffers(SizeQuota bufferSizeQuota) { base.OnGrowBuffers(bufferSizeQuota); this.adminQueue.EnsureValueLength(this.adminQueueLength.Value); this.responseFormatName.EnsureValueLength(this.responseFormatNameLength.Value); this.destinationQueue.EnsureValueLength(this.destinationQueueLength.Value); this.label.EnsureValueLength(this.labelLength.Value); bufferSizeQuota.Alloc(this.extensionLength.Value); this.extension.EnsureBufferLength(this.extensionLength.Value); } public void SetMessageProperties(MsmqIntegrationMessageProperty property) { property.AcknowledgeType = (System.Messaging.AcknowledgeTypes)this.acknowledge.Value; property.Acknowledgment =(System.Messaging.Acknowledgment)this.Class.Value; property.AdministrationQueue = GetQueueName(this.adminQueue.GetValue(this.adminQueueLength.Value)); property.AppSpecific = this.appSpecific.Value; property.ArrivedTime = MsmqDateTime.ToDateTime(this.arrivedTime.Value).ToLocalTime(); property.Authenticated = this.authenticated.Value != 0; property.BodyType = this.bodyType.Value; property.CorrelationId =MsmqMessageId.ToString(this.correlationId.Buffer); property.DestinationQueue = GetQueueName(this.destinationQueue.GetValue(this.destinationQueueLength.Value)); property.Extension = this.extension.GetBufferCopy(this.extensionLength.Value); property.Id = MsmqMessageId.ToString(this.MessageId.Buffer); property.Label = this.label.GetValue(this.labelLength.Value); if (this.Class.Value == UnsafeNativeMethods.MQMSG_CLASS_NORMAL) property.MessageType = System.Messaging.MessageType.Normal; else if (this.Class.Value == UnsafeNativeMethods.MQMSG_CLASS_REPORT) property.MessageType = System.Messaging.MessageType.Report; else property.MessageType = System.Messaging.MessageType.Acknowledgment; property.Priority = (System.Messaging.MessagePriority)this.priority.Value; property.ResponseQueue = GetQueueName(this.responseFormatName.GetValue(this.responseFormatNameLength.Value)); property.SenderId = this.SenderId.GetBufferCopy(this.SenderIdLength.Value); property.SentTime = MsmqDateTime.ToDateTime(this.sentTime.Value).ToLocalTime(); property.InternalSetTimeToReachQueue(MsmqDuration.ToTimeSpan(this.timeToReachQueue.Value)); } static Uri GetQueueName(string formatName) { if (String.IsNullOrEmpty(formatName)) return null; else return new Uri("msmq.formatname:" + formatName); } } } // 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
- Menu.cs
- StandardToolWindows.cs
- Expander.cs
- ColumnHeaderCollectionEditor.cs
- HashSetDebugView.cs
- CodeTryCatchFinallyStatement.cs
- XamlClipboardData.cs
- NotifyParentPropertyAttribute.cs
- QueueProcessor.cs
- SocketInformation.cs
- HttpModuleCollection.cs
- connectionpool.cs
- ParagraphVisual.cs
- ConnectionStringsExpressionBuilder.cs
- InlineUIContainer.cs
- PrintController.cs
- ExtenderHelpers.cs
- Memoizer.cs
- DataViewListener.cs
- GZipDecoder.cs
- HttpRuntimeSection.cs
- GridViewEditEventArgs.cs
- InfoCardCryptoHelper.cs
- StringUtil.cs
- SelectionUIService.cs
- LoadedOrUnloadedOperation.cs
- XMLSchema.cs
- CollectionViewGroupRoot.cs
- ListViewSortEventArgs.cs
- safelink.cs
- XmlSchemaObjectTable.cs
- Rule.cs
- ApplicationContext.cs
- CompositeDesignerAccessibleObject.cs
- DataGridViewAddColumnDialog.cs
- KeyPressEvent.cs
- EntityViewGenerationAttribute.cs
- RelationalExpressions.cs
- FactoryRecord.cs
- GPRECTF.cs
- TextPattern.cs
- TdsParserHelperClasses.cs
- HttpDebugHandler.cs
- SqlTypeConverter.cs
- InfoCardSchemas.cs
- WindowsScrollBar.cs
- ActivityExecutorOperation.cs
- Range.cs
- MSAAWinEventWrap.cs
- RuntimeConfig.cs
- documentsequencetextpointer.cs
- Int32KeyFrameCollection.cs
- TabControlEvent.cs
- CommonXSendMessage.cs
- KeyboardDevice.cs
- DbDataRecord.cs
- Rotation3DAnimation.cs
- RemoteWebConfigurationHostStream.cs
- WebPartAuthorizationEventArgs.cs
- XamlWriter.cs
- WinInet.cs
- IndexedEnumerable.cs
- SuppressMessageAttribute.cs
- HotSpotCollection.cs
- InvalidFilterCriteriaException.cs
- FrameworkContextData.cs
- EventPropertyMap.cs
- SimplePropertyEntry.cs
- SkewTransform.cs
- SuppressIldasmAttribute.cs
- RegexCompiler.cs
- ToolStripContainerDesigner.cs
- SerialReceived.cs
- FlowDocumentPage.cs
- SqlMetaData.cs
- Console.cs
- ColorTransformHelper.cs
- AssociatedControlConverter.cs
- CommandEventArgs.cs
- XmlReflectionImporter.cs
- PointCollection.cs
- DocumentsTrace.cs
- SafeFileMappingHandle.cs
- MethodToken.cs
- SQLDateTime.cs
- SafeThreadHandle.cs
- ClientTargetCollection.cs
- HtmlButton.cs
- ClrProviderManifest.cs
- PersistenceException.cs
- NotificationContext.cs
- InvalidWMPVersionException.cs
- EntityKeyElement.cs
- Rect.cs
- ShapingWorkspace.cs
- SafeNativeMethodsCLR.cs
- LexicalChunk.cs
- MessageQueueInstaller.cs
- BitmapScalingModeValidation.cs
- TimeStampChecker.cs