Exemple #1
0
        public IWampRegistrationSubscriptionToken Register(IWampRpcOperation operation, RegisterOptions registerOptions)
        {
            lock (mLock)
            {
                WampProcedureRegistration registration =
                    mProcedureToRegistration
                    .GetOrAdd
                        (operation.Procedure,
                        procedureUri => CreateRegistration(registerOptions, procedureUri));

                return(registration.Register(operation, registerOptions));
            }
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
                    }
                }
            }
        }
Exemple #4
0
 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;
 }