public void HandleClientFunctionCall(SyncIOConnectedClient client, RemoteCallRequest reqst) { lock (SyncLock) { var respPacket = new RemoteCallResponse(reqst.CallId, reqst.Name); if (FunctionLookup.ContainsKey(reqst.Name)) { var func = FunctionLookup[reqst.Name]; for (int i = 0; i < reqst.Args.Length; i++) { var argType = reqst.Args[i].GetType(); if (!BindableTypes.ContainsKey(argType) || !func.ValidParameter(i, BindableTypes[argType])) { respPacket.Response = FunctionResponseStatus.InvalidParameters; client.Send(respPacket); return; } } func.Invoke(client, respPacket, reqst.Args); } else { respPacket.Response = FunctionResponseStatus.DoesNotExist; } client.Send(respPacket); } }
private void AddClient(SyncIOConnectedClient client) { if (InvokeRequired) { Invoke(new ClientManagementEventHandler(AddClient), client); return; } if (!lvClients.Items.ContainsKey(client.ID.ToString())) { //var c = _clients[client.ID]; lvClients.Items.Add(new ListViewItem(new string[] { client.ID.ToString(), client.EndPoint.ToString(), "--", "--", "--" }) { Name = client.ID.ToString(), ImageKey = client.ID.ToString(), Tag = client//_clients[client.ID] }); } client.OnDisconnect += Client_OnDisconnect; client.Send(new DesktopScreenshot(null)); }