Exemplo n.º 1
0
        /// <inheritdoc/>
        public override async Task Stop()
        {
            var client = new Scynet.Component.ComponentClient(await GetChannel());

            await client.AgentStopAsync(new AgentRequest
            {
                Uuid = this.GetPrimaryKey().ToString()
            });

            await Task.WhenAll(State.Inputs.Select(input => input.Release(this)));
        }
Exemplo n.º 2
0
        /// <inheritdoc/>
        public override async Task Start()
        {
            var client = new Scynet.Component.ComponentClient(await GetChannel());

            await Task.WhenAll(State.Inputs.Select(input => input.Engage(this)));

            await client.AgentStartAsync(new AgentStartRequest
            {
                Egg = State.Info.ToProtobuf(
                    this.GetPrimaryKey(),
                    State.Data,
                    State.Inputs.Select(i => i.GetPrimaryKey())
                    )
            });
        }
Exemplo n.º 3
0
        public async Task RegisterInput(IAgent agent)
        {
            State.Inputs.Add(agent);

            await base.WriteStateAsync();

            var registry = GrainFactory.GetGrain <IRegistry <Guid, AgentInfo> >(0);
            var info     = await registry.Get(agent.GetPrimaryKey());

            var client = new Scynet.Component.ComponentClient(Channel.Value);

            await client.RegisterInputAsync(new RegisterInputRequest
            {
                Input = info.ToProtobuf(agent.GetPrimaryKey())
            });
        }