/*static void servicetest4(string url1) * { * * RobotRaconteurNode.s.AsyncConnectService(url1, null, null, null, null, delegate(object o, Exception exp1) { servicetest3(url1, o, exp1); }); * } * * static void servicetest3(string url1, object obj, Exception exp) * { * if (exp != null) * { * Console.WriteLine("Got exception"); * if (servicetest_keepgoing) Environment.Exit(1); * } * * RobotRaconteurNode.s.AsyncDisconnectService(obj, delegate() { servicetest4(url1); }); * * }*/ static async Task servicetest2(async_testroot o, Task <double> t1) { /*if (t1 != null) * { * Console.WriteLine("Got exception"); * * }*/ while (true) { await o.async_func3(1, 2); if (servicetest_keepgoing) { Environment.Exit(1); return; } } }
static void Main(string[] args) { //string path = @"C:\Users\wasonj\Documents\RobotRaconteur2\bin_devel\out_debug\NET\Native\RobotRaconteurNETNative.dll"; //Environment.SetEnvironmentVariable("PATH", Path.GetDirectoryName(path) + ";" + Environment.GetEnvironmentVariable("PATH")); string exepath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); MultiDimArrayTest.testdatapath = System.IO.Path.Combine(exepath, System.IO.Path.Combine("..", "testdata")); RobotRaconteurNode.s.SetExceptionHandler(delegate(Exception e) { Console.WriteLine(e.ToString()); }); string command = "loopback"; if (args.Length >= 1) { command = args[0]; } if (command == "loopback") { RobotRaconteurNode.s.SetLogLevelFromEnvVariable(); TcpTransport t = new TcpTransport(); t.StartServer(2323); t.EnableNodeDiscoveryListening(); t.EnableNodeAnnounce(); RobotRaconteurNode.s.RegisterTransport(t); RobotRaconteurNode.s.RegisterServiceType(new com.robotraconteur.testing.TestService1.com__robotraconteur__testing__TestService1Factory()); RobotRaconteurNode.s.RegisterServiceType(new com.robotraconteur.testing.TestService2.com__robotraconteur__testing__TestService2Factory()); MultiDimArrayTest.Test(); RobotRaconteurTestServiceSupport sup = new RobotRaconteurTestServiceSupport(); sup.RegisterServices(t); int count = 1; if (args.Length >= 2) { count = int.Parse(args[1]); } for (int i = 0; i < count; i++) { ServiceTestClient c = new ServiceTestClient(); c.RunFullTest("tcp://localhost:2323/{0}/RobotRaconteurTestService", "tcp://localhost:2323/{0}/RobotRaconteurTestService_auth"); //System.Threading.Thread.Sleep(100); } /* c = new ServiceTestClient(); * c.RunFullTest("tcp://localhost:2323/{0}/RobotRaconteurTestService", "tcp://localhost:2323/{0}/RobotRaconteurTestService_auth"); * System.Threading.Thread.Sleep(1000);*/ /*System.Threading.Thread.Sleep(10000); * * ServiceInfo2[] services = RobotRaconteurNode.s.FindServiceByType("RobotRaconteurTestService.testroot", new string[] { "tcp" });*/ try { object o = RobotRaconteurNode.s.ConnectService("tcp://localhost:2323/{0}/RobotRaconteurTestService"); } catch { } //System.Threading.Thread.Sleep(17000); RobotRaconteurNode.s.Shutdown(); Console.WriteLine("Test completed"); return; } if (command == "loopback2") { RobotRaconteurNode.s.SetLogLevelFromEnvVariable(); using (var setup = new ServerNodeSetup("com.robotraconteur.testing.TestService2", 4565, RobotRaconteurNodeSetupFlags.ENABLE_TCP_TRANSPORT | RobotRaconteurNodeSetupFlags.TCP_TRANSPORT_START_SERVER)) { MultiDimArrayTest.Test(); RobotRaconteurTestServiceSupport2 sup = new RobotRaconteurTestServiceSupport2(); sup.RegisterServices(setup.TcpTransport); ServiceTestClient2 c = new ServiceTestClient2(); c.RunFullTest("rr+tcp://localhost:4565/?service=RobotRaconteurTestService2"); } Console.WriteLine("Test completed"); return; } if (command == "loopback3") { RobotRaconteurNode.s.SetLogLevelFromEnvVariable(); using (var setup = new ServerNodeSetup("com.robotraconteur.testing.TestService3", 4567, RobotRaconteurNodeSetupFlags.ENABLE_TCP_TRANSPORT | RobotRaconteurNodeSetupFlags.TCP_TRANSPORT_START_SERVER)) { RobotRaconteurTestServiceSupport3 sup = new RobotRaconteurTestServiceSupport3(); sup.RegisterServices(); ServiceTestClient3 c = new ServiceTestClient3(); c.RunFullTest("rr+tcp://localhost:4567/?service=RobotRaconteurTestService3"); } Console.WriteLine("Test completed"); return; } if (command == "client") { RobotRaconteurNode.s.SetLogLevelFromEnvVariable(); string url = args[1]; string url_auth = args[2]; TcpTransport t = new TcpTransport(); t.EnableNodeDiscoveryListening(); RobotRaconteurNode.s.RegisterTransport(t); LocalTransport t2 = new LocalTransport(); RobotRaconteurNode.s.RegisterTransport(t2); HardwareTransport t4 = new HardwareTransport(); RobotRaconteurNode.s.RegisterTransport(t4); RobotRaconteurNode.s.RegisterServiceType(new com.robotraconteur.testing.TestService1.com__robotraconteur__testing__TestService1Factory()); RobotRaconteurNode.s.RegisterServiceType(new com.robotraconteur.testing.TestService2.com__robotraconteur__testing__TestService2Factory()); MultiDimArrayTest.Test(); RobotRaconteurTestServiceSupport sup = new RobotRaconteurTestServiceSupport(); sup.RegisterServices(t); int count = 1; if (args.Length >= 4) { count = int.Parse(args[3]); } for (int i = 0; i < count; i++) { ServiceTestClient c = new ServiceTestClient(); c.RunFullTest(url, url_auth); //System.Threading.Thread.Sleep(100); } RobotRaconteurNode.s.Shutdown(); Console.WriteLine("Test completed"); return; } if (command == "client2") { RobotRaconteurNode.s.SetLogLevelFromEnvVariable(); string url = args[1]; TcpTransport t = new TcpTransport(); t.EnableNodeDiscoveryListening(); RobotRaconteurNode.s.RegisterTransport(t); RobotRaconteurNode.s.RegisterServiceType(new com.robotraconteur.testing.TestService3.com__robotraconteur__testing__TestService3Factory()); MultiDimArrayTest.Test(); RobotRaconteurTestServiceSupport2 sup = new RobotRaconteurTestServiceSupport2(); sup.RegisterServices(t); ServiceTestClient2 c = new ServiceTestClient2(); c.RunFullTest(url); RobotRaconteurNode.s.Shutdown(); Console.WriteLine("Test completed"); return; } if (command == "client3") { RobotRaconteurNode.s.SetLogLevelFromEnvVariable(); string url = args[1]; TcpTransport t = new TcpTransport(); t.EnableNodeDiscoveryListening(); RobotRaconteurNode.s.RegisterTransport(t); RobotRaconteurNode.s.RegisterServiceType(new com.robotraconteur.testing.TestService5.com__robotraconteur__testing__TestService5Factory()); ServiceTestClient3 c = new ServiceTestClient3(); c.RunFullTest(url); RobotRaconteurNode.s.Shutdown(); Console.WriteLine("Test completed"); return; } if (command == "server") { RobotRaconteurNode.s.SetLogLevelFromEnvVariable(); int port; if (args[1] == "sharer") { port = -1; } else { port = Int32.Parse(args[1]); } string name = args[2]; LocalTransport t2 = new LocalTransport(); RobotRaconteurNode.s.RegisterTransport(t2); t2.StartServerAsNodeName(name); TcpTransport t = new TcpTransport(); t.EnableNodeAnnounce(); if (port > 0) { t.StartServer(port); } else { t.StartServerUsingPortSharer(); } try { t.LoadTlsNodeCertificate(); } catch (Exception) { Console.WriteLine("warning: Could not load local node certificate"); } RobotRaconteurNode.s.RegisterTransport(t); RobotRaconteurNode.s.RegisterServiceType(new com.robotraconteur.testing.TestService1.com__robotraconteur__testing__TestService1Factory()); RobotRaconteurNode.s.RegisterServiceType(new com.robotraconteur.testing.TestService2.com__robotraconteur__testing__TestService2Factory()); RobotRaconteurNode.s.RegisterServiceType(new com.robotraconteur.testing.TestService3.com__robotraconteur__testing__TestService3Factory()); RobotRaconteurNode.s.RegisterServiceType(new com.robotraconteur.testing.TestService5.com__robotraconteur__testing__TestService5Factory()); RobotRaconteurTestServiceSupport sup = new RobotRaconteurTestServiceSupport(); sup.RegisterServices(t); RobotRaconteurTestServiceSupport2 sup2 = new RobotRaconteurTestServiceSupport2(); sup2.RegisterServices(t); RobotRaconteurTestServiceSupport2 sup3 = new RobotRaconteurTestServiceSupport2(); sup3.RegisterServices(t); Console.WriteLine("Server started, press enter to quit"); Console.ReadLine(); RobotRaconteurNode.s.Shutdown(); Console.WriteLine("Test complete, no error detected"); return; } if (command == "findservicebytype") { RobotRaconteurNode.s.SetLogLevelFromEnvVariable(); string type = args[1]; string[] tschemes = args[2].Split(new char[] { ',' }); TcpTransport t = new TcpTransport(); t.EnableNodeDiscoveryListening(); RobotRaconteurNode.s.RegisterTransport(t); LocalTransport t2 = new LocalTransport(); RobotRaconteurNode.s.RegisterTransport(t2); System.Threading.Thread.Sleep(6000); ServiceInfo2[] ret = RobotRaconteurNode.s.FindServiceByType(type, tschemes); foreach (ServiceInfo2 r in ret) { print_ServiceInfo2(r); } var t1 = RobotRaconteurNode.s.AsyncFindServiceByType(type, tschemes); t1.Wait(); var ret2 = t1.Result; { foreach (ServiceInfo2 r in ret2) { print_ServiceInfo2(r); } } System.Threading.Thread.Sleep(10000); RobotRaconteurNode.s.Shutdown(); return; } if (command == "findnodebyid") { RobotRaconteurNode.s.SetLogLevelFromEnvVariable(); NodeID id = new NodeID(args[1]); string[] tschemes = args[2].Split(new char[] { ',' }); TcpTransport t = new TcpTransport(); t.EnableNodeDiscoveryListening(); RobotRaconteurNode.s.RegisterTransport(t); LocalTransport t2 = new LocalTransport(); RobotRaconteurNode.s.RegisterTransport(t2); System.Threading.Thread.Sleep(6000); NodeInfo2[] ret = RobotRaconteurNode.s.FindNodeByID(id, tschemes); foreach (NodeInfo2 r in ret) { print_NodeInfo2(r); } var ts1 = RobotRaconteurNode.s.AsyncFindNodeByID(id, tschemes); ts1.Wait(); var ret2 = ts1.Result; { foreach (NodeInfo2 r in ret2) { print_NodeInfo2(r); } } System.Threading.Thread.Sleep(10000); RobotRaconteurNode.s.Shutdown(); return; } if (command == "findnodebyname") { RobotRaconteurNode.s.SetLogLevelFromEnvVariable(); string name = args[1]; string[] tschemes = args[2].Split(new char[] { ',' }); TcpTransport t = new TcpTransport(); t.EnableNodeDiscoveryListening(); RobotRaconteurNode.s.RegisterTransport(t); LocalTransport t2 = new LocalTransport(); RobotRaconteurNode.s.RegisterTransport(t2); System.Threading.Thread.Sleep(6000); NodeInfo2[] ret = RobotRaconteurNode.s.FindNodeByName(name, tschemes); foreach (NodeInfo2 r in ret) { print_NodeInfo2(r); } var ts1 = RobotRaconteurNode.s.AsyncFindNodeByName(name, tschemes); ts1.Wait(); var ret2 = ts1.Result; { foreach (NodeInfo2 r in ret2) { print_NodeInfo2(r); } } System.Threading.Thread.Sleep(10000); RobotRaconteurNode.s.Shutdown(); return; } if (command == "stresstestclient") { RobotRaconteurNode.s.SetLogLevelFromEnvVariable(); string url1 = args[1]; LocalTransport t2 = new LocalTransport(); RobotRaconteurNode.s.RegisterTransport(t2); TcpTransport t = new TcpTransport(); t.EnableNodeDiscoveryListening(); RobotRaconteurNode.s.RegisterTransport(t); RobotRaconteurNode.s.RegisterServiceType(new com.robotraconteur.testing.TestService1.com__robotraconteur__testing__TestService1Factory()); RobotRaconteurNode.s.RegisterServiceType(new com.robotraconteur.testing.TestService2.com__robotraconteur__testing__TestService2Factory()); servicetest_count = 0; servicetest_keepgoing = true; object obj = RobotRaconteurNode.s.ConnectService(url1); async_testroot o = (async_testroot)obj; testroot o2 = (testroot)obj; o.async_func3(1, 2).ContinueWith(ts1 => servicetest2(o, ts1)); Pipe <double> .PipeEndpoint p = o2.broadcastpipe.Connect(-1); p.PacketReceivedEvent += servicetest7; Wire <double> .WireConnection w = o2.broadcastwire.Connect(); RobotRaconteur.Timer tt = RobotRaconteurNode.s.CreateTimer(40, delegate(TimerEvent ev) { servicetest5(p, w, ev); }); tt.Start(); Console.WriteLine("Press enter to quit"); Console.ReadLine(); servicetest_keepgoing = false; tt.Stop(); RobotRaconteurNode.s.Shutdown(); return; } if (command == "latencytestclient" || command == "latencytestclient2") { RobotRaconteurNode.s.SetLogLevelFromEnvVariable(); string url1 = args[1]; LocalTransport t2 = new LocalTransport(); RobotRaconteurNode.s.RegisterTransport(t2); TcpTransport t = new TcpTransport(); t.EnableNodeDiscoveryListening(); RobotRaconteurNode.s.RegisterTransport(t); RobotRaconteurNode.s.RegisterServiceType(new com.robotraconteur.testing.TestService1.com__robotraconteur__testing__TestService1Factory()); RobotRaconteurNode.s.RegisterServiceType(new com.robotraconteur.testing.TestService2.com__robotraconteur__testing__TestService2Factory()); servicetest_count = 0; servicetest_keepgoing = true; object obj = RobotRaconteurNode.s.ConnectService(url1); async_testroot o = (async_testroot)obj; testroot o2 = (testroot)obj; var o3 = o2.get_o1(); int iters = 100000; var d = new double[10]; DateTime start; DateTime end; if (command == "latencytestclient") { start = DateTime.UtcNow; for (int i = 0; i < iters; i++) { o3.d1 = d; } end = DateTime.UtcNow; } else { start = DateTime.UtcNow; for (int i = 0; i < iters; i++) { var dummy = o2.struct1; } end = DateTime.UtcNow; } var diff = (end - start).Ticks / (TimeSpan.TicksPerMillisecond / 1000); double period = ((double)diff) / ((double)iters); Console.WriteLine("Period = {0}", period); RobotRaconteurNode.s.Shutdown(); return; } if (command == "peeridentity") { RobotRaconteurNode.s.SetLogLevelFromEnvVariable(); if (args.Length < 2) { Console.WriteLine("Usage for peeridentity: RobotRaconteurTest peeridentity url [nodeid]"); return; } var url1 = args[1]; Console.WriteLine(url1); var c = new TcpTransport(); if (args.Length > 2) { var nodeid = args[2]; var id = new NodeID(nodeid); RobotRaconteurNode.s.NodeID = id; try { c.LoadTlsNodeCertificate(); } catch (Exception) { Console.WriteLine("warning: Could not load local node certificate"); } } Console.WriteLine(RobotRaconteurNode.s.NodeID); var c2 = new LocalTransport(); var c5 = new HardwareTransport(); RobotRaconteurNode.s.RegisterTransport(c); RobotRaconteurNode.s.RegisterTransport(c2); RobotRaconteurNode.s.RegisterTransport(c5); RobotRaconteurNode.s.RegisterServiceType(new com.robotraconteur.testing.TestService1.com__robotraconteur__testing__TestService1Factory()); RobotRaconteurNode.s.RegisterServiceType(new com.robotraconteur.testing.TestService2.com__robotraconteur__testing__TestService2Factory()); var oo = (testroot)RobotRaconteurNode.s.ConnectService(url1); oo.func3(1.0, 2.3); if (c.IsTransportConnectionSecure(oo)) { Console.WriteLine("Connection is secure"); if (c.IsSecurePeerIdentityVerified(oo)) { Console.WriteLine("Peer identity is verified: " + c.GetSecurePeerIdentity(oo)); } else { Console.WriteLine("Peer identity is not verified"); } } else { Console.WriteLine("Connection is not secure"); } RobotRaconteurNode.s.Shutdown(); Console.WriteLine("Test completed, no errors detected"); return; } if (command == "multidimarraytest") { MultiDimArrayTest.Test(); RobotRaconteurNode.s.Shutdown(); return; } if (command == "subscribertest") { RobotRaconteurNode.s.SetLogLevelFromEnvVariable(); if (args.Length < 2) { Console.WriteLine("Usage for subscribertest: RobotRaconteurTest subscribertest servicetype"); return; } var servicetype = args[1]; LocalTransport t2 = new LocalTransport(); t2.EnableNodeDiscoveryListening(); RobotRaconteurNode.s.RegisterTransport(t2); TcpTransport t = new TcpTransport(); t.EnableNodeDiscoveryListening(); RobotRaconteurNode.s.RegisterTransport(t); HardwareTransport t3 = new HardwareTransport(); RobotRaconteurNode.s.RegisterTransport(t3); RobotRaconteurNode.s.RegisterServiceType(new com.robotraconteur.testing.TestService1.com__robotraconteur__testing__TestService1Factory()); RobotRaconteurNode.s.RegisterServiceType(new com.robotraconteur.testing.TestService2.com__robotraconteur__testing__TestService2Factory()); var subscription = RobotRaconteurNode.s.SubscribeServiceByType(new string[] { servicetype }); subscription.ClientConnected += delegate(ServiceSubscription c, ServiceSubscriptionClientID d, object e) { Console.WriteLine("Client connected: " + d.NodeID.ToString() + ", " + d.ServiceName); testroot e1 = (testroot)e; Console.WriteLine("d1 = " + e1.d1); }; subscription.ClientDisconnected += delegate(ServiceSubscription c, ServiceSubscriptionClientID d, object e) { Console.WriteLine("Client disconnected: " + d.NodeID.ToString() + ", " + d.ServiceName); }; var wire_subscription = subscription.SubscribeWire <double>("broadcastwire"); wire_subscription.WireValueChanged += delegate(WireSubscription <double> c, double d, TimeSpec e) { //Console.WriteLine("Wire value changed: " + d); }; var pipe_subscription = subscription.SubscribePipe <double>("broadcastpipe"); pipe_subscription.PipePacketReceived += delegate(PipeSubscription <double> c) { double val; while (c.TryReceivePacket(out val)) { Console.WriteLine("Received pipe packet: " + val); } }; System.Threading.Thread.Sleep(6000); var connected_clients = subscription.GetConnectedClients(); foreach (var c in connected_clients) { Console.WriteLine("Client: " + c.Key.NodeID + ", " + c.Key.ServiceName); } TimeSpec w1_time = null; double w1_value; var w1_res = wire_subscription.TryGetInValue(out w1_value); if (w1_res) { Console.WriteLine("Got broadcastwire value: " + w1_value + " " + w1_time?.seconds); } Console.WriteLine("Waiting for services..."); Console.ReadLine(); RobotRaconteurNode.s.Shutdown(); return; } if (command == "subscriberurltest") { RobotRaconteurNode.s.SetLogLevelFromEnvVariable(); if (args.Length < 2) { Console.WriteLine("Usage for subscriberurltest: RobotRaconteurTest subscriberurltest url"); return; } var url = args[1]; LocalTransport t2 = new LocalTransport(); t2.EnableNodeDiscoveryListening(); RobotRaconteurNode.s.RegisterTransport(t2); TcpTransport t = new TcpTransport(); t.EnableNodeDiscoveryListening(); RobotRaconteurNode.s.RegisterTransport(t); HardwareTransport t3 = new HardwareTransport(); RobotRaconteurNode.s.RegisterTransport(t3); RobotRaconteurNode.s.RegisterServiceType(new com.robotraconteur.testing.TestService1.com__robotraconteur__testing__TestService1Factory()); RobotRaconteurNode.s.RegisterServiceType(new com.robotraconteur.testing.TestService2.com__robotraconteur__testing__TestService2Factory()); var subscription = RobotRaconteurNode.s.SubscribeService(url); subscription.ClientConnected += delegate(ServiceSubscription c, ServiceSubscriptionClientID d, object e) { Console.WriteLine("Client connected: " + d.NodeID.ToString() + ", " + d.ServiceName); testroot e1 = (testroot)e; Console.WriteLine("d1 = " + e1.d1); }; subscription.ClientDisconnected += delegate(ServiceSubscription c, ServiceSubscriptionClientID d, object e) { Console.WriteLine("Client disconnected: " + d.NodeID.ToString() + ", " + d.ServiceName); }; subscription.ClientConnectFailed += delegate(ServiceSubscription c, ServiceSubscriptionClientID d, string[] url2, Exception err) { Console.WriteLine("Client connect failed: " + d.NodeID.ToString() + " url: " + String.Join(",", url2) + err.ToString()); }; subscription.AsyncGetDefaultClient(1000).ContinueWith(delegate(Task <object> res) { if (res.IsFaulted) { Console.WriteLine("AsyncGetDefaultClient failed"); } else if (res.Result == null) { Console.WriteLine("AsyncGetDefaultClient returned null"); } else { Console.WriteLine($"AsyncGetDefaultClient successful: {res.Result}"); } }); var client2 = subscription.GetDefaultClientWait(6000); object client3; var try_res = subscription.TryGetDefaultClientWait(out client3, 6000); Console.WriteLine($"try_res = {try_res}"); var connected_clients = subscription.GetConnectedClients(); foreach (var c in connected_clients) { Console.WriteLine("Client: " + c.Key.NodeID + ", " + c.Key.ServiceName); } try { Console.WriteLine(((testroot)subscription.GetDefaultClient()).d1); } catch (Exception) { Console.WriteLine("Client not connected"); } object client1; subscription.TryGetDefaultClient(out client1); Console.WriteLine("Waiting for services..."); Console.ReadLine(); RobotRaconteurNode.s.Shutdown(); return; } if (command == "subscriberfiltertest") { RobotRaconteurNode.s.SetLogLevelFromEnvVariable(); if (args.Length < 2) { throw new Exception("Usage for subscriberfiltertest: RobotRaconteurTest subscriberfiltertest servicetype"); } var servicetype = args[1]; var f = new ServiceSubscriptionFilter(); if (args.Length >= 3) { var subcommand = args[2]; if (subcommand == "nodeid") { if (args.Length < 4) { throw new Exception("Usage for subscriberfiltertest: RobotRaconteurTest subscriberfiltertest nodeid <nodeid>"); } var n = new ServiceSubscriptionFilterNode(); n.NodeID = new NodeID(args[3]); f.Nodes = new ServiceSubscriptionFilterNode[] { n }; } else if (subcommand == "nodename") { if (args.Length < 4) { throw new Exception("Usage for subscriberfiltertest: RobotRaconteurTest subscriberfiltertest nodename <nodename>"); } var n = new ServiceSubscriptionFilterNode(); n.NodeName = args[3]; f.Nodes = new ServiceSubscriptionFilterNode[] { n }; } else if (subcommand == "nodeidscheme") { if (args.Length < 5) { throw new Exception("Usage for subscriberfiltertest: RobotRaconteurTest subscriberfiltertest nodeidscheme <nodeid> <schemes>"); } var n = new ServiceSubscriptionFilterNode(); n.NodeID = new NodeID(args[3]); f.Nodes = new ServiceSubscriptionFilterNode[] { n }; f.TransportSchemes = args[4].Split(new char[] { ',' }); } else if (subcommand == "nodeidauth") { if (args.Length < 6) { throw new Exception("Usage for subscriberfiltertest: RobotRaconteurTest subscriberfiltertest nodeidauth <nodeid> <username> <password>"); } var n = new ServiceSubscriptionFilterNode(); n.NodeID = new NodeID(args[3]); n.Username = args[4]; n.Credentials = new Dictionary <string, object>() { { "password", args[5] } }; f.Nodes = new ServiceSubscriptionFilterNode[] { n }; } else if (subcommand == "servicename") { if (args.Length < 4) { throw new Exception("Usage for subscriberfiltertest: RobotRaconteurTest subscriberfiltertest servicename <servicename>"); } var n = new ServiceSubscriptionFilterNode(); f.ServiceNames = new string[] { args[3] }; } else if (subcommand == "predicate") { f.Predicate = delegate(ServiceInfo2 info) { Console.WriteLine("Predicate: " + info.NodeName); return(info.NodeName == "testprog"); }; } else { throw new Exception("Unknown subscriberfiltertest command"); } LocalTransport t2 = new LocalTransport(); t2.EnableNodeDiscoveryListening(); RobotRaconteurNode.s.RegisterTransport(t2); TcpTransport t = new TcpTransport(); t.EnableNodeDiscoveryListening(); RobotRaconteurNode.s.RegisterTransport(t); HardwareTransport t3 = new HardwareTransport(); RobotRaconteurNode.s.RegisterTransport(t3); RobotRaconteurNode.s.RegisterServiceType(new com.robotraconteur.testing.TestService1.com__robotraconteur__testing__TestService1Factory()); RobotRaconteurNode.s.RegisterServiceType(new com.robotraconteur.testing.TestService2.com__robotraconteur__testing__TestService2Factory()); var subscription = RobotRaconteurNode.s.SubscribeServiceByType(new string[] { servicetype }, f); subscription.ClientConnected += delegate(ServiceSubscription c, ServiceSubscriptionClientID d, object e) { Console.WriteLine("Client connected: " + d.NodeID.ToString() + ", " + d.ServiceName); testroot e1 = (testroot)e; Console.WriteLine("d1 = " + e1.d1); }; subscription.ClientDisconnected += delegate(ServiceSubscription c, ServiceSubscriptionClientID d, object e) { Console.WriteLine("Client disconnected: " + d.NodeID.ToString() + ", " + d.ServiceName); }; Console.ReadLine(); RobotRaconteurNode.s.Shutdown(); return; } return; } if (command == "serviceinfo2subscribertest") { RobotRaconteurNode.s.SetLogLevelFromEnvVariable(); if (args.Length < 2) { Console.WriteLine("Usage for subscribertest: RobotRaconteurTest subscribertest servicetype"); return; } var servicetype = args[1]; LocalTransport t2 = new LocalTransport(); t2.EnableNodeDiscoveryListening(); RobotRaconteurNode.s.RegisterTransport(t2); TcpTransport t = new TcpTransport(); t.EnableNodeDiscoveryListening(); RobotRaconteurNode.s.RegisterTransport(t); HardwareTransport t3 = new HardwareTransport(); RobotRaconteurNode.s.RegisterTransport(t3); RobotRaconteurNode.s.RegisterServiceType(new com.robotraconteur.testing.TestService1.com__robotraconteur__testing__TestService1Factory()); RobotRaconteurNode.s.RegisterServiceType(new com.robotraconteur.testing.TestService2.com__robotraconteur__testing__TestService2Factory()); var subscription = RobotRaconteurNode.s.SubscribeServiceInfo2(new string[] { servicetype }); subscription.ServiceDetected += delegate(ServiceInfo2Subscription sub, ServiceSubscriptionClientID id, ServiceInfo2 info) { Console.WriteLine("Service detected: " + info.NodeID.ToString() + ", " + info.Name); }; subscription.ServiceLost += delegate(ServiceInfo2Subscription sub, ServiceSubscriptionClientID id, ServiceInfo2 info) { Console.WriteLine("Service lost: " + info.NodeID.ToString() + ", " + info.Name); }; System.Threading.Thread.Sleep(6000); var connected_clients = subscription.GetDetectedServiceInfo2(); foreach (var c in connected_clients) { Console.WriteLine("Client: " + c.Key.NodeID + ", " + c.Key.ServiceName); } Console.WriteLine("Waiting for services..."); Console.ReadLine(); RobotRaconteurNode.s.Shutdown(); return; } if (command == "nowutc") { Console.WriteLine(RobotRaconteurNode.s.NowUTC); RobotRaconteurNode.s.Shutdown(); return; } if (command == "testlogging") { var r = new RRLogRecord(); var node = RobotRaconteurNode.s; var nodeid = node.NodeID; r.Node = node; r.Time = DateTime.UtcNow; r.Level = LogLevel.LogLevel_Warning; r.Message = "This is a test warning"; RobotRaconteurNode.s.LogRecord(r); RobotRaconteurNode.s.Shutdown(); return; } if (command == "testloghandler") { var user_log_handler = new UserLogRecordHandler(x => Console.WriteLine("csharp handler: " + x.ToString())); RobotRaconteurNode.s.SetLogRecordHandler(user_log_handler); RobotRaconteurNode.s.SetLogLevel(LogLevel.LogLevel_Debug); TcpTransport t = new TcpTransport(); t.StartServer(2323); RobotRaconteurNode.s.RegisterTransport(t); RobotRaconteurNode.s.RegisterServiceType(new com.robotraconteur.testing.TestService1.com__robotraconteur__testing__TestService1Factory()); RobotRaconteurNode.s.RegisterServiceType(new com.robotraconteur.testing.TestService2.com__robotraconteur__testing__TestService2Factory()); RobotRaconteurTestServiceSupport sup = new RobotRaconteurTestServiceSupport(); sup.RegisterServices(t); ServiceTestClient c = new ServiceTestClient(); c.RunFullTest("tcp://localhost:2323/{0}/RobotRaconteurTestService", "tcp://localhost:2323/{0}/RobotRaconteurTestService_auth"); RobotRaconteurNode.s.Shutdown(); Console.WriteLine("Test completed"); return; } if (command == "server2") { ServerNodeSetup node_setup = new ServerNodeSetup("testprog", 22222, args); using (node_setup) { var t = node_setup.TcpTransport; RobotRaconteurTestServiceSupport sup = new RobotRaconteurTestServiceSupport(); sup.RegisterServices(t); RobotRaconteurTestServiceSupport2 sup2 = new RobotRaconteurTestServiceSupport2(); sup2.RegisterServices(t); RobotRaconteurTestServiceSupport3 sup3 = new RobotRaconteurTestServiceSupport3(); sup3.RegisterServices(); Console.WriteLine("Server started, press enter to quit"); Console.ReadLine(); RobotRaconteurNode.s.Shutdown(); Console.WriteLine("Test complete, no error detected"); return; } } throw new Exception("Unknown command"); }