コード例 #1
0
ファイル: GrpcPuppet.cs プロジェクト: wechaty/dotnet-wechaty
        /// <summary>
        ///
        /// </summary>
        /// <param name="event"></param>
        /// <returns></returns>
        protected void OnGrpcStreamEvent(EventResponse @event)
        {
            try
            {
                var eventType = @event.Type;
                var payload   = @event.Payload;

                logger.LogInformation($"dateTime:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} {eventType},PayLoad:{payload}");

                if (eventType != EventType.Heartbeat)
                {
                    var eventHeartbeatPayload = new EventHeartbeatPayload()
                    {
                        Data = $"onGrpcStreamEvent({eventType})"
                    };
                    //await _localEventBus.PublishAsync(eventHeartbeatPayload);
                    Emit(eventHeartbeatPayload);
                }

                switch (eventType)
                {
                case EventType.Unspecified:
                    Logger.LogError("onGrpcStreamEvent() got an EventType.EVENT_TYPE_UNSPECIFIED ?");
                    break;

                case EventType.Heartbeat:
                    Emit(JsonConvert.DeserializeObject <EventHeartbeatPayload>(payload));
                    break;

                case EventType.Message:
                    Emit(JsonConvert.DeserializeObject <EventMessagePayload>(payload));
                    break;

                case EventType.Dong:
                    Emit(JsonConvert.DeserializeObject <EventDongPayload>(payload));
                    break;

                case EventType.Error:
                    Emit(JsonConvert.DeserializeObject <EventErrorPayload>(payload));
                    break;

                case EventType.Friendship:
                    Emit(JsonConvert.DeserializeObject <EventFriendshipPayload>(payload));
                    break;

                case EventType.RoomInvite:
                    Emit(JsonConvert.DeserializeObject <EventRoomInvitePayload>(payload));
                    break;

                case EventType.RoomJoin:
                    Emit(JsonConvert.DeserializeObject <EventRoomJoinPayload>(payload));
                    break;

                case EventType.RoomLeave:
                    Emit(JsonConvert.DeserializeObject <EventRoomLeavePayload>(payload));
                    break;

                case EventType.RoomTopic:
                    Emit(JsonConvert.DeserializeObject <EventRoomTopicPayload>(payload));
                    break;

                case EventType.Scan:
                    Emit(JsonConvert.DeserializeObject <EventScanPayload>(payload));
                    break;

                case EventType.Ready:
                    Emit(JsonConvert.DeserializeObject <EventReadyPayload>(payload));
                    break;

                case EventType.Reset:
                    //log.warn('PuppetHostie', 'onGrpcStreamEvent() got an EventType.EVENT_TYPE_RESET ?')
                    // the `reset` event should be dealed not send out
                    Emit(JsonConvert.DeserializeObject <EventResetPayload>(payload));
                    Logger.LogWarning("onGrpcStreamEvent() got an EventType.EVENT_TYPE_RESET ?");
                    break;

                case EventType.Login:
                    var loginPayload = JsonConvert.DeserializeObject <EventLoginPayload>(payload);
                    SelfId = loginPayload.ContactId;
                    break;

                case EventType.Logout:
                    SelfId = string.Empty;
                    Emit(JsonConvert.DeserializeObject <EventLogoutPayload>(payload));
                    break;

                default:
                    logger.LogWarning($"'eventType {eventType} unsupported! (code should not reach here)");

                    //throw new BusinessException($"'eventType {_event.Type.ToString()} unsupported! (code should not reach here)");
                    break;
                }
            }
            catch (Exception ex)
            {
                Logger.LogError(ex, "OnGrpcStreamEvent exception");
            }
        }
コード例 #2
0
        protected async Task OnGrpcStreamEvent(EventResponse _event)
        {
            try
            {
                EventType eventType = _event.Type;
                string    payload   = _event.Payload;

                Console.WriteLine($"{eventType},PayLoad:{payload}");

                if (eventType != EventType.Heartbeat)
                {
                    EventHeartbeatPayload eventHeartbeatPayload = new EventHeartbeatPayload()
                    {
                        Data = $"onGrpcStreamEvent({eventType.ToString()})"
                    };
                    await _localEventBus.PublishAsync(eventHeartbeatPayload);
                }

                switch (eventType)
                {
                case EventType.Unspecified:
                    Logger.LogError("onGrpcStreamEvent() got an EventType.EVENT_TYPE_UNSPECIFIED ?");
                    break;

                case EventType.Heartbeat:
                    await _localEventBus.PublishAsync(JsonConvert.DeserializeObject <EventHeartbeatPayload>(payload));

                    break;

                case EventType.Message:
                    await _localEventBus.PublishAsync(JsonConvert.DeserializeObject <EventMessagePayload>(payload));

                    break;

                case EventType.Dong:
                    await _localEventBus.PublishAsync(JsonConvert.DeserializeObject <EventDongPayload>(payload));

                    break;

                case EventType.Error:
                    await _localEventBus.PublishAsync(JsonConvert.DeserializeObject <EventErrorPayload>(payload));

                    break;

                case EventType.Friendship:
                    await _localEventBus.PublishAsync(JsonConvert.DeserializeObject <FriendshipPayload>(payload));

                    break;

                case EventType.RoomInvite:
                    await _localEventBus.PublishAsync(JsonConvert.DeserializeObject <EventRoomInvitePayload>(payload));

                    break;

                case EventType.RoomJoin:
                    await _localEventBus.PublishAsync(JsonConvert.DeserializeObject <EventRoomJoinPayload>(payload));

                    break;

                case EventType.RoomLeave:
                    await _localEventBus.PublishAsync(JsonConvert.DeserializeObject <EventRoomLeavePayload>(payload));

                    break;

                case EventType.RoomTopic:
                    await _localEventBus.PublishAsync(JsonConvert.DeserializeObject <EventRoomTopicPayload>(payload));

                    break;

                case EventType.Scan:
                    await _localEventBus.PublishAsync(JsonConvert.DeserializeObject <EventScanPayload>(payload));

                    break;

                case EventType.Ready:
                    await _localEventBus.PublishAsync(JsonConvert.DeserializeObject <EventReadyPayload>(payload));

                    break;

                case EventType.Reset:
                    //await _localEventBus.PublishAsync(JsonConvert.DeserializeObject<EventResetPayload>(payload));
                    //log.warn('PuppetHostie', 'onGrpcStreamEvent() got an EventType.EVENT_TYPE_RESET ?')
                    // the `reset` event should be dealed not send out
                    Logger.LogWarning("onGrpcStreamEvent() got an EventType.EVENT_TYPE_RESET ?");
                    break;

                case EventType.Login:
                    var loginPayload = JsonConvert.DeserializeObject <EventLoginPayload>(payload);
                    selfId = loginPayload.ContactId;
                    await _localEventBus.PublishAsync(JsonConvert.DeserializeObject <EventLoginPayload>(payload));

                    break;

                case EventType.Logout:
                    selfId = string.Empty;
                    await _localEventBus.PublishAsync(JsonConvert.DeserializeObject <EventLogoutPayload>(payload));

                    break;
                    //default:
                    //    Console.WriteLine($"'eventType {_event.Type.ToString()} unsupported! (code should not reach here)");

                    //    //throw new BusinessException($"'eventType {_event.Type.ToString()} unsupported! (code should not reach here)");
                    //    break;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.StackTrace);
                Logger.LogError(ex, "OnGrpcStreamEvent exception");
            }
        }
コード例 #3
0
ファイル: Puppet.cs プロジェクト: xingx001/dotnet-wechaty
 public virtual bool Emit(EventHeartbeatPayload payload) => Emit("heartbeat", payload);
コード例 #4
0
 private void FeedDog(EventHeartbeatPayload payload) => Watchdog.Feed(payload);