コード例 #1
0
        private async void ReceiveMessageEntity(
            MessageEntity messageEntity,
            Function messageCallback,
            CancellationToken token)
        {
            Logger.Debug($"Received message FROM {Table} WHERE {Filter}");

            using (Stream stream = await messageEntity.RetrieveMessageBody(Registry.Instance.MessageBodyStore))
            {
                if (stream == null)
                {
                    Logger.Error($"MessageBody cannot be retrieved for EbmsMessageId: {messageEntity.EbmsMessageId}");
                }
                else if (messageEntity.ContentType == null)
                {
                    Logger.Error($"ContentType cannot be found for EbmsMessageId: {messageEntity.EbmsMessageId}");
                }
                else
                {
                    ReceivedEntityMessage receivedMessage = null;
                    try
                    {
                        receivedMessage = new ReceivedEntityMessage(messageEntity, stream, messageEntity.ContentType);
                        await messageCallback(receivedMessage, token).ConfigureAwait(false);
                    }
                    finally
                    {
                        receivedMessage?.UnderlyingStream.Dispose();
                    }
                }
            }
        }
コード例 #2
0
        private static async Task <UserMessage> RetrieveRelatedUserMessage(SignalMessage signalMessage)
        {
            using (var db = Registry.Instance.CreateDatastoreContext())
            {
                UserMessage userMessage = null;

                MessageEntity ent = db.InMessages.FirstOrDefault(
                    m =>
                    m.EbmsMessageId == signalMessage.RefToMessageId &&
                    m.EbmsMessageType == MessageType.UserMessage);

                if (ent == null)
                {
                    ent = db.OutMessages.FirstOrDefault(
                        m =>
                        m.EbmsMessageId == signalMessage.RefToMessageId &&
                        m.EbmsMessageType == MessageType.UserMessage);
                }

                if (ent != null)
                {
                    using (var stream = await ent.RetrieveMessageBody(Registry.Instance.MessageBodyStore))
                    {
                        stream.Position = 0;
                        var s      = SerializerProvider.Default.Get(ent.ContentType);
                        var result =
                            await s.DeserializeAsync(stream, ent.ContentType);

                        if (result != null)
                        {
                            userMessage =
                                result.UserMessages.FirstOrDefault(m => m.MessageId == signalMessage.RefToMessageId);
                        }
                    }
                }

                return(userMessage);
            }
        }