Exemplo n.º 1
0
        public async Task RegisterCommandHandler(object sender, MessageHandlerEventArgs e)
        {
            var command = (e.Message as RegisterCommand).Command;

            CommandsDictionary[command.Id] = command;
            Commands.Add(command);
        }
Exemplo n.º 2
0
        private async Task HandleListModules(object sender, MessageHandlerEventArgs e)
        {
            var response = new ModuleList()
            {
                Modules = Modules.Select(m => m.ClientHello.Name).ToList()
            };

            e.Connection.Send(response);
            Console.WriteLine("hi");
        }
Exemplo n.º 3
0
        private async Task HandleCommand(object sender, MessageHandlerEventArgs e)
        {
            var msg = e.Message as CommandNotification;

            if (!CommandHandlers.ContainsKey(msg.Id))
            {
                return;
            }

            var ret = CommandHandlers[msg.Id](this, new CommandHandlerEventArgs(msg));
            await Connection.Send(new CommandResult()
            {
                CallId = msg.CallId, Output = (string)ret
            });
        }
Exemplo n.º 4
0
        private async Task HandleInfoRequest(object sender, MessageHandlerEventArgs e)
        {
            var name = (e.Message as GetModuleInfo).ModuleName;

            var module = Modules.FirstOrDefault(m => m.ClientHello.Name == name);
            var info   = new ModuleInfo();

            if (module != null)
            {
                info.ClientHello = module.ClientHello;
                info.Uptime      = DateTime.UtcNow - module.Started;
                info.Health      = ModuleHealth.Healthy;
            }

            e.Connection.Send(info);
        }
Exemplo n.º 5
0
        public async Task ProcessMessage(object message)
        {
            if (message == null)
            {
                return;
            }

            var type = message.GetType();

            if (MessageHandlers.ContainsKey(type))
            {
                var args = new MessageHandlerEventArgs(Connection, message, type);

                foreach (var handler in MessageHandlers[type])
                {
                    await handler(this, args);
                }
            }
        }
Exemplo n.º 6
0
        private async Task HandleSopronMessage(IConnection connection, object message)
        {
            if (message == null)
            {
                return;
            }

            var type = message.GetType();

            if (MessageHandlers.ContainsKey(type))
            {
                var args = new MessageHandlerEventArgs(connection, message, type);

                foreach (var handler in MessageHandlers[type])
                {
                    await handler(this, args);
                }
            }

            await Connections[connection].ProcessMessage(message);
        }
Exemplo n.º 7
0
        public async Task HandleMessage()
        {
            var message = await Connection.Receive();

            if (message == null)
            {
                return;
            }

            var type = message.GetType();

            if (MessageHandlers.ContainsKey(type))
            {
                var args = new MessageHandlerEventArgs(Connection, message, type);

                foreach (var handler in MessageHandlers[type])
                {
                    Task.Run(() => handler(this, args)).ConfigureAwait(false);
                }
            }
        }
Exemplo n.º 8
0
        private async Task HandleCommandResult(object sender, MessageHandlerEventArgs e)
        {
            var result = e.Message as CommandResult;

            if (string.IsNullOrEmpty(result.Output))
            {
                return;
            }

            var call  = WaitingCalls[result.CallId];
            var reply = new Message()
            {
                Contents       = result.Output,
                RawContents    = result.Output,
                Time           = DateTime.Now,
                User           = call.Message.SelfIdentifier,
                Location       = call.Message.Location,
                SelfIdentifier = call.Message.SelfIdentifier
            };

            WaitingCalls.Remove(result.CallId, out WaitingCommandCall c);

            await call.Source.SendMessage(reply);
        }
Exemplo n.º 9
0
 private async Task HandleClientHello(object sender, MessageHandlerEventArgs e)
 {
     Connections[e.Connection].ClientHello = e.Message as ClientHello;
 }