Esempio n. 1
0
 private void InnerCall(IWampCaller caller, Action callAction, long requestId, CallOptions options, string procedure)
 {
     InnerAction(caller,
                 authorizer => authorizer.CanCall(options, procedure),
                 callAction,
                 exception => caller.CallError(requestId, exception));
 }
        public WampRpcOperationCallback(IWampCaller caller, long requestId)
        {
            mCaller    = caller;
            mRequestId = requestId;

            mMonitor = caller as IWampConnectionMonitor;
            mMonitor.ConnectionClosed += OnConnectionClosed;
        }
Esempio n. 3
0
        public WampRpcOperationCallback(IWampCaller caller, long requestId)
        {
            Caller    = caller;
            Session   = ((IWampClientProperties)caller).Session;
            RequestId = requestId;

            mMonitor = caller as IWampConnectionMonitor;
            mMonitor.ConnectionClosed += OnConnectionClosed;
        }
Esempio n. 4
0
 public void Call(IWampCaller caller, long requestId, CallOptions options, string procedure)
 {
     CallPattern(caller, requestId, options, procedure,
                 (invoker, callback, invocationOptions) =>
                 invoker.Invoke(callback,
                                mFormatter,
                                invocationOptions,
                                procedure));
 }
Esempio n. 5
0
        private static IWampCaller GetCaller(IWampRawRpcOperationRouterCallback callback)
        {
            IWampCaller caller = null;

            if (callback is WampRpcOperationCallback operationCallback)
            {
                caller = operationCallback.Caller;
            }
            return(caller);
        }
Esempio n. 6
0
        public override void Call(IWampCaller caller, long requestId, CallOptions options, string procedure, TMessage[] arguments)
        {
            Action callAction = () => base.Call(caller, requestId, options, procedure, arguments);

            InnerCall(caller,
                      callAction,
                      requestId,
                      options,
                      procedure);
        }
Esempio n. 7
0
 public void Call(IWampCaller caller, long requestId, CallOptions options, string procedure, TMessage[] arguments, IDictionary <string, TMessage> argumentsKeywords)
 {
     CallPattern(caller, requestId, options, procedure,
                 (invoker, callback, invocationOptions) =>
                 invoker.Invoke(callback,
                                mFormatter,
                                invocationOptions,
                                procedure,
                                arguments,
                                argumentsKeywords));
 }
Esempio n. 8
0
        private void UnregisterInvocation(WampRpcInvocation invocation)
        {
            lock (mLock)
            {
                mRequestIdToInvocation.TryRemove(invocation.InvocationId, out WampRpcInvocation removedInvocation);

                IWampCaller caller = GetCaller(invocation.Callback);

                if (caller != null)
                {
                    mCallerToInvocations.Remove(caller, invocation);
                }

                mOperationToInvocations.Remove(invocation.Operation, invocation);
                mCallbackToInvocation.Remove(invocation.Callback);
            }
        }
Esempio n. 9
0
        public void Cancel(IWampCaller caller, long requestId, CancelOptions options)
        {
            WampRpcOperationCallback callback = new WampRpcOperationCallback(caller, requestId);

            lock (mLock)
            {
                if (mCallbackToInvocation.TryGetValue(callback, out WampRpcInvocation invocation))
                {
                    IWampCallee callee = invocation.Operation.Callee;

                    callee.Interrupt(invocation.InvocationId, new InterruptDetails()
                    {
                        Mode = options.Mode
                    });
                }
            }
        }
Esempio n. 10
0
        private void CallPattern(IWampCaller caller, long requestId, CallOptions options, string procedure, Action <IWampRpcOperationInvoker, IWampRawRpcOperationClientCallback, InvocationDetails> invokeAction)
        {
            try
            {
                IWampRawRpcOperationClientCallback callback = GetCallback(caller, requestId);

                InvocationDetails invocationOptions =
                    GetInvocationOptions(caller, options, procedure);

                ValidateCallUri(procedure);

                invokeAction(mInvoker, callback, invocationOptions);
            }
            catch (WampException ex)
            {
                caller.CallError(requestId, ex);
            }
        }
Esempio n. 11
0
        private InvocationDetails GetInvocationOptions(IWampCaller caller, CallOptions options, string procedureUri)
        {
            IWampClientProxy wampCaller = caller as IWampClientProxy;

            InvocationDetailsExtended result = new InvocationDetailsExtended
            {
                CallerSession = wampCaller.Session,
                CallerOptions = options,
                ProcedureUri  = procedureUri
            };

            WelcomeDetails welcomeDetails = wampCaller.WelcomeDetails;

            result.AuthenticationId   = welcomeDetails.AuthenticationId;
            result.AuthenticationRole = welcomeDetails.AuthenticationRole;

            return(result);
        }
Esempio n. 12
0
        public long RegisterInvocation(RemoteWampCalleeDetails operation, IWampRawRpcOperationRouterCallback callback, InvocationDetails options, object[] arguments = null, IDictionary <string, object> argumentsKeywords = null)
        {
            lock (mLock)
            {
                WampRpcInvocation invocation =
                    new WampRpcInvocation
                        (operation, callback, options, arguments, argumentsKeywords);

                long invocationId = mRequestIdToInvocation.Add(invocation);

                invocation.InvocationId = invocationId;

                mOperationToInvocations.Add(operation, invocation);

                IWampCaller caller = GetCaller(callback);

                if (caller != null)
                {
                    if (!mCallerToInvocations.ContainsKey(caller))
                    {
                        RegisterDisconnectionNotifier(callback);
                    }

                    mCallerToInvocations.Add(caller, invocation);
                }

                IWampClientProperties properties = invocation.Operation.Callee as IWampClientProperties;

                if (properties.HelloDetails?.Roles?.Callee?.Features?.CallCanceling == true)
                {
                    mCallbackToInvocation.Add(callback, invocation);
                }

                return(invocationId);
            }
        }
Esempio n. 13
0
 public virtual void Call(IWampCaller caller, long requestId, CallOptions options, string procedure)
 {
     mDealer.Call(caller, requestId, options, procedure);
 }
Esempio n. 14
0
 private IWampRawRpcOperationClientCallback GetCallback(IWampCaller caller, long requestId)
 {
     return(new WampRpcOperationCallback(caller, requestId));
 }
Esempio n. 15
0
 public void Cancel(IWampCaller caller, long requestId, CancelOptions options)
 {
     throw new NotImplementedException();
 }
Esempio n. 16
0
 public virtual void Call(IWampCaller caller, long requestId, CallOptions options, string procedure, TMessage[] arguments, IDictionary <string, TMessage> argumentsKeywords)
 {
     mDealer.Call(caller, requestId, options, procedure, arguments, argumentsKeywords);
 }
Esempio n. 17
0
 public void Call(IWampCaller caller, long requestId, CallOptions options, string procedure, TMessage[] arguments, IDictionary <string, TMessage> argumentsKeywords)
 {
     ActualCallParamters = new object[] { options, procedure, arguments, argumentsKeywords };
     mCallerCallback(caller, requestId);
 }
Esempio n. 18
0
 // TODO: Throw exceptions if
 public void Call(IWampCaller caller, long requestId, CallOptions options, string procedure)
 {
     ActualCallParamters = new object[] { options, procedure };
     mCallerCallback(caller, requestId);
 }
Esempio n. 19
0
 public virtual void Cancel(IWampCaller caller, long requestId, CancelOptions options)
 {
     mDealer.Cancel(caller, requestId, options);
 }
 public void Call(IWampCaller caller, long requestId, CallOptions options, string procedure, TMessage[] arguments,
                  IDictionary <string, TMessage> argumentsKeywords)
 {
     throw new NotImplementedException();
 }
 public void Call(IWampCaller caller, long requestId, CallOptions options, string procedure)
 {
     throw new NotImplementedException();
 }
Esempio n. 22
0
 public void Call(IWampCaller caller, long requestId, CallOptions options, string procedure, TMessage[] arguments)
 {
     throw new System.NotImplementedException();
 }
Esempio n. 23
0
 public void Cancel(IWampCaller caller, long requestId, CancelOptions options)
 {
     mHandler.Cancel(caller, requestId, options);
 }