コード例 #1
0
ファイル: GrpcPuppet.cs プロジェクト: wechaty/dotnet-wechaty
        /// <summary>
        /// 双向数据流事件处理
        /// </summary>
        protected async Task StartGrpcStreamAsync()
        {
            try
            {
                var eventStream = grpcClient.Event(new EventRequest());

                while (await eventStream.ResponseStream.MoveNext())
                {
                    OnGrpcStreamEvent(eventStream.ResponseStream.Current);
                }
            }
            catch (Exception ex)
            {
                StopRequest st = new StopRequest()
                {
                };

                CallOptions call = new CallOptions()
                {
                };

                grpcClient.Stop(st, call);

                var eventResetPayload = new EventResetPayload()
                {
                    Data = ex.StackTrace
                };
                Emit(eventResetPayload);
                throw ex;
            }
        }
コード例 #2
0
 private void ThrottleReset(EventResetPayload payload)
 {
     if (_resetThrottleQueue != null)
     {
         _resetThrottleQueue.OnNext(payload.Data);
     }
 }
コード例 #3
0
        /// <summary>
        /// 双向数据流事件处理
        /// </summary>
        protected void StartGrpcStream()
        {
            try
            {
                var eventStream = grpcClient.Event(new EventRequest());

                var stream = Task.Run(async() =>
                {
                    await foreach (var resp in eventStream.ResponseStream.ReadAllAsync())
                    {
                        await OnGrpcStreamEvent(resp);
                    }
                });
            }
            catch (Exception ex)
            {
                EventResetPayload eventResetPayload = new EventResetPayload()
                {
                    Data = ex.StackTrace
                };
                _localEventBus.PublishAsync(eventResetPayload);
            }
        }
コード例 #4
0
ファイル: Puppet.cs プロジェクト: xingx001/dotnet-wechaty
 public virtual bool Emit(EventResetPayload payload) => Emit("reset", payload);