public void CommandMessageReceivedInvoke(RemoteHostInfo hostInfo, EventCommandMessageArgs args) => CommandMessageReceived?.Invoke(hostInfo, args);
public void EventDataHandler(object sender, EventDataArg <string> e) { Logger.Info($"Invoked EventDataHandler for {e.HostInfo.Host} via {e.HostInfo.Protocol}, message {e.Data}"); IMessage message = Deserializing.GetMessage(e.Data, out MessageType type); Logger.Debug($"File {message} deserialized to {type} for {e.HostInfo.Host} via {e.HostInfo.Protocol}, message {e.Data}"); if (message == default(IMessage)) { Logger.Error("Desirializing error"); return; } switch (type) { case MessageType.Command: { CommandMessageReceived?.Invoke(e.HostInfo, new EventCommandMessageArgs(message as CommandMessage)); break; } case MessageType.Connect: { ConnectMessageReceived?.Invoke(e.HostInfo, new EventMessageConnectArgs(message as ConnectMessage)); break; } case MessageType.Request: { RequestReceived?.Invoke(e.HostInfo, new EventRequestArgs(message as Request)); break; } case MessageType.Telemetry: { TelemetryReceived?.Invoke(e.HostInfo, new EventTelemetryArgs(message as Telemetry)); break; } case MessageType.Call: { CallReceived?.Invoke(e.HostInfo, new EventCallArgs(message as Call)); break; } case MessageType.Order: { OrderReceived?.Invoke(e.HostInfo, new EventOrderArgs(message as Order)); break; } //TODO ВСЕХ НЕВЕРНЫХ СЖЕЧЬ!.. Всмысле, в error case MessageType.Err: { ErrorMessageReceived?.Invoke(e.HostInfo, new EventErrArgs(message as ErrorMessage)); break; } default: Logger.Error("Desirializing error unknow MessageType"); return; } }
private async void EventReceivedCallback(object sender, EventReceivedEventArgs e) { try { Command command; object param; switch (e.Event.MessageType) { case MessageType.UserControlMessage: UserControlMessage userControlMessage = (UserControlMessage)e.Event; if (userControlMessage.EventType == UserControlMessageType.PingRequest) { WriteProtocolControlMessage(new UserControlMessage(UserControlMessageType.PingResponse, userControlMessage.Values)); break; } break; case MessageType.CommandAmf3: case MessageType.DataAmf0: case MessageType.CommandAmf0: command = (Command)e.Event; Method methodCall = command.MethodCall; param = methodCall.Parameters.Length == 1 ? methodCall.Parameters[0] : (object)methodCall.Parameters; if (methodCall.Name == "_result" || methodCall.Name == "_error" || methodCall.Name == "receive") { throw new InvalidDataException(); } if (!(methodCall.Name == "onstatus")) { if (methodCall.Name == "connect") { CommandMessage parameter = (CommandMessage)methodCall.Parameters[3]; object obj1; parameter.Headers.TryGetValue("DSEndpoint", out obj1); object obj2; parameter.Headers.TryGetValue("DSId", out obj2); ConnectMessageEventArgs args = new ConnectMessageEventArgs((string)methodCall.Parameters[1], (string)methodCall.Parameters[2], parameter, (string)obj1, (string)obj2, command.InvokeId, (AsObject)command.ConnectionParameters); ConnectMessageReceived?.Invoke(this, args); if (parameter.Operation == CommandOperation.ClientPing) { AsObject asObject1 = await InvokeConnectResultAsync(command.InvokeId, (AsObject)args.Result.Body); } else { AsObject asObject2 = await InvokeReconnectResultInvokeAsync(command.InvokeId, (AsObject)args.Result.Body); } args = null; break; } if (param is RemotingMessage) { RemotingMessage message = param as RemotingMessage; object obj1; message.Headers.TryGetValue("DSEndpoint", out obj1); object obj2; message.Headers.TryGetValue("DSId", out obj2); string endpoint = (string)obj1; string clientId = (string)obj2; int invokeId = command.InvokeId; RemotingMessageReceivedEventArgs receivedEventArgs = new RemotingMessageReceivedEventArgs(message, endpoint, clientId, invokeId); RemotingMessageReceived?.Invoke(this, receivedEventArgs); if (receivedEventArgs.Error == null) { InvokeResult(command.InvokeId, receivedEventArgs.Result); break; } InvokeError(command.InvokeId, receivedEventArgs.Error); break; } if (param is CommandMessage) { CommandMessage message = param as CommandMessage; object obj1; message.Headers.TryGetValue("DSEndpoint", out obj1); object obj2; message.Headers.TryGetValue("DSId", out obj2); string endpoint = obj1 as string; string dsId = obj2 as string; int invokeId = command.InvokeId; CommandMessageReceivedEventArgs receivedEventArgs = new CommandMessageReceivedEventArgs(message, endpoint, dsId, invokeId); CommandMessageReceived?.Invoke(this, receivedEventArgs); InvokeResult(command.InvokeId, receivedEventArgs.Result); break; } break; } break; } command = null; param = null; } catch (ClientDisconnectedException ex) { Tools.Log(ex.StackTrace); } }