Microsoft.Protocols.TestSuites.MS_OXCPRPT.MS_OXCPRPTAdapter.Session2ReadStream C# (CSharp) Method

Session2ReadStream() private method

Session get property value via RopReadStream.
private Session2ReadStream ( string objKey, PropertyTag propertyTag, bool &isPropertyFound ) : byte[]
objKey string String key to Indicates which object to be acted on.
propertyTag Microsoft.Protocols.TestSuites.Common.PropertyTag Property Tag.
isPropertyFound bool Indicates whether the property exists.
return byte[]
        private byte[] Session2ReadStream(string objKey, PropertyTag propertyTag, out bool isPropertyFound)
        {
            Dictionary<string, uint> objHandles = new Dictionary<string, uint>();
            uint logonHandle;
            uint folderHandle1;
            uint folderHandle2;
            uint msgHandle1;
            uint msgHandle2;
            uint attachmentHandle1;
            uint attachmentHandle2;

            OxcropsClient tempClient = this.oxcropsClient;
            this.oxcropsClient = this.oxcropsClientSession2;

            try
            {
                #region Preparation for getting object handles
                RopLogonResponse logonRes;
                RopOpenFolderResponse openFolderRes;
                RopOpenMessageResponse openMsgRes;
                RopOpenAttachmentResponse openAttRes;

                // Logon to mailbox.
                logonHandle = this.RopLogon(LogonType.Mailbox, out logonRes, Common.GetConfigurationPropertyValue("UserEssdn", this.Site), true);
                objHandles.Add("Logon", logonHandle);

                // Open inbox folder.
                uint inboxHandle = this.RopOpenFolder(logonHandle, out openFolderRes, logonRes.FolderIds[4], true);

                // Open testRoot folder.
                uint testRootHandle = this.RopOpenFolder(inboxHandle, out openFolderRes, rootFolderId, true);

                // Open testFolder1.
                folderHandle1 = this.RopOpenFolder(testRootHandle, out openFolderRes, cprptFolderId[0], true);
                objHandles.Add("Folder1", folderHandle1);

                // Open testFolder2.
                folderHandle2 = this.RopOpenFolder(testRootHandle, out openFolderRes, cprptFolderId[1], true);
                objHandles.Add("Folder2", folderHandle2);

                // For first folder open message1.
                msgHandle1 = this.RopOpenMessage(folderHandle1, cprptFolderId[0], cprptMessageId[0], out openMsgRes, true);
                objHandles.Add("Message1", msgHandle1);

                // For first folder open message2.
                msgHandle2 = this.RopOpenMessage(folderHandle1, cprptFolderId[0], cprptMessageId[1], out openMsgRes, true);
                objHandles.Add("Message2", msgHandle2);

                // For first message open attachment1.
                attachmentHandle1 = this.RopOpenAttachment(msgHandle1, cprptAttachmentId[0], out openAttRes, true);
                objHandles.Add("Attachment1", attachmentHandle1);

                // For first message open attachment2.
                attachmentHandle2 = this.RopOpenAttachment(msgHandle1, cprptAttachmentId[1], out openAttRes, true);
                objHandles.Add("Attachment2", attachmentHandle2);
                #endregion

                if (!objHandles.ContainsKey(objKey))
                {
                    this.oxcropsClient = tempClient;
                    Site.Assert.Fail("Invalid Object key for getting its Property value");
                }

                uint objHandle = objHandles[objKey];

                RopGetPropertiesAllResponse getAllRes;
                getAllRes = this.RopGetPropertiesAll(objHandle, 0, 0);
                foreach (TaggedPropertyValue taggedValue in getAllRes.PropertyValues)
                {
                    if (taggedValue.PropertyTag.PropertyId == propertyTag.PropertyId)
                    {
                        isPropertyFound = true;

                        // Open stream.
                        RopOpenStreamResponse openStreamRes;
                        uint streamHandle = this.RopOpenStream(objHandle, out openStreamRes, propertyTag, ConstValues.OpenModeFlagsReadWrite, true);

                        // Read stream.
                        RopReadStreamResponse readStreamRes;
                        readStreamRes = this.RopReadStream(streamHandle, ConstValues.StreamLengthByteCountIndicator, 0x70000000, true);
                        return readStreamRes.Data;
                    }
                }

                isPropertyFound = false;
                return new byte[0];
            }
            catch (System.IO.IOException exception)
            {
                this.Site.Log.Add(LogEntryKind.Comment, exception.Message);
                isPropertyFound = false;
                return null;
            }
            finally
            {
                this.oxcropsClient = tempClient;
            }
        }
MS_OXCPRPTAdapter