Ejemplo n.º 1
0
        /// <exception cref="ExitWithError" />
        public override void Run(string[] args, CancellationToken ct)
        {
            _optionSet.Parse(args);

            var localSocketClient = new LocalSocketClient(new TcpClient("127.0.0.1", 12122));

            localSocketClient.StartRead();
            var serializer = new Serializer();
            var client     = new Client(localSocketClient, serializer);

            client.Request(new HelloRequest()
            {
                Identifier = "Event Viewer",
            }).Wait();

            client.Request(new SubscribeRequest(_eventFilter, replay: true, subscriptionId: 0));

            var messages = localSocketClient.IncomingMessages;

            messages.TryDeserialize(serializer, _report).OfType <IEventMessage <UnresolvedMessagePayload> >().Subscribe(WriteEvent);

            var run = true;

            localSocketClient.Disconnected.Subscribe(c => run = false);
            //TODO handle ctrl+c

            while (run)
            {
                Thread.Sleep(500);
            }
        }
Ejemplo n.º 2
0
        public void Remove(LocalSocketClient socket)
        {
            PluginClient pluginClient;

            _clients.TryRemove(socket, out pluginClient);
            pluginClient.DoIfNotNull(c => c.Dispose());
        }
Ejemplo n.º 3
0
        /// <exception cref="FailedToConnectToDaemon" />
        public static IMessagingService Connect(this IFuseLauncher fuseLauncher)
        {
            try
            {
                var tcpClient = new TcpClient("127.0.0.1", 12122);
                var client    = new LocalSocketClient(tcpClient);
                client.StartRead();

                return(new Client(
                           client,
                           new Serializer()));
            }
            catch (Exception e)
            {
                throw new FailedToConnectToDaemon(e);
            }
        }
Ejemplo n.º 4
0
        static int Main()
        {
            var tcpClient = new TcpClient("127.0.0.1", 12122);
            var client    = new LocalSocketClient(tcpClient);

            client.Disconnected.Subscribe(c => WriteColoredLine("Lost connnection", ConsoleColor.DarkRed));

            //client.EnqueueMessage("{\"MessageType\":\"Request\", \"Type\":\"Hello\"}");
            Console.ReadLine();

            /*Console.Write("Your name: ");
             * var name = Console.ReadLine();
             * Console.Write("Do you want swear word protection? ");
             * var swearWordProtection = Console.ReadLine().ToUpper() == "YES";
             *
             * Console.Write("Do you want to be an admin? ");
             * var isAdmin = Console.ReadLine().ToUpper() == "YES";
             *
             * var serializer = new Serializer(new PayloadParserContext(
             *      typeof(HelloRequest),
             *      typeof(HelloResponse),
             *      typeof(SendMessageToAdminRequest),
             *      typeof(SendMessageToAdminResponse),
             *      typeof(Message),
             *      typeof(SwearMessage),
             *      typeof(UserConnected)));
             *
             * var messagesOut = client.OutgoingMessages.Serialized(serializer);
             * var messagesIn = client.IncomingMessages.TryDeserialize(serializer, null);
             *
             * messagesIn
             *      .OfType<IEventMessage<UserConnected>>()
             *      .Subscribe(u => WriteColoredLine(u.Data.Name + " has connected to Fuse group chat (" + u.Data.DateTime.ToShortTimeString() + ")", ConsoleColor.Cyan));
             *
             * messagesIn
             *      .OfType<IEventMessage<Message>>()
             *      .Subscribe(m => WriteColoredLine(m.Data.Text, ConsoleColor.White));
             *
             * messagesIn
             *      .OfType<IRequestMessage<SendMessageToAdminRequest>>()
             *      .Subscribe(
             *              r =>
             *              {
             *                      WriteColoredLine(r.Data.Name + " sent you a PM: " + r.Data.Message, ConsoleColor.Yellow);
             *                      messagesOut.OnNext(Response.CreateSuccess(r, new SendMessageToAdminResponse() { Answer = "I got the message." }));
             *              });
             *
             * messagesIn
             *      .OfType<IResponseMessage<SendMessageToAdminResponse>>()
             *      .Subscribe(res => WriteColoredLine("Admin responded: " + res.Data.Answer, ConsoleColor.DarkGreen));
             *
             * var waitForHelloResponse = messagesIn
             *      .OfType<IResponseMessage<HelloResponse>>()
             *      .FirstAsync().ToTask();
             *
             * client.StartRead();
             *
             * var eventFilter = swearWordProtection ? "^((?!SwearMessage).)*$" : "";
             * var implements = isAdmin ? new List<string> { "Fuse.Test.MessageToAdmin" } : new List<string> { "" };
             *
             * messagesOut.OnNext(Request.Create(0, new HelloRequest() { Identifier = name, EventFilter = eventFilter, Implements = implements }));
             * waitForHelloResponse.Wait();
             *
             * messagesOut.OnNext(Event.Create(new UserConnected() { Name = name, DateTime = DateTime.Now }));
             *
             * var counter = 0;
             * while (tcpClient.Connected)
             * {
             *      var data = counter + "\n";// Console.ReadLine();
             *      messagesOut.OnNext(Event.Create(new Message() { Text = data }));
             ++counter;
             *
             *      /*if(data.StartsWith("/admin"))
             *              messagesOut.OnNext(Request.Create(0, new SendMessageToAdminRequest() { Message = data.Substring(7, data.Length - 7), Name = name }));
             *      else
             *              messagesOut.OnNext(Event.Create(CreateMessage(name + ": " + data)));
             * }*/

            return(0);
        }