<?xml version="1.0" encoding="us-ascii"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:nx="http://schemas.nixxis.com/ApplicationServer" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:element name="channels">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="channel" minOccurs="1" maxOccurs="unbounded">
					<xs:complexType>
						<xs:sequence minOccurs="1" maxOccurs="unbounded">
							<xs:element name="protocol">
								<xs:complexType>
									<xs:attribute name="key" use="required">
                    <xs:annotation>
                      <xs:documentation>
                        The key identifying the protocol (it is the key as it appears in the requests).
                      </xs:documentation>
                    </xs:annotation>
										<xs:simpleType>
											<xs:restriction base="xs:string">
												<xs:enumeration value="HTTP/1.1" />
												<xs:enumeration value="SIP/2.0" />
											</xs:restriction>
										</xs:simpleType>
									</xs:attribute>
                  <xs:attribute name="domainType" type="xs:string" use="optional" default="any" />
                  <xs:attribute name="type" type="xs:string" use="optional" />
									<xs:attribute name="requestType" type="xs:string" use="optional" />
									<xs:attribute name="responseType" type="xs:string" use="optional" />
								</xs:complexType>
							</xs:element>
						</xs:sequence>
            <xs:attribute name="key" type="xs:string" use="required" >
              <xs:annotation>
                <xs:documentation>
                  The key identifying the channel.
                </xs:documentation>
              </xs:annotation>
            </xs:attribute>
            <xs:attribute name="address" type="xs:string" use="required" >
              <xs:annotation>
                <xs:documentation>
                  The IP address linked with the channel.
                </xs:documentation>
              </xs:annotation>
            </xs:attribute>
            <xs:attribute name="publicaddress" type="xs:string" use="optional">
              <xs:annotation>
                <xs:documentation>
                  The public IP address linked with the channel. This is used when selecting the channel for sending a request and to fill the sentBy parameter of the via.
                </xs:documentation>
              </xs:annotation>
            </xs:attribute>
            <xs:attribute name="publicport" type="xs:positiveInteger" use="optional" >
              <xs:annotation>
                <xs:documentation>
                  The public port linked with the channel (same goal as publicaddress).
                </xs:documentation>
              </xs:annotation>
            </xs:attribute>
            <xs:attribute name="port" type="xs:positiveInteger" use="required">
              <xs:annotation>
                <xs:documentation>
                  The port linked with the channel.
                </xs:documentation>
              </xs:annotation>
            </xs:attribute>
            <xs:attribute name="outboundport" type="xs:positiveInteger" use="optional" >
              <xs:annotation>
                <xs:documentation>
                  The outbound port linked with the channel (default to port).
                </xs:documentation>
              </xs:annotation>
            </xs:attribute>
            <xs:attribute name="privateprefix" type="xs:string" use="optional">
              <xs:annotation>
                <xs:documentation>
                  Simple way of identifying a "private address". Default to null (meaning that all addresses are considered public). When sending a packet to a public address and when the sdp contains a private address, the sdp is modified to include the public address.
                  An address is considered private if it starts with the string specified in this attribute.
                  This method has big limitations but can be usefull in some cases.
                </xs:documentation>
              </xs:annotation>
            </xs:attribute>
						<xs:attribute name="connection" use="required">
              <xs:annotation>
                <xs:documentation>
                  Connection type used.
                </xs:documentation>
              </xs:annotation>
              <xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:enumeration value="udp" />
									<xs:enumeration value="tcp" />
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
						<xs:attribute name="timeout" default="3000" use="optional">
              <xs:annotation>
                <xs:documentation>
                  The connection timeout duration (emulation of that timeout is implemented when working in udp).
                </xs:documentation>
              </xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:integer">
									<xs:minInclusive value="100" />
									<xs:maxInclusive value="60000" />
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
						<xs:attribute name="type" type="xs:string" use="required" />
            <xs:attribute name="sendbuffer" type="xs:positiveInteger" use="optional">
              <xs:annotation>
                <xs:documentation>
                  Specify the send buffer size in udp.
                </xs:documentation>
              </xs:annotation>
            </xs:attribute>
            <xs:attribute name="receivebuffer" type="xs:positiveInteger" use="optional">
              <xs:annotation>
                <xs:documentation>
                  Specify the receive buffer size in udp.
                </xs:documentation>
              </xs:annotation>
            </xs:attribute>
            <xs:attribute name="receivequeued" type="xs:boolean" use="optional">
              <xs:annotation>
                <xs:documentation>
                  Indicates if the processing of received buffer in udp is done through a queue or not. The goal is to prevent loosing data when receiving peaks and processing takes some time.
                </xs:documentation>
              </xs:annotation>
            </xs:attribute>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
</xs:schema>