private void InvocationPattern(long requestId, long registrationId, InvocationDetails details, Func <IWampRpcOperation, IWampRawRpcOperationRouterCallback, InvocationDetails, IWampCancellableInvocation> invocationAction) { IWampRpcOperation operation = TryGetOperation(registrationId); if (operation != null) { IWampRawRpcOperationRouterCallback callback = GetCallback(requestId); InvocationDetails modifiedDetails = new InvocationDetails(details) { Procedure = details.Procedure ?? operation.Procedure }; IWampCancellableInvocation invocation = invocationAction(operation, callback, modifiedDetails); if (invocation != null) { mInvocations[requestId] = new InvocationData(registrationId, invocation); lock (mLock) { mRegistrationsToInvocations.Add(registrationId, requestId); } } } }
private IWampCancellableInvocation InvokePattern(Func <MatchRpcOperationCatalog, IWampCancellableInvocation> invokeAction, string procedure) { foreach (MatchRpcOperationCatalog catalog in mInnerCatalogs) { IWampCancellableInvocation result = invokeAction(catalog); if (result != null) { return(result); } } WampRpcThrowHelper.NoProcedureRegistered(procedure); return(null); }
public InvocationData(long registrationId, IWampCancellableInvocation cancellation) { Cancellation = cancellation; mRegistrationId = registrationId; }