<?xml version="1.0"?>
<!--
-
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements.  See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership.  The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License.  You may obtain a copy of the License at
- 
-   http://www.apache.org/licenses/LICENSE-2.0
- 
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied.  See the License for the
- specific language governing permissions and limitations
- under the License.
-
-->

<amqp major="10" minor="0" port="5672" comment="AMQ protocol 0-10">

  <class name = "cluster" code = "101">

    <doc>
      An extension that allows brokers to communicate in order to
      provide a clustered service to clients.  
    </doc>

    <control name = "join" index="10">
      <field name = "broker" type = "str8" />
    </control>

    <control name = "membership" index="20">
      <field name = "members" type = "longstr" />
    </control>

    <control name = "synch" index="30">
    </control>

    <control name = "leave" index="40">
      <field name = "broker" type = "str8" />
    </control>

    <control name = "suspect" index="50">
      <field name = "broker" type = "str8" />
    </control>

    <control name = "ping" index="60">
      <field name = "broker" type = "str8" />
      <field name = "load" type = "long" />
      <field name = "response-required" type = "bit" />
    </control>

  </class>

</amqp>
