/// <summary>
        /// Constructor
        /// </summary>
        /// <param name="context"></param>
        public Rdpbcgr_DVCClientTransport(RdpbcgrClientContext context)
        {
            this.context = context;

            if (context.SVCManager == null)
            {
                throw new NotSupportedException("Cannot get SVC from RDPBCGR connection for RDPEDYC, this transport must be created after RDPBCGR connection established.");
            }

            channel = context.SVCManager.GetChannelByName(StaticVirtualChannelName.RDPEDYC);
            if (channel == null)
            {
                throw new NotSupportedException("Cannot get SVC from RDPBCGR connection for RDPEDYC, the static virtual channel is not created.");
            }

            channel.Received += ReceivedBytes;
            if (!context.SVCManager.IsRunning)
            {
                // Must start the SVC manager here, so as to make sure the first packet of RDPEDYC can be processed
                context.SVCManager.Start();
            }

            decoder = new ClientDecodingPduBuilder();
            pduBuilder = new PduBuilder();
        }
        /// <summary>
        /// RDPBCGR Decoder Constructor
        /// </summary>
        /// <param name="rdpbcgrClient">client</param>
        /// <param name="rdpbcgrClientContext">client context</param>
        public RdpbcgrDecoder(RdpbcgrClient rdpbcgrClient, RdpbcgrClientContext rdpbcgrClientContext)
        {
            // initialize client
            client = rdpbcgrClient;

            // initialize client context
            clientContext = rdpbcgrClientContext;
        }
        /// <summary>
        /// Construcotr
        /// </summary>
        /// <param name="clientSessionContext"></param>
        /// <param name="transportType"></param>
        public Rdpemt_DVCClientTransport(RdpbcgrClientContext clientSessionContext, DynamicVC_TransportType transportType)
        {
            this.clientSessionContext = clientSessionContext;
            this.transportProtocol = Multitransport_Protocol_value.INITITATE_REQUEST_PROTOCOL_UDPFECR;
            if (transportType == DynamicVC_TransportType.RDP_UDP_Lossy)
            {
                this.transportProtocol = Multitransport_Protocol_value.INITITATE_REQUEST_PROTOCOL_UDPFECL;
            }

            EstablishTransportConnection();

            decoder = new ClientDecodingPduBuilder();
            pduBuilder = new PduBuilder();
        }
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="client"></param>
        /// <param name="context"></param>
        /// <param name="autoCreateChannel"></param>
        /// <param name="callBackMethodsDic"></param>
        public RdpedycClient(RdpbcgrClient client, RdpbcgrClientContext context, bool autoCreateChannel = true, Dictionary<string, ReceiveData> callBackMethodsDic = null)
        {
            this.rdpbcgrClient = client;
            this.clientSessionContext = context;
            transportDic = new Dictionary<DynamicVC_TransportType, IDVCTransport>();
            unprocessedDVCPacketBuffer = new List<UnprocessedDVCPDUInfo>();
            Rdpbcgr_DVCClientTransport transport = new Rdpbcgr_DVCClientTransport(context);

            channelDicbyId = new Dictionary<uint, DynamicVirtualChannel>();

            this.autoCreateChannel = autoCreateChannel;
            this.callBackMethodsDic = callBackMethodsDic;

            pduBuilder = new PduBuilder();

            transport.Received += ProcessPacketFromTCP;
            transportDic.Add(DynamicVC_TransportType.RDP_TCP, transport);
        }
예제 #5
0
 /// <summary>
 /// The constructor of the class.
 /// </summary>
 /// <param name="clientContext">Specify the context.</param>
 public Client_Shutdown_Request_Pdu(RdpbcgrClientContext clientContext)
     : base(clientContext)
 {
 }
예제 #6
0
 /// <summary>
 /// The constructor of the class.
 /// </summary>
 /// <param name="clientContext">Specify the context.</param>
 public Client_Security_Exchange_Pdu(RdpbcgrClientContext clientContext)
     : base(clientContext)
 {
 }
예제 #7
0
 /// <summary>
 /// The constructor of the class.
 /// </summary>
 /// <param name="clientContext">Specify the context.</param>
 public Client_Confirm_Active_Pdu(RdpbcgrClientContext clientContext)
     : base(clientContext)
 {
 }
예제 #8
0
 /// <summary>
 /// The constructor of the class.
 /// </summary>
 /// <param name="clientContext">Specify the context.</param>
 public TS_INPUT_PDU(RdpbcgrClientContext clientContext)
     : base(clientContext)
 {
 }
예제 #9
0
 /// <summary>
 /// The constructor of the class.
 /// </summary>
 /// <param name="clientContext">Specify the context.</param>
 protected RdpbcgrClientPdu(RdpbcgrClientContext clientContext)
 {
     context = clientContext;
 }
예제 #10
0
 /// <summary>
 /// The constructor of the class.
 /// </summary>
 /// <param name="clientContext">Specify the context.</param>
 public Client_X_224_Connection_Request_Pdu(RdpbcgrClientContext clientContext)
     : base(clientContext)
 {
 }
예제 #11
0
 /// <summary>
 /// The constructor of the class.
 /// </summary>
 /// <param name="clientContext">Specify the context.</param>
 public Client_MCS_Attach_User_Request(RdpbcgrClientContext clientContext)
     : base(clientContext)
 {
 }
예제 #12
0
 public Client_Initiate_Multitransport_Response_PDU(RdpbcgrClientContext context)
     : base(context)
 {
 }
예제 #13
0
 /// <summary>
 /// The constructor of the class.
 /// </summary>
 /// <param name="clientContext">Specify the context.</param>
 public Client_Info_Pdu(RdpbcgrClientContext clientContext)
     : base(clientContext)
 {
 }
예제 #14
0
 /// <summary>
 /// The constructor of the class.
 /// </summary>
 /// <param name="clientContext">Specify the context.</param>
 public Client_Font_List_Pdu(RdpbcgrClientContext clientContext)
     : base(clientContext)
 {
 }
예제 #15
0
 /// <summary>
 /// The constructor of the class.
 /// </summary>
 /// <param name="clientContext">Specify the context.</param>
 public Client_Control_Pdu_Request_Control(RdpbcgrClientContext clientContext)
     : base(clientContext)
 {
 }
예제 #16
0
 /// <summary>
 /// The constructor of the class.
 /// </summary>
 /// <param name="clientContext">Specify the context.</param>
 public Client_Control_Pdu_Cooperate(RdpbcgrClientContext clientContext)
     : base(clientContext)
 {
 }
예제 #17
0
 /// <summary>
 /// The constructor of the class.
 /// </summary>
 /// <param name="clientContext">Specify the context.</param>
 public Client_Suppress_Output_Pdu(RdpbcgrClientContext clientContext)
     : base(clientContext)
 {
 }
예제 #18
0
 /// <summary>
 /// The constructor of the class.
 /// </summary>
 /// <param name="clientContext">Specify the context.</param>
 public Client_Synchronize_Pdu(RdpbcgrClientContext clientContext)
     : base(clientContext)
 {
 }
예제 #19
0
 /// <summary>
 /// The constructor of the class.
 /// </summary>
 /// <param name="clientContext">Specify the context.</param>
 public Client_MCS_Channel_Join_Request(RdpbcgrClientContext clientContext)
     : base(clientContext)
 {
 }
예제 #20
0
 /// <summary>
 /// The constructor of the class.
 /// </summary>
 /// <param name="serverSessionContext">Specify the session context.</param>
 public MCS_Disconnect_Provider_Ultimatum_Pdu(RdpbcgrClientContext clientContext)
     : base(clientContext)
 {
 }
예제 #21
0
 /// <summary>
 /// The constructor of the class.
 /// </summary>
 /// <param name="clientContext">Specify the context.</param>
 public Client_MCS_Connect_Initial_Pdu_with_GCC_Conference_Create_Request(RdpbcgrClientContext clientContext)
     : base(clientContext)
 {
 }
예제 #22
0
 /// <summary>
 /// The constructor of the class.
 /// </summary>
 /// <param name="clientContext">Specify the context.</param>
 public RdpelePdu(RdpbcgrClientContext clientContext)
     : base(clientContext)
 {
 }
예제 #23
0
 /// <summary>
 /// The constructor of the class.
 /// </summary>
 /// <param name="clientContext">Specify the context.</param>
 public Client_MCS_Erect_Domain_Request(RdpbcgrClientContext clientContext)
     : base(clientContext)
 {
 }
예제 #24
0
 /// <summary>
 /// The constructor of the class.
 /// </summary>
 /// <param name="clientContext">Specify the context.</param>
 public Virtual_Channel_RAW_Pdu(RdpbcgrClientContext clientContext)
     : base(clientContext)
 {
 }
예제 #25
0
 /// <summary>
 /// The constructor of the class.
 /// </summary>
 /// <param name="clientContext">Specify the context.</param>
 public Client_Refresh_Rect_Pdu(RdpbcgrClientContext clientContext)
     : base(clientContext)
 {
 }
예제 #26
0
 /// <summary>
 /// The constructor of the class.
 /// </summary>
 /// <param name="clientContext">Specify the context.</param>        
 public Client_Persistent_Key_List_Pdu(RdpbcgrClientContext clientContext)
     : base(clientContext)
 {
 }
예제 #27
0
 public Client_Auto_Detect_Response_PDU(RdpbcgrClientContext clientContext)
     : base(clientContext)
 {
 }