示例#1
0
        /// <summary>
        /// Try to parse the given XML representation of an eMIP SetSessionAction request.
        /// </summary>
        /// <param name="SetSessionActionRequestXML">The XML to parse.</param>
        /// <param name="CustomSendSetSessionActionRequestParser">An optional delegate to parse custom SetSessionActionRequest XML elements.</param>
        /// <param name="CustomSessionActionParser">An optional delegate to parse custom SessionAction XML elements.</param>
        /// <param name="SetSessionActionRequest">The parsed SetSessionAction request.</param>
        /// <param name="OnException">An optional delegate called whenever an exception occured.</param>
        ///
        /// <param name="HTTPRequest">The correlated HTTP request of this eMIP request.</param>
        /// <param name="Timestamp">The optional timestamp of the request.</param>
        /// <param name="CancellationToken">An optional token to cancel this request.</param>
        /// <param name="EventTrackingId">An optional event tracking identification for correlating this request with other events.</param>
        /// <param name="RequestTimeout">An optional timeout for this request.</param>
        public static Boolean TryParse(XElement SetSessionActionRequestXML,
                                       out SetSessionActionRequestRequest SetSessionActionRequest,
                                       CustomXMLParserDelegate <SetSessionActionRequestRequest> CustomSendSetSessionActionRequestParser = null,
                                       CustomXMLParserDelegate <SessionAction> CustomSessionActionParser = null,
                                       OnExceptionDelegate OnException = null,

                                       HTTPRequest HTTPRequest             = null,
                                       DateTime?Timestamp                  = null,
                                       CancellationToken?CancellationToken = null,
                                       EventTracking_Id EventTrackingId    = null,
                                       TimeSpan?RequestTimeout             = null)
        {
            try
            {
                SetSessionActionRequest = new SetSessionActionRequestRequest(

                    //ToDo: What to do with: <partnerIdType>eMI3</partnerIdType>?
                    SetSessionActionRequestXML.MapValueOrFail("partnerId", Partner_Id.Parse),

                    //ToDo: What to do with: <operatorIdType>eMI3</operatorIdType>
                    SetSessionActionRequestXML.MapValueOrFail("operatorId", Operator_Id.Parse),

                    //ToDo: What to do with: <targetOperatorIdType>eMI3</targetOperatorIdType>
                    SetSessionActionRequestXML.MapValueOrFail("targetOperatorId", Operator_Id.Parse),

                    SetSessionActionRequestXML.MapValueOrFail("serviceSessionId", ServiceSession_Id.Parse),

                    SetSessionActionRequestXML.MapElementOrFail("sessionAction",
                                                                (s, e) => SessionAction.Parse(s,
                                                                                              CustomSessionActionParser,
                                                                                              e),
                                                                OnException),

                    SetSessionActionRequestXML.MapValueOrNullable("transactionId", Transaction_Id.Parse),

                    SetSessionActionRequestXML.MapValueOrNullable("execPartnerSessionId", PartnerServiceSession_Id.Parse),


                    HTTPRequest,
                    Timestamp,
                    CancellationToken,
                    EventTrackingId,
                    RequestTimeout

                    );


                if (CustomSendSetSessionActionRequestParser != null)
                {
                    SetSessionActionRequest = CustomSendSetSessionActionRequestParser(SetSessionActionRequestXML,
                                                                                      SetSessionActionRequest);
                }

                return(true);
            }
            catch (Exception e)
            {
                OnException?.Invoke(DateTime.UtcNow, SetSessionActionRequestXML, e);

                SetSessionActionRequest = null;
                return(false);
            }
        }