Esempio n. 1
0
        public static async Task Main(string[] args)
        {
            var userName = Common.GetUserName();
            var client   = await Program.StartClient();

            await Console.Out.WriteLineAsync("Begin...");

            var keyLogger = new BufferedEventedKeyWatcher(Program.BufferSize);

            keyLogger.KeysLogged += async(s, e) =>
            {
                var keyBuffer = e.Keys.ToArray();
                var content   = new string(keyBuffer);

                if (content.Contains("STOP IT"))
                {
                    keyLogger.Cancel();
                }
                else
                {
                    var user = client.GetGrain <IUserGrain>(userName);
                    await user.ProcessAsync(new UserKeysMessage(userName, keyBuffer));
                }
            };


            keyLogger.Listen();
        }
        private static async Task UseOrleansViaWebApiAsync(string url)
        {
            await Console.Out.WriteLineAsync("Begin...");

            var userName = Program.GetUserName();
            var client   = new HttpClient();

            var keyLogger = new BufferedEventedKeyWatcher(Program.BufferSize);

            keyLogger.KeysLogged += async(s, e) =>
            {
                var message = JsonConvert.SerializeObject(
                    new UserKeysMessage(userName, e.Keys.ToArray()), Formatting.Indented);
                var content = new StringContent(message,
                                                Encoding.Unicode, "application/json");
                await client.PostAsync(url, content);
            };


            keyLogger.Listen();
        }
Esempio n. 3
0
        static async Task Main(string[] args)
        {
            await Console.Out.WriteLineAsync("Setting up SignalR client...");

            var connection = new HubConnectionBuilder()
                             .WithUrl(Common.KeyWatcherHubApiUri)
                             .ConfigureLogging(config =>
            {
                config.SetMinimumLevel(LogLevel.Information);
                config.AddConsole();
            })
                             .Build();

            connection.On <NotificationMessage>(Common.NotificationSent, data =>
            {
                Console.WriteLine();
                Console.WriteLine($"{nameof(HubConnectionExtensions.On)} {Common.NotificationSent} received: {data.Message}");
                Console.WriteLine();
            });
            connection.Observe <NotificationMessage>(Common.NotificationSent)
            .Where(message => message.Message.Contains("cotton"))
            .Take(3)
            .Delay(TimeSpan.FromSeconds(2))
            .Subscribe(message =>
            {
                Console.WriteLine();
                Console.WriteLine(
                    $"{nameof(KeyWatcher.Signaled.Client.Extensions.HubConnectionExtensions.Observe)} {Common.NotificationSent} received: {message.Message}");
                Console.WriteLine();
            });

            await connection.StartAsync();

            await Console.Out.WriteLineAsync("Setting up HTTP call policy...");

            var userName   = Common.GetUserName();
            var client     = new HttpClient();
            var httpPolicy = Policy.Handle <HttpRequestException>(e =>
            {
                Console.WriteLine($"Could not call the service, sorry!");
                return(true);
            }).WaitAndRetryAsync(
                Program.RetryCount, retryAttempt =>
            {
                Console.WriteLine($"Attempt {retryAttempt} of {Program.RetryCount} to call service...");
                return(Program.Retry);
            });

            await Console.Out.WriteLineAsync("Setting up key watcher...");

            var keyLogger = new BufferedEventedKeyWatcher(Program.BufferSize);

            keyLogger.KeysLogged += async(s, e) =>
            {
                var message = JsonConvert.SerializeObject(
                    new UserKeysMessage(userName, e.Keys.ToArray()), Formatting.Indented);
                var content = new StringContent(message,
                                                Encoding.Unicode, "application/json");

                await httpPolicy.ExecuteAsync(
                    async() => await client.PostAsync(Common.KeyWatcherApiUri, content));
            };


            await Console.Out.WriteLineAsync("Begin signaled client.");

            keyLogger.Listen();
        }