private static void UseAkkaWithRemoting() { var config = ConfigurationFactory.ParseString(@" akka { actor { provider = ""Akka.Remote.RemoteActorRefProvider, Akka.Remote"" } remote { helios.tcp { port = 0 hostname = localhost } } } "); var userName = Program.GetUserName(); using (var system = ActorSystem.Create("KeyWatcherHost", config)) { var users = system .ActorSelection("akka.tcp://KeyWatcherListener@localhost:4545/user/users"); using (var keyLogger = new BufferedKeyWatcher(Program.BufferSize)) { keyLogger.KeysLogged += (s, e) => { users.Tell(new UserKeysMessage(userName, e.Keys)); }; Application.Run(); } } }
private static void UseAkkaLocally() { var builder = new ContainerBuilder(); builder.RegisterModule <DependenciesModule>(); builder.RegisterModule <ActorsModule>(); var container = builder.Build(); var userName = Program.GetUserName(); using (var system = ActorSystem.Create("KeyWatcherHost")) { new AutoFacDependencyResolver(container, system); var users = system.ActorOf(system.DI().Props <UsersActor>(), "users"); using (var keyLogger = new BufferedKeyWatcher(Program.BufferSize)) { keyLogger.KeysLogged += (s, e) => { users.Tell(new UserKeysMessage(userName, e.Keys)); }; Application.Run(); } } }
private static void UseBufferedKeyWatcher() { using (var keyLogger = new BufferedKeyWatcher(Program.BufferSize)) { keyLogger.KeysLogged += (s, e) => Console.WriteLine(e.Keys); Application.Run(); } }
private static void UseAkkaWithRemotingWithQuietness() { var config = ConfigurationFactory.ParseString(@" akka { actor { provider = ""Akka.Remote.RemoteActorRefProvider, Akka.Remote"" } remote { helios.tcp { port = 0 hostname = localhost } } } "); var userName = Program.GetUserName(); using (var system = ActorSystem.Create("KeyWatcherHost", config)) { var users = system .ActorSelection("akka.tcp://KeyWatcherListener@localhost:4545/user/users"); using (var keyLogger = new BufferedKeyWatcher(Program.BufferSize)) { keyLogger.KeysLogged += (s, e) => { users.Tell(new UserKeysMessage(userName, e.Keys)); }; var quietObservation = Observable.FromEventPattern <BufferedKeysEventArgs>( keyLogger, nameof(BufferedKeyWatcher.KeysLogged)); using (var quietSubscription = quietObservation .Throttle(TimeSpan.FromSeconds(2)) .Subscribe(args => Console.Out.WriteLine("It's quiet in here..."))) { Application.Run(); } } } }
private static void UseAkkaViaWebApiLocally() { var userName = Program.GetUserName(); using (var keyLogger = new BufferedKeyWatcher(Program.BufferSize)) { keyLogger.KeysLogged += (s, e) => { var message = JsonConvert.SerializeObject( new UserKeysMessage(userName, e.Keys), Formatting.Indented); var content = new StringContent(message, Encoding.Unicode, "application/json"); var postResponse = new HttpClient().PostAsync("http://localhost:6344/api/keywatcher", content); postResponse.Wait(); }; Application.Run(); } Console.ReadLine(); }
static void Main(string[] args) { var userName = Program.GetUserName(); Console.Out.WriteLine("Waiting for Orleans Silo to start. Press Enter to proceed..."); Console.In.ReadLine(); var config = ClientConfiguration.LocalhostSilo(30000); GrainClient.Initialize(config); using (var keyLogger = new BufferedKeyWatcher(Program.BufferSize)) { keyLogger.KeysLogged += (s, e) => { var user = GrainClient.GrainFactory.GetGrain <IUserGrain>(userName); user.ProcessAsync(new UserKeysMessage(userName, e.Keys)); }; Application.Run(); } }