From qpid-commits-returnthomasnovak@example.net Wed Nov 01 15:20:28 2006 Return-Path: <qpid-commits-returnthomasnovak@example.net> Delivered-To: thomasnovak@example.net Received: (qmail 36287 invoked from network); 1 Nov 2006 15:20:28 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (83.161.120.155) by minotaur.apache.org with SMTP; 1 Nov 2006 15:20:28 -0000 Received: (qmail 80717 invoked by uid 500); 1 Nov 2006 15:20:39 -0000 Delivered-To: thomasnovak@example.net Received: (qmail 80701 invoked by uid 500); 1 Nov 2006 15:20:39 -0000 Mailing-List: contact thomasnovak@example.net; run by ezmlm Precedence: bulk List-Help: <mailto:thomasnovak@example.net> List-Unsubscribe: <mailto:thomasnovak@example.net> List-Post: <mailto:thomasnovak@example.net> List-Id: <qpid-commits.incubator.apache.org> Reply-To: thomasnovak@example.net Delivered-To: mailing list thomasnovak@example.net Received: (qmail 80692 invoked by uid 99); 1 Nov 2006 15:20:39 -0000 Received: from herse.apache.org (HELO herse.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 01 Nov 2006 07:20:38 -0800 X-ASF-Spam-Status: No, hits=-9.4 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [83.161.120.155] (HELO eris.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 01 Nov 2006 07:20:26 -0800 Received: by eris.apache.org (Postfix, from userid 65534) id 784791A9846; Wed, 1 Nov 2006 07:20:02 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r469929 - in /incubator/qpid/trunk/qpid/gentools: ./ org/apache/qpid/gentools/ templ.cpp/ Date: Wed, 01 Nov 2006 15:20:02 -0000 To: thomasnovak@example.net From: thomasnovak@example.net X-Mailer: svnmailer-1.1.0 Message-Id: <thomasnovak@example.net> X-Virus-Checked: Checked by ClamAV on apache.org Author: kpvdr Date: Wed Nov 1 07:20:01 2006 New Revision: 469929 URL: http://svn.apache.org/viewvc?view=rev&rev=469929 Log: Updated code generator to produce ServerOperations class. Other minor fixes in generator. Added: incubator/qpid/trunk/qpid/gentools/org/apache/qpid/gentools/AmqpOverloadedParameterMap.java Modified: incubator/qpid/trunk/qpid/gentools/README incubator/qpid/trunk/qpid/gentools/org/apache/qpid/gentools/AmqpMethod.java incubator/qpid/trunk/qpid/gentools/org/apache/qpid/gentools/AmqpOrdinalFieldMap.java incubator/qpid/trunk/qpid/gentools/org/apache/qpid/gentools/CppGenerator.java incubator/qpid/trunk/qpid/gentools/org/apache/qpid/gentools/Generator.java incubator/qpid/trunk/qpid/gentools/org/apache/qpid/gentools/JavaGenerator.java incubator/qpid/trunk/qpid/gentools/templ.cpp/AMQP_ServerOperations.h.tmpl Modified: incubator/qpid/trunk/qpid/gentools/README URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/gentools/README?view=diff&rev=469929&r1=469928&r2=469929 ============================================================================== --- incubator/qpid/trunk/qpid/gentools/README (original) +++ incubator/qpid/trunk/qpid/gentools/README Wed Nov 1 07:20:01 2006 @@ -1,28 +1,41 @@ AMQP MULTI_VERSION CODE GENERATOR -This directory contains the first part of the new multi-AMQP-version code generator. The Java generation is almost complete, C++ will follow. +This directory contains the first part of the new multi-AMQP-version code +generator. The Java generation is almost complete, C++ will follow. -NOTE: The generator has NOT been integrated into the current build, and is included here to run stand-alone for the purposes of review and comment. As currently configured, this generator will not interact with any file or directory outside of this directory. +NOTE: The generator has NOT been integrated into the current build, and is +included here to run stand-alone for the purposes of review and comment. As +currently configured, this generator will not interact with any file or +directory outside of this directory. To build (from this directory): javac org/apache/qpid/gentools/Main.java +Make sure you are using Sun's JDK1.5.0; Eclipse and gcj do not work. + To run (from this directory): java org/apache/qpid/gentools/Main -j [xml_spec_file, ...] -XML test files are located in the xml-src directory. Pay attention to the Basic class and Basic.Consume method - these were the primary test vehicles for this generator. *** NOTE *** These files do not represent any current or future version of the AMQP specification - do not use in production! +XML test files are located in the xml-src directory. Pay attention to the +Basic class and Basic.Consume method - these were the primary test vehicles +for this generator. *** NOTE *** These files do not represent any current or +future version of the AMQP specification - do not use in production! Folders: -------- org/apache/qpid/gentools/: Source. xml-src/: Test AMQP specification files. templ.java/: Templates for java code generation. -out.java/: Output folder for generated Java files (will be created with use of -j flag on command-line). +out.java/: Output folder for generated Java files (will be created with use + of -j flag on command-line). templ.cpp/: (Future:) Templates for C++ code generation. -out.cpp/: Output folder for generated C++ files (will be created with use of -c flag on command-line). +out.cpp/: Output folder for generated C++ files (will be created with use + of -c flag on command-line). -For a more detaild description of the generator, see the Qpid Wiki (http://cwiki.apache.org/qpid/multiple-amqp-version-support). +For a more detaild description of the generator, see the Qpid Wiki +(http://cwiki.apache.org/qpid/multiple-amqp-version-support.html). -Please send comments and bugs to me (kim.vdriet [at] redhat.com) or via the Apache Qpid list (qpid-dev [at] incubator.apache.org). +Please send comments and bugs to me (kim.vdriet [at] redhat.com) or via the +Apache Qpid list (qpid-dev [at] incubator.apache.org). Kim van der Riet Modified: incubator/qpid/trunk/qpid/gentools/org/apache/qpid/gentools/AmqpMethod.java URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/gentools/org/apache/qpid/gentools/AmqpMethod.java?view=diff&rev=469929&r1=469928&r2=469929 ============================================================================== --- incubator/qpid/trunk/qpid/gentools/org/apache/qpid/gentools/AmqpMethod.java (original) +++ incubator/qpid/trunk/qpid/gentools/org/apache/qpid/gentools/AmqpMethod.java Wed Nov 1 07:20:01 2006 @@ -135,6 +135,32 @@ } } + public AmqpOverloadedParameterMap getOverloadedParameterLists(AmqpVersionSet globalVersionSet) + { + AmqpOverloadedParameterMap parameterVersionMap = new AmqpOverloadedParameterMap(); + Iterator<AmqpVersion> vItr = globalVersionSet.iterator(); + while (vItr.hasNext()) + { + AmqpVersion version = vItr.next(); + AmqpOrdinalFieldMap ordinalFieldMap = fieldMap.getMapForVersion(version); + if (ordinalFieldMap.size() > 0) + { + AmqpVersionSet methodVersionSet = parameterVersionMap.get(ordinalFieldMap); + if (methodVersionSet == null) + { + methodVersionSet = new AmqpVersionSet(); + methodVersionSet.add(version); + parameterVersionMap.put(ordinalFieldMap, methodVersionSet); + } + else + { + methodVersionSet.add(version); + } + } + } + return parameterVersionMap; + } + public boolean isVersionConsistent(AmqpVersionSet globalVersionSet) { if (!versionSet.equals(globalVersionSet)) Modified: incubator/qpid/trunk/qpid/gentools/org/apache/qpid/gentools/AmqpOrdinalFieldMap.java URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/gentools/org/apache/qpid/gentools/AmqpOrdinalFieldMap.java?view=diff&rev=469929&r1=469928&r2=469929 ============================================================================== --- incubator/qpid/trunk/qpid/gentools/org/apache/qpid/gentools/AmqpOrdinalFieldMap.java (original) +++ incubator/qpid/trunk/qpid/gentools/org/apache/qpid/gentools/AmqpOrdinalFieldMap.java Wed Nov 1 07:20:01 2006 @@ -1,9 +1,55 @@ package org.apache.qpid.gentools; +import java.util.Iterator; +import java.util.Set; import java.util.TreeMap; @SuppressWarnings("serial") -public class AmqpOrdinalFieldMap extends TreeMap<Integer, String[]> +public class AmqpOrdinalFieldMap extends TreeMap<Integer, String[]> implements Comparable { - + public int compareTo(Object obj) + { + AmqpOrdinalFieldMap o = (AmqpOrdinalFieldMap)obj; + Set<Integer> thisKeySet = keySet(); + Set<Integer> oKeySet = o.keySet(); + if (!thisKeySet.equals(oKeySet)) // Not equal, but why? + { + // Size difference + int sizeDiff = thisKeySet.size() - oKeySet.size(); // -ve if this < other + if (sizeDiff != 0) + return sizeDiff; + // Conetent difference + Iterator<Integer> itr = thisKeySet.iterator(); + Iterator<Integer> oItr = oKeySet.iterator(); + while (itr.hasNext() && oItr.hasNext()) + { + int diff = itr.next() - oItr.next(); // -ve if this < other + if (diff != 0) + return diff; + } + // We should never get here... + System.err.println("AmqpOrdinalFieldMap.compareTo(): " + + "WARNING - unable to find cause of keySet difference."); + } + // Keys are equal, now check the String[]s + Iterator<Integer> itr = thisKeySet.iterator(); + Iterator<Integer> oItr = oKeySet.iterator(); + while (itr.hasNext() && oItr.hasNext()) + { + String[] thisPair = get(itr.next()); + String[] oPair = o.get(oItr.next()); + // Size difference + int sizeDiff = thisPair.length - oPair.length; // -ve if this < other + if (sizeDiff != 0) + return sizeDiff; + // Conetent difference + for (int i=0; i<thisPair.length; i++) + { + int diff = thisPair[i].compareTo(oPair[i]); + if (diff != 0) + return diff; + } + } + return 0; + } } Added: incubator/qpid/trunk/qpid/gentools/org/apache/qpid/gentools/AmqpOverloadedParameterMap.java URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/gentools/org/apache/qpid/gentools/AmqpOverloadedParameterMap.java?view=auto&rev=469929 ============================================================================== --- incubator/qpid/trunk/qpid/gentools/org/apache/qpid/gentools/AmqpOverloadedParameterMap.java (added) +++ incubator/qpid/trunk/qpid/gentools/org/apache/qpid/gentools/AmqpOverloadedParameterMap.java Wed Nov 1 07:20:01 2006 @@ -0,0 +1,9 @@ +package org.apache.qpid.gentools; + +import java.util.TreeMap; + +@SuppressWarnings("serial") +public class AmqpOverloadedParameterMap extends TreeMap<AmqpOrdinalFieldMap, AmqpVersionSet> +{ + +} Modified: incubator/qpid/trunk/qpid/gentools/org/apache/qpid/gentools/CppGenerator.java URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/gentools/org/apache/qpid/gentools/CppGenerator.java?view=diff&rev=469929&r1=469928&r2=469929 ============================================================================== --- incubator/qpid/trunk/qpid/gentools/org/apache/qpid/gentools/CppGenerator.java (original) +++ incubator/qpid/trunk/qpid/gentools/org/apache/qpid/gentools/CppGenerator.java Wed Nov 1 07:20:01 2006 @@ -20,7 +20,6 @@ import java.io.File; import java.io.IOException; import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Iterator; import java.util.TreeMap; @@ -32,9 +31,17 @@ protected static final String versionNamespaceEndToken = "${version_namespace_end}"; protected static final int FIELD_NAME = 0; protected static final int FIELD_DOMAIN = 1; - + protected static final String[] cppReservedWords = {"and", "and_eq", "asm", "auto", "bitand", + "bitor", "bool", "break", "case", "catch", "char", "class", "compl", "const", "const_cast", + "continue", "default", "delete", "do", "DomainInfo", "double", "dynamic_cast", "else", + "enum", "explicit", "extern", "false", "float", "for", "friend", "goto", "if", "inline", + "int", "long", "mutable", "namespace", "new", "not", "not_eq", "operator", "or", "or_eq", + "private", "protected", "public", "register", "reinterpret_cast", "return", "short", + "signed", "sizeof", "static", "static_cast", "struct", "switch", "template", "this", + "throw", "true", "try", "typedef", "typeid", "typename", "union", "unsigned", "using", + "virtual", "void", "volatile", "wchar_t", "while", "xor", "xor_eq"}; - private class DomainInfo + private class DomainInfo { public String type; public String size; @@ -294,15 +301,37 @@ } @Override - protected void processClassList(StringBuffer sb, int tokStart, int tokEnd, AmqpModel model) - throws AmqpTemplateException + protected void processClassList(StringBuffer sb, int listMarkerStartIndex, int listMarkerEndIndex, + AmqpModel model) + throws AmqpTemplateException, AmqpTypeMappingException { -// TODO + String codeSnippet; + int lend = sb.indexOf(cr, listMarkerStartIndex) + 1; // Include cr at end of line + String tline = sb.substring(listMarkerEndIndex, lend); // Line excluding line marker, including cr + int tokxStart = tline.indexOf('$'); + String token = tline.substring(tokxStart).trim(); + sb.delete(listMarkerStartIndex, lend); + + if (token.compareTo("${co_method_handler_get_method}") == 0) + { + codeSnippet = generateMethodHandlerGetMethods(model, 8); + } + else if (token.compareTo("${co_server_method_inner_class}") == 0) + { + codeSnippet = generateInnerClasses(model, 8, 4); + } + + else // Oops! + { + throw new AmqpTemplateException("Template token \"" + token + "\" unknown."); + } + sb.insert(listMarkerStartIndex, codeSnippet); } @Override - protected void processMethodList(StringBuffer sb, int tokStart, int tokEnd, AmqpClass thisClass) - throws AmqpTemplateException + protected void processMethodList(StringBuffer sb, int listMarkerStartIndex, int listMarkerEndIndex, + AmqpClass thisClass) + throws AmqpTemplateException, AmqpTypeMappingException { // TODO } @@ -320,7 +349,6 @@ String token = tline.substring(tokxStart).trim(); sb.delete(listMarkerStartIndex, lend); - // Field declarations - common to MethodBody and PropertyContentHeader classes if (token.compareTo("${mb_field_declaration}") == 0) { codeSnippet = generateFieldDeclarations(fieldMap, version, 4); @@ -366,13 +394,117 @@ } // === Protected and private helper functions unique to C++ implementation === - - // Methods used for generation of code snippets called from the field map parsers - - // Common methods + + // Methods used for generation of code snippets for ServerOperations class generation + + protected String generateMethodHandlerGetMethods(AmqpModel model, int indentSize) + { + String indent = Utils.createSpaces(indentSize); + StringBuffer sb = new StringBuffer(); + Iterator<String> cItr = model.classMap.keySet().iterator(); + while (cItr.hasNext()) + { + AmqpClass thisClass = model.classMap.get(cItr.next()); + sb.append(indent + "virtual AMQP_ServerOperations888a:dbb7:2d49:b3f6:8605:bf4e:caed:e5a4" + + thisClass.name + "Handler* get" + thisClass.name + "Handler() = 0;" + cr); + } + return sb.toString(); + } + + protected String generateInnerClasses(AmqpModel model, int indentSize, int tabSize) + throws AmqpTypeMappingException + { + String indent = Utils.createSpaces(indentSize); + String tab = Utils.createSpaces(tabSize); + StringBuffer sb = new StringBuffer(); + boolean first = true; + Iterator<String> cItr = model.classMap.keySet().iterator(); + while (cItr.hasNext()) + { + AmqpClass thisClass = model.classMap.get(cItr.next()); + String className = thisClass.name + "Handler"; + if (!first) + sb.append(cr); + sb.append(indent + "class " + className); + if (thisClass.versionSet.size() != globalVersionSet.size()) + sb.append(" // AMQP Version(s) " + thisClass.versionSet + cr); + else + sb.append(cr); + sb.append(indent + "{" + cr); + sb.append(indent + "private:" + cr); + sb.append(indent + tab + "u_int8_t major;" + cr); + sb.append(indent + tab + "u_int8_t minor;" + cr); + sb.append(cr); + sb.append(indent + "public:" + cr); + sb.append(indent + tab + "// Constructors and destructors" + cr); + sb.append(cr); + sb.append(indent + tab + className + + "(u_int8_t major, u_int8_t minor) : major(major), minor(minor) {}" + cr); + sb.append(indent + tab + "virtual ~" + className + "() {}" + cr); + sb.append(cr); + sb.append(indent + tab + "// Protocol methods" + cr); + sb.append(cr); + sb.append(generateInnerClassMethods(thisClass, indentSize + tabSize, tabSize)); + sb.append(indent + "}; // class " + className + cr); + first = false; + } + return sb.toString(); + } + + protected String generateInnerClassMethods(AmqpClass thisClass, int indentSize, int tabSize) + throws AmqpTypeMappingException + { + String indent = Utils.createSpaces(indentSize); + StringBuffer sb = new StringBuffer(); + boolean first = true; + Iterator<String> mItr = thisClass.methodMap.keySet().iterator(); + while (mItr.hasNext()) + { + AmqpMethod method = thisClass.methodMap.get(mItr.next()); + AmqpOverloadedParameterMap overloadededParameterMap = method.getOverloadedParameterLists(globalVersionSet); + Iterator<AmqpOrdinalFieldMap> ofmItr = overloadededParameterMap.keySet().iterator(); + String methodName = parseForReservedWords(method.name, thisClass.name); + while (ofmItr.hasNext()) + { + AmqpOrdinalFieldMap fieldMap = ofmItr.next(); + AmqpVersionSet versionSet = overloadededParameterMap.get(fieldMap); + if (!first) + sb.append(cr); + sb.append(indent + "virtual void " + methodName + "("); + sb.append(generateMethodParameterList(fieldMap, indentSize + (5*tabSize))); + if (versionSet.size() != globalVersionSet.size()) + sb.append(") = 0; // AMQP Version(s) " + versionSet + cr); + else + sb.append(") = 0;" + cr); + first = false; + } + } + return sb.toString(); + } + + protected String generateMethodParameterList(AmqpOrdinalFieldMap fieldMap, int indentSize) + throws AmqpTypeMappingException + { + String indent = Utils.createSpaces(indentSize); + StringBuffer sb = new StringBuffer(); + boolean first = true; + Iterator<Integer> pItr = fieldMap.keySet().iterator(); + while(pItr.hasNext()) + { + String[] field = fieldMap.get(pItr.next()); + String codeType = getGeneratedType(field[FIELD_DOMAIN], globalVersionSet.first()); + if (!first) + sb.append(indent); + sb.append(setRef(codeType) + " " + field[FIELD_NAME] + (pItr.hasNext() ? "," + cr : "")); + first = false; + } + return sb.toString(); + } + + // Methods used for generation of code snippets for MethodBody class generation protected String getIndex(AmqpOrdinalVersionMap indexMap, AmqpVersion version) - throws AmqpTemplateException + throws AmqpTemplateException { Iterator<Integer> iItr = indexMap.keySet().iterator(); while (iItr.hasNext()) @@ -759,6 +891,20 @@ // } // return sb.toString(); // } + + private String parseForReservedWords(String methodName, String className) + { + for (int i=0; i<cppReservedWords.length; i++) + if (methodName.compareTo(cppReservedWords[i]) == 0) + { + System.err.println("WARNING: Found method \"" + methodName + + "\" in class \"" + className + + "\", which is a C/C++ reserved word. " + + "Changing generated method name to \"" + methodName + "_\"."); + return methodName + "_"; + } + return methodName; + } private String setRef(String codeType) { Modified: incubator/qpid/trunk/qpid/gentools/org/apache/qpid/gentools/Generator.java URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/gentools/org/apache/qpid/gentools/Generator.java?view=diff&rev=469929&r1=469928&r2=469929 ============================================================================== --- incubator/qpid/trunk/qpid/gentools/org/apache/qpid/gentools/Generator.java (original) +++ incubator/qpid/trunk/qpid/gentools/org/apache/qpid/gentools/Generator.java Wed Nov 1 07:20:01 2006 @@ -136,10 +136,10 @@ throws AmqpTemplateException; abstract protected void processClassList(StringBuffer sb, int tokStart, int tokEnd, AmqpModel model) - throws AmqpTemplateException; + throws AmqpTemplateException, AmqpTypeMappingException; abstract protected void processMethodList(StringBuffer sb, int tokStart, int tokEnd, AmqpClass thisClass) - throws AmqpTemplateException; + throws AmqpTemplateException, AmqpTypeMappingException; abstract protected void processFieldList(StringBuffer sb, int listMarkerStartIndex, int listMarkerEndIndex, AmqpFieldMap fieldMap, AmqpVersion version) Modified: incubator/qpid/trunk/qpid/gentools/org/apache/qpid/gentools/JavaGenerator.java URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/gentools/org/apache/qpid/gentools/JavaGenerator.java?view=diff&rev=469929&r1=469928&r2=469929 ============================================================================== --- incubator/qpid/trunk/qpid/gentools/org/apache/qpid/gentools/JavaGenerator.java (original) +++ incubator/qpid/trunk/qpid/gentools/org/apache/qpid/gentools/JavaGenerator.java Wed Nov 1 07:20:01 2006 @@ -472,7 +472,7 @@ @Override protected void processClassList(StringBuffer sb, int tokStart, int tokEnd, AmqpModel model) - throws AmqpTemplateException + throws AmqpTemplateException, AmqpTypeMappingException { String codeSnippet; int lend = sb.indexOf(cr, tokStart) + 1; // Include cr at end of line @@ -496,7 +496,7 @@ @Override protected void processMethodList(StringBuffer sb, int tokStart, int tokEnd, AmqpClass thisClass) - throws AmqpTemplateException + throws AmqpTemplateException, AmqpTypeMappingException { String codeSnippet; int lend = sb.indexOf(cr, tokStart) + 1; // Include cr at end of line Modified: incubator/qpid/trunk/qpid/gentools/templ.cpp/AMQP_ServerOperations.h.tmpl URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/gentools/templ.cpp/AMQP_ServerOperations.h.tmpl?view=diff&rev=469929&r1=469928&r2=469929 ============================================================================== --- incubator/qpid/trunk/qpid/gentools/templ.cpp/AMQP_ServerOperations.h.tmpl (original) +++ incubator/qpid/trunk/qpid/gentools/templ.cpp/AMQP_ServerOperations.h.tmpl Wed Nov 1 07:20:01 2006 @@ -34,16 +34,27 @@ class AMQP_ServerOperations { + private: + u_int8_t major; + u_int8_t minor; public: - AMQP_ServerOperations() {} + AMQP_ServerOperations(u_int8_t major, u_int8_t minor) : major(major), minor(minor) {} virtual ~AMQP_ServerOperations() {} -{so_get_amqp_major} -{so_get_amqp_minor} + + inline u_int8_t getMajor() { return major; } + inline u_int8_t getMinor() { return minor; } + inline isVersion(u_int8_t _major, u_int8_t _minor) + { + return major == _major && minor == _minor; + } - // Method handler get methods -{CLIST} {co_method_handler_get_method} + // Method handler get methods + +%{CLIST} ${co_method_handler_get_method} -{CLIST} {co_server_method_inner_class} + // Inner classes + +%{CLIST} ${co_server_method_inner_class} }; /* class AMQP_ServerOperations */ From qpid-commits-returnthomasnovak@example.net Wed Nov 01 16:07:06 2006 Return-Path: <qpid-commits-returnthomasnovak@example.net> Delivered-To: thomasnovak@example.net Received: (qmail 56045 invoked from network); 1 Nov 2006 16:07:06 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (83.161.120.155) by minotaur.apache.org with SMTP; 1 Nov 2006 16:07:06 -0000 Received: (qmail 2454 invoked by uid 500); 1 Nov 2006 16:07:17 -0000 Delivered-To: thomasnovak@example.net Received: (qmail 2426 invoked by uid 500); 1 Nov 2006 16:07:17 -0000 Mailing-List: contact thomasnovak@example.net; run by ezmlm Precedence: bulk List-Help: <mailto:thomasnovak@example.net> List-Unsubscribe: <mailto:thomasnovak@example.net> List-Post: <mailto:thomasnovak@example.net> List-Id: <qpid-commits.incubator.apache.org> Reply-To: thomasnovak@example.net Delivered-To: mailing list thomasnovak@example.net Received: (qmail 2409 invoked by uid 99); 1 Nov 2006 16:07:17 -0000 Received: from herse.apache.org (HELO herse.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 01 Nov 2006 08:07:17 -0800 X-ASF-Spam-Status: No, hits=-9.4 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [83.161.120.155] (HELO eris.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 01 Nov 2006 08:07:05 -0800 Received: by eris.apache.org (Postfix, from userid 65534) id 6DA4E1A9846; Wed, 1 Nov 2006 08:06:41 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r469954 - in /incubator/qpid/trunk/qpid/java/broker/src/org/apache/qpid/server: AMQChannel.java protocol/AMQMinaProtocolSession.java Date: Wed, 01 Nov 2006 16:06:41 -0000 To: thomasnovak@example.net From: thomasnovak@example.net X-Mailer: svnmailer-1.1.0 Message-Id: <thomasnovak@example.net> X-Virus-Checked: Checked by ClamAV on apache.org Author: bhupendrab Date: Wed Nov 1 08:06:40 2006 New Revision: 469954 URL: http://svn.apache.org/viewvc?view=rev&rev=469954 Log: Channel is not an MBean. The getObjectName is removed. The SessionMBean is updated accordingly. Modified: incubator/qpid/trunk/qpid/java/broker/src/org/apache/qpid/server/AMQChannel.java incubator/qpid/trunk/qpid/java/broker/src/org/apache/qpid/server/protocol/AMQMinaProtocolSession.java Modified: incubator/qpid/trunk/qpid/java/broker/src/org/apache/qpid/server/AMQChannel.java URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/broker/src/org/apache/qpid/server/AMQChannel.java?view=diff&rev=469954&r1=469953&r2=469954 ============================================================================== --- incubator/qpid/trunk/qpid/java/broker/src/org/apache/qpid/server/AMQChannel.java (original) +++ incubator/qpid/trunk/qpid/java/broker/src/org/apache/qpid/server/AMQChannel.java Wed Nov 1 08:06:40 2006 @@ -36,8 +36,6 @@ import org.apache.qpid.server.txn.TxnBuffer; import org.apache.qpid.server.txn.TxnOp; -import javax.management.MalformedObjectNameException; -import javax.management.ObjectName; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.LinkedList; @@ -661,15 +659,6 @@ sb.append(", prefetch marks: ").append(_prefetch_LowWaterMark); sb.append("/").append(_prefetch_HighWaterMark); return sb.toString(); - } - - public ObjectName getObjectName() - throws MalformedObjectNameException - { - StringBuilder sb = new StringBuilder(30); - sb.append("Channel:id=").append(_channelId); - sb.append(",transaction mode=").append(_transactional); - return new ObjectName(sb.toString()); } public void setDefaultQueue(AMQQueue queue) Modified: incubator/qpid/trunk/qpid/java/broker/src/org/apache/qpid/server/protocol/AMQMinaProtocolSession.java URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/broker/src/org/apache/qpid/server/protocol/AMQMinaProtocolSession.java?view=diff&rev=469954&r1=469953&r2=469954 ============================================================================== --- incubator/qpid/trunk/qpid/java/broker/src/org/apache/qpid/server/protocol/AMQMinaProtocolSession.java (original) +++ incubator/qpid/trunk/qpid/java/broker/src/org/apache/qpid/server/protocol/AMQMinaProtocolSession.java Wed Nov 1 08:06:40 2006 @@ -49,10 +49,8 @@ import javax.management.JMException; import javax.management.MBeanException; import javax.management.MBeanNotificationInfo; -import javax.management.MalformedObjectNameException; import javax.management.NotCompliantMBeanException; import javax.management.Notification; -import javax.management.ObjectName; import javax.management.monitor.MonitorNotification; import javax.management.openmbean.CompositeData; import javax.management.openmbean.CompositeDataSupport; @@ -103,7 +101,7 @@ private boolean _closed; - private long _maxNoOfChannels; + private long _maxNoOfChannels = 1000; /* AMQP Version for this session */ @@ -129,34 +127,21 @@ * Represents the channel attributes sent with channel data. */ private String[] _channelAtttibuteNames = { "ChannelId", - "ChannelName", "Transactional", "DefaultQueue", "UnacknowledgedMessageCount"}; private String[] _channelAttributeDescriptions = { "Channel Identifier", - "Channel Name", "is Channel Transactional?", "Default Queue Name", "Unacknowledged Message Count"}; private OpenType[] _channelAttributeTypes = { SimpleType.INTEGER, - SimpleType.OBJECTNAME, SimpleType.BOOLEAN, SimpleType.STRING, SimpleType.INTEGER}; - /** - * Channels in the list will be indexed according to channelId. - */ - private String[] _indexNames = { "ChannelId" }; - - /** - * represents the data type for channel data. - */ - private CompositeType _channelType = null; - /** - * Datatype for list of channelsType. - */ - private TabularType _channelsType = null; + private String[] _indexNames = { "ChannelId" }; //Channels in the list will be indexed according to channelId. + private CompositeType _channelType = null; // represents the data type for channel data + private TabularType _channelsType = null; // Datatype for list of channelsType private TabularDataSupport _channelsList = null; @MBeanConstructor("Creates an MBean exposing an AMQ Broker Connection") @@ -283,20 +268,7 @@ for (Map.Entry<Integer, AMQChannel> entry : _channelMap.entrySet()) { AMQChannel channel = entry.getValue(); - //ManagedChannel channel = (AMQChannelMBean)amqChannel.getManagedObject(); - ObjectName channelObjectName = null; - - try - { - channelObjectName = channel.getObjectName(); - } - catch (MalformedObjectNameException ex) - { - _logger.error("Unable to create object name: ", ex); - } - Object[] itemValues = {channel.getChannelId(), - channelObjectName, channel.isTransactional(), (channel.getDefaultQueue() != null) ? channel.getDefaultQueue().getName() : null, channel.getUnacknowledgedMessageMap().size()}; From qpid-commits-returnthomasnovak@example.net Wed Nov 01 17:48:50 2006 Return-Path: <qpid-commits-returnthomasnovak@example.net> Delivered-To: thomasnovak@example.net Received: (qmail 97543 invoked from network); 1 Nov 2006 17:48:49 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (83.161.120.155) by minotaur.apache.org with SMTP; 1 Nov 2006 17:48:49 -0000 Received: (qmail 23961 invoked by uid 500); 1 Nov 2006 17:49:01 -0000 Delivered-To: thomasnovak@example.net Received: (qmail 23930 invoked by uid 500); 1 Nov 2006 17:49:01 -0000 Mailing-List: contact thomasnovak@example.net; run by ezmlm Precedence: bulk List-Help: <mailto:thomasnovak@example.net> List-Unsubscribe: <mailto:thomasnovak@example.net> List-Post: <mailto:thomasnovak@example.net> List-Id: <qpid-commits.incubator.apache.org> Reply-To: thomasnovak@example.net Delivered-To: mailing list thomasnovak@example.net Received: (qmail 23920 invoked by uid 99); 1 Nov 2006 17:49:01 -0000 Received: from herse.apache.org (HELO herse.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 01 Nov 2006 09:49:01 -0800 X-ASF-Spam-Status: No, hits=-9.4 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [83.161.120.155] (HELO eris.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 01 Nov 2006 09:48:48 -0800 Received: by eris.apache.org (Postfix, from userid 65534) id E176F1A9846; Wed, 1 Nov 2006 09:48:24 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r470012 - in /incubator/qpid/trunk/qpid/java/broker/src/org/apache/qpid/server/queue: AMQQueue.java ManagedQueue.java Date: Wed, 01 Nov 2006 17:48:24 -0000 To: thomasnovak@example.net From: thomasnovak@example.net X-Mailer: svnmailer-1.1.0 Message-Id: <thomasnovak@example.net> X-Virus-Checked: Checked by ClamAV on apache.org Author: bhupendrab Date: Wed Nov 1 09:48:23 2006 New Revision: 470012 URL: http://svn.apache.org/viewvc?view=rev&rev=470012 Log: AMQQueueMBean updated. The message content is sent with header attributes. New management operation added to view message content for a particular messageId. Modified: incubator/qpid/trunk/qpid/java/broker/src/org/apache/qpid/server/queue/AMQQueue.java incubator/qpid/trunk/qpid/java/broker/src/org/apache/qpid/server/queue/ManagedQueue.java Modified: incubator/qpid/trunk/qpid/java/broker/src/org/apache/qpid/server/queue/AMQQueue.java URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/broker/src/org/apache/qpid/server/queue/AMQQueue.java?view=diff&rev=470012&r1=470011&r2=470012 ============================================================================== --- incubator/qpid/trunk/qpid/java/broker/src/org/apache/qpid/server/queue/AMQQueue.java (original) +++ incubator/qpid/trunk/qpid/java/broker/src/org/apache/qpid/server/queue/AMQQueue.java Wed Nov 1 09:48:23 2006 @@ -18,7 +18,9 @@ package org.apache.qpid.server.queue; import org.apache.log4j.Logger; +import org.apache.mina.common.ByteBuffer; import org.apache.qpid.AMQException; +import org.apache.qpid.framing.BasicContentHeaderProperties; import org.apache.qpid.framing.ContentBody; import org.apache.qpid.server.exchange.Exchange; import org.apache.qpid.server.management.AMQManagedObject; @@ -97,7 +99,7 @@ /** * max allowed size of a single message(in KBytes). */ - private long _maxAllowedMessageSize = 10000; // 10 MB + private long _maxAllowedMessageSize = 10000; // 10 MB /** * max allowed number of messages on a queue. @@ -107,7 +109,7 @@ /** * max allowed size in KBytes for all the messages combined together in a queue. */ - private long _queueDepth = 10000000; // 10 GB + private long _queueDepth = 10000000; // 10 GB /** * total messages received by the queue since startup. @@ -122,33 +124,39 @@ private final class AMQQueueMBean extends AMQManagedObject implements ManagedQueue { private String _queueName = null; - //private MBeanInfo _mbeanInfo; - // AMQ message attribute names exposed. + // AMQ message attribute names private String[] _msgAttributeNames = {"MessageId", - "Redelivered", - "Content's size", - "Contents"}; + "Header", + "Size", + "Redelivered" + }; // AMQ Message attribute descriptions. private String[] _msgAttributeDescriptions = {"Message Id", - "Redelivered", - "Message content's size in bytes", - "Message content bodies"}; - // AMQ message attribute types. - private OpenType[] _msgAttributeTypes = new OpenType[4]; - // Messages will be indexed according to the messageId. - private String[] _msgAttributeIndex = {"MessageId"}; - // Composite type for representing AMQ Message data. - private CompositeType _messageDataType = null; - // Datatype for representing AMQ messages list. - private TabularType _messagelistDataType = null; - - private String[] _contentNames = {"SerialNumber", "ContentBody"}; - private String[] _contentDesc = {"Serial Number", "Content Body"}; - private String[] _contentIndex = {"SerialNumber"}; - private OpenType[] _contentType = new OpenType[2]; - private CompositeType _contentBodyType = null; - private TabularType _contentBodyListType = null; + "Header", + "Message size in bytes", + "Redelivered" + }; + + private OpenType[] _msgAttributeTypes = new OpenType[4]; // AMQ message attribute types. + private String[] _msgAttributeIndex = {"MessageId"}; // Messages will be indexed according to the messageId. + private CompositeType _messageDataType = null; // Composite type for representing AMQ Message data. + private TabularType _messagelistDataType = null; // Datatype for representing AMQ messages list. + + + private CompositeType _msgContentType = null; // For message content + private String[] _msgContentAttributes = {"MessageId", + "MimeType", + "Encoding", + "Content" + }; + private String[] _msgContentDescriptions = {"Message Id", + "MimeType", + "Encoding", + "Message content" + }; + private OpenType[] _msgContentAttributeTypes = new OpenType[4]; + @MBeanConstructor("Creates an MBean exposing an AMQQueue.") public AMQQueueMBean() throws NotCompliantMBeanException @@ -162,22 +170,21 @@ _queueName = jmxEncode(new StringBuffer(_name), 0).toString(); try { - _contentType[0] = SimpleType.INTEGER; - _contentType[1] = new ArrayType(1, SimpleType.BYTE); - _contentBodyType = new CompositeType("Content", - "Content", - _contentNames, - _contentDesc, - _contentType); - _contentBodyListType = new TabularType("MessageContents", - "Message Contents", - _contentBodyType, - _contentIndex); - - _msgAttributeTypes[0] = SimpleType.LONG; - _msgAttributeTypes[1] = SimpleType.BOOLEAN; - _msgAttributeTypes[2] = SimpleType.LONG; - _msgAttributeTypes[3] = _contentBodyListType; + _msgContentAttributeTypes[0] = SimpleType.LONG; // For message id + _msgContentAttributeTypes[1] = SimpleType.STRING; // For MimeType + _msgContentAttributeTypes[2] = SimpleType.STRING; // For Encoding + _msgContentAttributeTypes[3] = new ArrayType(1, SimpleType.BYTE); // For message content + _msgContentType = new CompositeType("MessageContent", + "AMQ Message Content", + _msgContentAttributes, + _msgContentDescriptions, + _msgContentAttributeTypes); + + + _msgAttributeTypes[0] = SimpleType.LONG; // For message id + _msgAttributeTypes[1] = new ArrayType(1, SimpleType.STRING); // For header attributes + _msgAttributeTypes[2] = SimpleType.LONG; // For size + _msgAttributeTypes[3] = SimpleType.BOOLEAN; // For redelivered _messageDataType = new CompositeType("Message", "AMQ Message", @@ -288,10 +295,8 @@ } return new Long(Math.round(queueSize / 100)); } - // Operations // calculates the size of an AMQMessage - private long getMessageSize(AMQMessage msg) { if (msg == null) @@ -374,6 +379,53 @@ } } + public CompositeData viewMessageContent(long msgId) throws JMException + { + List<AMQMessage> list = _deliveryMgr.getMessages(); + CompositeData messageContent = null; + AMQMessage msg = null; + for (AMQMessage message : list) + { + if (message.getMessageId() == msgId) + { + msg = message; + break; + } + } + + if (msg != null) + { + // get message content + List<ContentBody> cBodies = msg.getContentBodies(); + List<Byte> msgContent = new ArrayList<Byte>(); + for (ContentBody body : cBodies) + { + if (body.getSize() != 0) + { + ByteBuffer slice = body.payload.slice(); + for (int j = 0; j < slice.limit(); j++) + { + msgContent.add(slice.get()); + } + } + } + + // Create header attributes list + BasicContentHeaderProperties headerProperties = (BasicContentHeaderProperties)msg.getContentHeaderBody().properties; + String mimeType = headerProperties.getContentType(); + String encoding = headerProperties.getEncoding() == null ? "" : headerProperties.getEncoding(); + + Object[] itemValues = {msgId, mimeType, encoding, msgContent.toArray(new Byte[0])}; + messageContent = new CompositeDataSupport(_msgContentType, _msgContentAttributes, itemValues); + } + else + { + throw new JMException("AMQMessage with message id = " + msgId + " is not in the " + _queueName ); + } + + return messageContent; + } + /** * Returns the messages stored in this queue in tabular form. * @@ -391,43 +443,38 @@ } List<AMQMessage> list = _deliveryMgr.getMessages(); + TabularDataSupport _messageList = new TabularDataSupport(_messagelistDataType); if (beginIndex > list.size()) { - throw new JMException("FromIndex = " + beginIndex + ". There are only " + list.size() + " messages in the queue"); + return _messageList; } - endIndex = endIndex < list.size() ? endIndex : list.size(); - TabularDataSupport _messageList = new TabularDataSupport(_messagelistDataType); for (int i = beginIndex; i <= endIndex; i++) { AMQMessage msg = list.get(i - 1); - long msgId = msg.getMessageId(); - - List<ContentBody> cBodies = msg.getContentBodies(); - - TabularDataSupport _contentList = new TabularDataSupport(_contentBodyListType); - int contentSerialNo = 1; long size = 0; - + // get message content + List<ContentBody> cBodies = msg.getContentBodies(); for (ContentBody body : cBodies) { - if (body.getSize() != 0) - { - Byte[] byteArray = getByteArray(body.payload.slice().array()); - size = size + byteArray.length; - - Object[] contentValues = {contentSerialNo, byteArray}; - CompositeData contentData = new CompositeDataSupport(_contentBodyType, - _contentNames, - contentValues); - - _contentList.put(contentData); - } + size = size + body.getSize(); } - Object[] itemValues = {msgId, true, size, _contentList}; + // Create header attributes list + BasicContentHeaderProperties headerProperties = (BasicContentHeaderProperties)msg.getContentHeaderBody().properties; + List<String> headerAttribsList = new ArrayList<String>(); + headerAttribsList.add("App Id=" + headerProperties.getAppId()); + headerAttribsList.add("MimeType=" + headerProperties.getContentType()); + headerAttribsList.add("Correlation Id=" + headerProperties.getCorrelationId()); + headerAttribsList.add("Encoding=" + headerProperties.getEncoding()); + headerAttribsList.add(headerProperties.toString()); + + Object[] itemValues = {msg.getMessageId(), + headerAttribsList.toArray(new String[0]), + size, msg.isRedelivered()}; + CompositeData messageData = new CompositeDataSupport(_messageDataType, _msgAttributeNames, itemValues); @@ -435,26 +482,6 @@ } return _messageList; - } - - /** - * A utility to convert byte[] to Byte[]. Required to create composite - * type for message contents. - * - * @param byteArray message content as byte[] - * @return Byte[] - */ - private Byte[] getByteArray(byte[] byteArray) - { - int size = byteArray.length; - List<Byte> list = new ArrayList<Byte>(); - - for (int i = 0; i < size; i++) - { - list.add(byteArray[i]); - } - - return list.toArray(new Byte[0]); } /** Modified: incubator/qpid/trunk/qpid/java/broker/src/org/apache/qpid/server/queue/ManagedQueue.java URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/broker/src/org/apache/qpid/server/queue/ManagedQueue.java?view=diff&rev=470012&r1=470011&r2=470012 ============================================================================== --- incubator/qpid/trunk/qpid/java/broker/src/org/apache/qpid/server/queue/ManagedQueue.java (original) +++ incubator/qpid/trunk/qpid/java/broker/src/org/apache/qpid/server/queue/ManagedQueue.java Wed Nov 1 09:48:23 2006 @@ -24,6 +24,7 @@ import javax.management.JMException; import javax.management.MBeanOperationInfo; import javax.management.openmbean.TabularData; +import javax.management.openmbean.CompositeData; import java.io.IOException; /** @@ -209,4 +210,8 @@ impact= MBeanOperationInfo.ACTION) void clearQueue() throws IOException, JMException; + @MBeanOperation(name="viewMessageContent", + description="Returns the message content along with MimeType and Encoding") + CompositeData viewMessageContent(@MBeanOperationParameter(name="Message Id", description="Message Id")long messageId) + throws IOException, JMException; } From qpid-commits-returnthomasnovak@example.net Wed Nov 01 21:44:09 2006 Return-Path: <qpid-commits-returnthomasnovak@example.net> Delivered-To: thomasnovak@example.net Received: (qmail 88733 invoked from network); 1 Nov 2006 21:44:09 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (83.161.120.155) by minotaur.apache.org with SMTP; 1 Nov 2006 21:44:09 -0000 Received: (qmail 40388 invoked by uid 500); 1 Nov 2006 21:44:20 -0000 Delivered-To: thomasnovak@example.net Received: (qmail 40368 invoked by uid 500); 1 Nov 2006 21:44:20 -0000 Mailing-List: contact thomasnovak@example.net; run by ezmlm Precedence: bulk List-Help: <mailto:thomasnovak@example.net> List-Unsubscribe: <mailto:thomasnovak@example.net> List-Post: <mailto:thomasnovak@example.net> List-Id: <qpid-commits.incubator.apache.org> Reply-To: thomasnovak@example.net Delivered-To: mailing list thomasnovak@example.net Received: (qmail 40359 invoked by uid 99); 1 Nov 2006 21:44:20 -0000 Received: from herse.apache.org (HELO herse.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 01 Nov 2006 13:44:20 -0800 X-ASF-Spam-Status: No, hits=-9.4 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [83.161.120.155] (HELO eris.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 01 Nov 2006 13:44:08 -0800 Received: by eris.apache.org (Postfix, from userid 65534) id 3442C1A9846; Wed, 1 Nov 2006 13:43:44 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r470110 - in /incubator/qpid/trunk/qpid/cpp: src/qpid/concurrent/LockedQueue.h src/qpid/concurrent/TaskQueue.h src_apr/qpid/concurrent/ThreadPool.cpp src_apr/qpid/concurrent/ThreadPool.h src_apr/qpid/io/Acceptor.h Date: Wed, 01 Nov 2006 21:43:44 -0000 To: thomasnovak@example.net From: thomasnovak@example.net X-Mailer: svnmailer-1.1.0 Message-Id: <thomasnovak@example.net> X-Virus-Checked: Checked by ClamAV on apache.org Author: aconway Date: Wed Nov 1 13:43:43 2006 New Revision: 470110 URL: http://svn.apache.org/viewvc?view=rev&rev=470110 Log: Removed unused code. Removed: incubator/qpid/trunk/qpid/cpp/src/qpid/concurrent/LockedQueue.h incubator/qpid/trunk/qpid/cpp/src/qpid/concurrent/TaskQueue.h incubator/qpid/trunk/qpid/cpp/src_apr/qpid/concurrent/ThreadPool.cpp incubator/qpid/trunk/qpid/cpp/src_apr/qpid/concurrent/ThreadPool.h Modified: incubator/qpid/trunk/qpid/cpp/src_apr/qpid/io/Acceptor.h Modified: incubator/qpid/trunk/qpid/cpp/src_apr/qpid/io/Acceptor.h URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src_apr/qpid/io/Acceptor.h?view=diff&rev=470110&r1=470109&r2=470110 ============================================================================== --- incubator/qpid/trunk/qpid/cpp/src_apr/qpid/io/Acceptor.h (original) +++ incubator/qpid/trunk/qpid/cpp/src_apr/qpid/io/Acceptor.h Wed Nov 1 13:43:43 2006 @@ -25,7 +25,6 @@ #include "qpid/io/Acceptor.h" #include "qpid/concurrent/Monitor.h" #include "qpid/concurrent/ThreadFactory.h" -#include "qpid/concurrent/ThreadPool.h" #include "qpid/io/LFProcessor.h" #include "qpid/io/LFSessionContext.h" #include "qpid/concurrent/Runnable.h" From qpid-commits-returnthomasnovak@example.net Wed Nov 01 22:01:43 2006 Return-Path: <qpid-commits-returnthomasnovak@example.net> Delivered-To: thomasnovak@example.net Received: (qmail 92254 invoked from network); 1 Nov 2006 22:01:43 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (83.161.120.155) by minotaur.apache.org with SMTP; 1 Nov 2006 22:01:43 -0000 Received: (qmail 63531 invoked by uid 500); 1 Nov 2006 22:01:54 -0000 Delivered-To: thomasnovak@example.net Received: (qmail 63502 invoked by uid 500); 1 Nov 2006 22:01:54 -0000 Mailing-List: contact thomasnovak@example.net; run by ezmlm Precedence: bulk List-Help: <mailto:thomasnovak@example.net> List-Unsubscribe: <mailto:thomasnovak@example.net> List-Post: <mailto:thomasnovak@example.net> List-Id: <qpid-commits.incubator.apache.org> Reply-To: thomasnovak@example.net Delivered-To: mailing list thomasnovak@example.net Received: (qmail 63493 invoked by uid 99); 1 Nov 2006 22:01:54 -0000 Received: from herse.apache.org (HELO herse.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 01 Nov 2006 14:01:54 -0800 X-ASF-Spam-Status: No, hits=-0.0 required=10.0 tests=SPF_HELO_PASS X-Spam-Check-By: apache.org Received: from [83.161.120.155] (HELO ajax.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 01 Nov 2006 14:01:41 -0800 Received: from ajax.apache.org (localhost [83.161.120.155]) by ajax.apache.org (Postfix) with ESMTP id 38514D495B for <thomasnovak@example.net>; Wed, 1 Nov 2006 22:01:20 +0000 (GMT) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Apache Wiki <thomasnovak@example.net> To: thomasnovak@example.net Date: Wed, 01 Nov 2006 22:01:20 -0000 Message-ID: <thomasnovak@example.net> Subject: [Qpid Wiki] Update of "HermesJMS" by cctrieloff X-Virus-Checked: Checked by ClamAV on apache.org Dear Wiki user, You have subscribed to a wiki page or wiki category on "Qpid Wiki" for change notification. The following page has been changed by cctrieloff: http://wiki.apache.org/qpid/HermesJMS ------------------------------------------------------------------------------ MIGRATED to http://cwiki.apache.org/confluence/display/qpid/HermesJMS - = This is a DRAFT = - - = Background = - - [http://hermesjms.com HermesJMS] is a console for JMS messaging and supports QPID. This page shows how to configure Hermes with QPID. - - As the QPID codebase is moving quickly forward at the moment and there are some workarounds in place within Hermes to support it, you should ensure that you download the latest Hermes build from [http://hermesjms.com/patches HEAD] - - Finally, you should familiarise youself with Hermes via the tutorials on the website before continuing. Look at the Tibco EMS and JBoss tutorials for how to use connection factories directly or via JNDI. This page uses them directly. - - = Configuring = - - To get QPID working, you need to configure the libraries to load via the GUI. Hermes loads up each provider in its own classloader to avoid any dependency problems across providers. This tutorial assumes you've downloaded and built QPID via the {{{ant dist}}} task. - - == Configure the CLASSPATH == - - Start Hermes and select ''Options -> Configuration'' and click on the ''Providers'' tab. Create a new classpath group (right click for this) and add the following JARS to it: - - [http://hermesjms.com/people/colin/images/hermes_qpid_classpath.jpg] - - - When asked, choose the scan option to get Hermes to search the libraries to find any classes that implement JMS connection factory interfaces, this is essential for the next step. - - Finally, click OK. - - == Configure The Session == - - Right click on the tree of sessions and select ''New -> Session''. In the session combo box at the top put in the name you want, for example QPID. Its important the next thing you do is select the loader so the dialog can find any connection factories. - - In the ''Class'' combo box choose the {{{org.apache.qpid.client.AMQConnectionFactory}}}. - - Next, in the property list for the connection factory, right click to add new properties and use the combo to select which one and add their value. - - Finally, and very importantly, check the ''Use consumer'' checkbox at the top. QPID does not support JMS queue browsing but Hermes lets you use a {{{MessageConsumer}}} instead. Remember of course that if an consumer is currently active you will not get the real queue content, Hermes uses a transacted session and some messages may be uncommitted in another consumers session. - - == Add Destinations == - - Currently you must manually add queues and topics. You can add them now or later from the ''New queue'', ''New topic'' or ''New durable subscription'' actions in the toolbar. If you add them now then right click in the destination list to add them. - - The session and destinations should look something like this. Once happy, click OK. - - [http://hermesjms.com/people/colin/images/hermes_qpid_session.jpg] - - == Try a Browse == - - Finally, double click on a queue or topic in the newly created session in the tree and you should get see something like the following (assuming you've got something in the queue or being published in the topic to see): - - [http://hermesjms.com/people/colin/images/hermes_qpid_bytes.jpg] - - This message is a JMS {{{BytesMessage}}} so there not much to see until you see its really a [FIX http://fixprotocol.org] message and clicking on the FIX tab reveals it. - - [http://hermesjms.com/people/colin/images/hermes_qpid_fix.jpg] - - = Other Features = - - Refer to the [http://hermesjms.com HermesJMS] site for how to use all the other feature of HermesJMS with QPID. - - = Issues = - - 1. Queues must already exist before you browse them. - - 1. {{{get/setJMSDestination()}}} is not supported on a message so {{{Unknown}}} is shown. - From qpid-commits-returnthomasnovak@example.net Wed Nov 01 22:02:19 2006 Return-Path: <qpid-commits-returnthomasnovak@example.net> Delivered-To: thomasnovak@example.net Received: (qmail 92329 invoked from network); 1 Nov 2006 22:02:18 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (83.161.120.155) by minotaur.apache.org with SMTP; 1 Nov 2006 22:02:18 -0000 Received: (qmail 63788 invoked by uid 500); 1 Nov 2006 22:02:30 -0000 Delivered-To: thomasnovak@example.net Received: (qmail 63758 invoked by uid 500); 1 Nov 2006 22:02:30 -0000 Mailing-List: contact thomasnovak@example.net; run by ezmlm Precedence: bulk List-Help: <mailto:thomasnovak@example.net> List-Unsubscribe: <mailto:thomasnovak@example.net> List-Post: <mailto:thomasnovak@example.net> List-Id: <qpid-commits.incubator.apache.org> Reply-To: thomasnovak@example.net Delivered-To: mailing list thomasnovak@example.net Received: (qmail 63749 invoked by uid 99); 1 Nov 2006 22:02:30 -0000 Received: from herse.apache.org (HELO herse.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 01 Nov 2006 14:02:30 -0800 X-ASF-Spam-Status: No, hits=-0.0 required=10.0 tests=SPF_HELO_PASS X-Spam-Check-By: apache.org Received: from [83.161.120.155] (HELO ajax.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 01 Nov 2006 14:02:18 -0800 Received: from ajax.apache.org (localhost [83.161.120.155]) by ajax.apache.org (Postfix) with ESMTP id 234D5D495B for <thomasnovak@example.net>; Wed, 1 Nov 2006 22:01:57 +0000 (GMT) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Apache Wiki <thomasnovak@example.net> To: thomasnovak@example.net Date: Wed, 01 Nov 2006 22:01:57 -0000 Message-ID: <thomasnovak@example.net> Subject: [Qpid Wiki] Update of "ClusteringAndFederation" by cctrieloff X-Virus-Checked: Checked by ClamAV on apache.org Dear Wiki user, You have subscribed to a wiki page or wiki category on "Qpid Wiki" for change notification. The following page has been changed by cctrieloff: http://wiki.apache.org/qpid/ClusteringAndFederation ------------------------------------------------------------------------------ MIGRATED to http://cwiki.apache.org/confluence/display/qpid/ClusteringAndFederation - Each diagram below depicts a distributed network of exchanges and queues. The following notation is used in all diagrams: - * M: message - * E: exchange - * Q: queue - - == Multicast == - - {{{ - M1...Mn - +--------> Q - | - | M1...Mn - M1...Mn ---> E----+--------> Q - | - | M1...Mn - +--------> Q - }}} - - Queue contents are duplicated across all queues. For this scenario PGM - would be ideal between E and Q, or even directly between E and - consumers. - - == Load Balancing == - - {{{ - M1 - +--------> Q - | - | ... - M1...Mn ---> E----+--------> Q - | - | Mn - +--------> Q - }}} - - No ordering is guaranteed accross different queues. A naive - implementation could just be an exchange doing round-robin routing or - any algorithm of choice. A more complicated exchange could have flow - control between each queue and the exchange. - - == Multiple Exchanges == - - {{{ - M? ---> E1-----+ +-----> Q1 - | | - | (n*m arrows) | - M? ---> E2-----+--------------+-----> Q2 - | | - | | - M? ---> En-----+ +-----> Qm - }}} - - Both the Load Balancing and Multicast scenarios can be extended by - adding multiple exchange nodes wired into the same (or an overlapping) - set of queues. One virtual mega exchange (with relaxed ordering - semantics) could be created by segmenting client connections between - exchanges. This could be done using a number of strategies, e.g. - round-robin dns, name mangling, redirects. - - The topologies described above could in theory be use in a variety of - scenarios ranging from an an isolated high speed subnet with - identically configured nodes to a loosely coupled WAN with separately - administered nodes. In fact a single network could include exchanges - bound to local queues, remote queues available on an isolated high - speed subnet, and remote destinations (exchange or queue) available - over WAN/internet. In the last case the exchange may be requred to - queue messages routed to the remote destination if the WAN/internet - link is down. - - In the terminology I've been using, a cluster is a set of machines - sharing the same software and configuration, and generally connected - via an isolated high speed subnet. A federation on the other hand - consists of distinctly configured machines individually wired - together. Both clustering and federation *could* share a common - protocol for message delivery. This could possibly even be used for - multicast if it were a simple stateless store-and-forward protocol. - (Note the "store" in "store-and-forward" can mean both store on disk - and store in memory.) - - With this model the key distinction between a cluster and a federation - is that all the nodes in a cluster are managed as a single unit, e.g. - one place to start/stop/add/remove/etc. Because of this the nodes in a - cluster have to pass control messages to each other distinct from the - general message traffic. These control messages need to be isolated - from the general message traffic (e.g. on their own subnet). This - could be done using JGroups and OpenAIS for Java and C++ respectively. - - This document doesn't directly address fault tolerance, but it is - assumed that any node/broker that contains state can be configured to - have a passive counterpart that supports two methodologies for - failover. Broker swapout based on virtual IP, or client reconnect to a - backup IP. - From qpid-commits-returnthomasnovak@example.net Wed Nov 01 22:02:59 2006 Return-Path: <qpid-commits-returnthomasnovak@example.net> Delivered-To: thomasnovak@example.net Received: (qmail 92492 invoked from network); 1 Nov 2006 22:02:58 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (83.161.120.155) by minotaur.apache.org with SMTP; 1 Nov 2006 22:02:58 -0000 Received: (qmail 64287 invoked by uid 500); 1 Nov 2006 22:03:10 -0000 Delivered-To: thomasnovak@example.net Received: (qmail 64270 invoked by uid 500); 1 Nov 2006 22:03:10 -0000 Mailing-List: contact thomasnovak@example.net; run by ezmlm Precedence: bulk List-Help: <mailto:thomasnovak@example.net> List-Unsubscribe: <mailto:thomasnovak@example.net> List-Post: <mailto:thomasnovak@example.net> List-Id: <qpid-commits.incubator.apache.org> Reply-To: thomasnovak@example.net Delivered-To: mailing list thomasnovak@example.net Received: (qmail 64261 invoked by uid 99); 1 Nov 2006 22:03:10 -0000 Received: from herse.apache.org (HELO herse.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 01 Nov 2006 14:03:10 -0800 X-ASF-Spam-Status: No, hits=-0.0 required=10.0 tests=SPF_HELO_PASS X-Spam-Check-By: apache.org Received: from [83.161.120.155] (HELO ajax.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 01 Nov 2006 14:02:58 -0800 Received: from ajax.apache.org (localhost [83.161.120.155]) by ajax.apache.org (Postfix) with ESMTP id 5FACAD495B for <thomasnovak@example.net>; Wed, 1 Nov 2006 22:02:37 +0000 (GMT) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Apache Wiki <thomasnovak@example.net> To: thomasnovak@example.net Date: Wed, 01 Nov 2006 22:02:37 -0000 Message-ID: <thomasnovak@example.net> Subject: [Qpid Wiki] Update of "ClusteringHA" by cctrieloff X-Virus-Checked: Checked by ClamAV on apache.org Dear Wiki user, You have subscribed to a wiki page or wiki category on "Qpid Wiki" for change notification. The following page has been changed by cctrieloff: http://wiki.apache.org/qpid/ClusteringHA ------------------------------------------------------------------------------ MIGRATED to http://cwiki.apache.org/confluence/display/qpid/ClusteringHA - == Defintitions == - - The topic is being broken up into three sections: - - * Federation (a set of distributed exchanges and queues, seperately managed and wired together) - * Clustering (a set of distributed exchanges and queues managed as a single entity) - * HA / Fault tolarance (the ability for exchanges and queues, clustered, federated, or isolated to replicated important state to a backup (failover partner)) - * Failover (the ability for a client to reconnect to the failover partner) - - == Use Cases == - - === Abstract Use Cases === - - * ClusteringAndFederation - - == Design notes == - * Clustering design notes ["Clustering"] - From qpid-commits-returnthomasnovak@example.net Wed Nov 01 22:03:42 2006 Return-Path: <qpid-commits-returnthomasnovak@example.net> Delivered-To: thomasnovak@example.net Received: (qmail 92631 invoked from network); 1 Nov 2006 22:03:42 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (83.161.120.155) by minotaur.apache.org with SMTP; 1 Nov 2006 22:03:42 -0000 Received: (qmail 64619 invoked by uid 500); 1 Nov 2006 22:03:53 -0000 Delivered-To: thomasnovak@example.net Received: (qmail 64591 invoked by uid 500); 1 Nov 2006 22:03:53 -0000 Mailing-List: contact thomasnovak@example.net; run by ezmlm Precedence: bulk List-Help: <mailto:thomasnovak@example.net> List-Unsubscribe: <mailto:thomasnovak@example.net> List-Post: <mailto:thomasnovak@example.net> List-Id: <qpid-commits.incubator.apache.org> Reply-To: thomasnovak@example.net Delivered-To: mailing list thomasnovak@example.net Received: (qmail 64577 invoked by uid 99); 1 Nov 2006 22:03:53 -0000 Received: from herse.apache.org (HELO herse.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 01 Nov 2006 14:03:53 -0800 X-ASF-Spam-Status: No, hits=-0.0 required=10.0 tests=SPF_HELO_PASS X-Spam-Check-By: apache.org Received: from [83.161.120.155] (HELO ajax.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 01 Nov 2006 14:03:41 -0800 Received: from ajax.apache.org (localhost [83.161.120.155]) by ajax.apache.org (Postfix) with ESMTP id A114BD495B for <thomasnovak@example.net>; Wed, 1 Nov 2006 22:03:20 +0000 (GMT) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Apache Wiki <thomasnovak@example.net> To: thomasnovak@example.net Date: Wed, 01 Nov 2006 22:03:20 -0000 Message-ID: <thomasnovak@example.net> Subject: [Qpid Wiki] Update of "QpidReleasePage/ReleaseCandidateTestPlatforms" by cctrieloff X-Virus-Checked: Checked by ClamAV on apache.org Dear Wiki user, You have subscribed to a wiki page or wiki category on "Qpid Wiki" for change notification. The following page has been changed by cctrieloff: http://wiki.apache.org/qpid/QpidReleasePage/ReleaseCandidateTestPlatforms ------------------------------------------------------------------------------ MIGRATED to http://cwiki.apache.org/confluence/display/qpid/RC+Multi-Platform+Testing - Any QPID release candidate should be tested on the following supported platforms: - - * Linux 2.6+ - * Windows XP 5+ - * Solaris 8 (SunOS 5.8)+ - * Cygwin v? - - It shall be a quality gateway for any RC that it must run successfully (define tests here ?) on all platforms supported. All scripts will run successfully on these platforms (*.sh on all unix/linux style OSs and *.bat on Windows). - - Multi-platform operability is a key attribute for QPID users and thus we must ensure that changes applied do not compromise this. - From qpid-commits-returnthomasnovak@example.net Wed Nov 01 22:04:13 2006 Return-Path: <qpid-commits-returnthomasnovak@example.net> Delivered-To: thomasnovak@example.net Received: (qmail 92661 invoked from network); 1 Nov 2006 22:04:13 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (83.161.120.155) by minotaur.apache.org with SMTP; 1 Nov 2006 22:04:13 -0000 Received: (qmail 64716 invoked by uid 500); 1 Nov 2006 22:04:24 -0000 Delivered-To: thomasnovak@example.net Received: (qmail 64701 invoked by uid 500); 1 Nov 2006 22:04:24 -0000 Mailing-List: contact thomasnovak@example.net; run by ezmlm Precedence: bulk List-Help: <mailto:thomasnovak@example.net> List-Unsubscribe: <mailto:thomasnovak@example.net> List-Post: <mailto:thomasnovak@example.net> List-Id: <qpid-commits.incubator.apache.org> Reply-To: thomasnovak@example.net Delivered-To: mailing list thomasnovak@example.net Received: (qmail 64691 invoked by uid 99); 1 Nov 2006 22:04:24 -0000 Received: from herse.apache.org (HELO herse.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 01 Nov 2006 14:04:24 -0800 X-ASF-Spam-Status: No, hits=-0.0 required=10.0 tests=SPF_HELO_PASS X-Spam-Check-By: apache.org Received: from [83.161.120.155] (HELO ajax.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 01 Nov 2006 14:04:12 -0800 Received: from ajax.apache.org (localhost [83.161.120.155]) by ajax.apache.org (Postfix) with ESMTP id EC139D495B for <thomasnovak@example.net>; Wed, 1 Nov 2006 22:03:51 +0000 (GMT) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Apache Wiki <thomasnovak@example.net> To: thomasnovak@example.net Date: Wed, 01 Nov 2006 22:03:51 -0000 Message-ID: <thomasnovak@example.net> Subject: [Qpid Wiki] Update of "QpidReleasePage/M1Release" by cctrieloff X-Virus-Checked: Checked by ClamAV on apache.org Dear Wiki user, You have subscribed to a wiki page or wiki category on "Qpid Wiki" for change notification. The following page has been changed by cctrieloff: http://wiki.apache.org/qpid/QpidReleasePage/M1Release ------------------------------------------------------------------------------ MIGRATED to http://cwiki.apache.org/confluence/display/qpid/M1+Release - = M1 Release = - - Target Date - TBD - - Release Manager - TBD - - == Feature List == - * Basic Documentation and Samples - From qpid-commits-returnthomasnovak@example.net Wed Nov 01 22:04:44 2006 Return-Path: <qpid-commits-returnthomasnovak@example.net> Delivered-To: thomasnovak@example.net Received: (qmail 92997 invoked from network); 1 Nov 2006 22:04:44 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (83.161.120.155) by minotaur.apache.org with SMTP; 1 Nov 2006 22:04:44 -0000 Received: (qmail 68946 invoked by uid 500); 1 Nov 2006 22:04:55 -0000 Delivered-To: thomasnovak@example.net Received: (qmail 68932 invoked by uid 500); 1 Nov 2006 22:04:55 -0000 Mailing-List: contact thomasnovak@example.net; run by ezmlm Precedence: bulk List-Help: <mailto:thomasnovak@example.net> List-Unsubscribe: <mailto:thomasnovak@example.net> List-Post: <mailto:thomasnovak@example.net> List-Id: <qpid-commits.incubator.apache.org> Reply-To: thomasnovak@example.net Delivered-To: mailing list thomasnovak@example.net Received: (qmail 68923 invoked by uid 99); 1 Nov 2006 22:04:55 -0000 Received: from herse.apache.org (HELO herse.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 01 Nov 2006 14:04:55 -0800 X-ASF-Spam-Status: No, hits=-0.0 required=10.0 tests=SPF_HELO_PASS X-Spam-Check-By: apache.org Received: from [83.161.120.155] (HELO ajax.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 01 Nov 2006 14:04:43 -0800 Received: from ajax.apache.org (localhost [83.161.120.155]) by ajax.apache.org (Postfix) with ESMTP id A9486D495B for <thomasnovak@example.net>; Wed, 1 Nov 2006 22:04:22 +0000 (GMT) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Apache Wiki <thomasnovak@example.net> To: thomasnovak@example.net Date: Wed, 01 Nov 2006 22:04:22 -0000 Message-ID: <thomasnovak@example.net> Subject: [Qpid Wiki] Update of "QpidReleasePage/QpidReleaseProcess" by cctrieloff X-Virus-Checked: Checked by ClamAV on apache.org Dear Wiki user, You have subscribed to a wiki page or wiki category on "Qpid Wiki" for change notification. The following page has been changed by cctrieloff: http://wiki.apache.org/qpid/QpidReleasePage/QpidReleaseProcess ------------------------------------------------------------------------------ MIGRATED to http://cwiki.apache.org/confluence/display/qpid/QpidReleaseProcess - = Qpid Release Process = - - I think, this is a good time for us to discuss and agree on a release mechanism that's agreeable to the Apache way. - As per my observations from projects like Axis2, Synapse, Tuscany, Geronimo ...etc the release process is as follows. - - We start with milestone releases (M1, M2 ...Mx) until we graduate from the incubator. - Once graduated we can start doing a couple of 0.9x releases before we hit the grand 1.0 release. - - Here is the typical setup for any release. - Everything is decided based on a public voting on the list. (only binding votes are counted) - - == Pre Release == - - 1. Create a wiki page and start capturing the feature/bug fix list for the release - 2. We can start a discussion thread and then come to a concensus on the final list - 3. These items should be tracked by jira or other means (jira is preffered) - 4. We can start a parallel thread on the release dates. - - == Release Process == - - 1. We should do a code freeze and put out a release candidate (ex RC1) - 2. We should allow a minimum of one week for people to test/check out the RC - 3. If there are major issues maybe do a RC2 and follow the same process - 4. If a majority is happy then we can do a code freeze and cut out a release. - 5. We should provide a 1.4 [http://retrotranslator.sourceforge.net/ retrotranslator] build of the client (only) with each release we make - - For incubator projects, I believe the incubator PMC has to vote on a release. - Cliff, Paul can you please confirm?? - - For the first release I will volunteer to cordinate it. - Comments are appreciated. - From qpid-commits-returnthomasnovak@example.net Wed Nov 01 22:05:15 2006 Return-Path: <qpid-commits-returnthomasnovak@example.net> Delivered-To: thomasnovak@example.net Received: (qmail 93164 invoked from network); 1 Nov 2006 22:05:15 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (83.161.120.155) by minotaur.apache.org with SMTP; 1 Nov 2006 22:05:15 -0000 Received: (qmail 69283 invoked by uid 500); 1 Nov 2006 22:05:26 -0000 Delivered-To: thomasnovak@example.net Received: (qmail 69273 invoked by uid 500); 1 Nov 2006 22:05:26 -0000 Mailing-List: contact thomasnovak@example.net; run by ezmlm Precedence: bulk List-Help: <mailto:thomasnovak@example.net> List-Unsubscribe: <mailto:thomasnovak@example.net> List-Post: <mailto:thomasnovak@example.net> List-Id: <qpid-commits.incubator.apache.org> Reply-To: thomasnovak@example.net Delivered-To: mailing list thomasnovak@example.net Received: (qmail 69264 invoked by uid 99); 1 Nov 2006 22:05:26 -0000 Received: from herse.apache.org (HELO herse.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 01 Nov 2006 14:05:26 -0800 X-ASF-Spam-Status: No, hits=-0.0 required=10.0 tests=SPF_HELO_PASS X-Spam-Check-By: apache.org Received: from [83.161.120.155] (HELO ajax.apache.org) (83.161.120.155) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 01 Nov 2006 14:05:14 -0800 Received: from ajax.apache.org (localhost [83.161.120.155]) by ajax.apache.org (Postfix) with ESMTP id DB4F7D495B for <thomasnovak@example.net>; Wed, 1 Nov 2006 22:04:53 +0000 (GMT) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Apache Wiki <thomasnovak@example.net> To: thomasnovak@example.net Date: Wed, 01 Nov 2006 22:04:53 -0000 Message-ID: <thomasnovak@example.net> Subject: [Qpid Wiki] Update of "QpidReleasePage" by cctrieloff X-Virus-Checked: Checked by ClamAV on apache.org Dear Wiki user, You have subscribed to a wiki page or wiki category on "Qpid Wiki" for change notification. The following page has been changed by cctrieloff: http://wiki.apache.org/qpid/QpidReleasePage ------------------------------------------------------------------------------ MIGRATED to http://cwiki.apache.org/confluence/display/qpid/Qpid+Release+Page - = Qpid Release Page = - - == General Information == - This page contains details about the Qpid release process. - * [wiki:/QpidReleaseProcess Qpid Release Process] - * Release guidlines for Incubator projects - * http://incubator.apache.org/incubation/Incubation_Policy.html - * http://incubator.apache.org/guides/releasemanagement.html - * http://incubator.apache.org/guides/sites.html - - == Qpid Release Pages == - These pages capture the requirments/feature list for each release. - - * [wiki:/M1Release M1 Release] - * [wiki:/ReleaseCandidateTestPlatforms RC Multi-Platform Testing] - From qpid-commits-returnthomasnovak@example.net Wed Nov 01 22:06:19 2006 Return-Path: <qpid-commits-returnthomasnovak@example.net> Delivered-To: thomasnovak@example.net Received: (qmail 93491 invoked from network); 1 Nov 2006 22:06:15 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (83.161.120.155) by minotaur.apache.org with SMTP; 1 Nov 2006 22:06:15 -0000 Received: (qmail 71071 invoked by uid 500); 1 Nov 2006 22:06:16 -0000 Delivered-To: thomasnovak@example.net Received: (qmail 71058 invoked by uid 500); 1 Nov 2006 22:06:16 -0000
{'source': 'Apache Software Foundation Public Mail Archives'}