Пример #1
0
        /// <summary>
        /// Handles the ProtocolException message.
        /// </summary>
        /// <param name="message">The message.</param>
        protected override void HandleProtocolException(EtpMessage <IProtocolException> message)
        {
            base.HandleProtocolException(message);

            var request = TryGetCorrelatedMessage(message);

            if (request is EtpMessage <WMLS_GetVersion> )
            {
                HandleResponseMessage(request as EtpMessage <WMLS_GetVersion>, message, OnWMLS_GetVersionResponse, HandleWMLS_GetVersionResponse);
            }
            else if (request is EtpMessage <WMLS_GetCap> )
            {
                HandleResponseMessage(request as EtpMessage <WMLS_GetCap>, message, OnWMLS_GetCapResponse, HandleWMLS_GetCapResponse);
            }
            else if (request is EtpMessage <WMLS_GetBaseMsg> )
            {
                HandleResponseMessage(request as EtpMessage <WMLS_GetBaseMsg>, message, OnWMLS_GetBaseMsgResponse, HandleWMLS_GetBaseMsgResponse);
            }
            else if (request is EtpMessage <WMLS_GetFromStore> )
            {
                HandleResponseMessage(request as EtpMessage <WMLS_GetFromStore>, message, OnWMLS_GetFromStoreResponse, HandleWMLS_GetFromStoreResponse);
            }
            else if (request is EtpMessage <WMLS_AddToStore> )
            {
                HandleResponseMessage(request as EtpMessage <WMLS_AddToStore>, message, OnWMLS_AddToStoreResponse, HandleWMLS_AddToStoreResponse);
            }
            else if (request is EtpMessage <WMLS_UpdateInStore> )
            {
                HandleResponseMessage(request as EtpMessage <WMLS_UpdateInStore>, message, OnWMLS_UpdateInStoreResponse, HandleWMLS_UpdateInStoreResponse);
            }
            else if (request is EtpMessage <WMLS_DeleteFromStore> )
            {
                HandleResponseMessage(request as EtpMessage <WMLS_DeleteFromStore>, message, OnWMLS_DeleteFromStoreResponse, HandleWMLS_DeleteFromStoreResponse);
            }
        }
Пример #2
0
        /// <summary>
        /// Handles the ProtocolException message.
        /// </summary>
        /// <param name="message">The message.</param>
        protected override void HandleProtocolException(EtpMessage <IProtocolException> message)
        {
            base.HandleProtocolException(message);

            var request = TryGetCorrelatedMessage(message);

            if (request is EtpMessage <Start> )
            {
                HandleResponseMessage(request as EtpMessage <Start>, message, OnStartException, HandleStartException);
            }
            else if (request is EtpMessage <ChannelStreamingStart> )
            {
                HandleResponseMessage(request as EtpMessage <ChannelStreamingStart>, message, OnChannelStreamingStartException, HandleChannelStreamingStartException);
            }
            else if (request is EtpMessage <ChannelStreamingStop> )
            {
                HandleResponseMessage(request as EtpMessage <ChannelStreamingStop>, message, OnChannelStreamingStopException, HandleChannelStreamingStopException);
            }
            else if (request is EtpMessage <ChannelDescribe> )
            {
                HandleResponseMessage(request as EtpMessage <ChannelDescribe>, message, OnBasicStreamerChannelMetadata, HandleBasicStreamerChannelMetadata);
            }
            else if (request is EtpMessage <ChannelRangeRequest> )
            {
                HandleResponseMessage(request as EtpMessage <ChannelRangeRequest>, message, OnChannelRangeRequestChannelData, HandleChannelRangeRequestChannelData);
            }
        }
Пример #3
0
        /// <summary>
        /// Handles the Chunk message from a store.
        /// </summary>
        /// <param name="message">The Chunk message.</param>
        protected virtual void HandleChunk(EtpMessage <Chunk> message)
        {
            var notification = TryGetCorrelatedMessage <ObjectChanged>(message);
            var subscription = notification == null ? null : TryGetSubscription <SubscriptionInfo>(notification.Body);

            HandleNotificationMessage(subscription, notification, OnObjectChangedChunk, HandleObjectChangedChunk,
                                      args: new NotificationWithDataEventArgs <SubscriptionInfo, ObjectChanged, Chunk>(subscription, notification, message));
        }
Пример #4
0
        /// <summary>
        /// Handles the Chunk message from a customer.
        /// </summary>
        /// <param name="message">The Chunk message.</param>
        protected virtual void HandleChunk(EtpMessage <Chunk> message)
        {
            var request = TryGetCorrelatedMessage <PutDataObjects>(message);

            HandleRequestMessage(request, OnPutDataObjectsChunk, HandlePutDataObjectsChunk,
                                 args: new MapRequestWithDataEventArgs <PutDataObjects, Chunk, PutResponse>(request, message),
                                 responseMethod: (args) => PutDataObjectsResponse(args.Request?.Header, args.ResponseMap, isFinalPart: !args.HasErrors, extension: args.ResponseMapExtension));
        }
Пример #5
0
 /// <summary>
 /// Handles the ReplaceRange message from a customer.
 /// </summary>
 /// <param name="message">The ReplaceRange message.</param>
 protected virtual void HandleReplaceRange(EtpMessage <ReplaceRange> message)
 {
     HandleRequestMessage(message, OnReplaceRange, HandleReplaceRange,
                          responseMethod: (args) => { if (!args.HasErrors)
                                                      {
                                                          ReplaceRangeResponse(args.Request?.Header, args.Response, extension: args.ResponseExtension);
                                                      }
                          });
 }
Пример #6
0
        /// <summary>
        /// Handles the ChannelMetadata message from a producer.
        /// </summary>
        /// <param name="message">The ChannelMetadata message.</param>
        protected virtual void HandleChannelMetadata(EtpMessage <ChannelMetadata> message)
        {
            foreach (var channel in message.Body.Channels)
            {
                ChannelMetadataRecords.Add(channel);
            }

            HandleFireAndForgetMessage(message, OnChannelMetadata, HandleChannelMetadata);
        }
Пример #7
0
        /// <summary>
        /// Handles the PutDataObjects message from a customer.
        /// </summary>
        /// <param name="message">The PutDataObjects message.</param>
        protected virtual void HandlePutDataObjects(EtpMessage <PutDataObjects> message)
        {
            if (!message.Header.IsFinalPart())
            {
                TryRegisterMessage(message);
            }

            HandleRequestMessage(message, OnPutDataObjects, HandlePutDataObjects,
                                 responseMethod: (args) => PutDataObjectsResponse(args.Request?.Header, args.ResponseMap, isFinalPart: !args.HasErrors, extension: args.ResponseMapExtension));
        }
Пример #8
0
        /// <summary>
        /// Handles the CancelNotification message from a customer.
        /// </summary>
        /// <param name="message">The CancelNotification message.</param>
        protected virtual void HandleCancelNotification(EtpMessage <CancelNotification> message)
        {
            var error = TryUnregisterSubscription(message.Body, nameof(message.Body.RequestUuid), message);

            HandleRequestMessage(message, OnCancelNotification, HandleCancelNotification,
                                 args: new VoidRequestEventArgs <CancelNotification>(message)
            {
                FinalError = error
            });
        }
Пример #9
0
        /// <summary>
        /// Handles the NotificationRequest message from a customer.
        /// </summary>
        /// <param name="message">The NotificationRequest message.</param>
        protected virtual void HandleNotificationRequest(EtpMessage <NotificationRequest> message)
        {
            var error = TryRegisterSubscription(message.Body.Request, nameof(message.Body.Request.Uuid), message, message.Body.Request);

            HandleRequestMessage(message, OnNotificationRequest, HandleNotificationRequest,
                                 args: new VoidRequestEventArgs <NotificationRequest>(message)
            {
                FinalError = error
            });
        }
Пример #10
0
        /// <summary>
        /// Handles the GetRanges message from a customer.
        /// </summary>
        /// <param name="message">The GetRanges message.</param>
        protected virtual void HandleGetRanges(EtpMessage <GetRanges> message)
        {
            var error = TryRegisterRequest(message.Body, nameof(message.Body.RequestUuid), message);

            HandleRequestMessage(message, OnGetRanges, HandleGetRanges,
                                 args: new ListRequestEventArgs <GetRanges, DataItem>(message)
            {
                FinalError = error
            },
                                 responseMethod: (args) => GetRangesResponse(args.Request?.Header, message.Body.RequestUuid, args.Responses, isFinalPart: !args.HasErrors, unregisterRequest: true, extension: args.ResponseExtension));
        }
Пример #11
0
        /// <summary>
        /// Handles the ProtocolException message.
        /// </summary>
        /// <param name="message">The message.</param>
        protected override void HandleProtocolException(EtpMessage <IProtocolException> message)
        {
            base.HandleProtocolException(message);

            var request = TryGetCorrelatedMessage(message);

            if (request is EtpMessage <RenewSecurityToken> )
            {
                HandleResponseMessage(request as EtpMessage <RenewSecurityToken>, message, OnRenewSecurityTokenException, HandleRenewSecurityTokenException);
            }
        }
Пример #12
0
        /// <summary>
        /// Handles the ProtocolException message.
        /// </summary>
        /// <param name="message">The message.</param>
        protected override void HandleProtocolException(EtpMessage <IProtocolException> message)
        {
            base.HandleProtocolException(message);

            var request = TryGetCorrelatedMessage <GetResources>(message);

            if (request != null)
            {
                HandleResponseMessage(request, message, OnGetResourcesResponse, HandleGetResourcesResponse);
            }
        }
Пример #13
0
        /// <summary>
        /// Handles the ObjectChanged message from a store.
        /// </summary>
        /// <param name="message">The ObjectChanged message.</param>
        protected virtual void HandleObjectChanged(EtpMessage <ObjectChanged> message)
        {
            var subscription = TryGetSubscription <SubscriptionInfo>(message.Body);

            if (!message.Header.IsFinalPart())
            {
                TryRegisterMessage(message);
            }

            HandleNotificationMessage(subscription, message, OnObjectChanged, HandleObjectChanged);
        }
Пример #14
0
        /// <summary>
        /// Handles the GetChannelMetadataResponse message from a store.
        /// </summary>
        /// <param name="message">The GetChannelMetadataResponse message.</param>
        protected virtual void HandleGetChannelMetadataResponse(EtpMessage <GetChannelMetadataResponse> message)
        {
            foreach (var channel in message.Body.Metadata.Values)
            {
                ChannelMetadataRecords.Add(channel);
            }

            var request = TryGetCorrelatedMessage <GetChannelMetadata>(message);

            HandleResponseMessage(request, message, OnGetChannelMetadataResponse, HandleGetChannelMetadataResponse);
        }
Пример #15
0
        /// <summary>
        /// Handles the ProtocolException message.
        /// </summary>
        /// <param name="message">The message.</param>
        protected override void HandleProtocolException(EtpMessage <IProtocolException> message)
        {
            base.HandleProtocolException(message);

            var request = TryGetCorrelatedMessage(message);

            if (request is EtpMessage <RequestChannelData> )
            {
                HandleResponseMessage(request as EtpMessage <RequestChannelData>, message, OnRequestChannelDataResponse, HandleRequestChannelDataResponse);
            }
        }
Пример #16
0
        /// <summary>
        /// Handles the ProtocolException message.
        /// </summary>
        /// <param name="message">The message.</param>
        protected override void HandleProtocolException(EtpMessage <IProtocolException> message)
        {
            base.HandleProtocolException(message);

            var request = TryGetCorrelatedMessage(message);

            if (request is EtpMessage <FindParts> )
            {
                HandleResponseMessage(request as EtpMessage <FindParts>, message, OnFindPartsResponse, HandleFindPartsResponse);
            }
        }
Пример #17
0
        /// <summary>
        /// Handles the ProtocolException message.
        /// </summary>
        /// <param name="message">The message.</param>
        protected override void HandleProtocolException(EtpMessage <IProtocolException> message)
        {
            base.HandleProtocolException(message);

            var request = TryGetCorrelatedMessage(message);

            if (request is EtpMessage <Authorize> )
            {
                HandleResponseMessage(request as EtpMessage <Authorize>, message, OnAuthorizeResponse, HandleAuthorizeResponse);
            }
        }
Пример #18
0
        /// <summary>
        /// Handles the ProtocolException message.
        /// </summary>
        /// <param name="message">The message.</param>
        protected override void HandleProtocolException(EtpMessage <IProtocolException> message)
        {
            base.HandleProtocolException(message);

            var request = TryGetCorrelatedMessage(message);

            if (request is EtpMessage <GetSupportedTypes> )
            {
                HandleResponseMessage(request as EtpMessage <GetSupportedTypes>, message, OnGetSupportedTypesResponse, HandleGetSupportedTypesResponse);
            }
        }
Пример #19
0
        /// <summary>
        /// Handles the GetFrame message from a customer.
        /// </summary>
        /// <param name="message">The GetFrame message.</param>
        protected virtual void HandleGetFrame(EtpMessage <GetFrame> message)
        {
            var error = TryRegisterRequest(message.Body, nameof(message.Body.RequestUuid), message);

            HandleRequestMessage(message, OnGetFrame, HandleGetFrame,
                                 args: new SingleAndListRequestEventArgs <GetFrame, FrameHeader, FrameRow>(message)
            {
                FinalError = error
            },
                                 responseMethod: (args) => GetFrameResponse(args.Request?.Header, message.Body.RequestUuid, args.Response1.Indexes, args.Response1.ChannelUris, args.Responses2, setFinalPart: !args.HasErrors, unregisterRequest: true, headerExtension: args.Response1Extension, rowsExtension: args.Response2Extension));
        }
Пример #20
0
        /// <summary>
        /// Handles the CancelGetFrame message from a customer.
        /// </summary>
        /// <param name="message">The CancelGetFrame message.</param>
        protected virtual void HandleCancelGetFrame(EtpMessage <CancelGetFrame> message)
        {
            EtpMessage <GetFrame> request;
            var error = TryGetRequest(message.Body, nameof(message.Body.RequestUuid), message, out request);

            HandleCancellationMessage(request, message, OnCancelGetFrame, HandleCancelGetFrame,
                                      args: new CancellationRequestEventArgs <GetFrame, CancelGetFrame>(request, message)
            {
                FinalError = error
            });
        }
Пример #21
0
 /// <summary>
 /// Handles the UnsolicitedPartNotifications message from a store.
 /// </summary>
 /// <param name="message">The UnsolicitedPartNotifications message.</param>
 protected virtual void HandleUnsolicitedPartNotifications(EtpMessage <UnsolicitedPartNotifications> message)
 {
     if (message.Body.Subscriptions?.Count > 0)
     {
         foreach (var subscription in message.Body.Subscriptions)
         {
             TryRegisterSubscription(subscription, nameof(subscription.RequestUuid), message, subscription);
         }
     }
     HandleFireAndForgetMessage(message, OnUnsolicitedPartNotifications, HandleUnsolicitedPartNotifications);
 }
Пример #22
0
        /// <summary>
        /// Handles the SubscribePartNotifications message from a customer.
        /// </summary>
        /// <param name="message">The SubscribePartNotifications message.</param>
        protected virtual void HandleSubscribePartNotifications(EtpMessage <SubscribePartNotifications> message)
        {
            var errors = TryRegisterSubscriptions(message, message.Body.Request, nameof(message.Body.Request));

            HandleRequestMessage(message, OnSubscribePartNotifications, HandleSubscribePartNotifications,
                                 args: new MapRequestEventArgs <SubscribePartNotifications, string>(message)
            {
                ErrorMap = errors
            },
                                 responseMethod: (args) => SubscribePartNotificationsResponse(args.Request?.Header, args.ResponseMap, isFinalPart: !args.HasErrors, extension: args.ResponseMapExtension));
        }
Пример #23
0
 /// <summary>
 /// Handles the ChannelsClosed message from a stor.
 /// </summary>
 /// <param name="message">The ChannelsClosed message.</param>
 protected virtual void HandleChannelsClosed(EtpMessage <ChannelsClosed> message)
 {
     if (message.Header.CorrelationId == 0)
     {
         HandleFireAndForgetMessage(message, OnNotificationChannelsClosed, HandleNotificationChannelsClosed);
     }
     else
     {
         var request = TryGetCorrelatedMessage <CloseChannels>(message);
         HandleResponseMessage(request, message, OnResponseChannelsClosed, HandleResponseChannelsClosed);
     }
 }
Пример #24
0
 /// <summary>
 /// Handles the SubscriptionsStopped message from a store.
 /// </summary>
 /// <param name="message">The SubscriptionsStopped message.</param>
 protected virtual void HandleSubscriptionsStopped(EtpMessage <SubscriptionsStopped> message)
 {
     if (message.Header.CorrelationId == 0)
     {
         HandleFireAndForgetMessage(message, OnNotificationSubscriptionsStopped, HandleNotificationSubscriptionsStopped);
     }
     else
     {
         var request = TryGetCorrelatedMessage <UnsubscribeChannels>(message);
         HandleResponseMessage(request, message, OnResponseSubscriptionsStopped, HandleResponseSubscriptionsStopped);
     }
 }
Пример #25
0
 /// <summary>
 /// Handles the ChannelData message from a producer.
 /// </summary>
 /// <param name="message">The ChannelData message.</param>
 protected virtual void HandleChannelData(EtpMessage <ChannelData> message)
 {
     if (message.Header.CorrelationId == 0)
     {
         HandleFireAndForgetMessage(message, OnStreamingChannelData, HandleStreamingChannelData);
     }
     else
     {
         var request = TryGetCorrelatedMessage <ChannelRangeRequest>(message);
         HandleResponseMessage(request, message, OnChannelRangeRequestChannelData, HandleChannelRangeRequestChannelData);
     }
 }
Пример #26
0
 /// <summary>
 /// Handles the PartSubscriptionEnded message from a store.
 /// </summary>
 /// <param name="message">The PartSubscriptionEnded message.</param>
 protected virtual void HandlePartSubscriptionEnded(EtpMessage <PartSubscriptionEnded> message)
 {
     if (message.Header.CorrelationId == 0)
     {
         var subscription = TryGetSubscription <SubscriptionInfo>(message.Body);
         HandleNotificationMessage(subscription, message, OnNotificationPartSubscriptionEnded, HandleNotificationPartSubscriptionEnded);
     }
     else
     {
         var request = TryGetCorrelatedMessage <UnsubscribePartNotification>(message);
         HandleResponseMessage(request, message, OnResponsePartSubscriptionEnded, HandleResponsePartSubscriptionEnded);
     }
 }
Пример #27
0
        /// <summary>
        /// Handles the ObjectFragment message from a store.
        /// </summary>
        /// <param name="message">The ObjectFragment message.</param>
        protected virtual void HandleObjectFragment(EtpMessage <ObjectFragment> message)
        {
            var request = TryGetCorrelatedMessage(message);

            if (request is EtpMessage <GrowingObjectGet> )
            {
                HandleResponseMessage(request as EtpMessage <GrowingObjectGet>, message, OnGrowingObjectGetObjectFragment, HandleGrowingObjectGetObjectFragment);
            }
            else if (request is EtpMessage <GrowingObjectGetRange> )
            {
                HandleResponseMessage(request as EtpMessage <GrowingObjectGetRange>, message, OnGrowingObjectGetRangeObjectFragment, HandleGrowingObjectGetRangeObjectFragment);
            }
        }
Пример #28
0
        /// <summary>
        /// Handles the DataArray message from a store.
        /// </summary>
        /// <param name="header">The message header.</param>
        protected virtual void HandleDataArray(EtpMessage <DataArray> message)
        {
            var request = TryGetCorrelatedMessage(message);

            if (request is EtpMessage <GetDataArray> )
            {
                HandleResponseMessage(request as EtpMessage <GetDataArray>, message, OnGetDataArrayDataArray, HandleGetDataArrayDataArray);
            }
            else if (request is EtpMessage <GetDataArraySlice> )
            {
                HandleResponseMessage(request as EtpMessage <GetDataArraySlice>, message, OnGetDataArraySliceDataArray, HandleGetDataArraySliceDataArray);
            }
        }
Пример #29
0
        /// <summary>
        /// Handles the ProtocolException message.
        /// </summary>
        /// <param name="message">The message.</param>
        protected override void HandleProtocolException(EtpMessage <IProtocolException> message)
        {
            base.HandleProtocolException(message);

            var request = TryGetCorrelatedMessage(message);

            if (request is EtpMessage <SubscribePartNotifications> )
            {
                HandleResponseMessage(request as EtpMessage <SubscribePartNotifications>, message, OnSubscribePartNotificationsResponse, HandleSubscribePartNotificationsResponse);
            }
            else if (request is EtpMessage <UnsubscribePartNotification> )
            {
                HandleResponseMessage(request as EtpMessage <UnsubscribePartNotification>, message, OnResponsePartSubscriptionEnded, HandleResponsePartSubscriptionEnded);
            }
        }
Пример #30
0
        /// <summary>
        /// Handles the UnsubscribePartNotification message from a customer.
        /// </summary>
        /// <param name="message">The UnsubscribePartNotification message.</param>
        protected virtual void HandleUnsubscribePartNotification(EtpMessage <UnsubscribePartNotification> message)
        {
            var error = TryUnregisterSubscription(message.Body, nameof(message.Body.RequestUuid), message);

            HandleRequestMessage(message, OnUnsubscribePartNotification, HandleUnsubscribePartNotification,
                                 args: new RequestWithContextEventArgs <UnsubscribePartNotification, Guid, PartSubscriptionEndedReason>(message)
            {
                FinalError = error
            },
                                 responseMethod: (args) => { if (!args.HasErrors)
                                                             {
                                                                 ResponsePartSubscriptionEnded(args.Request?.Header, args.Response, args.Context.Reason, extension: args.ResponseExtension);
                                                             }
                                 });
        }