示例#1
0
        //---------------------------------------------------------------------
        Task IGFClientSession.SubClient(IGFClientObserver sub)
        {
            Logger.Info("SubClient() GrainId={0}", this.GetPrimaryKey().ToString());

            Subscribers.Subscribe(sub);

            return TaskDone.Done;
        }
示例#2
0
        //---------------------------------------------------------------------
        Task IGFClientSession.UnsubClient(IGFClientObserver sub)
        {
            bool is_sub = Subscribers.IsSubscribed(sub);
            if (is_sub)
            {
                Subscribers.Unsubscribe(sub);

                DeactivateOnIdle();
            }

            Logger.Info("UnsubClient() GrainId={0}", this.GetPrimaryKey().ToString());

            return TaskDone.Done;
        }
示例#3
0
        //---------------------------------------------------------------------
        public async void ChannelInactive(IChannelHandlerContext context)
        {
            var task = await Task.Factory.StartNew<Task>(async () =>
            {
                var grain_clientsession = GrainClient.GrainFactory.GetGrain<IGFClientSession>(this.clientGuid);
                await grain_clientsession.UnsubClient(this.clientObserverWeak);

                this.context = null;
                this.clientObserver = null;
                this.clientObserverWeak = null;

                Console.WriteLine("GatewaySession.ChannelInactive() Name=" + context.Name);
            });
        }
示例#4
0
        //---------------------------------------------------------------------
        public async void ChannelActive(IChannelHandlerContext context)
        {
            this.context = context;

            Console.WriteLine("GatewaySession.ChannelActive() Name=" + context.Name);

            var task = await Task.Factory.StartNew<Task>(async () =>
            {
                this.clientObserver = new GatewayClientObserver(this);
                this.clientObserverWeak = await GrainClient.GrainFactory.CreateObjectReference<IGFClientObserver>(this.clientObserver);

                this.clientGuid = Guid.NewGuid();
                var grain_clientsession = GrainClient.GrainFactory.GetGrain<IGFClientSession>(this.clientGuid);
                await grain_clientsession.SubClient(this.clientObserverWeak);
            });
        }