private void DoAddHandler <T>(RdContext <T> context, ISingleContextHandler <T> handler) { if (myHandlersMap.TryAdd(context, handler)) { context.RegisterOn(SerializationContext.Serializers); lock (myOrderingLock) myHandlerOrder.Add(handler); } }
private void BindHandler(Lifetime lifetime, string key, ISingleContextHandler handler) { if (handler is RdBindableBase bindableHandler) { bindableHandler.RdId = RdId.Mix(key); Proto.Scheduler.InvokeOrQueue(lifetime, () => { using (CreateSendWithoutContextsCookie()) bindableHandler.Bind(lifetime, this, key); }); } }
private void BindAndSendHandler(Lifetime lifetime, ISingleContextHandler handler) { BindHandler(lifetime, handler.ContextBase.Key, handler); SendContextToRemote(handler.ContextBase); }