/// <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); } }