public IWampRegistrationSubscriptionToken Register(IWampRpcOperation operation, RegisterOptions registerOptions) { lock (mLock) { WampProcedureRegistration registration = mProcedureToRegistration .GetOrAdd (operation.Procedure, procedureUri => CreateRegistration(registerOptions, procedureUri)); return(registration.Register(operation, registerOptions)); } }
private WampProcedureRegistration CreateRegistration(RegisterOptions registerOptions, string procedureUri) { WampProcedureRegistration result = new WampProcedureRegistration(procedureUri, registerOptions); result.Empty += OnRegistrationEmpty; long registrationId = mRegistrationIdToRegistration.Add(result); result.RegistrationId = registrationId; OnRegistrationAdded(result); return(result); }
private void OnRegistrationEmpty(object sender, EventArgs e) { WampProcedureRegistration registration = sender as WampProcedureRegistration; if (!registration.HasOperations) { lock (mLock) { if (!registration.HasOperations) { mRegistrationIdToRegistration.TryRemoveExact(registration.RegistrationId, registration); mProcedureToRegistration.TryRemoveExact(registration.Procedure, registration); registration.Empty -= OnRegistrationEmpty; OnRegistrationRemoved(registration); } } } }
protected virtual void OnRegistrationRemoved(WampProcedureRegistration procedureUri) { RaiseRegistrationRemoved(procedureUri); }
protected override void OnRegistrationRemoved(WampProcedureRegistration procedureUri) { mWildCardToEvaluator.Remove(procedureUri.Procedure); base.OnRegistrationRemoved(procedureUri); }
protected override void OnRegistrationAdded(WampProcedureRegistration procedureUri) { mWildCardToEvaluator[procedureUri.Procedure] = new WildCardMatcher(procedureUri.Procedure); base.OnRegistrationAdded(procedureUri); }
public WampRegistrationToken(IWampRpcOperation operation, WampProcedureRegistration registration) { mOperation = operation; mRegistration = registration; }