コード例 #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
        public void HandleClientFunctionCall(SecureSocketConnectedClient client, RemoteCallRequest request)
        {
            lock (_syncLock) {
                RemoteCallResponse respPacket = new RemoteCallResponse(request.CallId, request.Name);

                if (_functionLookup.ContainsKey(request.Name))
                {
                    RemoteFunctionBind func = _functionLookup[request.Name];

                    if (request.Args.Select(t => t.GetType()).Where((argType, i) => !_bindableTypes.ContainsKey(argType) || !func.ValidParameter(i, _bindableTypes[argType])).Any())
                    {
                        respPacket.Response = RemoteFunctionStatus.InvalidParameters;
                        client.Send(respPacket);
                        return;
                    }

                    func.Invoke(client, respPacket, request.Args);
                }
                else
                {
                    respPacket.Response = RemoteFunctionStatus.DoesNotExist;
                }

                client.Send(respPacket);
            }
        }
コード例 #3
0
 public void RaiseFunction(RemoteCallResponse resp)
 {
     lock (SyncLock) {
         if (FunctionList.ContainsKey(resp.Name))
         {
             var f = FunctionList[resp.Name];
             f.LastStatus = resp.Reponce;
             f.SetReturnValue(resp.Return, resp.CallID);
         }
     }
 }
コード例 #4
0
        public void RaiseFunction(RemoteCallResponse resp)
        {
            lock (_syncLock)
            {
                if (!_functionList.ContainsKey(resp.Name))
                {
                    return;
                }

                RemoteFunction f = _functionList[resp.Name];
                f.LastStatus = resp.Response;
                f.SetReturnValue(resp.Return, resp.CallId);
            }
        }
コード例 #5
0
ファイル: RemoteFunctionBind.cs プロジェクト: sensi17/SyncIO
 internal void Invoke(SyncIOConnectedClient client, RemoteCallResponse resp, object[] param)   //Fix this shit
 {
     try {
         if (AuthCallback?.Invoke(client, this) ?? true)
         {
             resp.Return  = FuctionCall.DynamicInvoke(param);
             resp.Reponce = FunctionResponceStatus.Success;
         }
         else
         {
             resp.Reponce = FunctionResponceStatus.PermissionDenied;
         }
     }catch {
         resp.Reponce = FunctionResponceStatus.ExceptionThrown;
     }
 }
コード例 #6
0
ファイル: RemoteFunctionBind.cs プロジェクト: versx/secureapp
 internal void Invoke(SecureSocketConnectedClient client, RemoteCallResponse resp, object[] param)
 {
     try {
         if (_authCallback?.Invoke(client, this) ?? true)
         {
             resp.Return   = _functionCall.DynamicInvoke(param);
             resp.Response = RemoteFunctionStatus.Success;
         }
         else
         {
             resp.Response = RemoteFunctionStatus.PermissionDenied;
         }
     }catch {
         resp.Response = RemoteFunctionStatus.ExceptionThrown;
     }
 }