summaryrefslogtreecommitdiff
path: root/gentools/src
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2007-02-02 22:03:10 +0000
committerAlan Conway <aconway@apache.org>2007-02-02 22:03:10 +0000
commitb5c270f10496f522ef6a03a8fa60f85d55c9187d (patch)
tree714e7abf7ba591d00232d821440e51461175cb9e /gentools/src
parent750f272ac99e8c830807affb3ae68ab0beeca63f (diff)
downloadqpid-python-b5c270f10496f522ef6a03a8fa60f85d55c9187d.tar.gz
* cpp/lib/common/framing/MethodContext.h: Reduced MethodContext to
ChannelAdapter and Method Body. Request ID comes from body, ChannelAdapter is used to send frames, not OutputHandler. * cpp/lib/common/framing/ChannelAdapter.h,.cpp: Removed context member. Context is per-method not per-channel. * cpp/lib/broker/*: Replace direct use of OutputHandler and ChannelId with MethodContext (for responses) or ChannelAdapter (for requests.) Use context request-ID to construct responses, send all bodies via ChannelAdapter. * cpp/lib/broker/BrokerAdapter.cpp: Link broker::Channel to BrokerAdapter. * cpp/lib/broker/*: Remove unnecessary ProtocolVersion parameters. Fix bogus signatures: ProtocolVersion* -> const ProtocolVersion& * Cosmetic changes, many files: - fixed indentation, broke long lines. - removed unnecessary qpid:: prefixes. * broker/BrokerAdapter,BrokerChannel: Merged BrokerAdapter into broker::channel. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/branches/qpid.0-9@502767 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'gentools/src')
-rw-r--r--gentools/src/org/apache/qpid/gentools/AmqpMethod.java6
-rw-r--r--gentools/src/org/apache/qpid/gentools/CppGenerator.java40
2 files changed, 30 insertions, 16 deletions
diff --git a/gentools/src/org/apache/qpid/gentools/AmqpMethod.java b/gentools/src/org/apache/qpid/gentools/AmqpMethod.java
index 0efa9ae260..f3c5bdd935 100644
--- a/gentools/src/org/apache/qpid/gentools/AmqpMethod.java
+++ b/gentools/src/org/apache/qpid/gentools/AmqpMethod.java
@@ -36,7 +36,7 @@ public class AmqpMethod implements Printable, NodeAware, VersionConsistencyCheck
public AmqpFlagMap clientMethodFlagMap; // Method called on client (<chassis name="server"> in XML)
public AmqpFlagMap serverMethodFlagMap; // Method called on server (<chassis name="client"> in XML)
public AmqpFlagMap isResponseFlagMap;
-
+
public AmqpMethod(String name, LanguageConverter converter)
{
this.name = name;
@@ -49,6 +49,10 @@ public class AmqpMethod implements Printable, NodeAware, VersionConsistencyCheck
isResponseFlagMap = new AmqpFlagMap();
}
+ public boolean isResponse(AmqpVersion version) {
+ return (version == null) ? isResponseFlagMap.isSet() : isResponseFlagMap.isSet(version);
+ }
+
/** Check if this method is named as a response by any other method in the class. */
public void checkForResponse(Element methodElement, AmqpVersion version) {
Element clazz = (Element)methodElement.getParentNode();
diff --git a/gentools/src/org/apache/qpid/gentools/CppGenerator.java b/gentools/src/org/apache/qpid/gentools/CppGenerator.java
index 122a5b0820..8b6a7eb49c 100644
--- a/gentools/src/org/apache/qpid/gentools/CppGenerator.java
+++ b/gentools/src/org/apache/qpid/gentools/CppGenerator.java
@@ -361,8 +361,7 @@ public class CppGenerator extends Generator
}
private String baseClass(AmqpMethod method, AmqpVersion version) {
- boolean isResponse = (version == null) ? method.isResponseFlagMap.isSet() : method.isResponseFlagMap.isSet(version);
- String base = isResponse ? "AMQResponseBody":"AMQRequestBody";
+ String base = method.isResponse(version) ? "AMQResponseBody":"AMQRequestBody";
return base;
}
@@ -1009,7 +1008,7 @@ public class CppGenerator extends Generator
sb.append(" // AMQP Version(s) " + versionSet);
sb.append(cr);
sb.append(indent + "{" + cr);
- sb.append(generateMethodBodyCallContext(thisFieldMap, outerclassName, methodBodyClassName,
+ sb.append(generateMethodBodyCallContext(method, thisFieldMap, outerclassName, methodBodyClassName,
versionConsistentFlag, versionSet, indentSize + tabSize, tabSize));
sb.append(indent + "}" + cr);
sb.append(cr);
@@ -1020,7 +1019,7 @@ public class CppGenerator extends Generator
return sb.toString();
}
- protected String generateMethodBodyCallContext(AmqpOrdinalFieldMap fieldMap, String outerclassName,
+ protected String generateMethodBodyCallContext(AmqpMethod method, AmqpOrdinalFieldMap fieldMap, String outerclassName,
String methodBodyClassName, boolean versionConsistentFlag, AmqpVersionSet versionSet,
int indentSize, int tabSize)
throws AmqpTypeMappingException
@@ -1030,7 +1029,7 @@ public class CppGenerator extends Generator
StringBuffer sb = new StringBuffer();
if (versionConsistentFlag)
{
- sb.append(generateMethodBodyCall(fieldMap, methodBodyClassName, null, indentSize, tabSize));
+ sb.append(generateMethodBodyCall(method, fieldMap, methodBodyClassName, null, indentSize, tabSize));
}
else
{
@@ -1042,7 +1041,7 @@ public class CppGenerator extends Generator
sb.append("else ");
sb.append("if (" + generateVersionCheck(thisVersion) + ")" + cr);
sb.append(indent + "{" + cr);
- sb.append(generateMethodBodyCall(fieldMap, methodBodyClassName, thisVersion,
+ sb.append(generateMethodBodyCall(method, fieldMap, methodBodyClassName, thisVersion,
indentSize + tabSize, tabSize));
sb.append(indent + "}" + cr);
firstOverloadedMethodFlag = false;
@@ -1059,7 +1058,7 @@ public class CppGenerator extends Generator
return sb.toString();
}
- protected String generateMethodBodyCall(AmqpOrdinalFieldMap fieldMap, String methodBodyClassName,
+ protected String generateMethodBodyCall(AmqpMethod method, AmqpOrdinalFieldMap fieldMap, String methodBodyClassName,
AmqpVersion version, int indentSize, int tabSize)
throws AmqpTypeMappingException
{
@@ -1067,9 +1066,12 @@ public class CppGenerator extends Generator
String tab = Utils.createSpaces(tabSize);
String namespace = version != null ? version.namespace() + "::" : "";
StringBuffer sb = new StringBuffer();
- sb.append(indent + tab + "(new " + namespace + methodBodyClassName + "( parent->getProtocolVersion()");
+ sb.append(indent+tab+"context.channel->send(new ");
+ sb.append(namespace + methodBodyClassName + "( parent->getProtocolVersion()");
+ if (method.isResponse(version))
+ sb.append(", context.methodBody->getRequestId()");
sb.append(generateMethodParameterList(fieldMap, indentSize + (5*tabSize), true, false, true));
- sb.append("))->send(context);\n");
+ sb.append("));\n");
return sb.toString();
}
@@ -1425,14 +1427,22 @@ public class CppGenerator extends Generator
String indent = Utils.createSpaces(indentSize);
String tab = Utils.createSpaces(tabSize);
StringBuffer sb = new StringBuffer();
- if (method.fieldMap.size() > 0)
+ if (method.fieldMap.size() > 0 || method.isResponse(version))
{
sb.append(indent + thisClass.name + Utils.firstUpper(method.name) + "Body(const ProtocolVersion& version," + cr);
- sb.append(generateFieldList(method.fieldMap, version, true, false, 8));
- sb.append(indent + tab + ") :" + cr);
- sb.append(indent + tab + baseClass(method, version) + "(version)," + cr);
- sb.append(generateFieldList(method.fieldMap, version, false, true, 8));
- sb.append(indent + "{ }" + cr);
+ if (method.isResponse(version)) {
+ sb.append(indent+tab+"RequestId toRequest");
+ if (method.fieldMap.size() >0)
+ sb.append(",\n");
+ }
+ sb.append(generateFieldList(method.fieldMap, version, true, false, 8));
+ sb.append(indent + tab + ") : " + baseClass(method, version) + "(version");
+ if (method.isResponse(version))
+ sb.append(", 0, toRequest");
+ sb.append(")");
+ if (method.fieldMap.size() > 0)
+ sb.append(", \n" + generateFieldList(method.fieldMap, version, false, true, 8));
+ sb.append(indent + "{ }\n");
}
return sb.toString();
}