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);
            }
        }
示例#2
0
        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();
        }
示例#3
0
        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);
        }
示例#4
0
        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);
            }
        }
示例#9
0
        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();
        }
示例#10
0
    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));
            }
        }