Esempio n. 1
0
        public Task Handle(MqttReceivedMessage message, IMessageHandlerContext context)
        {
            var topicDevice = new TopicDevice
            {
                Name    = message.ClientId,
                Topic   = message.Message.Topic,
                Payload = message.Message.Payload != null?Encoding.UTF8.GetString(message.Message.Payload) : ""
            };

            Task.Run(async() => await _deviceService.ReceiveMqttMessageAsync(topicDevice).ConfigureAwait(false));

            return(context.Reply(HttpStatusCode.OK));
        }
Esempio n. 2
0
        public async Task ReceiveMqttMessageAsync(TopicDevice topicDevice)
        {
            using (var context = _contextFactory.GetMongoContext())
            {
                var filter = new BsonDocument("$and", new BsonArray {
                    new BsonDocument("Name", topicDevice.Name),
                    new BsonDocument("Topic", topicDevice.Topic)
                });

                var update = new BsonDocument("Payload", topicDevice.Payload);

                var result = await context.TopicDevices.FindOneAndUpdateAsync(filter, update);

                if (result == null)
                {
                    await context.TopicDevices.InsertOneAsync(_mapper.Map <IM.TopicDevice>(topicDevice));
                }
            }
        }