<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xsd:schema xmlns="http://www.springactionscript.org/schema/messaging"
			xmlns:xsd="http://www.w3.org/2001/XMLSchema"
			targetNamespace="http://www.springactionscript.org/schema/messaging"
			elementFormDefault="qualified">

	<xsd:annotation>
		<xsd:documentation><![CDATA[
			Spring ActionScript Framework 1.0 Messaging Schema
			Schema Authors: Christophe Herreman
			]]>
		</xsd:documentation>
	</xsd:annotation>

	<xsd:import namespace="http://www.springactionscript.org/schema/objects"/>

	<xsd:element name="amf-channel" type="amfChannelType"/>
	<xsd:element name="channel-set" type="channelSetType"/>
	<xsd:element name="consumer" type="consumerType"/>
	<xsd:element name="secure-amf-channel" type="secureAMFChannelType"/>
	<xsd:element name="secure-streaming-amf-channel" type="secureStreamingAMFChannelType"/>
	<xsd:element name="streaming-amf-channel" type="streamingAMFChannelType"/>

	<xsd:complexType name="channelSetType" mixed="true">
		<xsd:attribute type="xsd:string" name="id" use="optional"/>
		<xsd:attribute type="xsd:string" name="channels" use="optional"/>
		<xsd:attribute type="xsd:boolean" name="clustered" use="optional"/>
		<xsd:attribute type="xsd:string" name="initial-destination-id" use="optional"/>
	</xsd:complexType>
	
	<xsd:complexType name="channelType" mixed="true">
		<xsd:attribute type="xsd:string" name="id" use="optional"/>
		<xsd:attribute type="xsd:int" name="connect-timeout" use="optional"/>
		<xsd:attribute type="xsd:string" name="failover-uris" use="optional"/>
		<xsd:attribute type="xsd:int" name="request-timeout" use="optional"/>
		<xsd:attribute type="xsd:string" name="uri" use="optional"/>
	</xsd:complexType>
	
	<xsd:complexType name="pollingChannelType" mixed="true">
		<xsd:complexContent>
			<xsd:extension base="channelType"/>
		</xsd:complexContent>
	</xsd:complexType>
	
	<xsd:complexType name="netConnectionChannelType" mixed="true">
		<xsd:complexContent>
			<xsd:extension base="pollingChannelType"/>
		</xsd:complexContent>
	</xsd:complexType>
	
	<xsd:complexType name="amfChannelType" mixed="true">
		<xsd:complexContent>
			<xsd:extension base="netConnectionChannelType">
				<xsd:attribute type="xsd:boolean" name="piggybacking-enabled" use="optional"/>
				<xsd:attribute type="xsd:boolean" name="polling-enabled" use="optional"/>
				<xsd:attribute type="xsd:int" name="polling-interval" use="optional"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>

	<xsd:complexType name="secureAMFChannelType" mixed="true">
		<xsd:complexContent>
			<xsd:extension base="amfChannelType"/>
		</xsd:complexContent>
	</xsd:complexType>

	<xsd:complexType name="secureStreamingAMFChannelType" mixed="true">
		<xsd:complexContent>
			<xsd:extension base="streamingAMFChannelType"/>
		</xsd:complexContent>
	</xsd:complexType>
	
	<xsd:complexType name="streamingAMFChannelType" mixed="true">
		<xsd:complexContent>
			<xsd:extension base="amfChannelType"/>
		</xsd:complexContent>
	</xsd:complexType>
	
	<xsd:complexType name="messageAgentType" mixed="true">
		<xsd:attribute type="xsd:string" name="id" use="optional"/>
		<xsd:attribute type="xsd:string" name="channel-set" use="optional"/>
		<xsd:attribute type="xsd:string" name="destination" use="optional"/>
		<xsd:attribute type="xsd:int" name="request-timeout" use="optional"/>
	</xsd:complexType>
	
	<xsd:complexType name="abstractConsumerType" mixed="true">
		<xsd:complexContent>
			<xsd:extension base="messageAgentType">
				<xsd:attribute type="xsd:unsignedInt" name="max-frequency" use="optional"/>
				<xsd:attribute type="xsd:int" name="resubscribe-attempts" use="optional"/>
				<xsd:attribute type="xsd:int" name="resubscribe-interval" use="optional"/>
				<xsd:attribute type="xsd:int" name="timestamp" use="optional"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	
	<xsd:complexType name="consumerType" mixed="true">
		<xsd:complexContent>
			<xsd:extension base="abstractConsumerType">
				<xsd:attribute type="xsd:string" name="selector" use="optional"/>
				<xsd:attribute type="xsd:string" name="subtopic" use="optional"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>

</xsd:schema>

