/// <summary> /// The Create method creates a new instance of an endpoint /// implementation, based on the settings that are found in /// a section of a configuration metabase. /// </summary> /// <param name="settings"> /// The section of a configuration metabase that contains /// configuration details for a specific endpoint type. /// </param> /// <returns> /// The resulting IPC endpoint. /// </returns> public static IVfxEndpoint Create(XmlDocument settings) { IVfxEndpoint result = null; // REC: Retrieve the endpoint type from the provided // settings and determine whether or not an instance // of that type can be created: XPathNavigator xpn = settings.CreateNavigator(); XPathNodeIterator xpi = xpn.Select("/Endpoint"); if ((xpi.Count == 1) && (xpi.MoveNext())) { string requestedType = xpi.Current.GetAttribute("type", ""); if (!string.IsNullOrEmpty(requestedType)) { switch (requestedType) { case "Tcp.Acceptor": result = new VfxTcpServerEndpoint(); break; case "Tcp.Connector": result = new VfxTcpClientEndpoint(); break; } } else { throw new ArgumentException("An endpoint type must be specified."); } } if (result == null) { throw new ArgumentException("The specified endpoint type is not supported."); } result.Initialize(settings); return(result); }
/// <summary> /// The Create method creates a new instance of an endpoint /// implementation, based on the settings that are found in /// a section of a configuration metabase. /// </summary> /// <param name="settings"> /// The section of a configuration metabase that contains /// configuration details for a specific endpoint type. /// </param> /// <returns> /// The resulting IPC endpoint. /// </returns> public static IVfxEndpoint Create(XmlDocument settings) { IVfxEndpoint result = null; // REC: Retrieve the endpoint type from the provided // settings and determine whether or not an instance // of that type can be created: XPathNavigator xpn = settings.CreateNavigator(); XPathNodeIterator xpi = xpn.Select("/Endpoint"); if ((xpi.Count == 1) && (xpi.MoveNext())) { string requestedType = xpi.Current.GetAttribute("type", ""); if (!string.IsNullOrEmpty(requestedType)) { switch (requestedType) { case "Tcp.Acceptor": result = new VfxTcpServerEndpoint(); break; case "Tcp.Connector": result = new VfxTcpClientEndpoint(); break; } } else { throw new ArgumentException("An endpoint type must be specified."); } } if(result == null) { throw new ArgumentException("The specified endpoint type is not supported."); } result.Initialize(settings); return result; }