Exemplo n.º 1
0
        private void Handle(PushDataPacket packet, IEndPointBinding deviceBinding)
        {
            _logger.Info($"PushData packet received from {deviceBinding.ToString()}", GetType().Name);

            _logger.Info($"Sending PushAck packet to {deviceBinding.ToString()}", GetType().Name);

            _gatewayChannels
            .AddOrUpdate(Direction.Upstream, new GatewayChannel(deviceBinding, _logger), (key, channel) =>
            {
                //Update binding with new values eg. ports.
                channel.Binding = deviceBinding;

                return(channel);
            })
            .Binding
            .SendAsync(new PushAckPacket
            {
                ProtocolVersion = packet.ProtocolVersion,
                Token           = packet.Token,
            });

            _logger.Info($"Sending PushData packet to {_cloudBinding.ToString()}", GetType().Name);

            _cloudBinding.SendAsync(packet);
        }
        /// <summary>
        /// Constructor for GatewayBridgeManager.
        /// </summary>
        /// <param name="factory"></param>
        /// <param name="gatewayBinding">Binding for the incoming gateway events.</param>
        /// <param name="endpoint"></param>
        /// <param name="logger"></param>
        public GatewayProxyManager(GatewayProxyFactory factory, IEndPointBinding gatewayBinding, IPEndPoint endpoint, ITelemetryLogger logger)
        {
            _factory        = factory;
            _gatewayBinding = gatewayBinding;
            _endpoint       = endpoint;
            _logger         = logger;

            _gatewayBinding.PacketReceived += OnPacketReceived;
        }
Exemplo n.º 3
0
        private void Handle(PullRespPacket packet, IEndPointBinding cloudBinding)
        {
            _logger.Info($"PullResp packet received from {cloudBinding.ToString()}", GetType().Name);

            if (!_gatewayChannels.TryGetValue(Direction.Downstream, out var channel))
            {
                return;
            }

            _logger.Info($"Sending PullResp packet to {_gatewayChannels[Direction.Downstream].Binding.ToString()}", GetType().Name);

            _gatewayChannels[Direction.Downstream]
            .Binding
            .SendAsync(packet);
        }
Exemplo n.º 4
0
        public GatewayProxy(string gatewayId, IObservable <PacketEventArgs> gatewaysStream, IEndPointBinding cloudBinding, ITelemetryLogger logger)
        {
            _gatewayId    = gatewayId;
            _cloudBinding = cloudBinding;
            _logger       = logger;

            _cloudBinding.PacketReceived += OnPacketReceived;

            _gatewayStreamSubscription = gatewaysStream
                                         .Subscribe(this);

            //_cleanChannelsSubscription = Observable
            //   .Interval(TimeSpan.FromSeconds(60))
            //   .Subscribe(x => _gatewayChannels.Where(c => c.Value.LastAccessed < DateTime.UtcNow.AddSeconds(60)).Select(v => v.Key).ToList().ForEach(k => _gatewayChannels.Remove(k)));

            _cloudBinding.ListenAsync(null);
        }
 public GatewayChannel(IEndPointBinding binding, ITelemetryLogger logger)
 {
     _binding = binding;
     _logger  = logger;
 }
Exemplo n.º 6
0
 public MBusMaster(IEndPointBinding binding)
 {
     _binding = binding ?? throw new ArgumentNullException(nameof(binding));
 }
 public PacketEventArgs(INetworkPacket packet, IEndPointBinding binding = null)
 {
     Packet  = packet;
     Binding = binding;
 }