internal static P2PDataDeliveryResult GetSucceedDeliveryResult(string P2PDataOperationID)
            {
                P2PDataDeliveryResult result = new P2PDataDeliveryResult(P2PDataOperationID);

                return(result);
            }
            internal static P2PDataDeliveryResult GetSucceedDeliveryResult(P2PData data)
            {
                P2PDataDeliveryResult result = new P2PDataDeliveryResult(data);

                return(result);
            }
            internal static P2PDataDeliveryResult GetFailureDeliveryResult(string P2PDataOperationID, string errorMessage)
            {
                P2PDataDeliveryResult result = new P2PDataDeliveryResult(P2PDataOperationID, errorMessage);

                return(result);
            }
            internal static P2PDataDeliveryResult ParseAndGet_P2PDataDeliveryResult_FromXMLDataString(string XMLString)
            {
                System.IO.StringReader   sr     = null;
                System.Xml.XmlTextReader m_xmlr = null;

                try
                {
                    sr     = new System.IO.StringReader(XMLString);
                    m_xmlr = new System.Xml.XmlTextReader(sr);
                    m_xmlr.WhitespaceHandling = System.Xml.WhitespaceHandling.None;
                }
                catch (System.Xml.XmlException)
                {
                    string msg;
                    msg = "Error trying to get XML format from  P2P Data string [" + XMLString + "]";
                }
                catch (Exception ex)
                {
                    string msg = "";
                    msg = "Error trying to parse P2P socket XML string : " + ex.Message;
                    throw (new Exception(msg));
                }
                m_xmlr.Read();
                string HeaderIdentifier = m_xmlr.Name;

                if (HeaderIdentifier != "P2P_DATA_DELIVERY_RESULT")
                {
                    throw (new System.Xml.XmlException("Invalid data header " + HeaderIdentifier + ". It was expected to be \'P2P_DATA_DELIVERY_RESULT\'"));
                }
                else
                {
                    //**********************************************************
                    //retrieves the data operation type
                    //**********************************************************

                    string P2PDataOperationID = "";
                    P2PDataOperationID = m_xmlr.GetAttribute("P2PDataOperationID");
                    if (P2PDataOperationID == null)
                    {
                        P2PDataOperationID = Guid.NewGuid().ToString();
                    }

                    string DeliveryResultType = "";
                    DeliveryResultType = m_xmlr.GetAttribute("DeliveryResultType");
                    if (DeliveryResultType == null)
                    {
                        DeliveryResultType = "DeliverySucceed";
                    }

                    //**********************************************************
                    //retrieves the data itself
                    //**********************************************************
                    m_xmlr.Read();
                    string       dataSectionName = m_xmlr.Name;
                    DataVariable variable;
                    if (dataSectionName == "DATA")
                    {
                        string variableXMLstring = m_xmlr.ReadOuterXml();
                        variable = XMLDataFormatting.RetrieveDataVariableFromXMLString(variableXMLstring);
                    }
                    else
                    {
                        throw (new Exception("Invalid data XML section name \'" + dataSectionName + "\'. Is expected to be \'DATA\'"));
                    }
                    string errorMEssage = System.Convert.ToString(variable.Data);

                    P2PDataDeliveryResult result = null;
                    switch (DeliveryResultType)
                    {
                    case "DeliveryFailure":
                        result = P2PDataDeliveryResult.GetFailureDeliveryResult(P2PDataOperationID, errorMEssage);
                        break;

                    case "DeliverySucceed":
                        result = P2PDataDeliveryResult.GetSucceedDeliveryResult(P2PDataOperationID);
                        break;
                    }
                    return(result);
                }
            }
            internal static P2PDataDeliveryResult GetFailureDeliveryResult(P2PData data, string errorMessage)
            {
                P2PDataDeliveryResult result = new P2PDataDeliveryResult(data, errorMessage);

                return(result);
            }