コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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));
        }