-
Notifications
You must be signed in to change notification settings - Fork 6.6k
/
Copy pathProgram.cs
82 lines (75 loc) · 2.76 KB
/
Program.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
// Copyright (c) Microsoft Corporation. All rights reserved.
// Program.cs
using Microsoft.AutoGen.Agents;
using Microsoft.AutoGen.Contracts;
using Microsoft.AutoGen.Core;
using Microsoft.AutoGen.Core.Grpc;
using Samples;
string? hostAddress = null;
bool in_host_address = false;
bool sendHello = true;
foreach (string arg in args)
{
switch (arg)
{
case "--host":
in_host_address = true;
break;
case "--nosend":
sendHello = false;
break;
case "-h":
case "--help":
PrintHelp();
Environment.Exit(0);
break;
default:
if (in_host_address)
{
hostAddress = arg;
}
break;
}
}
hostAddress ??= Environment.GetEnvironmentVariable("AGENT_HOST");
var appBuilder = new AgentsAppBuilder(); // Create app builder
// if we are using distributed, we need the AGENT_HOST var defined and then we will use the grpc runtime
bool usingGrpc = false;
if (hostAddress is string agentHost)
{
usingGrpc = true;
Console.WriteLine($"connecting to {agentHost}");
appBuilder.AddGrpcAgentWorker(agentHost)
.AddAgent<HelloAgent>("HelloAgent");
}
else
{
// Set up app builder for in-process runtime, allow message delivery to self, and add the Hello agent
appBuilder.UseInProcessRuntime(deliverToSelf: true).AddAgent<HelloAgent>("HelloAgent");
}
var app = await appBuilder.BuildAsync(); // Build the app
await app.StartAsync();
// Create a custom message type from proto and define message
if (sendHello)
{
var message = new NewMessageReceived { Message = "Hello World!" };
await app.PublishMessageAsync(message, new TopicId("HelloTopic")).ConfigureAwait(false); // Publish custom message (handler has been set in HelloAgent)
}
else if (!usingGrpc)
{
Console.Write("Warning: Using --nosend with the InProcessRuntime will hang. Terminating.");
Environment.Exit(-1);
}
await app.WaitForShutdownAsync().ConfigureAwait(false); // Wait for shutdown from agent
static void PrintHelp()
{
/*
HelloAgent [--host <hostAddress>] [--nosend]
--host Use gRPC gateway at <hostAddress>; this can also be set using the AGENT_HOST Environment Variable
--nosend Do not send the starting message. Note: This means HelloAgent will wait until some other agent will send
that message. This will not work when using the InProcessRuntime.
*/
Console.WriteLine("HelloAgent [--host <hostAddress>] [--nosend]");
Console.WriteLine(" --host \tUse gRPC gateway at <hostAddress>; this can also be set using the AGENT_HOST Environment Variable");
Console.WriteLine(" --nosend \tDo not send the starting message. Note: This means HelloAgent will wait until some other agent will send");
}