public void RespondToNameRequest() { var core = BuildService("10.99.99.99"); Packet received = null; core.Setup(x => x.SendPacket(It.IsAny <Packet>())).Callback <Packet>(x => received = x); using (var service = new ServicePublisher(core.Object)) { service.LocalName = "Scooby"; service.Start(); var nameSearchPacket = new Packet(); nameSearchPacket.Queries.Add(new Query() { IsMulticast = true, Record = new Record() { RecordType = 255, Name = "Scooby.local", } }); core.Raise(x => x.PacketReceived += null, nameSearchPacket, new IPEndPoint(IPAddress.Parse("10.0.0.10"), 5353)); var aanswer = received.Answers.Where(x => x.Record.RecordType == AAnswer.RecordType).First().Data as AAnswer; Assert.AreEqual(IPAddress.Parse("10.99.99.99"), aanswer.Address); } }
protected InjectorHostBase(bool forceCanInject = false) { _forceCanInject = forceCanInject; var dtoAssembly = typeof(NewAssemblyMessage).GetTypeInfo().Assembly; _messageHub.AdditionalTypeResolutionAssemblies.Add(dtoAssembly); // set up the discovery responder _servicePublisher = new InjectorServiceDefinition(async() => { // get the current interfaces var ifs = await CommsInterface.GetAllInterfacesAsync(); var usable = ifs.Where(iface => iface.IsUsable && !iface.IsLoopback) .Where(iface => iface.ConnectionStatus == CommsInterfaceStatus.Connected).ToList(); // if none (how :O), we won't respond. how could we event if (!usable.Any()) { return(null); } return(new InjectorHostServiceResponse { ServiceGuid = ServiceGuid, ServiceName = GetType().FullName, Port = ServicePort, NumConnectedClients = ConnectedClients.Count, RunningAt = ifs.Select(iface => String.Join(":", iface.IpAddress, ServicePort.ToString())).ToList() }); }).CreateServicePublisher(); }
private static void UseServicePublish(IConfigurationRoot configRoot, ISerializer serializer, INodeServer nodeServer) { var zookeeperConfig = configRoot.GetZookeeperConfig(); var servicePublisher = new ServicePublisher(zookeeperConfig, LoggerManager.ServerLoggerFactory); nodeServer.UseServicePublish(servicePublisher, serializer.Name); }
static async Task Main(/*string[] args*/) { ConsoleLogger Logger = new ConsoleLogger(); try { Logger.Log($"Running ServiceProvider Server"); var Publisher = new ServicePublisher(Logger); var EndpointDetails = Publisher.EndpointDetails; var simCardReaderDevice = new KAL.XFS4IoTSP.CardReader.Simulator.SimulatedCardReader(Logger); Publisher.Add(new XFS4IoTCardReader.CardReaderServiceProvider(EndpointDetails, simCardReaderDevice, Logger)); ///TODO adding other device classes await Publisher.RunAsync(); } catch (Exception e) when(e.InnerException != null) { Logger.Warning($"Unhandled exception {e.InnerException.Message}"); } catch (Exception e) { Logger.Warning($"Unhandled exception {e.Message}"); } }
public void TransferServiceInfo() { var publishInfo = new ServiceInfo(); publishInfo.Name = "Pubtest"; publishInfo.Port = 9999; publishInfo.Priority = 10; publishInfo.Weight = 10; publishInfo.Flags.Add("TestFlag"); publishInfo.Data["TestData"] = "TestValue"; ServiceInfo recvInfo = null; var service = new ConnectedServiceMock("10.99.99.99"); using (var publisher = new ServicePublisher(service)) { var watcher = new ServiceWatchManager(service); publisher.AddService("_pubtest._tcp.local", publishInfo); publisher.Start(); var watch = watcher.WatchService("_pubtest._tcp.local", (nic, x) => recvInfo = x); watch.Start(); Assert.AreEqual(publishInfo.Name, recvInfo.Name); Assert.AreEqual(publishInfo.Port, recvInfo.Port); Assert.AreEqual(publishInfo.Priority, recvInfo.Priority); Assert.AreEqual(publishInfo.Weight, recvInfo.Weight); Assert.AreEqual(publishInfo.Flags[0], recvInfo.Flags[0]); Assert.AreEqual(publishInfo.Data["TestData"], recvInfo.Data["TestData"]); Assert.AreEqual(IPAddress.Parse("10.99.99.99"), recvInfo.IP4Address); } Assert.IsFalse(service.Running); }
public void StartingPublisherCallsStartListener() { var mockListener = new Moq.Mock <IServiceCore>(); mockListener.Setup(x => x.Start()).Verifiable(); using (var service = new ServicePublisher(mockListener.Object)) { service.Start(); } mockListener.VerifyAll(); }
public void RespondWithServiceInfo() { var core = BuildService("10.99.99.99", "fe80::20c:29ff:fe0d:e789"); Packet received = null; core.Setup(x => x.SendPacket(It.IsAny <Packet>())).Callback <Packet>(x => received = x); using (var service = new ServicePublisher(core.Object)) { var publishInfo = new ServiceInfo(); publishInfo.Name = "Pubtest"; publishInfo.IP4Address = IPAddress.Parse("10.0.0.10"); publishInfo.IP6Address = IPAddress.Parse("fe80::20c:29ff:fe0d:e789"); publishInfo.Port = 9999; publishInfo.Priority = 10; publishInfo.Weight = 10; publishInfo.Flags.Add("TestFlag"); publishInfo.Data["TestData"] = "TestValue"; service.LocalName = "Scooby"; service.AddService("_pubtest._tcp.local", publishInfo); service.Start(); core.Raise(x => x.PacketReceived += null, BuildQueryPacket("_pubtest._tcp.local"), new IPEndPoint(IPAddress.Parse("10.0.0.10"), 5353)); Assert.IsTrue(received.Flags.IsResponse); Assert.IsTrue(received.Flags.IsAuthoritative); var ptrAnswer = received.Answers.Where(x => x.Record.RecordType == PTRAnswer.RecordType).First().Data as PTRAnswer; Assert.AreEqual("Pubtest._pubtest._tcp.local", ptrAnswer.DomainName); var srv = received.Answers.Where(x => x.Record.RecordType == SRVAnswer.RecordType).First(); var srvAnswer = srv.Data as SRVAnswer; Assert.AreEqual(SRVAnswer.GetService(srv.Record), "Pubtest"); Assert.AreEqual(SRVAnswer.GetProtocol(srv.Record), "_pubtest"); Assert.AreEqual(SRVAnswer.GetName(srv.Record), "_tcp.local"); //Assert.AreEqual("Pubtest._pubtest._tcp.local", srvAnswer.Name); Assert.AreEqual(9999, srvAnswer.Port); Assert.AreEqual(10, srvAnswer.Priority); Assert.AreEqual(10, srvAnswer.Weight); Assert.AreEqual("Scooby.local", srvAnswer.Target); var txtAnswer = received.Answers.Where(x => x.Record.RecordType == TXTAnswer.RecordType).First().Data as TXTAnswer; Assert.AreEqual("TestFlag", txtAnswer.Flags[0]); Assert.AreEqual("TestValue", txtAnswer.Data["TestData"]); var aAnswer = received.Answers.Where(x => x.Record.RecordType == AAnswer.RecordType).First().Data as AAnswer; Assert.AreEqual(IPAddress.Parse("10.99.99.99"), aAnswer.Address); var aaaaAnswer = received.Answers.Where(x => x.Record.RecordType == AAAAAnswer.RecordType).First().Data as AAAAAnswer; Assert.AreEqual(IPAddress.Parse("fe80::20c:29ff:fe0d:e789"), aaaaAnswer.Address); } }
public void ConstructingSendsNameTest() { var core = new Mock <IServiceCore>(); Packet received = null; core.Setup(x => x.SendPacket(It.IsAny <Packet>())).Callback <Packet>(x => received = x); using (var service = new ServicePublisher(core.Object)) { service.LocalName = "Scooby"; service.Start(); Assert.IsNotNull(received); var query = received.Queries[0]; Assert.AreEqual("Scooby.local", query.Record.Name); Assert.AreEqual(255, query.Record.RecordType); } }
static void Main(string[] args) { Console.InputEncoding = Encoding.UTF8; Console.OutputEncoding = Encoding.UTF8; //配置服务端日志工厂 LoggerManager.ServerLoggerFactory.AddConsole(LogLevel.Error); //加载配置文件 string path = Path.Combine(Directory.GetCurrentDirectory(), "config.json"); var configRoot = new ConfigurationBuilder() .AddJsonFile(path) .Build(); var serverConfig = configRoot.GetServerConfig(); var loginValidator = new DefaultLoginValidator(configRoot.GetDefaultLoginValidatorConfig(), LoggerManager.ServerLoggerFactory); //创建LoginValidator实例 var serializer = new ProtoBufSerializer(LoggerManager.ServerLoggerFactory); //配置服务 var nodeServer = new NodeServerBuilder() .ApplyConfig(serverConfig) .ConfigSerializer(serializer) .ConfigLoginValidator(loginValidator) //配置LoginValidator .ConfigServiceProvider(GetServiceProvider()) .UseDotNetty(serverConfig.ServerInfo) .Build(); //配置服务发现 var zookeeperConfig = configRoot.GetZookeeperConfig(); var servicePublisher = new ServicePublisher(zookeeperConfig, LoggerManager.ServerLoggerFactory); nodeServer.UseServicePublish(servicePublisher, serializer.Name); //启动服务 nodeServer.StartAsync().Wait(); Console.ReadLine(); //关闭服务 nodeServer.StopAsync().Wait(); }
private void OnTriggerStay(Collider other) { if (other.tag == "balloon" && timeStay > 0) { timeStay -= Time.deltaTime; } if (other.tag == "balloon" && timeStay <= 0 && timeStay > -1 && state == 0) { ServicePublisher sp = other.GetComponentInParent <ServicePublisher>(); if (sp.UpOrDown == 0) { OnGrabBallon1(); state = 1; rg.enabled = true; OriginPlace = balloon.transform.position; pm.ifMove = false; Difference = other.transform.position - transform.position; SetJointSettings(0f); } else { OnGrabBallon2(); state = 2; OriginPlace = balloon.transform.position; pm.ifMove = false; Difference = other.transform.position - transform.position; SetJointSettings(0f); Throw_Candy asd = GetComponent <Throw_Candy>(); asd.backToNormal(); startEndGame(); GameObject dfg = GameObject.Find("Gingerbread Man"); JumpJump sdf = dfg.GetComponent <JumpJump>(); sdf.enabled = true; GameObject ff = GameObject.Find("House"); ff.SendMessage("Change"); source.PlayOneShot(Click, 1); } } }
public void SearchForUnusedName() { var core = BuildService("10.0.0.1"); core.Setup(x => x.SendPacket(It.IsAny <Packet>())).Callback <Packet>(packet => { if (packet.Queries[0].Record.Name == "Scooby.local") { var resp = BuildAnswerPacket("Scooby.local", "10.99.99.99"); core.Raise(x => x.PacketReceived += null, resp, new IPEndPoint(IPAddress.Parse("10.99.99.99"), 5353)); } }); using (var service = new ServicePublisher(core.Object)) { string newName = null; service.LocalName = "Scooby"; service.NameUpdated += x => newName = x; service.Start(); Assert.IsFalse(string.IsNullOrEmpty(newName)); } }