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; }
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); }
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; }
public MBusMaster(IEndPointBinding binding) { _binding = binding ?? throw new ArgumentNullException(nameof(binding)); }
public PacketEventArgs(INetworkPacket packet, IEndPointBinding binding = null) { Packet = packet; Binding = binding; }