Esempio n. 1
0
        public void RequestDesktopShare(int clientId, int senderID)
        {
            ClientProfile cp = (ClientProfile)this.ClientList[senderID];
            if(cp != null)
            {

                IMessageReceiver iMessageReceiver =   (IMessageReceiver) Activator.GetObject(typeof(IMessageReceiver), cp.clientURI);
                // make message here and send it
                //DesktopSharingControlMessage msg = new DesktopSharingControlMessage(true,senderID,clientId,
                //iMessageReceiver.ReceiveMessage(obj);
                DesktopSharingControlMessage msg = new DesktopSharingControlMessage(true,senderID,clientId);
                msg.Status = 0;
                msg.SenderID=senderID;
                iMessageReceiver.ReceiveMessage(msg);

                msg = null; //GC
                GC.Collect(); //GC

            }
        }
Esempio n. 2
0
        public int HandleDesktopShareRespnse(int clientID,int senderID,bool response)
        {
            ClientProfile cp = (ClientProfile)this.ClientList[senderID];
            if(cp != null)
            {

                IMessageReceiver iMessageReceiver =   (IMessageReceiver) Activator.GetObject(typeof(IMessageReceiver), cp.clientURI);
                // make message here and send it
                //iMessageReceiver.ReceiveMessage(obj);
                DesktopSharingControlMessage msg = new DesktopSharingControlMessage(response,senderID,clientID);
                msg.senderID = senderID;
                msg.Status = 1;

                if(response)
                {
                    Desktop serverToClient=new Desktop(); // this is for server to client
                    GetUniqueSessionID(ref serverToClient.sessionID);
                    serverToClient.AddClient(iMessageReceiver);

                    Desktop clientToServer=new Desktop(); // this is for client to server
                    GetUniqueSessionID(ref clientToServer.sessionID);
                    // get the server id here and add it to the clienttoserver desktop channel
                    //DesktopList.Add( clientToServer,clientToServer.sessionID);
                    //DesktopList.Add( serverToClient,serverToClient.sessionID);
                    DesktopList.Add( clientToServer.sessionID,clientToServer);
                    DesktopList.Add( serverToClient.sessionID,serverToClient);

                    ClientProfile cpX = (ClientProfile)ClientList[senderID];
                    if(cpX != null)
                    {
                        IMessageReceiver iMessageReceiverServer =   (IMessageReceiver) Activator.GetObject(typeof(IMessageReceiver), cpX.clientURI);
                        clientToServer.AddClient(iMessageReceiverServer);

                        // also send this server a message to initialize its server and set its session id
                        DesktopSharingControlMessage msg2 = new DesktopSharingControlMessage(response,senderID,clientID);
                        msg2.senderID = clientID;
                        msg2.Status = 2;
                        msg2.ServerToClientSessionID=serverToClient.sessionID;
                        iMessageReceiverServer.ReceiveMessage(msg2);

                        msg2 = null ; //GC
                        GC.Collect(); //GC

                    }

                    // sending the session id to the client. So that he may send the messages to the specific channel
                    iMessageReceiver =   (IMessageReceiver) Activator.GetObject(typeof(IMessageReceiver), cp.clientURI);
                    msg.ClientToServerSessionID=clientToServer.sessionID;
                    iMessageReceiver.ReceiveMessage(msg); //this is the client who requested to start the desktop sharing
                    //we've created a desktop object and have attached it with him
                    //now the person going to share his desktop needs to have connection with the requester

                    serverToClient = null; //GC
                    clientToServer = null; //GC
                    GC.Collect(); //GC
                }
                else
                {
                    iMessageReceiver.ReceiveMessage(msg);
                }

                msg = null; //GC
                GC.Collect(); //GC

            }

            return 0;
        }