public JT808GatewayService(IServiceProvider serviceProvider)
 {
     this.jT808SessionManager          = serviceProvider.GetRequiredService <JT808SessionManager>();
     this.jT808TcpAtomicCounterService = serviceProvider.GetRequiredService <JT808AtomicCounterServiceFactory>().Create(JT808TransportProtocolType.tcp);
     this.jT808UdpAtomicCounterService = serviceProvider.GetRequiredService <JT808AtomicCounterServiceFactory>().Create(JT808TransportProtocolType.udp);
     this.ConfigurationOptionsMonitor  = serviceProvider.GetRequiredService <IOptionsMonitor <JT808Configuration> >();
 }
Exemplo n.º 2
0
 public JT808MsgReplyHostedService(
     IJT808MsgReplyConsumer jT808MsgReplyConsumer,
     JT808SessionManager jT808SessionManager)
 {
     JT808MsgReplyConsumer = jT808MsgReplyConsumer;
     JT808SessionManager   = jT808SessionManager;
 }
 public JT808TcpConnectionHandler(
     JT808SessionManager jT808SessionManager,
     ILoggerFactory loggerFactory)
 {
     this.jT808SessionManager = jT808SessionManager;
     logger = loggerFactory.CreateLogger <JT808TcpConnectionHandler>();
 }
Exemplo n.º 4
0
 public JT808MsgIdDefaultWebApiHandler(JT808SessionManager jT808SessionManager)
 {
     this.JT808SessionManager = jT808SessionManager;
     InitTcpRoute();
     InitUdpRoute();
     InitCommontRoute();
 }
Exemplo n.º 5
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="jT808SessionManager"></param>
 /// <param name="jT808BlacklistManager"></param>
 public JT808WebApi(
     JT808SessionManager jT808SessionManager,
     JT808BlacklistManager jT808BlacklistManager)
 {
     this.SessionManager   = jT808SessionManager;
     this.BlacklistManager = jT808BlacklistManager;
 }
        public void TryAddTest()
        {
            JT808SessionManager jT808SessionManager = new JT808SessionManager(new LoggerFactory());
            var result = jT808SessionManager.TryAdd(new JT808TcpSession(new Socket(SocketType.Stream, ProtocolType.Tcp)));

            Assert.True(result);
            Assert.Equal(1, jT808SessionManager.TotalSessionCount);
        }
 public JT808MsgReplyHostedService(
     ILoggerFactory loggerFactory,
     IJT808MsgReplyConsumer jT808MsgReplyConsumer,
     JT808SessionManager jT808SessionManager)
 {
     JT808MsgReplyConsumer = jT808MsgReplyConsumer;
     JT808SessionManager   = jT808SessionManager;
     logger = loggerFactory.CreateLogger <JT808MsgReplyHostedService>();
 }
 public JT808MsgReplyHostedService(
     JT808Configuration jT808Configuration,
     IJT808MsgReplyConsumer jT808MsgReplyConsumer,
     JT808SessionManager jT808SessionManager)
 {
     JT808MsgReplyConsumer = jT808MsgReplyConsumer;
     JT808SessionManager   = jT808SessionManager;
     Configuration         = jT808Configuration;
 }
 public JT808UdpReceiveTimeoutHostedService(
     IOptions <JT808Configuration> jT808ConfigurationAccessor,
     ILoggerFactory loggerFactory,
     JT808SessionManager jT808SessionManager
     )
 {
     SessionManager = jT808SessionManager;
     Logger         = loggerFactory.CreateLogger("JT808UdpReceiveTimeout");
     Configuration  = jT808ConfigurationAccessor.Value;
 }
 public JT808UdpReceiveTimeoutHostedService(
     JT808Configuration jT808Configuration,
     ILoggerFactory loggerFactory,
     JT808SessionManager jT808SessionManager
     )
 {
     SessionManager = jT808SessionManager;
     Logger         = loggerFactory.CreateLogger("JT808UdpReceiveTimeout");
     Configuration  = jT808Configuration;
 }
        public void RemoveBySessionIdTest()
        {
            JT808SessionManager jT808SessionManager = new JT808SessionManager(new LoggerFactory());
            var session = new JT808TcpSession(new Socket(SocketType.Stream, ProtocolType.Tcp));
            var result1 = jT808SessionManager.TryAdd(session);

            Assert.True(result1);
            Assert.Equal(1, jT808SessionManager.TotalSessionCount);
            jT808SessionManager.RemoveBySessionId(session.SessionID);
            Assert.Equal(0, jT808SessionManager.TotalSessionCount);
        }
 public JT808GatewayService(
     IOptionsMonitor <JT808Configuration> configurationOptionsMonitor,
     JT808SessionManager jT808SessionManager,
     JT808AtomicCounterServiceFactory jT808AtomicCounterServiceFactory
     )
 {
     this.jT808SessionManager          = jT808SessionManager;
     this.ConfigurationOptionsMonitor  = configurationOptionsMonitor;
     this.jT808TcpAtomicCounterService = jT808AtomicCounterServiceFactory.Create(JT808TransportProtocolType.tcp);
     this.jT808UdpAtomicCounterService = jT808AtomicCounterServiceFactory.Create(JT808TransportProtocolType.udp);
 }
        public void TryLinkTest()
        {
            string tno = "123456";
            JT808SessionManager jT808SessionManager = new JT808SessionManager(new LoggerFactory());
            var session = new JT808TcpSession(new Socket(SocketType.Stream, ProtocolType.Tcp));
            var result1 = jT808SessionManager.TryAdd(session);

            jT808SessionManager.TryLink(tno, session);
            Assert.True(result1);
            Assert.Equal(1, jT808SessionManager.TotalSessionCount);
            Assert.True(jT808SessionManager.TerminalPhoneNoSessions.ContainsKey(tno));
        }
 public void SendTest()
 {
     Assert.Throws <SocketException>(() =>
     {
         string tno = "123456";
         JT808SessionManager jT808SessionManager = new JT808SessionManager(new LoggerFactory());
         var session = new JT808TcpSession(new Socket(SocketType.Stream, ProtocolType.Tcp));
         var result1 = jT808SessionManager.TryAdd(session);
         jT808SessionManager.TryLink(tno, session);
         jT808SessionManager.TrySendByTerminalPhoneNoAsync(tno, new byte[] { 0x7e, 0, 0, 0x7e }).GetAwaiter().GetResult();
     });
 }
        public void Test3()
        {
            // 判断通道是否关闭
            IJT808SessionService jT808SessionServiceDefaultImpl = ServiceProvider.GetService <IJT808SessionService>();
            JT808SessionManager  jT808TcpSessionManager         = ServiceProvider.GetService <JT808SessionManager>();
            var result1 = jT808SessionServiceDefaultImpl.GetTcpAll();

            SimpleTcpClient1.Down();
            Thread.Sleep(5000);
            var session = jT808TcpSessionManager.GetSessionByTerminalPhoneNo("123456789001");

            Thread.Sleep(100000);
        }
Exemplo n.º 16
0
 public JT808TcpServerHandler(
     IJT808MsgProducer jT808MsgProducer,
     IJT808Config jT808Config,
     ILoggerFactory loggerFactory,
     JT808AtomicCounterServiceFactory jT808AtomicCounterServiceFactory,
     JT808SessionManager jT808SessionManager)
 {
     this.jT808SessionManager       = jT808SessionManager;
     this.JT808MsgProducer          = jT808MsgProducer;
     this.jT808AtomicCounterService = jT808AtomicCounterServiceFactory.Create(JT808TransportProtocolType.tcp);
     this.JT808Serializer           = jT808Config.GetSerializer();
     logger = loggerFactory.CreateLogger <JT808TcpServerHandler>();
 }
Exemplo n.º 17
0
 /// <summary>
 /// 使用队列方式
 /// </summary>
 /// <param name="messageHandler"></param>
 /// <param name="jT808ConfigurationAccessor"></param>
 /// <param name="jT808Config"></param>
 /// <param name="loggerFactory"></param>
 /// <param name="jT808SessionManager"></param>
 public JT808TcpServer(
     JT808MessageHandler messageHandler,
     IOptions <JT808Configuration> jT808ConfigurationAccessor,
     IJT808Config jT808Config,
     ILoggerFactory loggerFactory,
     JT808SessionManager jT808SessionManager)
 {
     MessageHandler = messageHandler;
     SessionManager = jT808SessionManager;
     Logger         = loggerFactory.CreateLogger <JT808TcpServer>();
     Serializer     = jT808Config.GetSerializer();
     Configuration  = jT808ConfigurationAccessor.Value;
     InitServer();
 }
Exemplo n.º 18
0
 public JT808ServerHandler(
     ILoggerFactory loggerFactory,
     JT808TransmitAddressFilterService jT808TransmitAddressFilterService,
     IJT808SourcePackageDispatcher jT808SourcePackageDispatcher,
     JT808MsgIdHandlerBase handler,
     JT808AtomicCounterService jT808AtomicCounterService,
     JT808SessionManager jT808SessionManager)
 {
     this.jT808TransmitAddressFilterService = jT808TransmitAddressFilterService;
     this.handler                      = handler;
     this.jT808SessionManager          = jT808SessionManager;
     this.jT808SourcePackageDispatcher = jT808SourcePackageDispatcher;
     this.jT808AtomicCounterService    = jT808AtomicCounterService;
     logger = loggerFactory.CreateLogger <JT808ServerHandler>();
 }
Exemplo n.º 19
0
 public JT808UdpServer(
     IOptions <JT808Configuration> jT808ConfigurationAccessor,
     IJT808Config jT808Config,
     ILoggerFactory loggerFactory,
     JT808SessionManager jT808SessionManager,
     JT808MessageHandler messageHandler)
 {
     SessionManager  = jT808SessionManager;
     Logger          = loggerFactory.CreateLogger("JT808UdpServer");
     Serializer      = jT808Config.GetSerializer();
     Configuration   = jT808ConfigurationAccessor.Value;
     MessageHandler  = messageHandler;
     LocalIPEndPoint = new System.Net.IPEndPoint(IPAddress.Any, Configuration.UdpPort);
     server          = new Socket(LocalIPEndPoint.AddressFamily, SocketType.Dgram, ProtocolType.Udp);
     server.Bind(LocalIPEndPoint);
 }
Exemplo n.º 20
0
 /// <summary>
 /// 使用正常方式
 /// </summary>
 /// <param name="jT808ConfigurationAccessor"></param>
 /// <param name="jT808Config"></param>
 /// <param name="loggerFactory"></param>
 /// <param name="jT808SessionManager"></param>
 /// <param name="replyMessageHandler"></param>
 /// <param name="jT808AtomicCounterServiceFactory"></param>
 public JT808TcpServer(
     IOptions <JT808Configuration> jT808ConfigurationAccessor,
     IJT808Config jT808Config,
     ILoggerFactory loggerFactory,
     JT808SessionManager jT808SessionManager,
     JT808NormalReplyMessageHandler replyMessageHandler,
     JT808AtomicCounterServiceFactory jT808AtomicCounterServiceFactory)
 {
     SessionManager = jT808SessionManager;
     Logger         = loggerFactory.CreateLogger("JT808TcpServer");
     Serializer     = jT808Config.GetSerializer();
     JT808NormalReplyMessageHandler = replyMessageHandler;
     AtomicCounterService           = jT808AtomicCounterServiceFactory.Create(JT808TransportProtocolType.tcp);
     Configuration = jT808ConfigurationAccessor.Value;
     JT808UseType  = JT808UseType.Normal;
     InitServer();
 }
Exemplo n.º 21
0
 public JT808UdpServer(
     JT808Configuration jT808Configuration,
     IJT808Config jT808Config,
     ILoggerFactory loggerFactory,
     JT808SessionManager jT808SessionManager,
     IJT808MsgProducer jT808MsgProducer,
     JT808AtomicCounterServiceFactory jT808AtomicCounterServiceFactory)
 {
     SessionManager       = jT808SessionManager;
     Logger               = loggerFactory.CreateLogger("JT808UdpServer");
     Serializer           = jT808Config.GetSerializer();
     MsgProducer          = jT808MsgProducer;
     AtomicCounterService = jT808AtomicCounterServiceFactory.Create(JT808TransportProtocolType.udp);
     Configuration        = jT808Configuration;
     LocalIPEndPoint      = new System.Net.IPEndPoint(IPAddress.Any, jT808Configuration.UdpPort);
     server               = new Socket(LocalIPEndPoint.AddressFamily, SocketType.Dgram, ProtocolType.Udp);
     server.Bind(LocalIPEndPoint);
 }
Exemplo n.º 22
0
 /// <summary>
 /// 使用队列方式
 /// </summary>
 /// <param name="configurationMonitor"></param>
 /// <param name="msgProducer"></param>
 /// <param name="msgReplyLoggingProducer"></param>
 /// <param name="messageHandler"></param>
 /// <param name="jT808Config"></param>
 /// <param name="loggerFactory"></param>
 /// <param name="jT808SessionManager"></param>
 public JT808TcpServer(
     IOptionsMonitor <JT808Configuration> configurationMonitor,
     IJT808MsgProducer msgProducer,
     IJT808MsgReplyLoggingProducer msgReplyLoggingProducer,
     JT808MessageHandler messageHandler,
     IJT808Config jT808Config,
     ILoggerFactory loggerFactory,
     JT808SessionManager jT808SessionManager)
 {
     MessageHandler          = messageHandler;
     MsgProducer             = msgProducer;
     MsgReplyLoggingProducer = msgReplyLoggingProducer;
     ConfigurationMonitor    = configurationMonitor;
     SessionManager          = jT808SessionManager;
     Logger     = loggerFactory.CreateLogger <JT808TcpServer>();
     Serializer = jT808Config.GetSerializer();
     InitServer();
 }
Exemplo n.º 23
0
 public JT808UdpServer(
     IOptions <JT808Configuration> jT808ConfigurationAccessor,
     IJT808Config jT808Config,
     ILoggerFactory loggerFactory,
     JT808SessionManager jT808SessionManager,
     JT808NormalReplyMessageHandler replyMessageHandler,
     JT808AtomicCounterServiceFactory jT808AtomicCounterServiceFactory)
 {
     SessionManager = jT808SessionManager;
     Logger         = loggerFactory.CreateLogger("JT808UdpServer");
     Serializer     = jT808Config.GetSerializer();
     JT808NormalReplyMessageHandler = replyMessageHandler;
     AtomicCounterService           = jT808AtomicCounterServiceFactory.Create(JT808TransportProtocolType.udp);
     Configuration   = jT808ConfigurationAccessor.Value;
     JT808UseType    = JT808UseType.Normal;
     LocalIPEndPoint = new System.Net.IPEndPoint(IPAddress.Any, Configuration.UdpPort);
     server          = new Socket(LocalIPEndPoint.AddressFamily, SocketType.Dgram, ProtocolType.Udp);
     server.Bind(LocalIPEndPoint);
 }
        public void TryLinkTest2_1_N()
        {
            string tno1 = "123456";
            string tno2 = "123457";
            string tno3 = "123458";
            JT808SessionManager jT808SessionManager = new JT808SessionManager(new LoggerFactory());
            var session = new JT808TcpSession(new Socket(SocketType.Stream, ProtocolType.Tcp));
            var result1 = jT808SessionManager.TryAdd(session);

            jT808SessionManager.TryLink(tno1, session);
            jT808SessionManager.TryLink(tno2, session);
            jT808SessionManager.TryLink(tno3, session);
            Assert.True(result1);
            Assert.Equal(1, jT808SessionManager.TotalSessionCount);
            Assert.Equal(3, jT808SessionManager.TerminalPhoneNoSessions.Count);
            jT808SessionManager.RemoveByTerminalPhoneNo(tno1);
            Assert.Equal(0, jT808SessionManager.TotalSessionCount);
            Assert.Empty(jT808SessionManager.TerminalPhoneNoSessions);
        }
Exemplo n.º 25
0
 public JT808UdpServer(
     IOptionsMonitor <JT808Configuration> configurationMonitor,
     IJT808MsgProducer msgProducer,
     IJT808MsgReplyLoggingProducer msgReplyLoggingProducer,
     IJT808Config jT808Config,
     ILoggerFactory loggerFactory,
     JT808SessionManager jT808SessionManager,
     JT808MessageHandler messageHandler)
 {
     SessionManager          = jT808SessionManager;
     MsgProducer             = msgProducer;
     ConfigurationMonitor    = configurationMonitor;
     MsgReplyLoggingProducer = msgReplyLoggingProducer;
     Logger          = loggerFactory.CreateLogger <JT808UdpServer>();
     Serializer      = jT808Config.GetSerializer();
     MessageHandler  = messageHandler;
     LocalIPEndPoint = new System.Net.IPEndPoint(IPAddress.Any, ConfigurationMonitor.CurrentValue.UdpPort);
     server          = new Socket(LocalIPEndPoint.AddressFamily, SocketType.Dgram, ProtocolType.Udp);
     server.Bind(LocalIPEndPoint);
 }
        public void UpdateLinkTest2_1_N()
        {
            string tno1 = "123456";
            string tno2 = "123457";
            string tno3 = "123458";
            JT808SessionManager jT808SessionManager = new JT808SessionManager(new LoggerFactory());
            var session1 = new JT808TcpSession(new Socket(SocketType.Stream, ProtocolType.Tcp));
            var session2 = new JT808TcpSession(new Socket(SocketType.Stream, ProtocolType.Tcp));
            var result1  = jT808SessionManager.TryAdd(session1);
            var result2  = jT808SessionManager.TryAdd(session2);

            //转发车辆
            jT808SessionManager.TryLink(tno1, session1);
            jT808SessionManager.TryLink(tno2, session1);
            //直连车辆
            jT808SessionManager.TryLink(tno3, session2);

            Assert.True(result1);
            Assert.True(result2);
            Assert.Equal(2, jT808SessionManager.TotalSessionCount);
            Assert.Equal(3, jT808SessionManager.TerminalPhoneNoSessions.Count);

            //将tno2切换为直连车辆
            var session3 = new JT808TcpSession(new Socket(SocketType.Stream, ProtocolType.Tcp));
            var result3  = jT808SessionManager.TryAdd(session3);

            jT808SessionManager.TryLink(tno2, session3);
            Assert.True(result3);
            if (jT808SessionManager.TerminalPhoneNoSessions.TryGetValue(tno2, out var sessionInfo))
            {
                //实际的通道Id
                Assert.Equal(session3.SessionID, sessionInfo.SessionID);
            }
            Assert.Equal(3, jT808SessionManager.TotalSessionCount);
            Assert.Equal(3, jT808SessionManager.TerminalPhoneNoSessions.Count);

            jT808SessionManager.RemoveByTerminalPhoneNo(tno1);
            Assert.Equal(2, jT808SessionManager.TotalSessionCount);
            Assert.Equal(2, jT808SessionManager.TerminalPhoneNoSessions.Count);
        }
        public void GetTcpAllTest()
        {
            string tno1 = "123456";
            string tno2 = "123457";
            JT808SessionManager jT808SessionManager = new JT808SessionManager(new LoggerFactory());
            var session1 = new JT808TcpSession(new Socket(SocketType.Stream, ProtocolType.Tcp));
            var session2 = new JT808TcpSession(new Socket(SocketType.Stream, ProtocolType.Tcp));
            var result1  = jT808SessionManager.TryAdd(session1);
            var result2  = jT808SessionManager.TryAdd(session2);

            jT808SessionManager.TryLink(tno1, session1);
            jT808SessionManager.TryLink(tno2, session2);
            Assert.True(result1);
            Assert.True(result2);
            Assert.Equal(2, jT808SessionManager.TotalSessionCount);
            Assert.True(jT808SessionManager.TerminalPhoneNoSessions.ContainsKey(tno1));
            Assert.True(jT808SessionManager.TerminalPhoneNoSessions.ContainsKey(tno2));
            var sessions = jT808SessionManager.GetTcpAll();

            Assert.Contains(sessions, (item) => item.SessionID == session1.SessionID);
            Assert.Contains(sessions, (item) => item.SessionID == session2.SessionID);
        }
Exemplo n.º 28
0
        public JT808TcpServer(
            JT808Configuration jT808Configuration,
            IJT808Config jT808Config,
            ILoggerFactory loggerFactory,
            JT808SessionManager jT808SessionManager,
            IJT808MsgProducer jT808MsgProducer,
            JT808AtomicCounterServiceFactory jT808AtomicCounterServiceFactory)
        {
            SessionManager       = jT808SessionManager;
            Logger               = loggerFactory.CreateLogger("JT808TcpServer");
            Serializer           = jT808Config.GetSerializer();
            MsgProducer          = jT808MsgProducer;
            AtomicCounterService = jT808AtomicCounterServiceFactory.Create(JT808TransportProtocolType.tcp);
            Configuration        = jT808Configuration;
            var IPEndPoint = new System.Net.IPEndPoint(IPAddress.Any, jT808Configuration.TcpPort);

            server = new Socket(IPEndPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
            server.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.NoDelay, true);
            server.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, true);
            server.LingerState = new LingerOption(false, 0);
            server.Bind(IPEndPoint);
            server.Listen(jT808Configuration.SoBacklog);
        }
Exemplo n.º 29
0
 public JT808SessionService(
     JT808SessionManager jT808SessionManager)
 {
     this.jT808SessionManager = jT808SessionManager;
 }
Exemplo n.º 30
0
 public JT808MsgIdCustomHandler(
     ILoggerFactory loggerFactory,
     JT808SessionManager sessionManager) : base(sessionManager)
 {
     logger = loggerFactory.CreateLogger <JT808MsgIdCustomHandler>();
 }