Microsoft.Protocols.TestTools.StackSdk.RemoteDesktop.Rdpbcgr.Client_MCS_Connect_Initial_Pdu_with_GCC_Conference_Create_Request.Clone C# (CSharp) Method

Clone() public method

Create an instance of the class that is identical to the current PDU.
public Clone ( ) : StackPacket
return StackPacket
        public override StackPacket Clone()
        {
            Client_MCS_Connect_Initial_Pdu_with_GCC_Conference_Create_Request cloneMCSInitialPdu =
               new Client_MCS_Connect_Initial_Pdu_with_GCC_Conference_Create_Request(context);

            cloneMCSInitialPdu.tpktHeader = tpktHeader;
            cloneMCSInitialPdu.x224Data = x224Data;
            if (mcsCi != null)
            {
                cloneMCSInitialPdu.mcsCi = new MCSConnectInitial();
                cloneMCSInitialPdu.mcsCi.calledDomainSelector = RdpbcgrUtility.CloneByteArray(mcsCi.calledDomainSelector);
                cloneMCSInitialPdu.mcsCi.callingDomainSelector = RdpbcgrUtility.CloneByteArray(mcsCi.callingDomainSelector);
                cloneMCSInitialPdu.mcsCi.maximumParameters = mcsCi.maximumParameters;
                cloneMCSInitialPdu.mcsCi.minimumParameters = mcsCi.minimumParameters;
                cloneMCSInitialPdu.mcsCi.targetParameters = mcsCi.targetParameters;
                cloneMCSInitialPdu.mcsCi.upwardFlag = mcsCi.upwardFlag;

                if (mcsCi.gccPdu != null)
                {
                    #region clone mcsCi.gccPdu filed
                    cloneMCSInitialPdu.mcsCi.gccPdu = new ConnectGCC();
                    cloneMCSInitialPdu.mcsCi.gccPdu.callerIdentifier = mcsCi.gccPdu.callerIdentifier;
                    cloneMCSInitialPdu.mcsCi.gccPdu.conductedPrivileges =
                        (mcsCi.gccPdu.conductedPrivileges == null) ?
                        null : (int[])mcsCi.gccPdu.conductedPrivileges.Clone();
                    cloneMCSInitialPdu.mcsCi.gccPdu.conductibleConference = mcsCi.gccPdu.conductibleConference;
                    cloneMCSInitialPdu.mcsCi.gccPdu.conductorPrivileges =
                        (mcsCi.gccPdu.conductorPrivileges == null) ?
                        null : (int[])mcsCi.gccPdu.conductorPrivileges.Clone();
                    cloneMCSInitialPdu.mcsCi.gccPdu.conferenceDescription = mcsCi.gccPdu.conferenceDescription;
                    cloneMCSInitialPdu.mcsCi.gccPdu.conferenceName = mcsCi.gccPdu.conferenceName;
                    cloneMCSInitialPdu.mcsCi.gccPdu.convenerPassword = mcsCi.gccPdu.convenerPassword;
                    cloneMCSInitialPdu.mcsCi.gccPdu.h221Key = mcsCi.gccPdu.h221Key;
                    cloneMCSInitialPdu.mcsCi.gccPdu.listedConference = mcsCi.gccPdu.listedConference;
                    cloneMCSInitialPdu.mcsCi.gccPdu.lockedConference = mcsCi.gccPdu.lockedConference;
                    cloneMCSInitialPdu.mcsCi.gccPdu.nonConductedPrivileges =
                        (mcsCi.gccPdu.nonConductedPrivileges == null) ?
                        null : (int[])mcsCi.gccPdu.nonConductedPrivileges.Clone();
                    cloneMCSInitialPdu.mcsCi.gccPdu.password = mcsCi.gccPdu.password;
                    cloneMCSInitialPdu.mcsCi.gccPdu.terminationMethod = mcsCi.gccPdu.terminationMethod;

                    if (mcsCi.gccPdu.clientCoreData != null)
                    {
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientCoreData = new TS_UD_CS_CORE();
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientCoreData.header =
                            mcsCi.gccPdu.clientCoreData.header;
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientCoreData.version =
                            mcsCi.gccPdu.clientCoreData.version;
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientCoreData.desktopHeight =
                            mcsCi.gccPdu.clientCoreData.desktopHeight;
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientCoreData.desktopWidth =
                            mcsCi.gccPdu.clientCoreData.desktopWidth;
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientCoreData.colorDepth =
                            mcsCi.gccPdu.clientCoreData.colorDepth;
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientCoreData.SASSequence =
                            mcsCi.gccPdu.clientCoreData.SASSequence;
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientCoreData.keyboardLayout =
                            mcsCi.gccPdu.clientCoreData.keyboardLayout;
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientCoreData.clientBuild =
                            mcsCi.gccPdu.clientCoreData.clientBuild;
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientCoreData.clientDigProductId =
                            mcsCi.gccPdu.clientCoreData.clientDigProductId;
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientCoreData.clientName =
                            mcsCi.gccPdu.clientCoreData.clientName;
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientCoreData.clientProductId =
                            mcsCi.gccPdu.clientCoreData.clientProductId;
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientCoreData.connnectionType =
                            mcsCi.gccPdu.clientCoreData.connnectionType;
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientCoreData.earlyCapabilityFlags =
                            mcsCi.gccPdu.clientCoreData.earlyCapabilityFlags;
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientCoreData.highColorDepth =
                            mcsCi.gccPdu.clientCoreData.highColorDepth;
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientCoreData.imeFileName =
                            mcsCi.gccPdu.clientCoreData.imeFileName;
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientCoreData.keyboardFunctionKey =
                            mcsCi.gccPdu.clientCoreData.keyboardFunctionKey;
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientCoreData.keyboardSubType =
                            mcsCi.gccPdu.clientCoreData.keyboardSubType;
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientCoreData.keyboardType =
                            mcsCi.gccPdu.clientCoreData.keyboardType;
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientCoreData.pad1octets =
                            mcsCi.gccPdu.clientCoreData.pad1octets;
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientCoreData.postBeta2ColorDepth =
                            mcsCi.gccPdu.clientCoreData.postBeta2ColorDepth;
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientCoreData.serialNumber =
                            mcsCi.gccPdu.clientCoreData.serialNumber;
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientCoreData.serverSelectedProtocol =
                            mcsCi.gccPdu.clientCoreData.serverSelectedProtocol;
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientCoreData.supportedColorDepths =
                            mcsCi.gccPdu.clientCoreData.supportedColorDepths;
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientCoreData.desktopPhysicalWidth =
                            mcsCi.gccPdu.clientCoreData.desktopPhysicalWidth;
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientCoreData.desktopPhysicalHeight=
                            mcsCi.gccPdu.clientCoreData.desktopPhysicalHeight;
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientCoreData.desktopOrientation =
                            mcsCi.gccPdu.clientCoreData.desktopOrientation;
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientCoreData.desktopScaleFactor =
                            mcsCi.gccPdu.clientCoreData.desktopScaleFactor;
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientCoreData.deviceScaleFactor =
                            mcsCi.gccPdu.clientCoreData.deviceScaleFactor;
                    }

                    if (mcsCi.gccPdu.clientClusterData != null)
                    {
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientClusterData = new TS_UD_CS_CLUSTER();
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientClusterData.Flags =
                            mcsCi.gccPdu.clientClusterData.Flags;
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientClusterData.header =
                            mcsCi.gccPdu.clientClusterData.header;
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientClusterData.RedirectedSessionID =
                            mcsCi.gccPdu.clientClusterData.RedirectedSessionID;
                    }

                    if (mcsCi.gccPdu.clientMonitorData != null)
                    {
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientMonitorData = new TS_UD_CS_MONITOR();
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientMonitorData.Flags =
                            mcsCi.gccPdu.clientMonitorData.Flags;
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientMonitorData.header =
                            mcsCi.gccPdu.clientMonitorData.header;
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientMonitorData.monitorCount =
                            mcsCi.gccPdu.clientMonitorData.monitorCount;
                        if (mcsCi.gccPdu.clientMonitorData.monitorDefArray != null)
                        {
                            cloneMCSInitialPdu.mcsCi.gccPdu.clientMonitorData.monitorDefArray =
                                new Collection<TS_MONITOR_DEF>();
                            for (int count = 0; count < mcsCi.gccPdu.clientMonitorData.monitorDefArray.Count; count++)
                            {
                                cloneMCSInitialPdu.mcsCi.gccPdu.clientMonitorData.monitorDefArray.Add(
                                    mcsCi.gccPdu.clientMonitorData.monitorDefArray[count]);
                            }

                        }
                    }

                    if (mcsCi.gccPdu.clientNetworkData != null)
                    {
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientNetworkData = new TS_UD_CS_NET();
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientNetworkData.header =
                            mcsCi.gccPdu.clientNetworkData.header;
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientNetworkData.channelCount =
                            mcsCi.gccPdu.clientNetworkData.channelCount;
                        if (mcsCi.gccPdu.clientNetworkData.channelDefArray != null)
                        {
                            cloneMCSInitialPdu.mcsCi.gccPdu.clientNetworkData.channelDefArray =
                                new List<CHANNEL_DEF>();
                            cloneMCSInitialPdu.mcsCi.gccPdu.clientNetworkData.channelDefArray.AddRange
                                (mcsCi.gccPdu.clientNetworkData.channelDefArray);
                        }
                    }

                    if (mcsCi.gccPdu.clientSecurityData != null)
                    {
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientSecurityData = new TS_UD_CS_SEC();
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientSecurityData.encryptionMethods =
                            mcsCi.gccPdu.clientSecurityData.encryptionMethods;
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientSecurityData.extEncryptionMethods =
                            mcsCi.gccPdu.clientSecurityData.extEncryptionMethods;
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientSecurityData.header =
                            mcsCi.gccPdu.clientSecurityData.header;
                    }

                    if (mcsCi.gccPdu.clientMessageChannelData != null)
                    {
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientMessageChannelData = new TS_UD_CS_MCS_MSGCHANNEL();
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientMessageChannelData.header = mcsCi.gccPdu.clientMessageChannelData.header;
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientMessageChannelData.flags = mcsCi.gccPdu.clientMessageChannelData.flags;
                    }

                    if (mcsCi.gccPdu.clientMultitransportChannelData != null)
                    {
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientMultitransportChannelData = new TS_UD_CS_MULTITRANSPORT();
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientMultitransportChannelData.header = mcsCi.gccPdu.clientMultitransportChannelData.header;
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientMultitransportChannelData.flags = mcsCi.gccPdu.clientMultitransportChannelData.flags;
                    }

                    if (mcsCi.gccPdu.clientMonitorExtendedData != null)
                    {
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientMonitorExtendedData = new TS_UD_CS_MONITOR_EX();
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientMonitorExtendedData.header = mcsCi.gccPdu.clientMonitorExtendedData.header;
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientMonitorExtendedData.flags = mcsCi.gccPdu.clientMonitorExtendedData.flags;
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientMonitorExtendedData.monitorAttributeSize = mcsCi.gccPdu.clientMonitorExtendedData.monitorAttributeSize;
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientMonitorExtendedData.monitorCount = mcsCi.gccPdu.clientMonitorExtendedData.monitorCount;

                        List<TS_MONITOR_ATTRIBUTES> attributes = new List<TS_MONITOR_ATTRIBUTES>();
                        foreach (TS_MONITOR_ATTRIBUTES attribute in mcsCi.gccPdu.clientMonitorExtendedData.monitorAttributesArray)
                        {
                            attributes.Add(attribute.Clone());
                        }
                        cloneMCSInitialPdu.mcsCi.gccPdu.clientMonitorExtendedData.monitorAttributesArray = attributes.ToArray();

                    }
                    #endregion clone mcsCi.gccPdu filed
                }
            }

            return cloneMCSInitialPdu;
        }