public void A_loopback_registry() { Address = new Uri("loopback://localhost/"); ReceivedA = new Future <A>(); Registry = ActorRegistryFactory.New(x => { x.Remote(r => { r.ListenTo(Address); }); }); ActorId = Guid.NewGuid(); Actor = AnonymousActor.New(inbox => { inbox.Loop(loop => { loop.Receive <Message <A> >(message => { ReceivedA.Complete(message.Body); loop.Continue(); }); }); }); Registry.Register(ActorId, Actor); }
public void A_loopback_registry() { Address = new Uri("loopback://localhost/"); ReceivedA = new Future<A>(); Registry = ActorRegistryFactory.New(x => { x.Remote(r => { r.ListenTo(Address); }); }); ActorId = Guid.NewGuid(); Actor = AnonymousActor.New(inbox => { inbox.Loop(loop => { loop.Receive<Message<A>>(message => { ReceivedA.Complete(message.Body); loop.Continue(); }); }); }); Registry.Register(ActorId, Actor); }
public override void Initialize() { _gameInfo = Game.Services.GetService <GameInfo>(); _actorRegistry = Game.Services.GetService <ActorRegistry>(); _gameInfo.StateChanged += GameInfoOnStateChanged; }
public unsafe void Actors() { using (var buffer = new ManyToOneRingBuffer(new UnsafeBuffer(1024.Megabytes() + RingBufferDescriptor.TrailerLength))) { var someBytes = stackalloc byte[1]; buffer.Write(5, new ByteChunk(someBytes, 1)); buffer.Read((a, b) => { }, 1); var module = AppDomain.CurrentDomain.DefineDynamicAssembly(new AssemblyName("ActorsTestsDynAssembly"), AssemblyBuilderAccess.Run).DefineDynamicModule("main"); var counter = new StructSizeCounter(); var registry = new ActorRegistry(new[] { Tuple.Create(new ActorDescriptor(new Handler()), (IRingBuffer)buffer, new ActorId(1)) }); var writer = MessageWriterBuilder.Build(counter, registry.GetMessageTypeId, new[] { typeof(A) }, module); var bus = new Bus(new ActorId(2), registry, 20, writer); var msg = new A(); bus.Publish(ref msg); // publication is prepared do it var howMany = 200000000; var oneMiliion = 1000000; using (var scheduler = new RoundRobinThreadAffinedTaskScheduler(4)) { var wait = new ManualResetEventSlim(); var t = new CancellationToken(); var p1 = CreateProducer(wait, t, howMany, bus, scheduler); var p2 = CreateProducer(wait, t, howMany, bus, scheduler); var producentCount = 2; var totalMessageCount = howMany * producentCount; var worker = new Worker(totalMessageCount, wait, buffer, t); var consumer = Task.Factory.StartNew(worker.DoWhile, t, TaskCreationOptions.LongRunning, scheduler); GC.Collect(2, GCCollectionMode.Forced); var sw = Stopwatch.StartNew(); wait.Set(); Task.WaitAll(p1, p2, consumer); sw.Stop(); Console.WriteLine( $"{howMany} messages written by each of {producentCount} producers and consumed in {sw.Elapsed}"); Console.WriteLine( $"One million in {TimeSpan.FromMilliseconds(sw.Elapsed.TotalMilliseconds*oneMiliion/totalMessageCount)}"); } } }
public void SetUp() { NopBuffer = Substitute.For <IRingBuffer>(); ABuffer = Substitute.For <IRingBuffer>(); AbBuffer = Substitute.For <IRingBuffer>(); Registry = new ActorRegistry(new[] { Tuple.Create(new ActorDescriptor(new NopHandler()), NopBuffer, NoopId), Tuple.Create(new ActorDescriptor(new AHandler()), ABuffer, AId), Tuple.Create(new ActorDescriptor(new ABHandler()), AbBuffer, ABId) }); }
/// <summary> /// Initializes a new instance of <see cref="PaddleFactory"/> using the specified services. /// </summary> /// <param name="services">The services to use when creating new paddles.</param> public PaddleFactory(GameServiceContainer services) { // Get services _gameInfo = services.GetService <GameInfo>(); _settingsManager = services.GetService <SettingsManager>(); _inputManager = services.GetService <InputManager>(); _actorRegistry = services.GetService <ActorRegistry>(); GraphicsDeviceManager graphics = services.GetService <GraphicsDeviceManager>(); _paddlePixel = new Texture2D(graphics.GraphicsDevice, 1, 1); _paddlePixel.FillColor(Color.White); }
public ActorRegistry Build() { ActorRegistry registry = _builder.Build(); Serializer serializer = _serializerFactory(); Scheduler scheduler = _builder.Scheduler; var registryNode = new RemoteRegistryNode(registry, _listenUri, _fiberFactory, scheduler, serializer); registry.AddNode(registryNode); return(registry); }
public MainGame() { Window.Title = string.Format("{0} v{1}", StringResources.GameTitle, Program.AssemblyName.Version.ToString(3)); _graphicsDeviceManager = new GraphicsDeviceManager(this); _settingsManager = new SettingsManager(this, new JsonFileSettingsStorage(SettingsConstants.SettingsFilePath)); _settingsManager.SettingsApplied += SettingsManagerOnSettingsApplied; _audioManager = new AudioManager(_settingsManager, Content); _gameInfo = new GameInfo(); _inputManager = new InputManager(); _actorRegistry = new ActorRegistry(); Content.RootDirectory = "Content"; CreateComponents(); }
public unsafe void Setup() { _buffer = new ManyToOneRingBuffer(new UnsafeBuffer(1024.Megabytes() + RingBufferDescriptor.TrailerLength)); var someBytes = stackalloc byte[1]; _buffer.Write(5, new ByteChunk(someBytes, 1)); _buffer.Read((a, b) => { }, 1); var module = AppDomain.CurrentDomain.DefineDynamicAssembly( new AssemblyName("ActorsTestsDynAssembly"), AssemblyBuilderAccess.Run).DefineDynamicModule("main"); var counter = new StructSizeCounter(); var registry = new ActorRegistry( new[] { Tuple.Create(new ActorDescriptor(new Handler()), (IRingBuffer)_buffer, new ActorId(1)) }); var writer = MessageWriterBuilder.Build(counter, registry.GetMessageTypeId, new[] { typeof(A) }, module); _bus = new Bus(new ActorId(2), registry, 20, writer); }
public void Run() { Trace.Listeners.Add(new ConsoleTraceListener()); const string remoteAddress = "rm://234.0.0.7:40001/"; Guid id = CombGuid.Generate(); ActorRegistry registry = ActorRegistryFactory.New(x => { x.Remote(r => r.ListenTo(remoteAddress)); }); ActorRef server = AnonymousActor.New(inbox => { inbox.Receive <Response <Hello> >(message => { Console.WriteLine("Hi!"); Console.WriteLine("Request ID: " + message.RequestId); }); }); registry.Register(id, server); var actorAddress = new ActorUrn(remoteAddress, id); registry.Select(actorAddress, actor => { actor.Send <Response <Hello> >(new ResponseImpl <Hello>(new Hello { MyNameIs = "Joe", }, "27")); }, () => {}); ThreadUtil.Sleep(5.Seconds()); registry.Shutdown(); }
public void Adding_an_actor_to_a_registry() { _auctionFactory = ActorFactory.Create(inbox => new Auction(inbox)); _auctionId = CombGuid.Generate(); ActorRef auction = _auctionFactory.GetActor(); ActorRegistry registry = ActorRegistryFactory.New(x => { //x.Remote(r => r.ListenTo("rm://234.0.0.7:40001")); }); registry.Register(_auctionId, auction); _response = new Future <Response <Bid> >(); AnonymousActor.New(inbox => { registry.Request <Bid>(new BidImpl(27.42m), header => { header.DestinationAddress = new ActorUrn(_auctionId); }, inbox) .Receive <Response <Bid> >(x => _response.Complete); }); _response.WaitUntilCompleted(5.Seconds()).ShouldBeTrue(); // need to proxy the channel with headers somehow... // untyped channel => channel mapper -> actor instance // DestinationAddress -> set by outbound channel proxy on message<> // SourceAddress -> set by outbound channel proxy when available (not likely) // ResponseAddress -> set by outbound channel for ResponseChannel on Request to map to channel // Id -> system assigned id // DestinationAddress = urn:actor:554FC958-4661-4FE9-94F5-21D190417BCC }
public ActorRegisteredImpl(ActorRegistry registry, ActorRef actor, Guid key) { Registry = registry; Instance = actor; Key = key; }
public ActorRegistryHeaderChannel(ActorRegistry registry) { _registry = registry; _match = new ThreadSingleton <MatchHeaderCallback, MatchHeader>(() => new MatchHeaderImpl()); }
public RemoteRegistryNode(ActorRegistry registry, Uri listenUri, FiberFactory fiberFactory, Scheduler scheduler, Serializer serializer) { _nodes = new RemoteNodeCollection(listenUri, registry, fiberFactory, scheduler, serializer); _actors = new Dictionary<string, RemoteActor>(); }
public RemoteRegistryNode(ActorRegistry registry, Uri listenUri, FiberFactory fiberFactory, Scheduler scheduler, Serializer serializer) { _nodes = new RemoteNodeCollection(listenUri, registry, fiberFactory, scheduler, serializer); _actors = new Dictionary <string, RemoteActor>(); }
public ActorUnregisteredImpl(ActorRegistry registry, ActorRef actor, Guid key) { Registry = registry; Instance = actor; Key = key; }
public BasicAiPaddle(GameInfo gameInfo, Texture2D texture, ActorRegistry actorRegistry, PaddleSide paddleSide, Vector2 size, Vector2 boundsPadding, float speed) : base(gameInfo, texture, paddleSide, size, boundsPadding, speed) { _actorRegistry = actorRegistry; }