Ejemplo n.º 1
0
        /// <summary>
        /// GetStatus
        /// </summary>
        /// <param name="securityToken"></param>
        /// <param name="transactionId"></param>
        /// <returns></returns>
        string INetworkNodeBinding.GetStatus(string securityToken, string transactionId)
        {
            Init();
            LOG.Debug("GetStatus");

            #region Validate

            if (string.IsNullOrEmpty(transactionId))
            {
                throw _service11Provider.FaultProvider.GetFault(EndpointVersionType.EN11, ENExceptionCodeType.E_InvalidParameter,
                                                                "NULL transactionId argument");
            }

            #endregion

            try
            {
                LOG.Debug("Getting visit");
                NamedEndpointVisit visit = _service11Provider.VisitProvider.GetVisit(securityToken);

                LOG.Debug("GetStatus using visit: " + visit);
                TransactionStatus tranStatus = _service11Provider.TransactionService.GetStatus(
                    new SimpleId(transactionId),
                    visit);

                LOG.Debug("TransactionStatus: " + tranStatus);
                return(CommonTransactionStatusCodeProvider.ConvertTo11Enum(tranStatus.Status));
            }
            catch (Exception ex)
            {
                LOG.Error("Error while getting status", ex);
                throw _service11Provider.FaultProvider.GetFault(EndpointVersionType.EN11, ex);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// NotifyStatus
        /// </summary>
        /// <param name="endpoint"></param>
        /// <param name="flow"></param>
        /// <param name="transactionId"></param>
        /// <param name="status"></param>
        /// <param name="description"></param>
        /// <returns></returns>
        public CommonTransactionStatusCode NotifyStatus20(string endpoint, string flow, string transactionId,
                                                          CommonTransactionStatusCode status, string description)
        {
            Notify notify = NewStatusNotifyObject(endpoint, flow, transactionId, status,
                                                  description);
            StatusResponseType statusResp = _requestor.Notify(notify);

            return(CommonTransactionStatusCodeProvider.Convert(statusResp.status.ToString()));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// NotifyEvent
        /// </summary>
        /// <returns></returns>
        public CommonTransactionStatusCode NotifyEvent11(string nodeEndpoint, string eventName,
                                                         string eventType, string eventDescription)
        {
            string rtnStatus =
                _requestor.NotifyEvent(Authenticate(), nodeEndpoint, eventName,
                                       eventType, eventDescription);

            return(CommonTransactionStatusCodeProvider.Convert(rtnStatus));
        }
Ejemplo n.º 4
0
        /// <summary>
        /// NotifyEvent
        /// </summary>
        /// <returns></returns>
        public CommonTransactionStatusCode NotifyEvent20(string nodeEndpoint, string flow, string messageName,
                                                         CommonTransactionStatusCode status, string description,
                                                         string eventName)
        {
            Notify notify =
                NewEventNotifyObject(nodeEndpoint, flow, messageName, status, description, eventName);
            StatusResponseType statusResp = _requestor.Notify(notify);

            return(CommonTransactionStatusCodeProvider.Convert(statusResp.status.ToString()));
        }
Ejemplo n.º 5
0
        /// <summary>
        /// NotifyStatus
        /// </summary>
        /// <param name="endpoint"></param>
        /// <param name="transactionId"></param>
        /// <param name="status"></param>
        /// <param name="description"></param>
        /// <returns></returns>
        public CommonTransactionStatusCode NotifyStatus11(string endpoint, string transactionId,
                                                          CommonTransactionStatusCode status, string description)
        {
            string rtnStatus =
                _requestor.NotifyStatus(Authenticate(), endpoint, transactionId,
                                        CommonTransactionStatusCodeProvider.ConvertTo11Enum(status),
                                        description);

            return(CommonTransactionStatusCodeProvider.Convert(rtnStatus));
        }
Ejemplo n.º 6
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="securityToken"></param>
        /// <param name="nodeAddress"></param>
        /// <param name="dataflow"></param>
        /// <param name="documents"></param>
        /// <returns></returns>
        string INetworkNodeBinding.Notify(string securityToken, string nodeAddress, string dataflow, NodeDocument[] documents)
        {
            Init();
            LOG.Debug("Notify");

            #region Validate

            if (documents == null || documents.Length == 0)
            {
                throw _service11Provider.FaultProvider.GetFault(EndpointVersionType.EN11, ENExceptionCodeType.E_InvalidParameter,
                                                                "Document not provided");
            }

            if (documents.Length > 1)
            {
                throw _service11Provider.FaultProvider.GetFault(EndpointVersionType.EN11, ENExceptionCodeType.E_InvalidParameter,
                                                                "Only one document per notification allowed");
            }

            SoapContext context = HttpSoapContext.RequestContext;
            if (context.Attachments != null && context.Attachments.Count > 0)
            {
                // TODO: Mark, why is this check here?  Calling Notify() from the endpoint client NotifyEvent(), NotifyStatus(), etc. methods fail here
                throw _service11Provider.FaultProvider.GetFault(EndpointVersionType.EN11, ENExceptionCodeType.E_InvalidParameter,
                                                                "Notify does not use DIME. Put content in the message.");
            }

            if (string.IsNullOrEmpty(dataflow))
            {
                throw _service11Provider.FaultProvider.GetFault(EndpointVersionType.EN11, ENExceptionCodeType.E_InvalidParameter,
                                                                "NULL dataflow argument");
            }



            #endregion

            try
            {
                LOG.Debug("Getting visit");
                NamedEndpointVisit visit = _service11Provider.VisitProvider.GetVisit(securityToken);


                NotificationMessageCategoryType messageCategory = NotificationMessageCategoryType.None;

                switch (dataflow.Trim().ToLower())
                {
                case "http://www.exchangenetwork.net/node/event":
                    messageCategory = NotificationMessageCategoryType.Event;
                    break;

                case "http://www.exchangenetwork.net/node/status":
                    messageCategory = NotificationMessageCategoryType.Status;
                    break;

                case "other":
                    messageCategory = NotificationMessageCategoryType.Status;
                    break;

                default:
                    throw _service11Provider.FaultProvider.GetFault(EndpointVersionType.EN11, ENExceptionCodeType.E_InvalidParameter,
                                                                    "Invalid dataflow argument: " + dataflow);
                }

                ComplexNotification notif = new ComplexNotification();
                notif.FlowName      = dataflow;
                notif.Uri           = nodeAddress;
                notif.Notifications = new List <Notification>();


                LOG.Debug("Spooling documents");
                foreach (NodeDocument wsdlDoc in documents)
                {
                    Notification not = new Notification();

                    not.Category           = messageCategory;
                    not.Name               = wsdlDoc.name;
                    not.Status             = new TransactionStatus();
                    not.Status.Status      = CommonTransactionStatusCodeProvider.Convert(wsdlDoc.type);
                    not.Status.Description = Encoding.ASCII.GetString(wsdlDoc.content);

                    LOG.Debug("   Notification:" + not);

                    notif.Notifications.Add(not);
                }

                LOG.Debug("GetStatus using visit: " + visit);
                TransactionStatus tranStatus = _service11Provider.TransactionService.Notify(notif, visit);

                LOG.Debug("TransactionStatus: " + tranStatus);
                return(CommonTransactionStatusCodeProvider.ConvertTo11Enum(tranStatus.Status));
            }
            catch (Exception ex)
            {
                LOG.Error("Error while fotifying", ex);
                throw _service11Provider.FaultProvider.GetFault(EndpointVersionType.EN11, ex);
            }
        }