Пример #1
0
        private void assembleMessageParts <T>(ref MessagePartInfo lastReceivedMessagePartInfo, ref List <T> receivedMessageParts, MessagePartInfo currentlyReceivedMessagePartInfo, T currentlyReceivedMessagePart, Action doCallback)
        {
            if (currentlyReceivedMessagePartInfo.NumberOfMessageParts == 1)
            {
                lastReceivedMessagePartInfo = currentlyReceivedMessagePartInfo;
                receivedMessageParts        = new List <T>()
                {
                    currentlyReceivedMessagePart
                };

                doCallback();

                lastReceivedMessagePartInfo = null;
                receivedMessageParts        = null;
            }
            else
            {
                if (lastReceivedMessagePartInfo == null)
                {
                    lastReceivedMessagePartInfo = currentlyReceivedMessagePartInfo;
                    receivedMessageParts        = new List <T>()
                    {
                        currentlyReceivedMessagePart
                    };
                }
                else
                {
                    if (lastReceivedMessagePartInfo.MessageCorrelationId == currentlyReceivedMessagePartInfo.MessageCorrelationId && lastReceivedMessagePartInfo.NumberOfMessageParts == currentlyReceivedMessagePartInfo.NumberOfMessageParts)
                    {
                        lastReceivedMessagePartInfo = currentlyReceivedMessagePartInfo;
                        receivedMessageParts.Add(currentlyReceivedMessagePart);

                        if (lastReceivedMessagePartInfo.LastMessagePart && lastReceivedMessagePartInfo.NumberOfMessageParts == receivedMessageParts.Count)
                        {
                            doCallback();
                            lastReceivedMessagePartInfo = null;
                            receivedMessageParts        = null;
                        }
                    }
                    else
                    {
                        lastReceivedMessagePartInfo = currentlyReceivedMessagePartInfo;
                        receivedMessageParts        = null;
                    }
                }
            }
        }
Пример #2
0
        void ICallbackHandler.HandleChangeHighlightRequest(ChangeHighlightRequestFromMQ changeHighlighRequest, MessagePartInfo messagePartInfo)
        {
            onRequestReceived();

            assembleMessageParts(
                ref changeHighlightMessagePartInfo,
                ref changeHighlightMessageParts,
                messagePartInfo,
                changeHighlighRequest,
                () =>
            {
                List <PreviewPartWithFocusedRange> previewParts = new List <PreviewPartWithFocusedRange>();
                foreach (var messagePart in changeHighlightMessageParts)
                {
                    previewParts.AddRange(messagePart.ActivePreviewParts);
                }

                var request = new ChangeHighlightRequestFromMQ()
                {
                    ActivePreviewParts = previewParts.ToArray()
                };

                callbackHandler.QueueChangeHighlightRequest(request.Convert());
            });
        }
Пример #3
0
        void ICallbackHandler.HandleContentUpdateRequest(ContentUpdateRequestFromMQ contentUpdateRequest, MessagePartInfo messagePartInfo)
        {
            onRequestReceived();

            assembleMessageParts(
                ref contentUpdateMessagePartInfo,
                ref contentUpdateMessageParts,
                messagePartInfo,
                contentUpdateRequest,
                () =>
            {
                List <PreviewPart> previewParts = new List <PreviewPart>();
                foreach (var messagePart in contentUpdateMessageParts)
                {
                    previewParts.AddRange(messagePart.PreviewParts);
                }

                var request = new ContentUpdateRequestFromMQ()
                {
                    PreviewParts = previewParts.ToArray()
                };

                callbackHandler.QueueContentUpdateRequest(request.Convert());
            });
        }
Пример #4
0
        void ICallbackHandler.HandlePreviewPartIdUpdateRequest(PreviewPartIdUpdateRequestFromMQ previewPartIdUpdateRequest, MessagePartInfo messagePartInfo)
        {
            onRequestReceived();

            assembleMessageParts(
                ref previewPartIdUpdateMessagePartInfo,
                ref previewPartIdUpdateMessageParts,
                messagePartInfo,
                previewPartIdUpdateRequest,
                () =>
            {
                List <string> previewPartIds = new List <string>();
                foreach (var messagePart in previewPartIdUpdateMessageParts)
                {
                    previewPartIds.AddRange(messagePart.PreviewPartIds);
                }

                var request = new PreviewPartIdUpdateRequestFromMQ()
                {
                    PreviewPartIds = previewPartIds.ToArray()
                };

                callbackHandler.QueuePreviewPartIdUpdateRequest(request.Convert());
            });
        }