Esempio n. 1
0
        public override async Task <AgentRegisterResponse> RegisterAgent(AgentRegisterRequest request, ServerCallContext context)
        {
            var id = Guid.Parse(request.Agent.Uuid);

            var agent = ClusterClient.GetGrain <IComponentAgent>(id);

            var data   = request.Agent.EggData.ToByteArray();
            var inputs = request.Agent.Inputs.Select(
                x => ClusterClient.GetGrain <IAgent>(Guid.Parse(x))
                ).ToList();

            await agent.Initialize(new AgentInfo
            {
                ComponentId  = Guid.Parse(request.Agent.ComponentId),
                OutputShapes = request.Agent.Outputs.Select(o => o.Dimension.ToList()).ToList(),
                Frequency    = request.Agent.Frequency,
                RunnerType   = request.Agent.ComponentType
            }, inputs, data);

            return(new AgentRegisterResponse());
        }
Esempio n. 2
0
        private static async Task RunMainAsync()
        {
            var client = await StartClientWithRetries();

            var grain = client.GetGrain <IAgentRegistryGrain>(0);
            //var agentId = Guid.NewGuid().ToString();
            var       agentId = Guid.Parse("253717bf-34b4-43fc-8129-4c68a6bbe1fe").ToString();
            MockAgent egg     = new MockAgent()
            {
                Id      = agentId,
                EggData = Encoding.ASCII.GetBytes("Agent1")
            };

            await grain.AgentStart(egg);

            var agentsList = await grain.GetAllAgents();


            const int    port   = 50051;
            const string host   = "localhost";
            var          server = new Server()
            {
                Services =
                {
                    Scynet.Component.BindService(new ComponentFacade(client))
                },
                Ports = { new ServerPort(host, port, ServerCredentials.Insecure) }
            };


            Console.WriteLine("Starting facade...");
            server.Start();
            Console.WriteLine("Facade started");

            //hatchery channel
            Channel channel        = new Channel("127.0.0.1:9998", ChannelCredentials.Insecure);
            var     hatcheryClient = new Scynet.Hatchery.HatcheryClient(channel);

            //var componentId = Guid.NewGuid().ToString();
            var componentId = Guid.Parse("7730a43f-42a7-49db-b569-50e04929c4f9").ToString();
            ComponentRegisterRequest hatcheryComponentRegisterRequest = new ComponentRegisterRequest()
            {
                Uuid    = componentId,
                Address = host + ":" + port,
            };

            //add await
            hatcheryClient.RegisterComponent(hatcheryComponentRegisterRequest);

            Agent agent = new Agent()
            {
                Uuid        = agentId,
                ComponentId = componentId,
                EggData     = ByteString.CopyFrom("Agent1", Encoding.Unicode)
            };
            AgentRegisterRequest arr = new AgentRegisterRequest();

            arr.Agent = agent;
            hatcheryClient.RegisterAgent(arr);

            await server.ShutdownAsync();
        }