You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rh...@apache.org on 2006/09/20 00:07:25 UTC
svn commit: r447994 [6/46] - in /incubator/qpid/trunk/qpid: ./ cpp/ cpp/bin/
cpp/broker/ cpp/broker/inc/ cpp/broker/src/ cpp/broker/test/ cpp/client/
cpp/client/inc/ cpp/client/src/ cpp/client/test/ cpp/common/
cpp/common/concurrent/ cpp/common/concurr...
Added: incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/code_utils.xsl
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/code_utils.xsl?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/code_utils.xsl (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/code_utils.xsl Tue Sep 19 15:06:50 2006
@@ -0,0 +1,210 @@
+<?xml version='1.0'?>
+<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:amqp="http://amqp.org">
+
+ <!--
+ ========================
+ Function: amqp:copyright
+ ========================
+ Print out a standard Apache copyright notice and generated code warning.
+ -->
+ <xsl:function name="amqp:copyright">/**
+*
+* Copyright (c) 2006 The Apache Software Foundation
+*
+* Licensed 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.
+*
+*/
+
+/**
+*
+* NOTE: This file is generated directly from the AMQP XML specification.
+* === DO NOT EDIT ===
+*
+*/
</xsl:function>
+
+ <!--
+ ==========================
+ Function: amqp:upper-first
+ ==========================
+ Convert the first character of the parameter to upper-case
+ -->
+ <xsl:function name="amqp:upper-first">
+ <xsl:param name="in"/>
+ <xsl:value-of select="concat(upper-case(substring($in, 1, 1)), substring($in, 2))"/>
+ </xsl:function>
+
+ <!--
+ ========================
+ Function: amqp:cpp-name-1
+ ========================
+ Convert parameter "name" to a valid C++ identifier, finding spaces and '-'s
+ in the parameter name and replacing them with '_' chars. Also check for C++
+ reserved words and prefix them with '_'. No capitalization is performed.
+ -->
+ <xsl:function name="amqp:cpp-name-1">
+ <xsl:param name="name"/>
+ <xsl:choose>
+ <!-- C++ reserved words. -->
+ <xsl:when test="$name='delete'">delete_</xsl:when>
+ <xsl:when test="$name='return'">return_</xsl:when>
+ <!-- Change unsuitable C++ identifier characters. -->
+ <xsl:otherwise><xsl:value-of select="translate($name, ' -', '__')"/></xsl:otherwise>
+ </xsl:choose>
+ </xsl:function>
+
+ <!--
+ =======================
+ Function: amqp:cpp-name
+ =======================
+ Convert parameter "name" to a valid, camel cased C++ name.
+ -->
+ <xsl:function name="amqp:cpp-name">
+ <xsl:param name="name"/>
+ <xsl:value-of select="amqp:cpp-name-1(amqp:camel-case($name))"/>
+ </xsl:function>
+
+ <!--
+ =============================
+ Function: amqp:cpp-class-name
+ =============================
+ Convert parameter "name" to a valid C++ identifier, finding spaces and '-'s
+ in the parameter name and replacing them with '_' chars. Also check for C++
+ reserved words and prefix them with '_'. First letter only is capitalized.
+ -->
+ <xsl:function name="amqp:cpp-class-name">
+ <xsl:param name="name"/>
+ <xsl:value-of select="amqp:upper-first(amqp:cpp-name($name))"/>
+ </xsl:function>
+
+ <!--
+ =========================
+ Function: amqp:camel-case
+ =========================
+ *** NOTE: Only works with *one* of either '-' or ' '. If a name contains 2 or
+ *** more of these characters, then this will break.
+ Convert parameter "name" to camel case, where words are separated by ' ' or '-'
+ -->
+ <xsl:function name="amqp:camel-case">
+ <xsl:param name="name"/>
+ <xsl:choose>
+ <xsl:when test="contains($name, ' ')">
+ <xsl:value-of select="concat(substring-before($name, ' '), amqp:upper-first(substring-after($name, ' ')))"/>
+ </xsl:when>
+ <xsl:when test="contains($name, '-')">
+ <xsl:value-of select="concat(substring-before($name, '-'), amqp:upper-first(substring-after($name, '-')))"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$name"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:function>
+
+ <!--
+ =========================
+ Function: amqp:field-name
+ =========================
+ Get a valid field name, processing spaces and '-'s where appropriate
+ -->
+ <xsl:function name="amqp:field-name">
+ <xsl:param name="name"/>
+ <xsl:value-of select="amqp:upper-first(amqp:camel-case($name))"/>
+ </xsl:function>
+
+ <!--
+ =======================
+ Function: amqp:cpp-type
+ =======================
+ Map the set of simple AMQP types to C++ types. Also map the AMQP table
+ domain to appropriate C++ class.
+ -->
+ <xsl:function name="amqp:cpp-type">
+ <xsl:param name="type"/>
+ <xsl:choose>
+ <!-- Simple AMQP domain types -->
+ <xsl:when test="$type='octet'">u_int8_t</xsl:when>
+ <xsl:when test="$type='short'">u_int16_t</xsl:when>
+ <xsl:when test="$type='shortstr'">string</xsl:when>
+ <xsl:when test="$type='longstr'">string</xsl:when>
+ <xsl:when test="$type='bit'">bool</xsl:when>
+ <xsl:when test="$type='long'">u_int32_t</xsl:when>
+ <xsl:when test="$type='longlong'">u_int64_t</xsl:when>
+ <xsl:when test="$type='timestamp'">u_int64_t</xsl:when>
+ <!-- AMQP structures -->
+ <xsl:when test="$type='table'">FieldTable</xsl:when>
+ <!-- Fallback: unknown type -->
+ <xsl:otherwise>unknown_type /* WARNING: undefined type */</xsl:otherwise>
+ </xsl:choose>
+ </xsl:function>
+
+ <!--
+ ==========================
+ Function: amqp:cpp-arg-ref
+ ==========================
+ Determines whether a C++ reference is required for an argument.
+ -->
+ <xsl:function name="amqp:cpp-arg-ref">
+ <xsl:param name="type"/>
+ <xsl:choose>
+ <xsl:when test="$type='string'">&</xsl:when>
+ <xsl:when test="$type='FieldTable'">&</xsl:when>
+ </xsl:choose>
+ </xsl:function>
+
+ <!--
+ =========================
+ Function: amqp:cpp-lookup
+ =========================
+ Template and function for looking up the cpp type from the domain name.
+ The template runs on a lookup table XML generated by the "domain_table"
+ template in amqp_domaintypes.xsl.
+ -->
+ <xsl:template match="/" mode="cpp-lookup">
+ <xsl:param name="domain-name"/>
+ <xsl:for-each select="key('domain-lookup', $domain-name)">
+ <xsl:value-of select="@cpp-type"/>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:function name="amqp:cpp-lookup">
+ <xsl:param name="domain-name"/>
+ <xsl:param name="domain-cpp-table"/>
+ <xsl:apply-templates mode="cpp-lookup" select="$domain-cpp-table">
+ <xsl:with-param name="domain-name" select="$domain-name"/>
+ </xsl:apply-templates>
+ </xsl:function>
+
+ <!--
+ =========================
+ Function: amqp:cpp-lookup
+ =========================
+ Template and function for processing the possibly multiple <doc> elements
+ within a node.
+ -->
+ <xsl:template match="doc" mode="process-doc-elts">
+ <xsl:for-each select=".">
+ <xsl:choose>
+ <xsl:when test=".[@type='grammar']"><xsl:value-of select="."/></xsl:when>
+ <xsl:when test=".[@type='scenario']"><xsl:value-of select="concat('
Test Scenario: ', normalize-space(.))"/></xsl:when>
+ <xsl:otherwise><xsl:value-of select="normalize-space(.)"/></xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:function name="amqp:process-docs">
+ <xsl:param name="doc-elts"/>
+ <xsl:apply-templates mode="process-doc-elts" select="$doc-elts"/>
+ </xsl:function>
+
+
+</xsl:stylesheet>
+
Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/code_utils.xsl
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/convert_0.81.xsl
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/convert_0.81.xsl?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/convert_0.81.xsl (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/convert_0.81.xsl Tue Sep 19 15:06:50 2006
@@ -0,0 +1,407 @@
+<?xml version='1.0'?>
+<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:amqp="http://amqp.org">
+
+<xsl:template match="/">
+ <xsl:apply-templates select="/" mode="do-amqp"/>
+</xsl:template>
+
+<!-- ======
+ <amqp>
+ ====== -->
+<xsl:template match="amqp" mode="do-amqp">
+
+<!-- <xsl:text>
</xsl:text> -->
+<xsl:element name= "amqp">
+<xsl:attribute name="major"><xsl:value-of select="@major"/></xsl:attribute>
+<xsl:attribute name="minor"><xsl:value-of select="@minor"/></xsl:attribute>
+<xsl:attribute name="port"><xsl:value-of select="@port"/></xsl:attribute>
+<xsl:attribute name="comment"><xsl:value-of select="@comment"/></xsl:attribute>
+<xsl:text>
</xsl:text>
+
+<!-- constant elements -->
+<xsl:text>
</xsl:text>
+<xsl:text> </xsl:text><xsl:comment>
+ ====================
+ Constants
+ ====================
+ </xsl:comment><xsl:text>
</xsl:text>
+<xsl:text>
</xsl:text>
+<xsl:apply-templates select="constant" mode="do-constant">
+<xsl:with-param name="indent" select="' '"/>
+</xsl:apply-templates>
+
+<!-- domain elements -->
+<xsl:text>
</xsl:text>
+<xsl:text> </xsl:text><xsl:comment>
+ ====================
+ Domains
+ ====================
+ </xsl:comment><xsl:text>
</xsl:text>
+<xsl:text>
</xsl:text>
+<xsl:apply-templates select="domain" mode="do-domain">
+<xsl:with-param name="indent" select="' '"/>
+</xsl:apply-templates>
+
+<!-- required elementary domain definition elements added into v0.81 -->
+<xsl:text>
</xsl:text>
+<xsl:text> </xsl:text><xsl:comment> Elementary domains </xsl:comment><xsl:text>
</xsl:text>
+<xsl:text> </xsl:text><xsl:element name="domain">
+ <xsl:attribute name="name">bit</xsl:attribute>
+ <xsl:attribute name="type">bit</xsl:attribute>
+ <xsl:attribute name="label">single bit</xsl:attribute>
+</xsl:element><xsl:text>
</xsl:text>
+<xsl:text> </xsl:text><xsl:element name="domain">
+ <xsl:attribute name="name">octet</xsl:attribute>
+ <xsl:attribute name="type">octet</xsl:attribute>
+ <xsl:attribute name="label">single octet</xsl:attribute>
+</xsl:element><xsl:text>
</xsl:text>
+<xsl:text> </xsl:text><xsl:element name="domain">
+ <xsl:attribute name="name">short</xsl:attribute>
+ <xsl:attribute name="type">short</xsl:attribute>
+ <xsl:attribute name="label">16-bit integer</xsl:attribute>
+</xsl:element><xsl:text>
</xsl:text>
+<xsl:text> </xsl:text><xsl:element name="domain">
+ <xsl:attribute name="name">long</xsl:attribute>
+ <xsl:attribute name="type">long</xsl:attribute>
+ <xsl:attribute name="label">32-bit integer</xsl:attribute>
+</xsl:element><xsl:text>
</xsl:text>
+<xsl:text> </xsl:text><xsl:element name="domain">
+ <xsl:attribute name="name">longlong</xsl:attribute>
+ <xsl:attribute name="type">longlong</xsl:attribute>
+ <xsl:attribute name="label">64-bit integer</xsl:attribute>
+</xsl:element><xsl:text>
</xsl:text>
+<xsl:text> </xsl:text><xsl:element name="domain">
+ <xsl:attribute name="name">shortstr</xsl:attribute>
+ <xsl:attribute name="type">shortstr</xsl:attribute>
+ <xsl:attribute name="label">short string</xsl:attribute>
+</xsl:element><xsl:text>
</xsl:text>
+<xsl:text> </xsl:text><xsl:element name="domain">
+ <xsl:attribute name="name">longstr</xsl:attribute>
+ <xsl:attribute name="type">longstr</xsl:attribute>
+ <xsl:attribute name="label">long string</xsl:attribute>
+</xsl:element><xsl:text>
</xsl:text>
+<xsl:text> </xsl:text><xsl:element name="domain">
+ <xsl:attribute name="name">timestamp</xsl:attribute>
+ <xsl:attribute name="type">timestamp</xsl:attribute>
+ <xsl:attribute name="label">64-bit timestamp</xsl:attribute>
+</xsl:element><xsl:text>
</xsl:text>
+<xsl:text> </xsl:text><xsl:element name="domain">
+ <xsl:attribute name="name">table</xsl:attribute>
+ <xsl:attribute name="type">table</xsl:attribute>
+ <xsl:attribute name="label">field table</xsl:attribute>
+</xsl:element><xsl:text>
</xsl:text>
+
+<!-- class elements -->
+<xsl:text>
</xsl:text>
+<xsl:text> </xsl:text><xsl:comment>
+ ====================
+ Classes
+ ====================
+ </xsl:comment><xsl:text>
</xsl:text>
+<xsl:apply-templates select="class" mode="do-class">
+<xsl:with-param name="indent" select="' '"/>
+</xsl:apply-templates>
+
+</xsl:element><!-- amqp -->
+<!-- <xsl:text>
</xsl:text> -->
+</xsl:template>
+
+<!-- ==========
+ <constant>
+ ========== -->
+<xsl:template match="constant" mode="do-constant">
+<xsl:param name="indent"/>
+<xsl:variable name="constant" select="translate(@name, ' ', '-')"/>
+
+<xsl:value-of select="$indent"/><xsl:element name="constant">
+<xsl:attribute name="name"><xsl:value-of select="$constant"/></xsl:attribute>
+<xsl:attribute name="value"><xsl:value-of select="@value"/></xsl:attribute>
+<xsl:if test="@class">
+<xsl:attribute name="class"><xsl:value-of select="translate(@class, ' ', '-')"/></xsl:attribute>
+</xsl:if>
+
+<!-- If there is content, place in child <doc> element -->
+<xsl:if test="string-length(.) > 0">
+<xsl:text>
</xsl:text>
+<xsl:value-of select="$indent"/><xsl:text> </xsl:text><xsl:element name="doc"><xsl:text>
</xsl:text>
+<xsl:value-of select="$indent"/><xsl:text> </xsl:text><xsl:value-of select="normalize-space(.)"/><xsl:text>
</xsl:text>
+<xsl:value-of select="$indent"/><xsl:text> </xsl:text></xsl:element><xsl:text>
</xsl:text>
+<xsl:value-of select="$indent"/>
+</xsl:if>
+
+</xsl:element><xsl:text>
</xsl:text>
+
+</xsl:template>
+
+<!-- ========
+ <domain>
+ ======== -->
+<xsl:template match="domain" mode="do-domain">
+<xsl:param name="indent"/>
+<xsl:variable name="domain" select="translate(@name, ' ', '-')"/>
+
+<xsl:value-of select="$indent"/><xsl:element name="domain">
+<xsl:attribute name="name"><xsl:value-of select="$domain"/></xsl:attribute>
+<xsl:attribute name="type"><xsl:value-of select="@type"/></xsl:attribute>
+<xsl:if test="doc|assert|rule"><xsl:text>
</xsl:text></xsl:if>
+
+<!-- doc elements -->
+<xsl:apply-templates select="doc" mode="do-doc">
+<xsl:with-param name="indent" select="concat($indent, ' ')"/>
+</xsl:apply-templates>
+
+<!-- assert elements -->
+<xsl:apply-templates select="assert" mode="do-assert">
+<xsl:with-param name="indent" select="concat($indent, ' ')"/>
+</xsl:apply-templates>
+
+<!-- rule elements -->
+<xsl:apply-templates select="rule" mode="do-rule">
+<xsl:with-param name="indent" select="concat($indent, ' ')"/>
+<xsl:with-param name="label" select="$domain"/>
+</xsl:apply-templates>
+
+<xsl:if test="doc|assert|rule"><xsl:value-of select="$indent"/></xsl:if></xsl:element><xsl:text>
</xsl:text>
+
+</xsl:template>
+
+<!-- ========
+ <class>
+ ======== -->
+
+<xsl:template match="class" mode="do-class">
+<xsl:param name="indent"/>
+<xsl:variable name="class" select="translate(@name, ' ', '-')"/>
+
+<!-- Ignore class test - removed from 0.81 -->
+<xsl:if test="not($class = 'test')">
+<xsl:text>
</xsl:text><xsl:value-of select="$indent"/><xsl:comment><xsl:value-of select="concat(' == Class: ', $class, ' == ')"/></xsl:comment><xsl:text>
</xsl:text>
+<xsl:value-of select="$indent"/><xsl:element name="class">
+<xsl:attribute name="name"><xsl:value-of select="$class"/></xsl:attribute>
+<xsl:attribute name="handler"><xsl:value-of select="@handler"/></xsl:attribute>
+<xsl:attribute name="index"><xsl:value-of select="@index"/></xsl:attribute>
+<xsl:if test="doc|chassis|rule|field|method"><xsl:text>
</xsl:text></xsl:if>
+
+<!-- doc elements -->
+<xsl:apply-templates select="doc" mode="do-doc">
+<xsl:with-param name="indent" select="concat($indent, ' ')"/>
+<xsl:with-param name="label" select="$class"/>
+</xsl:apply-templates>
+
+<!-- chassis elements -->
+<xsl:apply-templates select="chassis" mode="do-chassis">
+<xsl:with-param name="indent" select="concat($indent, ' ')"/>
+</xsl:apply-templates>
+
+<!-- rule elements -->
+<xsl:apply-templates select="rule" mode="do-rule">
+<xsl:with-param name="indent" select="concat($indent, ' ')"/>
+<xsl:with-param name="label" select="$class"/>
+</xsl:apply-templates>
+
+<!-- field elements -->
+<xsl:apply-templates select="field" mode="do-field">
+<xsl:with-param name="indent" select="concat($indent, ' ')"/>
+<xsl:with-param name="label" select="$class"/>
+</xsl:apply-templates>
+
+<!-- method elements -->
+<xsl:apply-templates select="method" mode="do-method">
+<xsl:with-param name="indent" select="concat($indent, ' ')"/>
+<xsl:with-param name="label" select="$class"/>
+</xsl:apply-templates>
+
+<xsl:if test="doc|chassis|rule|field|method"><xsl:value-of select="$indent"/></xsl:if></xsl:element><xsl:text>
</xsl:text>
+</xsl:if>
+</xsl:template>
+
+<!-- ========
+ <method>
+ ======== -->
+
+<xsl:template match="method" mode="do-method">
+<xsl:param name="indent"/>
+<xsl:param name="label"/>
+<xsl:variable name="method" select="translate(@name, ' ', '-')"/>
+
+<xsl:text>
</xsl:text><xsl:value-of select="$indent"/><xsl:comment><xsl:value-of select="concat(' == Method: ', $label, '.', $method, ' == ')"/></xsl:comment><xsl:text>
</xsl:text>
+<xsl:value-of select="$indent"/><xsl:element name="method">
+<xsl:attribute name="name"><xsl:value-of select="$method"/></xsl:attribute>
+<xsl:if test="@synchronous"><xsl:attribute name="synchronous"><xsl:value-of select="@synchronous"/></xsl:attribute></xsl:if>
+<xsl:attribute name="index"><xsl:value-of select="@index"/></xsl:attribute>
+<xsl:if test="doc|chassis|response|rule|field"><xsl:text>
</xsl:text></xsl:if>
+
+<!-- doc elements -->
+<xsl:apply-templates select="doc" mode="do-doc">
+<xsl:with-param name="indent" select="concat($indent, ' ')"/>
+<xsl:with-param name="label" select="concat($label, '.', $method)"/>
+</xsl:apply-templates>
+
+<!-- chassis and response elements -->
+<xsl:apply-templates select="chassis" mode="do-chassis">
+<xsl:with-param name="indent" select="concat($indent, ' ')"/>
+</xsl:apply-templates>
+<xsl:apply-templates select="response" mode="do-response">
+<xsl:with-param name="indent" select="concat($indent, ' ')"/>
+</xsl:apply-templates>
+
+<!-- rule elements -->
+<xsl:apply-templates select="rule" mode="do-rule">
+<xsl:with-param name="indent" select="concat($indent, ' ')"/>
+<xsl:with-param name="label" select="concat($label, '.', $method)"/>
+</xsl:apply-templates>
+
+<!-- field elements -->
+<xsl:apply-templates select="field" mode="do-field">
+<xsl:with-param name="indent" select="concat($indent, ' ')"/>
+<xsl:with-param name="label" select="concat($label, '.', $method)"/>
+</xsl:apply-templates>
+
+<xsl:if test="doc|chassis|response|rule|field"><xsl:value-of select="$indent"/></xsl:if></xsl:element><xsl:text>
</xsl:text>
+
+</xsl:template>
+
+<!-- ========
+ <field>
+ ======== -->
+
+<xsl:template match="field" mode="do-field">
+<xsl:param name="indent"/>
+<xsl:param name="label"/>
+<xsl:variable name="field" select="translate(@name, ' ', '-')"/>
+
+<xsl:value-of select="$indent"/><xsl:element name="field">
+<xsl:attribute name="name"><xsl:value-of select="$field"/></xsl:attribute>
+<xsl:if test="@type">
+<xsl:attribute name="domain"><xsl:value-of select="translate(@type, ' ', '-')"/></xsl:attribute>
+</xsl:if>
+<xsl:if test="@domain">
+<xsl:attribute name="domain"><xsl:value-of select="translate(@domain, ' ', '-')"/></xsl:attribute>
+</xsl:if>
+<xsl:if test="doc|rule|assert"><xsl:text>
</xsl:text></xsl:if>
+
+<!-- doc elements -->
+<xsl:apply-templates select="doc" mode="do-doc">
+<xsl:with-param name="indent" select="concat($indent, ' ')"/>
+<xsl:with-param name="label" select="concat($label, '.', $field)"/>
+</xsl:apply-templates>
+
+<!-- rule elements -->
+<xsl:apply-templates select="rule" mode="do-rule">
+<xsl:with-param name="indent" select="concat($indent, ' ')"/>
+<xsl:with-param name="label" select="concat($label, '.', $field)"/>
+</xsl:apply-templates>
+
+<!-- assert elements -->
+<xsl:apply-templates select="assert" mode="do-assert">
+<xsl:with-param name="indent" select="concat($indent, ' ')"/>
+</xsl:apply-templates>
+
+<xsl:if test="doc|rule|assert"><xsl:value-of select="$indent"/></xsl:if></xsl:element><xsl:text>
</xsl:text>
+
+</xsl:template>
+
+<!-- ========
+ <assert>
+ ======== -->
+<xsl:template match="assert" mode="do-assert">
+<xsl:param name="indent"/>
+
+<xsl:value-of select="$indent"/><xsl:element name="assert">
+<xsl:attribute name="check"><xsl:value-of select="@check"/></xsl:attribute>
+<xsl:if test="@value"><xsl:attribute name="value"><xsl:value-of select="@value"/></xsl:attribute></xsl:if>
+<xsl:if test="@rule"><xsl:attribute name="rule"><xsl:value-of select="@rule"/></xsl:attribute></xsl:if>
+
+<xsl:apply-templates select="doc" mode="do-doc">
+<xsl:with-param name="indent" select="concat($indent, ' ')"/>
+</xsl:apply-templates>
+
+</xsl:element><xsl:text>
</xsl:text>
+
+</xsl:template>
+
+<!-- ========
+ <rule>
+ ======== -->
+<xsl:template match="rule" mode="do-rule">
+<xsl:param name="indent"/>
+<xsl:param name="label"/>
+
+<xsl:value-of select="$indent"/><xsl:element name="rule">
+<xsl:attribute name="name">rule_<xsl:value-of select="$label"/>_<xsl:number format="01"/></xsl:attribute>
+
+<!-- If there is content, place in child <doc> element -->
+
+<xsl:if test="string-length(.) > 0">
+<xsl:text>
</xsl:text>
+<xsl:value-of select="$indent"/><xsl:text> </xsl:text><xsl:element name="doc"><xsl:text>
</xsl:text>
+<xsl:value-of select="$indent"/><xsl:text> </xsl:text><xsl:value-of select="normalize-space(.)"/><xsl:text>
</xsl:text>
+<xsl:value-of select="$indent"/><xsl:text> </xsl:text></xsl:element><xsl:text>
</xsl:text>
+<xsl:value-of select="$indent"/>
+</xsl:if>
+
+</xsl:element><xsl:text>
</xsl:text>
+
+</xsl:template>
+
+<!-- =========
+ <chassis>
+ ========= -->
+<xsl:template match="chassis" mode="do-chassis">
+<xsl:param name="indent"/>
+
+<xsl:value-of select="$indent"/><xsl:element name="chassis">
+<xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
+<xsl:attribute name="implement"><xsl:value-of select="@implement"/></xsl:attribute>
+</xsl:element><xsl:text>
</xsl:text>
+
+</xsl:template>
+
+<!-- ==========
+ <response>
+ ========== -->
+<xsl:template match="response" mode="do-response">
+<xsl:param name="indent"/>
+
+<xsl:value-of select="$indent"/><xsl:element name="response">
+<xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
+</xsl:element><xsl:text>
</xsl:text>
+
+</xsl:template>
+
+<!-- =====
+ <doc>
+ ===== -->
+<xsl:template match="doc" mode="do-doc">
+<xsl:param name="indent"/>
+<xsl:param name="label"/>
+
+<!-- Handle cases of <doc name="rule>...</doc>: turn them into <rule><doc>...</doc></rule> -->
+<xsl:if test="@name = 'rule'">
+<xsl:value-of select="$indent"/><xsl:element name="rule">
+<xsl:if test="@test"><xsl:attribute name="name"><xsl:value-of select="@test"/></xsl:attribute></xsl:if>
+<xsl:if test="not(@test)"><xsl:attribute name="name">doc_rule_<xsl:value-of select="$label"/>_<xsl:number format="01"/></xsl:attribute></xsl:if>
+<xsl:text>
</xsl:text>
+<xsl:value-of select="concat($indent, ' ')"/><xsl:element name="doc"><xsl:text>
</xsl:text>
+<xsl:value-of select="concat($indent, ' ')"/><xsl:text> </xsl:text><xsl:value-of select="normalize-space(.)"/><xsl:text>
</xsl:text>
+<xsl:value-of select="concat($indent, ' ')"/></xsl:element><xsl:text>
</xsl:text>
+<xsl:value-of select="$indent"/></xsl:element><xsl:text>
</xsl:text>
+</xsl:if>
+
+<!-- Normal <doc>...</doc> elements -->
+<xsl:if test="not(@name = 'rule')">
+<xsl:value-of select="$indent"/><xsl:element name="doc">
+<xsl:if test="@name = 'grammar'">
+<xsl:attribute name="type">grammar</xsl:attribute>
+<xsl:value-of select="$indent"/><xsl:text> </xsl:text><xsl:value-of select="."/>
+</xsl:if>
+<xsl:if test="not(@name = 'grammar')">
+<xsl:text>
</xsl:text>
+<xsl:value-of select="$indent"/><xsl:text> </xsl:text><xsl:value-of select="normalize-space(.)"/><xsl:text>
</xsl:text>
+</xsl:if>
+<xsl:value-of select="$indent"/></xsl:element><xsl:text>
</xsl:text>
+</xsl:if>
+
+</xsl:template>
+
+</xsl:stylesheet>
Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/convert_0.81.xsl
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/cpp.xsl
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/cpp.xsl?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/cpp.xsl (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/cpp.xsl Tue Sep 19 15:06:50 2006
@@ -0,0 +1,318 @@
+<?xml version='1.0'?>
+<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:amqp="http://amqp.org">
+
+<!-- this class contains the templates for generating C++ source code for a given framing model -->
+
+<xsl:import href="utils.xsl"/>
+<xsl:output method="text" indent="yes" name="textFormat"/>
+
+<xsl:template match="/">
+ <xsl:apply-templates mode="generate-multi" select="frames"/>
+ <xsl:apply-templates mode="method-list-header" select="frames"/>
+ <xsl:apply-templates mode="method-list-source" select="frames"/>
+ <xsl:apply-templates mode="method-interface" select="frames"/>
+</xsl:template>
+
+<!-- processes all frames outputting the classes in a single stream -->
+<xsl:template match="frames" mode="generate-single">
+ <xsl:result-document href="amqp_methods.h" format="textFormat">
+#include "amqp_framing.h"
+ <xsl:for-each select="frame">
+ <xsl:call-template name="generate-class">
+ <xsl:with-param name="f" select="."/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:result-document>
+</xsl:template>
+
+<!-- generates seperate file for each class/frame -->
+<xsl:template match="frame" mode="generate-multi">
+ <xsl:variable name="uri" select="concat(@name, '.h')"/>
+ <xsl:result-document href="{$uri}" format="textFormat">
+#include "amqp_types.h"
+#include "AMQP_ServerOperations.h"
+#include "AMQMethodBody.h"
+#include "Buffer.h"
+#include "FieldTable.h"
+
+#ifndef _<xsl:value-of select="@name"/>_
+#define _<xsl:value-of select="@name"/>_
+
+namespace qpid {
+namespace framing {
+
+ <xsl:call-template name="generate-class">
+ <xsl:with-param name="f" select="."/>
+ </xsl:call-template>
+}
+}
+
+#endif
+
+</xsl:result-document>
+</xsl:template>
+
+
+<!-- main class generation template -->
+<xsl:template name="generate-class">
+ <xsl:param name="f"/>
+/**
+ * This class is autogenerated, do not modify. [From <xsl:value-of select="$f/parent::frames/@protocol"/>]
+ */
+class <xsl:value-of select="$f/@name"/> : virtual public AMQMethodBody
+{
+ <xsl:for-each select="$f/field">
+ <xsl:value-of select="@cpp-type"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="@name"/>;
+ </xsl:for-each>
+
+public:
+ typedef std::tr1::shared_ptr<<xsl:value-of select="$f/@name"/>> shared_ptr;
+
+ virtual ~<xsl:value-of select="$f/@name"/>() {}
+
+ <xsl:for-each select="$f/field">
+ inline <xsl:value-of select="concat(@cpp-arg-type, ' get', amqp:upper-first(@name), '() { return ', @name)"/>; }
+ </xsl:for-each>
+
+
+ inline void print(std::ostream& out) const{
+ out << "<xsl:value-of select="$f/@declaration_name"/>"
+ <xsl:for-each select="$f/field">
+ <xsl:text> << ", </xsl:text>
+ <xsl:value-of select="@name"/>="<<
+ <xsl:value-of select="@name"/>
+ </xsl:for-each>
+ ;
+ }
+
+ inline u_int16_t amqpClassId() const {
+ return <xsl:value-of select="$f/@class-id"/>;
+ }
+
+ inline u_int16_t amqpMethodId() const {
+ return <xsl:value-of select="$f/@method-id"/>;
+ }
+
+ inline u_int32_t bodySize() const {
+ <xsl:choose>
+ <xsl:when test="$f/field">
+ return
+ <xsl:for-each select="$f/field">
+ <xsl:if test="position() != 1">+
+ </xsl:if>
+ <xsl:value-of select="amqp:field-length(.)"/>
+ </xsl:for-each>
+ ;
+ </xsl:when>
+ <xsl:otherwise>return 0;</xsl:otherwise>
+ </xsl:choose>
+ }
+
+ <xsl:if test="@server='true'">
+ inline void invoke(AMQP_ServerOperations& target, u_int16_t channel) {
+ <xsl:if test="field">
+ <xsl:value-of select="concat('target.get', amqp:upper-first(parent::class/@name), 'Handler()->', @invocation_name, '(channel, ')"/>
+ <xsl:value-of select="$f/field/@name" separator=", "/>);
+ </xsl:if>
+ <xsl:if test="not(field)">
+ <xsl:value-of select="concat('target.get', amqp:upper-first(parent::class/@name), 'Handler()->', @invocation_name, '(channel)')"/>;
+ </xsl:if>
+ }
+ </xsl:if>
+
+ inline void encodeContent(Buffer& buffer) const
+ {
+ <xsl:if test="$f/field[@type='bit']">
+ u_int8_t flags = 0;
+ <xsl:for-each select="$f/field[@type='bit']">
+ <xsl:value-of select="concat('flags |= ', @name,' << (', @boolean-index, ' - 1)')"/>;
+ </xsl:for-each>
+ </xsl:if>
+ <xsl:for-each select="$f/field">
+ <xsl:if test="@type != 'bit'">
+ <xsl:value-of select="amqp:encoder(.)"/>;
+ </xsl:if>
+ <xsl:if test="@type = 'bit' and @boolean-index = 1">
+ <xsl:text>buffer.putOctet(flags)</xsl:text>;
+ </xsl:if>
+ </xsl:for-each>
+ }
+
+ inline void decodeContent(Buffer& buffer)
+ {
+ <xsl:if test="$f/field[@type='bit']">
+ u_int8_t maxbit = <xsl:value-of select="$f/@bit-field-count"/>;
+ </xsl:if>
+ <xsl:for-each select="$f/field">
+ <xsl:choose>
+ <xsl:when test="@type = 'bit' and @boolean-index = 1">
+ <xsl:text>u_int8_t flags = buffer.getOctet()</xsl:text>;
+ <xsl:value-of select="amqp:decoder(.)"/>;
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="amqp:decoder(.)"/>;
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ }
+
+ <xsl:if test="$f/field">
+ <!-- only generate overloaded constructor if there are fields in this method -->
+ inline <xsl:value-of select="$f/@name"/>(<xsl:value-of select="$f/field/concat(@cpp-arg-type, ' _', @name)" separator=", "/>) : <xsl:value-of select="$f/field/concat(@name, '(_', @name, ')')" separator=", "/>
+ {
+ }
+ </xsl:if>
+
+ inline <xsl:value-of select="$f/@name"/>()
+ {
+ }
+};
+
+</xsl:template>
+
+<xsl:template match="frames" mode="method-list-header">
+<xsl:result-document href="amqp_methods.h" format="textFormat">
+/**
+ * This file is autogenerated, do not modify.
+ */
+
+#ifndef AMQ_METHODS_H
+#define AMQ_METHODS_H
+
+ <xsl:for-each select="class/frame">
+#include "<xsl:value-of select="@name"/>.h"
+ </xsl:for-each>
+
+namespace qpid {
+namespace framing {
+
+ <xsl:for-each select="class/frame">
+const <xsl:value-of select="concat(@name, ' ', @declaration_name)"/>;
+ </xsl:for-each>
+
+AMQMethodBody* createAMQMethodBody(u_int16_t classId, u_int16_t methodId);
+
+}
+}
+
+#endif
+</xsl:result-document>
+</xsl:template>
+
+<xsl:template match="frames" mode="method-list-source">
+ <xsl:result-document href="amqp_methods.cpp" format="textFormat">
+#include "amqp_methods.h"
+#include "QpidError.h"
+
+namespace qpid {
+namespace framing {
+/**
+ * This method is autogenerated, do not modify.
+ */
+AMQMethodBody* createAMQMethodBody(u_int16_t classId, u_int16_t methodId){
+ switch(classId * 1000 + methodId)
+ {
+ <xsl:for-each select="class/frame">
+ <xsl:text>case </xsl:text>
+ <xsl:value-of select="@class-id"/>
+ <xsl:text> * 1000 + </xsl:text>
+ <xsl:value-of select="@method-id"/>
+ <xsl:text>: return new </xsl:text>
+ <xsl:value-of select="@name"/>();
+ </xsl:for-each>
+ }
+ THROW_QPID_ERROR(FRAMING_ERROR, "Unknown method");
+}
+
+}
+}
+</xsl:result-document>
+</xsl:template>
+
+<xsl:template match="frames" mode="generate-interface">
+ <xsl:result-document href="AMQPServer.h" format="textFormat">
+#include "amqp_types.h"
+#include "FieldTable.h"
+
+#ifndef _AMQPServer_
+#define _AMQPServer_
+
+namespace qpid {
+namespace framing {
+
+class AMQPServer
+{
+ public:
+
+ <xsl:for-each select="class">
+ class <xsl:value-of select="concat(amqp:upper-first(@name), 'Handler')"/>{
+ public:
+ <xsl:for-each select="frame[@server='true']">
+ <xsl:if test="field">
+ virtual void <xsl:value-of select="@invocation_name"/>(u_int16_t channel, <xsl:value-of select="field/concat(@cpp-arg-type, ' ', @name)" separator=", "/>) = 0;
+ </xsl:if>
+ <xsl:if test="not(field)">
+ virtual void <xsl:value-of select="@invocation_name"/>(u_int16_t channel) = 0;
+ </xsl:if>
+ </xsl:for-each>
+ virtual ~<xsl:value-of select="concat(amqp:upper-first(@name), 'Handler')"/>(){}
+ };
+
+ virtual <xsl:value-of select="concat(amqp:upper-first(@name), 'Handler* get', amqp:upper-first(@name), 'Handler')"/>() = 0;
+
+ </xsl:for-each>
+ virtual ~AMQPServer(){}
+};
+
+}
+}
+
+#endif
+</xsl:result-document>
+
+ <xsl:result-document href="AMQPClient.h" format="textFormat">
+#include "amqp_types.h"
+#include "FieldTable.h"
+
+#ifndef _AMQPClient_
+#define _AMQPClient_
+
+namespace qpid {
+namespace framing {
+
+class AMQPClient
+{
+ public:
+
+ <xsl:for-each select="class">
+ class <xsl:value-of select="concat(amqp:upper-first(@name), 'Handler')"/>{
+ public:
+ <xsl:for-each select="frame[@client='true']">
+ <xsl:if test="field">
+ virtual void <xsl:value-of select="@invocation_name"/>(u_int16_t channel, <xsl:value-of select="field/concat(@cpp-arg-type, ' ', @name)" separator=", "/>) = 0;
+ </xsl:if>
+ <xsl:if test="not(field)">
+ virtual void <xsl:value-of select="@invocation_name"/>(u_int16_t channel) = 0;
+ </xsl:if>
+ </xsl:for-each>
+ virtual ~<xsl:value-of select="concat(amqp:upper-first(@name), 'Handler')"/>(){}
+ };
+
+ virtual <xsl:value-of select="concat(amqp:upper-first(@name), 'Handler* get', amqp:upper-first(@name), 'Handler')"/>() = 0;
+
+ </xsl:for-each>
+
+ virtual ~AMQPClient(){}
+};
+
+}
+}
+
+#endif
+</xsl:result-document>
+
+</xsl:template>
+
+</xsl:stylesheet>
Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/cpp.xsl
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/framing.xsl
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/framing.xsl?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/framing.xsl (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/framing.xsl Tue Sep 19 15:06:50 2006
@@ -0,0 +1,49 @@
+<?xml version='1.0'?>
+<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:amqp="http://amqp.org">
+
+<xsl:import href="prepare1.xsl"/>
+<xsl:import href="prepare2.xsl"/>
+<xsl:import href="prepare3.xsl"/>
+<xsl:import href="cpp.xsl"/>
+
+<xsl:output indent="yes"/>
+<xsl:output method="text" indent="yes" name="textFormat"/>
+
+<xsl:template match="/">
+ <xsl:variable name="prepare1">
+ <xsl:apply-templates mode="prepare1" select="."/>
+ </xsl:variable>
+
+ <xsl:variable name="prepare2">
+ <xsl:apply-templates mode="prepare2" select="$prepare1"/>
+ </xsl:variable>
+
+ <xsl:variable name="model">
+ <xsl:apply-templates mode="prepare3" select="$prepare2"/>
+ </xsl:variable>
+
+ <xsl:apply-templates mode="generate-multi" select="$model"/>
+ <xsl:apply-templates mode="method-list-header" select="$model"/>
+ <xsl:apply-templates mode="method-list-source" select="$model"/>
+
+ <!-- these interfaces are now generated by the new scripts from kim -->
+ <!-- e.g. those of the form amqp-server/client-*.xsl -->
+ <!-- xsl:apply-templates mode="generate-interface" select="$model"/ -->
+
+ <!-- dump out the intermediary files for debugging -->
+ <!--
+ <xsl:result-document href="prepare1.out">
+ <xsl:copy-of select="$prepare1"/>
+ </xsl:result-document>
+
+ <xsl:result-document href="prepare2.out">
+ <xsl:copy-of select="$prepare2"/>
+ </xsl:result-document>
+
+ <xsl:result-document href="model.out">
+ <xsl:copy-of select="$model"/>
+ </xsl:result-document>
+ -->
+</xsl:template>
+
+</xsl:stylesheet>
Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/framing.xsl
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/prepare1.xsl
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/prepare1.xsl?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/prepare1.xsl (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/prepare1.xsl Tue Sep 19 15:06:50 2006
@@ -0,0 +1,104 @@
+<?xml version='1.0'?>
+<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:amqp="http://amqp.org">
+
+<xsl:import href="utils.xsl"/>
+
+<xsl:output indent="yes"/>
+<xsl:param name="asl_base"/>
+
+<!-- pre-process, phase 1 -->
+
+<xsl:template match="/">
+ <xsl:apply-templates select="protocol" mode="prepare1"/>
+</xsl:template>
+
+<xsl:template match="amqp" mode="prepare1">
+ <frames>
+ <xsl:attribute name="protocol">
+ <xsl:value-of select="@comment"/>
+ <xsl:text> (</xsl:text>
+ <xsl:text>major=</xsl:text><xsl:value-of select="@major"/>
+ <xsl:text>, minor=</xsl:text><xsl:value-of select="@minor"/>
+ <xsl:text>)</xsl:text>
+ </xsl:attribute>
+ <xsl:apply-templates mode="prepare1" select="inherit"/>
+ <xsl:apply-templates mode="prepare1" select="include"/>
+ <xsl:apply-templates mode="prepare1" select="domain"/>
+ <xsl:apply-templates mode="prepare1" select="class"/>
+ </frames>
+</xsl:template>
+
+<xsl:template match="include" mode="prepare1">
+ <xsl:if test="@filename != 'asl_constants.asl'">
+ <!-- skip asl_constants.asl, we don't need it and it is not well formed so causes error warnings -->
+ <xsl:apply-templates select="document(@filename)" mode="prepare1"/>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="inherit" mode="prepare1">
+ <xsl:variable name="ibase" select="concat('file:///', $asl_base, '/', @name, '.asl')"/>
+ <xsl:choose>
+ <xsl:when test="document($ibase)">
+ <xsl:apply-templates select="document($ibase)" mode="prepare1"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ Could not inherit from <xsl:value-of select="$ibase"/>; file not found.
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="class[@index]" mode="prepare1">
+<xsl:if test="not(@name = 'test')">
+ <class>
+ <xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
+ <xsl:apply-templates select="method" mode="prepare1"/>
+ </class>
+</xsl:if>
+</xsl:template>
+
+<xsl:template match="method" mode="prepare1">
+ <xsl:if test="parent::class[@index]"><!-- there is a template class that has no index, which we want to skip -->
+ <frame>
+ <xsl:attribute name="name"><xsl:value-of select="amqp:class-name(parent::class/@name, @name)"/></xsl:attribute>
+ <xsl:attribute name="class-id"><xsl:value-of select="parent::class/@index"/></xsl:attribute>
+ <xsl:if test="@index">
+ <xsl:attribute name="method-id"><xsl:value-of select="@index"/></xsl:attribute>
+ </xsl:if>
+ <xsl:if test="not(@index)">
+ <xsl:attribute name="method-id"><xsl:number count="method"/></xsl:attribute>
+ </xsl:if>
+ <xsl:attribute name="invocation_name">
+ <xsl:value-of select="amqp:keyword-check(amqp:field-name(@name))"/>
+ </xsl:attribute>
+ <xsl:attribute name="declaration_name">
+ <xsl:value-of select="amqp:method-name(parent::class/@name, @name)"/>
+ </xsl:attribute>
+ <xsl:if test="chassis[@name='client']">
+ <xsl:attribute name="client">true</xsl:attribute>
+ </xsl:if>
+ <xsl:if test="chassis[@name='server']">
+ <xsl:attribute name="server">true</xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates select="field" mode="prepare1"/>
+ </frame>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="domain" mode="prepare1">
+ <domain>
+ <name><xsl:value-of select="@name"/></name>
+ <type><xsl:value-of select="@type"/></type>
+ </domain>
+</xsl:template>
+
+<xsl:template match="field" mode="prepare1">
+ <field>
+ <xsl:copy-of select="@name"/>
+ <xsl:copy-of select="@type"/>
+ <xsl:copy-of select="@domain"/>
+ </field>
+</xsl:template>
+
+</xsl:stylesheet>
Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/prepare1.xsl
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/prepare2.xsl
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/prepare2.xsl?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/prepare2.xsl (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/prepare2.xsl Tue Sep 19 15:06:50 2006
@@ -0,0 +1,54 @@
+<?xml version='1.0'?>
+<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:amqp="http://amqp.org">
+
+<xsl:import href="utils.xsl"/>
+
+<xsl:output indent="yes"/>
+
+<!-- pre-process, phase 2 -->
+
+<xsl:key name="domain-lookup" match="domain" use="name"/>
+
+<xsl:template match="/">
+ <xsl:apply-templates mode="prepare2" select="frames"/>
+</xsl:template>
+
+<xsl:template match="field[@domain]" mode="prepare2">
+ <field>
+ <xsl:variable name="t1" select="key('domain-lookup', @domain)/type"/>
+ <xsl:attribute name="name"><xsl:value-of select="amqp:field-name(@name)"/></xsl:attribute>
+ <xsl:attribute name="type"><xsl:value-of select="$t1"/></xsl:attribute>
+ </field>
+</xsl:template>
+
+<xsl:template match="field[@type]" mode="prepare2">
+ <field>
+ <xsl:attribute name="name"><xsl:value-of select="amqp:field-name(@name)"/></xsl:attribute>
+ <xsl:attribute name="type"><xsl:value-of select="@type"/></xsl:attribute>
+ </field>
+</xsl:template>
+
+<xsl:template match="frames" mode="prepare2">
+ <frames>
+ <xsl:copy-of select="@protocol"/>
+ <xsl:apply-templates mode="prepare2"/>
+ </frames>
+</xsl:template>
+
+<xsl:template match="class" mode="prepare2">
+ <class>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="prepare2"/>
+ </class>
+</xsl:template>
+
+<xsl:template match="frame" mode="prepare2">
+ <xsl:element name="{name()}">
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="prepare2" select="field"/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="domain" mode="prepare2"></xsl:template>
+
+</xsl:stylesheet>
Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/prepare2.xsl
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/prepare3.xsl
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/prepare3.xsl?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/prepare3.xsl (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/prepare3.xsl Tue Sep 19 15:06:50 2006
@@ -0,0 +1,54 @@
+<?xml version='1.0'?>
+<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:amqp="http://amqp.org">
+
+<xsl:import href="utils.xsl"/>
+
+<xsl:output indent="yes"/>
+
+<!-- final preparation of the model -->
+
+<xsl:template match="/">
+ <xsl:apply-templates mode="prepare3"/>
+</xsl:template>
+
+<xsl:template match="frames" mode="prepare3">
+ <frames>
+ <xsl:copy-of select="@protocol"/>
+ <xsl:apply-templates mode="prepare3"/>
+ </frames>
+</xsl:template>
+
+<xsl:template match="class" mode="prepare3">
+ <class>
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates mode="prepare3"/>
+ </class>
+</xsl:template>
+
+<xsl:template match="frame" mode="prepare3">
+ <xsl:element name="frame">
+ <xsl:copy-of select="@*"/>
+ <xsl:if test="field[@type='bit']">
+ <xsl:attribute name="has-bit-field">true</xsl:attribute>
+ <xsl:attribute name="bit-field-count"><xsl:value-of select="count(field[@type='bit'])"/></xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates mode="prepare3"/>
+ </xsl:element>
+</xsl:template>
+
+
+<xsl:template match="field" mode="prepare3">
+ <field>
+ <xsl:attribute name="type"><xsl:value-of select="@type"/></xsl:attribute>
+ <!-- ensure the field name is processed to be a valid java name -->
+ <xsl:attribute name="name"><xsl:value-of select="amqp:field-name(@name)"/></xsl:attribute>
+ <!-- add some attributes to make code generation easier -->
+ <xsl:attribute name="cpp-type"><xsl:value-of select="amqp:cpp-type(@type)"/></xsl:attribute>
+ <xsl:attribute name="cpp-arg-type"><xsl:value-of select="amqp:cpp-arg-type(@type)"/></xsl:attribute>
+ <xsl:if test="@type='bit'">
+ <xsl:attribute name="boolean-index"><xsl:number count="field[@type='bit']"/></xsl:attribute>
+ </xsl:if>
+ </field>
+</xsl:template>
+
+</xsl:stylesheet>
Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/prepare3.xsl
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/registry.xsl
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/registry.xsl?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/registry.xsl (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/registry.xsl Tue Sep 19 15:06:50 2006
@@ -0,0 +1,12 @@
+<?xml version='1.0'?>
+<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:amqp="http://amqp.org">
+
+<xsl:import href="java.xsl"/>
+
+<xsl:output method="text" indent="yes" name="textFormat"/>
+
+<xsl:template match="/">
+ <xsl:apply-templates mode="generate-registry" select="registries"/>
+</xsl:template>
+
+</xsl:stylesheet>
Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/registry.xsl
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/utils.xsl
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/utils.xsl?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/utils.xsl (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/utils.xsl Tue Sep 19 15:06:50 2006
@@ -0,0 +1,194 @@
+<?xml version='1.0'?>
+<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:amqp="http://amqp.org">
+
+<!-- This file contains functions that are used in the generation of the java classes for framing -->
+
+<!-- retrieve the java type of a given amq type -->
+<xsl:function name="amqp:cpp-type">
+ <xsl:param name="t"/>
+ <xsl:choose>
+ <xsl:when test="$t='octet'">u_int8_t</xsl:when>
+ <xsl:when test="$t='short'">u_int16_t</xsl:when>
+ <xsl:when test="$t='shortstr'">string</xsl:when>
+ <xsl:when test="$t='longstr'">string</xsl:when>
+ <xsl:when test="$t='bit'">bool</xsl:when>
+ <xsl:when test="$t='long'">u_int32_t</xsl:when>
+ <xsl:when test="$t='longlong'">u_int64_t</xsl:when>
+ <xsl:when test="$t='table'">FieldTable</xsl:when>
+ <xsl:otherwise>Object /*WARNING: undefined type*/</xsl:otherwise>
+ </xsl:choose>
+</xsl:function>
+<xsl:function name="amqp:cpp-arg-type">
+ <xsl:param name="t"/>
+ <xsl:choose>
+ <xsl:when test="$t='octet'">u_int8_t</xsl:when>
+ <xsl:when test="$t='short'">u_int16_t</xsl:when>
+ <xsl:when test="$t='shortstr'">string&</xsl:when>
+ <xsl:when test="$t='longstr'">string&</xsl:when>
+ <xsl:when test="$t='bit'">bool</xsl:when>
+ <xsl:when test="$t='long'">u_int32_t</xsl:when>
+ <xsl:when test="$t='longlong'">u_int64_t</xsl:when>
+ <xsl:when test="$t='table'">FieldTable&</xsl:when>
+ <xsl:otherwise>Object /*WARNING: undefined type*/</xsl:otherwise>
+ </xsl:choose>
+</xsl:function>
+
+<!-- retrieve the code to get the field size of a given amq type -->
+<xsl:function name="amqp:field-length">
+ <xsl:param name="f"/>
+ <xsl:choose>
+ <xsl:when test="$f/@type='bit' and $f/@boolean-index=1">
+ <xsl:value-of select="concat('1 /*', $f/@name, '*/')"/>
+ </xsl:when>
+ <xsl:when test="$f/@type='bit' and $f/@boolean-index > 1">
+ <xsl:value-of select="concat('0 /*', $f/@name, '*/')"/>
+ </xsl:when>
+ <xsl:when test="$f/@type='char'">
+ <xsl:value-of select="concat('1 /*', $f/@name, '*/')"/>
+ </xsl:when>
+ <xsl:when test="$f/@type='octet'">
+ <xsl:value-of select="concat('1 /*', $f/@name, '*/')"/>
+ </xsl:when>
+ <xsl:when test="$f/@type='short'">
+ <xsl:value-of select="concat('2 /*', $f/@name, '*/')"/>
+ </xsl:when>
+ <xsl:when test="$f/@type='long'">
+ <xsl:value-of select="concat('4 /*', $f/@name, '*/')"/>
+ </xsl:when>
+ <xsl:when test="$f/@type='longlong'">
+ <xsl:value-of select="concat('8 /*', $f/@name, '*/')"/>
+ </xsl:when>
+ <xsl:when test="$f/@type='shortstr'">
+ <xsl:value-of select="concat('1 + ', $f/@name, '.length()')"/>
+ </xsl:when>
+ <xsl:when test="$f/@type='longstr'">
+ <xsl:value-of select="concat('4 + ', $f/@name, '.length()')"/>
+ </xsl:when>
+ <xsl:when test="$f/@type='table'">
+ <xsl:value-of select="concat($f/@name, '.size()')"/>
+ </xsl:when>
+ <xsl:otherwise><xsl:text>/* WARNING: COULD NOT DETERMINE FIELD SIZE */</xsl:text></xsl:otherwise>
+ </xsl:choose>
+</xsl:function>
+
+<!-- retrieve the code to encode a field of a given amq type -->
+<!-- Note:
+ This method will not provide an encoder for a bit field.
+ Bit fields should be encoded together separately. -->
+
+<xsl:function name="amqp:encoder">
+ <xsl:param name="f"/>
+ <xsl:choose>
+ <xsl:when test="$f/@type='octet'">
+ <xsl:value-of select="concat('buffer.putOctet(', $f/@name, ')')"/>
+ </xsl:when>
+ <xsl:when test="$f/@type='short'">
+ <xsl:value-of select="concat('buffer.putShort(', $f/@name, ')')"/>
+ </xsl:when>
+ <xsl:when test="$f/@type='long'">
+ <xsl:value-of select="concat('buffer.putLong(', $f/@name, ')')"/>
+ </xsl:when>
+ <xsl:when test="$f/@type='longlong'">
+ <xsl:value-of select="concat('buffer.putLongLong(', $f/@name, ')')"/>
+ </xsl:when>
+ <xsl:when test="$f/@type='shortstr'">
+ <xsl:value-of select="concat('buffer.putShortString(', $f/@name, ')')"/>
+ </xsl:when>
+ <xsl:when test="$f/@type='longstr'">
+ <xsl:value-of select="concat('buffer.putLongString(', $f/@name, ')')"/>
+ </xsl:when>
+ <xsl:when test="$f/@type='table'">
+ <xsl:value-of select="concat('buffer.putFieldTable(', $f/@name, ')')"/>
+ </xsl:when>
+ <xsl:otherwise><xsl:text>/* WARNING: COULD NOT DETERMINE ENCODER */</xsl:text></xsl:otherwise>
+ </xsl:choose>
+</xsl:function>
+
+<!-- retrieve the code to decode a field of a given amq type -->
+<xsl:function name="amqp:decoder">
+ <xsl:param name="f"/>
+ <xsl:choose>
+ <xsl:when test="$f/@type='bit'">
+ <xsl:value-of select="concat($f/@name, ' = (1 << (', $f/@boolean-index, ' - 1)) & flags;')"/>
+ </xsl:when>
+ <xsl:when test="$f/@type='octet'">
+ <xsl:value-of select="concat($f/@name, ' = buffer.getOctet()')"/>
+ </xsl:when>
+ <xsl:when test="$f/@type='short'">
+ <xsl:value-of select="concat($f/@name, ' = buffer.getShort()')"/>
+ </xsl:when>
+ <xsl:when test="$f/@type='long'">
+ <xsl:value-of select="concat($f/@name, ' = buffer.getLong()')"/>
+ </xsl:when>
+ <xsl:when test="$f/@type='longlong'">
+ <xsl:value-of select="concat($f/@name, ' = buffer.getLongLong()')"/>
+ </xsl:when>
+ <xsl:when test="$f/@type='shortstr'">
+ <xsl:value-of select="concat('buffer.getShortString(', $f/@name), ')'"/>
+ </xsl:when>
+ <xsl:when test="$f/@type='longstr'">
+ <xsl:value-of select="concat('buffer.getLongString(', $f/@name), ')'"/>
+ </xsl:when>
+ <xsl:when test="$f/@type='table'">
+ <xsl:value-of select="concat('buffer.getFieldTable(', $f/@name, ')')"/>
+ </xsl:when>
+ <xsl:otherwise><xsl:text>/* WARNING: COULD NOT DETERMINE DECODER */</xsl:text></xsl:otherwise>
+ </xsl:choose>
+</xsl:function>
+
+<!-- create the class name for a frame, based on class and method (passed in) -->
+<xsl:function name="amqp:class-name">
+ <xsl:param name="class"/>
+ <xsl:param name="method"/>
+ <xsl:value-of select="concat(amqp:upper-first($class),amqp:upper-first(amqp:field-name($method)), 'Body')"/>
+</xsl:function>
+
+<!-- create the class name for a frame, based on class and method (passed in) -->
+<xsl:function name="amqp:method-name">
+ <xsl:param name="class"/>
+ <xsl:param name="method"/>
+ <xsl:value-of select="concat(translate($class, '- ', '__'), '_', translate($method, '- ', '__'))"/>
+</xsl:function>
+
+<!-- get a valid field name, processing spaces and '-'s where appropriate -->
+<xsl:function name="amqp:field-name">
+ <xsl:param name="name"/>
+ <xsl:choose>
+ <xsl:when test="contains($name, ' ')">
+ <xsl:value-of select="concat(substring-before($name, ' '), amqp:upper-first(substring-after($name, ' ')))"/>
+ </xsl:when>
+ <xsl:when test="contains($name, '-')">
+ <xsl:value-of select="concat(substring-before($name, '-'), amqp:upper-first(substring-after($name, '-')))"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$name"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:function>
+
+<!-- convert the first character of the input to upper-case -->
+<xsl:function name="amqp:upper-first">
+ <xsl:param name="in"/>
+ <xsl:value-of select="concat(upper-case(substring($in, 1, 1)), substring($in, 2))"/>
+</xsl:function>
+
+
+<xsl:function name="amqp:keyword-check">
+ <xsl:param name="in"/>
+ <xsl:choose>
+ <xsl:when test="contains($in, 'delete')">
+ <xsl:value-of select="concat($in, '_')"/>
+ </xsl:when>
+ <xsl:when test="contains($in, 'string')">
+ <xsl:value-of select="concat($in, '_')"/>
+ </xsl:when>
+ <xsl:when test="contains($in, 'return')">
+ <xsl:value-of select="concat($in, '_')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$in"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:function>
+
+</xsl:stylesheet>
Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/generated/stylesheets/utils.xsl
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQBody.h
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQBody.h?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQBody.h (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQBody.h Tue Sep 19 15:06:50 2006
@@ -0,0 +1,46 @@
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed 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.
+ *
+ */
+#include "memory.h"
+#include "amqp_types.h"
+#include "Buffer.h"
+
+#ifndef _AMQBody_
+#define _AMQBody_
+
+namespace qpid {
+ namespace framing {
+
+ class AMQBody
+ {
+ public:
+ typedef std::tr1::shared_ptr<AMQBody> shared_ptr;
+
+ virtual u_int32_t size() const = 0;
+ virtual u_int8_t type() const = 0;
+ virtual void encode(Buffer& buffer) const = 0;
+ virtual void decode(Buffer& buffer, u_int32_t size) = 0;
+ inline virtual ~AMQBody(){}
+ };
+
+ enum body_types {METHOD_BODY = 1, HEADER_BODY = 2, CONTENT_BODY = 3, HEARTBEAT_BODY = 8};
+
+ }
+}
+
+
+#endif
Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQBody.h
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQContentBody.h
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQContentBody.h?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQContentBody.h (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQContentBody.h Tue Sep 19 15:06:50 2006
@@ -0,0 +1,49 @@
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed 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.
+ *
+ */
+#include "amqp_types.h"
+#include "AMQBody.h"
+#include "Buffer.h"
+
+#ifndef _AMQContentBody_
+#define _AMQContentBody_
+
+namespace qpid {
+namespace framing {
+
+class AMQContentBody : virtual public AMQBody
+{
+ string data;
+
+public:
+ typedef std::tr1::shared_ptr<AMQContentBody> shared_ptr;
+
+ AMQContentBody();
+ AMQContentBody(string& data);
+ inline virtual ~AMQContentBody(){}
+ inline u_int8_t type() const { return CONTENT_BODY; };
+ inline string& getData(){ return data; }
+ u_int32_t size() const;
+ void encode(Buffer& buffer) const;
+ void decode(Buffer& buffer, u_int32_t size);
+};
+
+}
+}
+
+
+#endif
Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQContentBody.h
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQDataBlock.h
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQDataBlock.h?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQDataBlock.h (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQDataBlock.h Tue Sep 19 15:06:50 2006
@@ -0,0 +1,39 @@
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed 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.
+ *
+ */
+#include "Buffer.h"
+
+#ifndef _AMQDataBlock_
+#define _AMQDataBlock_
+
+namespace qpid {
+namespace framing {
+
+class AMQDataBlock
+{
+public:
+ virtual ~AMQDataBlock() {}
+ virtual void encode(Buffer& buffer) = 0;
+ virtual bool decode(Buffer& buffer) = 0;
+ virtual u_int32_t size() const = 0;
+};
+
+}
+}
+
+
+#endif
Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQDataBlock.h
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQFrame.h
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQFrame.h?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQFrame.h (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQFrame.h Tue Sep 19 15:06:50 2006
@@ -0,0 +1,61 @@
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed 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.
+ *
+ */
+#include "amqp_methods.h"
+#include "amqp_types.h"
+#include "AMQBody.h"
+#include "AMQDataBlock.h"
+#include "AMQMethodBody.h"
+#include "AMQHeaderBody.h"
+#include "AMQContentBody.h"
+#include "AMQHeartbeatBody.h"
+#include "Buffer.h"
+
+#ifndef _AMQFrame_
+#define _AMQFrame_
+
+namespace qpid {
+ namespace framing {
+
+ class AMQFrame : virtual public AMQDataBlock
+ {
+ u_int16_t channel;
+ u_int8_t type;//used if the body is decoded separately from the 'head'
+ AMQBody::shared_ptr body;
+
+ public:
+ AMQFrame();
+ AMQFrame(u_int16_t channel, AMQBody* body);
+ AMQFrame(u_int16_t channel, AMQBody::shared_ptr& body);
+ virtual ~AMQFrame();
+ virtual void encode(Buffer& buffer);
+ virtual bool decode(Buffer& buffer);
+ virtual u_int32_t size() const;
+ u_int16_t getChannel();
+ AMQBody::shared_ptr& getBody();
+
+ u_int32_t decodeHead(Buffer& buffer);
+ void decodeBody(Buffer& buffer, uint32_t size);
+
+ friend std::ostream& operator<<(std::ostream& out, const AMQFrame& body);
+ };
+
+ }
+}
+
+
+#endif
Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQFrame.h
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQHeaderBody.h
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQHeaderBody.h?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQHeaderBody.h (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQHeaderBody.h Tue Sep 19 15:06:50 2006
@@ -0,0 +1,55 @@
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed 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.
+ *
+ */
+#include "amqp_types.h"
+#include "AMQBody.h"
+#include "Buffer.h"
+#include "HeaderProperties.h"
+
+#ifndef _AMQHeaderBody_
+#define _AMQHeaderBody_
+
+namespace qpid {
+namespace framing {
+
+class AMQHeaderBody : virtual public AMQBody
+{
+ HeaderProperties* properties;
+ u_int16_t weight;
+ u_int64_t contentSize;
+
+ void createProperties(int classId);
+public:
+ typedef std::tr1::shared_ptr<AMQHeaderBody> shared_ptr;
+
+ AMQHeaderBody(int classId);
+ AMQHeaderBody();
+ inline u_int8_t type() const { return HEADER_BODY; }
+ HeaderProperties* getProperties(){ return properties; }
+ inline u_int64_t getContentSize() const { return contentSize; }
+ inline void setContentSize(u_int64_t size) { contentSize = size; }
+ virtual ~AMQHeaderBody();
+ virtual u_int32_t size() const;
+ virtual void encode(Buffer& buffer) const;
+ virtual void decode(Buffer& buffer, u_int32_t size);
+};
+
+}
+}
+
+
+#endif
Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQHeaderBody.h
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQHeartbeatBody.h
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQHeartbeatBody.h?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQHeartbeatBody.h (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQHeartbeatBody.h Tue Sep 19 15:06:50 2006
@@ -0,0 +1,43 @@
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed 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.
+ *
+ */
+#include "amqp_types.h"
+#include "AMQBody.h"
+#include "Buffer.h"
+
+#ifndef _AMQHeartbeatBody_
+#define _AMQHeartbeatBody_
+
+namespace qpid {
+namespace framing {
+
+class AMQHeartbeatBody : virtual public AMQBody
+{
+public:
+ typedef std::tr1::shared_ptr<AMQHeartbeatBody> shared_ptr;
+
+ virtual ~AMQHeartbeatBody() {}
+ inline u_int32_t size() const { return 0; }
+ inline u_int8_t type() const { return HEARTBEAT_BODY; }
+ inline void encode(Buffer& buffer) const {}
+ inline void decode(Buffer& buffer, u_int32_t size) {}
+};
+
+}
+}
+
+#endif
Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQHeartbeatBody.h
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQMethodBody.h
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQMethodBody.h?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQMethodBody.h (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQMethodBody.h Tue Sep 19 15:06:50 2006
@@ -0,0 +1,56 @@
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed 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.
+ *
+ */
+#include <iostream>
+#include "amqp_types.h"
+#include "AMQBody.h"
+#include "Buffer.h"
+#include "AMQP_ServerOperations.h"
+
+#ifndef _AMQMethodBody_
+#define _AMQMethodBody_
+
+namespace qpid {
+namespace framing {
+
+class AMQMethodBody : virtual public AMQBody
+{
+public:
+ typedef std::tr1::shared_ptr<AMQMethodBody> shared_ptr;
+
+ inline u_int8_t type() const { return METHOD_BODY; }
+ inline u_int32_t size() const { return 4 + bodySize(); }
+ inline virtual ~AMQMethodBody(){}
+ virtual void print(std::ostream& out) const = 0;
+ virtual u_int16_t amqpMethodId() const = 0;
+ virtual u_int16_t amqpClassId() const = 0;
+ virtual void invoke(AMQP_ServerOperations& target, u_int16_t channel);
+ virtual void encodeContent(Buffer& buffer) const = 0;
+ virtual void decodeContent(Buffer& buffer) = 0;
+ virtual u_int32_t bodySize() const = 0;
+ void encode(Buffer& buffer) const;
+ void decode(Buffer& buffer, u_int32_t size);
+ bool match(AMQMethodBody* other) const;
+};
+
+std::ostream& operator<<(std::ostream& out, const AMQMethodBody& body);
+
+}
+}
+
+
+#endif
Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/inc/AMQMethodBody.h
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/qpid/trunk/qpid/cpp/common/framing/inc/BasicHeaderProperties.h
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/inc/BasicHeaderProperties.h?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/inc/BasicHeaderProperties.h (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/inc/BasicHeaderProperties.h Tue Sep 19 15:06:50 2006
@@ -0,0 +1,93 @@
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed 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.
+ *
+ */
+#include "amqp_types.h"
+#include "amqp_methods.h"
+#include "Buffer.h"
+#include "HeaderProperties.h"
+
+#ifndef _BasicHeaderProperties_
+#define _BasicHeaderProperties_
+
+namespace qpid {
+namespace framing {
+
+ //TODO: This could be easily generated from the spec
+ class BasicHeaderProperties : public HeaderProperties
+ {
+ string contentType;
+ string contentEncoding;
+ FieldTable headers;
+ u_int8_t deliveryMode;
+ u_int8_t priority;
+ string correlationId;
+ string replyTo;
+ string expiration;
+ string messageId;
+ u_int64_t timestamp;
+ string type;
+ string userId;
+ string appId;
+ string clusterId;
+
+ u_int16_t getFlags() const;
+
+ public:
+ BasicHeaderProperties();
+ virtual ~BasicHeaderProperties();
+ virtual u_int32_t size() const;
+ virtual void encode(Buffer& buffer) const;
+ virtual void decode(Buffer& buffer, u_int32_t size);
+
+ inline virtual u_int8_t classId(){ return BASIC; }
+
+ inline string& getContentType(){ return contentType; }
+ inline string& getContentEncoding(){ return contentEncoding; }
+ inline FieldTable& getHeaders(){ return headers; }
+ inline u_int8_t getDeliveryMode(){ return deliveryMode; }
+ inline u_int8_t getPriority(){ return priority; }
+ inline string& getCorrelationId(){return correlationId; }
+ inline string& getReplyTo(){ return replyTo; }
+ inline string& getExpiration(){ return expiration; }
+ inline string& getMessageId(){return messageId; }
+ inline u_int64_t getTimestamp(){ return timestamp; }
+ inline string& getType(){ return type; }
+ inline string& getUserId(){ return userId; }
+ inline string& getAppId(){ return appId; }
+ inline string& getClusterId(){ return clusterId; }
+
+ void inline setContentType(string& type){ contentType = type; }
+ void inline setContentEncoding(string& encoding){ contentEncoding = encoding; }
+ void inline setHeaders(FieldTable& headers){ this->headers = headers; }
+ void inline setDeliveryMode(u_int8_t mode){ deliveryMode = mode; }
+ void inline setPriority(u_int8_t priority){ this->priority = priority; }
+ void inline setCorrelationId(string& correlationId){ this->correlationId = correlationId; }
+ void inline setReplyTo(string& replyTo){ this->replyTo = replyTo;}
+ void inline setExpiration(string& expiration){ this->expiration = expiration; }
+ void inline setMessageId(string& messageId){ this->messageId = messageId; }
+ void inline setTimestamp(u_int64_t timestamp){ this->timestamp = timestamp; }
+ void inline setType(string& type){ this->type = type; }
+ void inline setUserId(string& userId){ this->userId = userId; }
+ void inline setAppId(string& appId){this->appId = appId; }
+ void inline setClusterId(string& clusterId){ this->clusterId = clusterId; }
+ };
+
+}
+}
+
+
+#endif
Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/inc/BasicHeaderProperties.h
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/qpid/trunk/qpid/cpp/common/framing/inc/BodyHandler.h
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/inc/BodyHandler.h?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/inc/BodyHandler.h (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/inc/BodyHandler.h Tue Sep 19 15:06:50 2006
@@ -0,0 +1,50 @@
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed 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.
+ *
+ */
+#include <string>
+
+#ifndef _BodyHandler_
+#define _BodyHandler_
+
+#include "AMQMethodBody.h"
+#include "AMQHeaderBody.h"
+#include "AMQContentBody.h"
+#include "AMQHeartbeatBody.h"
+
+namespace qpid {
+namespace framing {
+
+ class BodyHandler{
+ public:
+ virtual void handleMethod(AMQMethodBody::shared_ptr body) = 0;
+ virtual void handleHeader(AMQHeaderBody::shared_ptr body) = 0;
+ virtual void handleContent(AMQContentBody::shared_ptr body) = 0;
+ virtual void handleHeartbeat(AMQHeartbeatBody::shared_ptr body) = 0;
+
+ void handleBody(AMQBody::shared_ptr& body);
+ };
+
+ class UnknownBodyType{
+ public:
+ const u_int16_t type;
+ inline UnknownBodyType(u_int16_t _type) : type(_type){}
+ };
+}
+}
+
+
+#endif
Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/inc/BodyHandler.h
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/qpid/trunk/qpid/cpp/common/framing/inc/Buffer.h
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/inc/Buffer.h?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/inc/Buffer.h (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/inc/Buffer.h Tue Sep 19 15:06:50 2006
@@ -0,0 +1,77 @@
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed 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.
+ *
+ */
+#include "amqp_types.h"
+#include "FieldTable.h"
+
+#ifndef _Buffer_
+#define _Buffer_
+
+namespace qpid {
+namespace framing {
+
+class Buffer
+{
+ const int size;
+ char* data;
+ int position;
+ int limit;
+ int r_position;
+ int r_limit;
+
+public:
+
+ Buffer(int size);
+ ~Buffer();
+
+ void flip();
+ void clear();
+ void compact();
+ void record();
+ void restore();
+ int available();
+ char* start();
+ void move(int bytes);
+
+ void putOctet(u_int8_t i);
+ void putShort(u_int16_t i);
+ void putLong(u_int32_t i);
+ void putLongLong(u_int64_t i);
+
+ u_int8_t getOctet();
+ u_int16_t getShort();
+ u_int32_t getLong();
+ u_int64_t getLongLong();
+
+ void putShortString(const string& s);
+ void putLongString(const string& s);
+ void getShortString(string& s);
+ void getLongString(string& s);
+
+ void putFieldTable(const FieldTable& t);
+ void getFieldTable(FieldTable& t);
+
+ void putRawData(const string& s);
+ void getRawData(string& s, u_int32_t size);
+
+};
+
+}
+}
+
+
+#endif
Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/inc/Buffer.h
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/qpid/trunk/qpid/cpp/common/framing/inc/FieldTable.h
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/inc/FieldTable.h?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/inc/FieldTable.h (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/inc/FieldTable.h Tue Sep 19 15:06:50 2006
@@ -0,0 +1,68 @@
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed 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.
+ *
+ */
+#include <iostream>
+#include <vector>
+#include "amqp_types.h"
+
+#ifndef _FieldTable_
+#define _FieldTable_
+
+namespace qpid {
+namespace framing {
+
+ class NamedValue;
+ class Value;
+ class Buffer;
+
+ class FieldTable
+ {
+ std::vector<NamedValue*> values;
+ NamedValue* find(const std::string& name) const;
+
+ Value* getValue(const std::string& name) const;
+ void setValue(const std::string& name, Value* value);
+
+ public:
+ ~FieldTable();
+ u_int32_t size() const;
+ int count() const;
+ void setString(const std::string& name, const std::string& value);
+ void setInt(const std::string& name, int value);
+ void setTimestamp(const std::string& name, u_int64_t value);
+ void setTable(const std::string& name, const FieldTable& value);
+ //void setDecimal(string& name, xxx& value);
+ std::string getString(const std::string& name);
+ int getInt(const std::string& name);
+ u_int64_t getTimestamp(const std::string& name);
+ void getTable(const std::string& name, FieldTable& value);
+ //void getDecimal(string& name, xxx& value);
+
+ void encode(Buffer& buffer) const;
+ void decode(Buffer& buffer);
+
+ friend std::ostream& operator<<(std::ostream& out, const FieldTable& body);
+ };
+
+ class FieldNotFoundException{};
+ class UnknownFieldName : public FieldNotFoundException{};
+ class IncorrectFieldType : public FieldNotFoundException{};
+}
+}
+
+
+#endif
Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/inc/FieldTable.h
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/qpid/trunk/qpid/cpp/common/framing/inc/HeaderProperties.h
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/inc/HeaderProperties.h?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/inc/HeaderProperties.h (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/inc/HeaderProperties.h Tue Sep 19 15:06:50 2006
@@ -0,0 +1,43 @@
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed 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.
+ *
+ */
+#include "amqp_types.h"
+#include "Buffer.h"
+
+#ifndef _HeaderProperties_
+#define _HeaderProperties_
+
+namespace qpid {
+namespace framing {
+
+ enum header_classes{BASIC = 60};
+
+ class HeaderProperties
+ {
+
+ public:
+ inline virtual ~HeaderProperties(){}
+ virtual u_int8_t classId() = 0;
+ virtual u_int32_t size() const = 0;
+ virtual void encode(Buffer& buffer) const = 0;
+ virtual void decode(Buffer& buffer, u_int32_t size) = 0;
+ };
+}
+}
+
+
+#endif
Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/inc/HeaderProperties.h
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/qpid/trunk/qpid/cpp/common/framing/inc/InitiationHandler.h
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/inc/InitiationHandler.h?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/inc/InitiationHandler.h (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/inc/InitiationHandler.h Tue Sep 19 15:06:50 2006
@@ -0,0 +1,37 @@
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed 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.
+ *
+ */
+#include <string>
+
+#ifndef _InitiationHandler_
+#define _InitiationHandler_
+
+#include "ProtocolInitiation.h"
+
+namespace qpid {
+namespace framing {
+
+ class InitiationHandler{
+ public:
+ virtual void initiated(ProtocolInitiation* header) = 0;
+ };
+
+}
+}
+
+
+#endif
Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/inc/InitiationHandler.h
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/qpid/trunk/qpid/cpp/common/framing/inc/InputHandler.h
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/common/framing/inc/InputHandler.h?view=auto&rev=447994
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/common/framing/inc/InputHandler.h (added)
+++ incubator/qpid/trunk/qpid/cpp/common/framing/inc/InputHandler.h Tue Sep 19 15:06:50 2006
@@ -0,0 +1,37 @@
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed 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.
+ *
+ */
+#include <string>
+
+#ifndef _InputHandler_
+#define _InputHandler_
+
+#include "AMQFrame.h"
+
+namespace qpid {
+namespace framing {
+
+ class InputHandler{
+ public:
+ virtual void received(AMQFrame* frame) = 0;
+ };
+
+}
+}
+
+
+#endif
Propchange: incubator/qpid/trunk/qpid/cpp/common/framing/inc/InputHandler.h
------------------------------------------------------------------------------
svn:eol-style = native