protected bool Equals(RemoteWampCalleeDetails other) { return(Equals(Callee, other.Callee) && ((string.Equals(Procedure, other.Procedure) && string.Equals(Options.Match, other.Options.Match)) || RegistrationId == other.RegistrationId)); }
public WampRpcInvocation(RemoteWampCalleeDetails operation, IWampRawRpcOperationRouterCallback callback, InvocationDetails options, object[] arguments, IDictionary <string, object> argumentsKeywords) { Operation = operation; Callback = callback; Options = options; Arguments = arguments; mArgumentsKeywords = argumentsKeywords; }
public void Unregister(IWampCallee callee, long registrationId) { RemoteWampCalleeDetails operation = new RemoteWampCalleeDetails(callee, registrationId); if (!mOperationToDisposable.TryRemove(operation, out IDisposable disposable)) { throw new WampException(WampErrors.NoSuchRegistration, "registrationId: " + registrationId); } disposable.Dispose(); mInvocationHandler.Unregistered(operation); }
public void Unregistered(RemoteWampCalleeDetails operation) { lock (mLock) { if (mOperationToInvocations.TryGetValue(operation, out ICollection <WampRpcInvocation> invocations)) { foreach (WampRpcInvocation invocation in invocations.ToArray()) { UnregisterInvocation(invocation); invocation.Callback.Error(mFormatter, mEmptyDetails, WampErrors.CalleeUnregistered); } } } }
public override bool Equals(object obj) { if (ReferenceEquals(null, obj)) { return(false); } if (ReferenceEquals(this, obj)) { return(true); } RemoteWampCalleeDetails casted = obj as RemoteWampCalleeDetails; if (casted == null) { return(false); } return(Equals(casted)); }
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); if (!mCallbackToInvocations.ContainsKey(callback)) { RegisterDisconnectionNotifier(callback); } long invocationId = mRequestIdToInvocation.Add(invocation); invocation.InvocationId = invocationId; mOperationToInvocations.Add(operation, invocation); mCallbackToInvocations.Add(callback, invocation); return(invocationId); } }
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); } }