예제 #1
0
        private void OnMessageAvailable(MessageAvailableEventArgs value)
        {
            using (var childServiceLocator = this.ServiceLocator.CreateNestedContainer())
            {
                var currentMessageContext = new MessageContext(
                    bus: this.Bus,
                    messageID: value.TransportMessage.MessageId,
                    headers: value.TransportMessage.Headers,
                    currentMessage: value.TransportMessage.DecodedMessage,
                    serviceLocator: childServiceLocator);

                // register a bunch of things we might want to use during the message handling
                childServiceLocator.RegisterSingleton <IBus>(this.Bus);
                childServiceLocator.RegisterSingleton(this.MessageHandlers);
                childServiceLocator.RegisterSingleton <IMessageMapper>(this.MessageMapper);
                childServiceLocator.RegisterSingleton <MessageContext>(currentMessageContext);

                try
                {
                    var stopwatch      = Stopwatch.StartNew();
                    var startTimestamp = DateTime.UtcNow;

                    compiledMessageHandlerPipeline(currentMessageContext);

                    stopwatch.Stop();
                    var endTimestamp = startTimestamp.AddTicks(stopwatch.ElapsedTicks);

                    OnMessageProcessed(new MessageProcessedEventArgs(currentMessageContext, startTimestamp, endTimestamp, stopwatch.Elapsed.TotalMilliseconds));
                }
                finally
                {
                    currentMessageContext = null;
                }
            }
        }
예제 #2
0
 /// <summary>
 /// Publish the Message Available Event.
 /// </summary>
 /// <param name="messageAvailable">Available message.</param>
 private void PublishMessageAvailableEvent(MessageAvailableEventArgs messageAvailableEvent)
 {
     if (OnMessageAvailable != null)
     {
         OnMessageAvailable(this, messageAvailableEvent);
     }
 }
예제 #3
0
 private void Sw_MessageAvailable(object sender, MessageAvailableEventArgs e)
 {
     if ((!backgroundWorker1.CancellationPending) && (backgroundWorker1.IsBusy))
     {
         backgroundWorker1.ReportProgress(0, e.MessageString);
     }
 }
예제 #4
0
    protected void OnMessageAvailable(MessageAvailableEventArgs e)
    {
        var handler = MessageAvailable;

        if (handler != null)
        {
            handler(this, e);
        }
    }
예제 #5
0
        private void NewMessageTask(object obj, MessageAvailableEventArgs args)
        {
            MCPPacket packet = MCPPacket.Parse(args.Message);

            if (packet.IpAddress.ToString() + ":" + packet.Port.ToString() != myIpAddress.ToString() + ":" + myPort.ToString())
            {
                AnalysePacket(packet);
            }
        }
예제 #6
0
        /// <summary>
        /// Only intereseted in Storage Commitment N-Event-Report Response messages.
        /// Signal the local N-Event-Report Response semaphore on receipt of this message type.
        /// </summary>
        /// <param name="server">Event source.</param>
        /// <param name="messageAvailableEvent">Message Available Event Details.</param>
        private void HandleStorageCommitmentNEventReportResponse(object server, MessageAvailableEventArgs messageAvailableEvent)
        {
            if (messageAvailableEvent.Message.Message is DicomProtocolMessage)
            {
                DicomProtocolMessage dicomProtocolMessage = (DicomProtocolMessage)messageAvailableEvent.Message.Message;

                if (dicomProtocolMessage is DvtkHighLevelInterface.Dicom.Messages.DicomMessage)
                {
                    DvtkHighLevelInterface.Dicom.Messages.DicomMessage dicomMessage = (DvtkHighLevelInterface.Dicom.Messages.DicomMessage)dicomProtocolMessage;
                    if (dicomMessage.CommandSet.DimseCommand == DvtkData.Dimse.DimseCommand.NEVENTREPORTRSP)
                    {
                        if (_storageCommitmentNEventReportResponseSemaphore != null)
                        {
                            _storageCommitmentNEventReportResponseSemaphore.Signal();
                        }
                    }
                }
            }
        }
예제 #7
0
 /// <summary>
 /// Message is available.
 /// </summary>
 /// <param name="server">Event source.</param>
 /// <param name="messageAvailableEvent">Message Available Event Details.</param>
 private void MessageIsAvailable(object server, MessageAvailableEventArgs messageAvailableEvent)
 {
     // Publish the event to any interested parties.
     PublishMessageAvailableEvent(messageAvailableEvent);
 }
예제 #8
0
 private void DataAvailable(object obj, MessageAvailableEventArgs args)
 {
     byte[] decoded = codec.Decode(args.Message, 0, args.Message.Length);
     AudioDataAvailableEvent?.Invoke(this, decoded);
 }