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 } }
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; }