summaryrefslogtreecommitdiff
path: root/compiler/cpp
diff options
context:
space:
mode:
authorJens Geyer <jensg@apache.org>2014-09-17 22:25:48 +0200
committerJens Geyer <jensg@apache.org>2014-09-17 22:36:00 +0200
commita86886e77d355ec7523f0b9041f9f0ac03e4dd33 (patch)
tree0538fd9777d28924b4cccd54919744afeb4355fe /compiler/cpp
parent3e8d9272cecfb6dcfe7a03faafdba295c7d1838e (diff)
downloadthrift-a86886e77d355ec7523f0b9041f9f0ac03e4dd33.tar.gz
THRIFT-2704 - compiler: T_ONEWAY type used for oneway methods instead of T_CALL
Patch: Konrad Grochowski This closes #216
Diffstat (limited to 'compiler/cpp')
-rw-r--r--compiler/cpp/src/generate/t_as3_generator.cc4
-rw-r--r--compiler/cpp/src/generate/t_c_glib_generator.cc6
-rw-r--r--compiler/cpp/src/generate/t_cocoa_generator.cc2
-rwxr-xr-xcompiler/cpp/src/generate/t_cpp_generator.cc4
-rw-r--r--compiler/cpp/src/generate/t_csharp_generator.cc4
-rw-r--r--compiler/cpp/src/generate/t_delphi_generator.cc4
-rw-r--r--compiler/cpp/src/generate/t_go_generator.cc5
-rw-r--r--compiler/cpp/src/generate/t_hs_generator.cc3
-rw-r--r--compiler/cpp/src/generate/t_java_generator.cc5
-rw-r--r--compiler/cpp/src/generate/t_javame_generator.cc4
-rw-r--r--compiler/cpp/src/generate/t_js_generator.cc12
-rw-r--r--compiler/cpp/src/generate/t_lua_generator.cc5
-rw-r--r--compiler/cpp/src/generate/t_ocaml_generator.cc4
-rw-r--r--compiler/cpp/src/generate/t_perl_generator.cc4
-rw-r--r--compiler/cpp/src/generate/t_php_generator.cc12
-rw-r--r--compiler/cpp/src/generate/t_py_generator.cc9
16 files changed, 63 insertions, 24 deletions
diff --git a/compiler/cpp/src/generate/t_as3_generator.cc b/compiler/cpp/src/generate/t_as3_generator.cc
index a965aabf6..42486d67f 100644
--- a/compiler/cpp/src/generate/t_as3_generator.cc
+++ b/compiler/cpp/src/generate/t_as3_generator.cc
@@ -1677,7 +1677,9 @@ void t_as3_generator::generate_service_client(t_service* tservice) {
// Serialize the request
f_service_ <<
- indent() << "oprot_.writeMessageBegin(new TMessage(\"" << funname << "\", TMessageType.CALL, seqid_));" << endl <<
+ indent() << "oprot_.writeMessageBegin(new TMessage(\"" << funname << "\", " <<
+ ((*f_iter)->is_oneway() ? "TMessageType.ONEWAY" : "TMessageType.CALL") <<
+ ", seqid_));" << endl <<
indent() << "var args:" << argsname << " = new " << argsname << "();" << endl;
for (fld_iter = fields.begin(); fld_iter != fields.end(); ++fld_iter) {
diff --git a/compiler/cpp/src/generate/t_c_glib_generator.cc b/compiler/cpp/src/generate/t_c_glib_generator.cc
index c726b0c5a..dbb8a2a47 100644
--- a/compiler/cpp/src/generate/t_c_glib_generator.cc
+++ b/compiler/cpp/src/generate/t_c_glib_generator.cc
@@ -1517,6 +1517,8 @@ void t_c_glib_generator::generate_service_client(t_service *tservice) {
function_signature (&send_function) << endl;
scope_up(f_service_);
+ string reqType = (*f_iter)->is_oneway() ? "T_ONEWAY" : "T_CALL";
+
// Serialize the request
f_service_ <<
indent() << "gint32 cseqid = 0;" << endl <<
@@ -1524,8 +1526,8 @@ void t_c_glib_generator::generate_service_client(t_service *tservice) {
this->nspace_uc << base_service_name_uc <<
"_CLIENT (iface)->output_protocol;" << endl <<
endl <<
- indent() << "if (thrift_protocol_write_message_begin (protocol, \"" <<
- name << "\", T_CALL, cseqid, error) < 0)" << endl <<
+ indent() << "if (thrift_protocol_write_message_begin (protocol, \""
+ << name << "\", " << reqType << ", cseqid, error) < 0)" << endl <<
indent() << " return FALSE;" << endl <<
endl;
diff --git a/compiler/cpp/src/generate/t_cocoa_generator.cc b/compiler/cpp/src/generate/t_cocoa_generator.cc
index 20973a3c0..f765f7d26 100644
--- a/compiler/cpp/src/generate/t_cocoa_generator.cc
+++ b/compiler/cpp/src/generate/t_cocoa_generator.cc
@@ -1401,7 +1401,7 @@ void t_cocoa_generator::generate_cocoa_service_client_implementation(ofstream& o
// Serialize the request
out <<
indent() << "[outProtocol writeMessageBeginWithName: @\"" << funname << "\"" <<
- " type: TMessageType_CALL" <<
+ ((*f_iter)->is_oneway() ? " type: TMessageType_ONEWAY" : " type: TMessageType_CALL") <<
" sequenceID: 0];" << endl;
out <<
diff --git a/compiler/cpp/src/generate/t_cpp_generator.cc b/compiler/cpp/src/generate/t_cpp_generator.cc
index f019ba86a..ce298ad74 100755
--- a/compiler/cpp/src/generate/t_cpp_generator.cc
+++ b/compiler/cpp/src/generate/t_cpp_generator.cc
@@ -2756,7 +2756,9 @@ void t_cpp_generator::generate_service_client(t_service* tservice, string style)
indent() << "int32_t cseqid = 0;" << endl <<
indent() << _this << "oprot_->writeMessageBegin(\"" <<
(*f_iter)->get_name() <<
- "\", ::apache::thrift::protocol::T_CALL, cseqid);" << endl <<
+ "\", ::apache::thrift::protocol::" <<
+ ((*f_iter)->is_oneway() ? "T_ONEWAY" : "T_CALL") <<
+ ", cseqid);" << endl <<
endl <<
indent() << argsname << " args;" << endl;
diff --git a/compiler/cpp/src/generate/t_csharp_generator.cc b/compiler/cpp/src/generate/t_csharp_generator.cc
index 7944df0ef..1d66cefed 100644
--- a/compiler/cpp/src/generate/t_csharp_generator.cc
+++ b/compiler/cpp/src/generate/t_csharp_generator.cc
@@ -1718,7 +1718,9 @@ void t_csharp_generator::generate_service_client(t_service* tservice) {
scope_up(f_service_);
f_service_ <<
- indent() << "oprot_.WriteMessageBegin(new TMessage(\"" << funname << "\", TMessageType.Call, seqid_));" << endl <<
+ indent() << "oprot_.WriteMessageBegin(new TMessage(\"" << funname << "\", " <<
+ ((*f_iter)->is_oneway() ? "TMessageType.Oneway" : "TMessageType.Call") <<
+ ", seqid_));" << endl <<
indent() << argsname << " args = new " << argsname << "();" << endl;
for (fld_iter = fields.begin(); fld_iter != fields.end(); ++fld_iter) {
diff --git a/compiler/cpp/src/generate/t_delphi_generator.cc b/compiler/cpp/src/generate/t_delphi_generator.cc
index 5f378f001..19b827243 100644
--- a/compiler/cpp/src/generate/t_delphi_generator.cc
+++ b/compiler/cpp/src/generate/t_delphi_generator.cc
@@ -1777,7 +1777,9 @@ void t_delphi_generator::generate_service_client(t_service* tservice) {
indent_impl(s_service_impl) <<
"seqid_ := seqid_ + 1;" << endl;
indent_impl(s_service_impl) <<
- msgvar << " := Thrift.Protocol.TMessageImpl.Create('" << funname << "', TMessageType.Call, seqid_);" << endl;
+ msgvar << " := Thrift.Protocol.TMessageImpl.Create('" << funname << "', " <<
+ ((*f_iter)->is_oneway() ? "TMessageType.Oneway" : "TMessageType.Call") <<
+ ", seqid_);" << endl;
indent_impl(s_service_impl) <<
"oprot_.WriteMessageBegin( " << msgvar << " );" << endl;
diff --git a/compiler/cpp/src/generate/t_go_generator.cc b/compiler/cpp/src/generate/t_go_generator.cc
index 9a3e9099e..54ad88733 100644
--- a/compiler/cpp/src/generate/t_go_generator.cc
+++ b/compiler/cpp/src/generate/t_go_generator.cc
@@ -1803,7 +1803,10 @@ void t_go_generator::generate_service_client(t_service* tservice)
indent() << " p.OutputProtocol = oprot" << endl <<
indent() << "}" << endl <<
indent() << "p.SeqId++" << endl <<
- indent() << "if err = oprot.WriteMessageBegin(\"" << (*f_iter)->get_name() << "\", thrift.CALL, p.SeqId); err != nil {" << endl;
+ indent() << "if err = oprot.WriteMessageBegin(\""
+ << (*f_iter)->get_name() << "\", "
+ << ((*f_iter)->is_oneway() ? "thrift.ONEWAY" : "thrift.CALL")
+ << ", p.SeqId); err != nil {" << endl;
indent_up();
f_service_ <<
indent() << "return" << endl;
diff --git a/compiler/cpp/src/generate/t_hs_generator.cc b/compiler/cpp/src/generate/t_hs_generator.cc
index fff7e5357..2f75dafa0 100644
--- a/compiler/cpp/src/generate/t_hs_generator.cc
+++ b/compiler/cpp/src/generate/t_hs_generator.cc
@@ -1113,7 +1113,8 @@ void t_hs_generator::generate_service_client(t_service* tservice) {
// Serialize the request header
string fname = (*f_iter)->get_name();
- indent(f_client_) << "T.writeMessageBegin op (\"" << fname << "\", T.M_CALL, seqn)" << endl;
+ string msgType = (*f_iter)->is_oneway() ? "T.M_ONEWAY" : "T.M_CALL";
+ indent(f_client_) << "T.writeMessageBegin op (\"" << fname << "\", " << msgType << ", seqn)" << endl;
indent(f_client_) << "write_" << argsname << " op (" << argsname << "{";
bool first = true;
diff --git a/compiler/cpp/src/generate/t_java_generator.cc b/compiler/cpp/src/generate/t_java_generator.cc
index 3a556a5a7..ddf4c91c2 100644
--- a/compiler/cpp/src/generate/t_java_generator.cc
+++ b/compiler/cpp/src/generate/t_java_generator.cc
@@ -2814,7 +2814,10 @@ void t_java_generator::generate_service_async_client(t_service* tservice) {
// Serialize request
// NOTE we are leaving seqid as 0, for now (see above)
f_service_ <<
- indent() << "prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage(\"" << funname << "\", org.apache.thrift.protocol.TMessageType.CALL, 0));" << endl <<
+ indent() << "prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage(\"" <<
+ funname << "\", org.apache.thrift.protocol." <<
+ ((*f_iter)->is_oneway() ? "TMessageType.ONEWAY" : "TMessageType.CALL") <<
+ ", 0));" << endl <<
indent() << args_name << " args = new " << args_name << "();" << endl;
for (fld_iter = fields.begin(); fld_iter != fields.end(); ++fld_iter) {
diff --git a/compiler/cpp/src/generate/t_javame_generator.cc b/compiler/cpp/src/generate/t_javame_generator.cc
index 6d029792c..c28571e9b 100644
--- a/compiler/cpp/src/generate/t_javame_generator.cc
+++ b/compiler/cpp/src/generate/t_javame_generator.cc
@@ -2109,7 +2109,9 @@ void t_javame_generator::generate_service_client(t_service* tservice) {
// Serialize the request
f_service_ <<
- indent() << "oprot_.writeMessageBegin(new TMessage(\"" << funname << "\", TMessageType.CALL, ++seqid_));" << endl <<
+ indent() << "oprot_.writeMessageBegin(new TMessage(\"" << funname << "\", " <<
+ ((*f_iter)->is_oneway() ? "TMessageType.ONEWAY" : "TMessageType.CALL") <<
+ ", ++seqid_));" << endl <<
indent() << argsname << " args = new " << argsname << "();" << endl;
for (fld_iter = fields.begin(); fld_iter != fields.end(); ++fld_iter) {
diff --git a/compiler/cpp/src/generate/t_js_generator.cc b/compiler/cpp/src/generate/t_js_generator.cc
index 32cb16297..7711aa5c5 100644
--- a/compiler/cpp/src/generate/t_js_generator.cc
+++ b/compiler/cpp/src/generate/t_js_generator.cc
@@ -1350,12 +1350,20 @@ void t_js_generator::generate_service_client(t_service* tservice) {
std::string argsname = js_namespace(program_)+ service_name_ + "_" + (*f_iter)->get_name() + "_args";
+ std::string messageType
+ = (*f_iter)->is_oneway() ? "Thrift.MessageType.ONEWAY" : "Thrift.MessageType.CALL";
+
// Serialize the request header
if (gen_node_) {
- f_service_ << indent() << outputVar << ".writeMessageBegin('" << (*f_iter)->get_name() << "', Thrift.MessageType.CALL, this.seqid());" << endl;
+ f_service_ <<
+ indent() << outputVar << ".writeMessageBegin('" << (*f_iter)->get_name()
+ << "', " << messageType << ", this.seqid());" << endl;
}
else {
- f_service_ << indent() << outputVar << ".writeMessageBegin('" << (*f_iter)->get_name() << "', Thrift.MessageType.CALL, this.seqid);" << endl;
+ f_service_ <<
+ indent() << outputVar << ".writeMessageBegin('"
+ << (*f_iter)->get_name() << "', "
+ << messageType << ", this.seqid);" << endl;
}
f_service_ <<
diff --git a/compiler/cpp/src/generate/t_lua_generator.cc b/compiler/cpp/src/generate/t_lua_generator.cc
index b7fdad41d..02467977d 100644
--- a/compiler/cpp/src/generate/t_lua_generator.cc
+++ b/compiler/cpp/src/generate/t_lua_generator.cc
@@ -601,8 +601,9 @@ void t_lua_generator::generate_service_client(ofstream &out,
indent(out) << endl << "function " << classname << ":send_" << sig << endl;
indent_up();
- indent(out) << "self.oprot:writeMessageBegin('" << funcname <<
- "', TMessageType.CALL, self._seqid)" << endl;
+ indent(out) << "self.oprot:writeMessageBegin('" << funcname << "', "
+ << ((*f_iter)->is_oneway() ? "TMessageType.ONEWAY" : "TMessageType.CALL")
+ << ", self._seqid)" << endl;
indent(out) << "local args = " << funcname << "_args:new{}" << endl;
// Set the args
diff --git a/compiler/cpp/src/generate/t_ocaml_generator.cc b/compiler/cpp/src/generate/t_ocaml_generator.cc
index f3df4e3a4..6607f6e5f 100644
--- a/compiler/cpp/src/generate/t_ocaml_generator.cc
+++ b/compiler/cpp/src/generate/t_ocaml_generator.cc
@@ -1105,7 +1105,9 @@ void t_ocaml_generator::generate_service_client(t_service* tservice) {
// Serialize the request header
f_service_ <<
- indent() << "oprot#writeMessageBegin (\"" << (*f_iter)->get_name() << "\", Protocol.CALL, seqid);" << endl;
+ indent() << "oprot#writeMessageBegin (\"" << (*f_iter)->get_name() << "\", "
+ << ((*f_iter)->is_oneway() ? "Protocol.ONEWAY" : "Protocol.CALL")
+ << ", seqid);" << endl;
f_service_ <<
indent() << "let args = new " << argsname << " in" << endl;
diff --git a/compiler/cpp/src/generate/t_perl_generator.cc b/compiler/cpp/src/generate/t_perl_generator.cc
index a40f85bd7..6059ee819 100644
--- a/compiler/cpp/src/generate/t_perl_generator.cc
+++ b/compiler/cpp/src/generate/t_perl_generator.cc
@@ -1161,7 +1161,9 @@ void t_perl_generator::generate_service_client(t_service* tservice) {
// Serialize the request header
f_service_ <<
- indent() << "$self->{output}->writeMessageBegin('" << (*f_iter)->get_name() << "', TMessageType::CALL, $self->{seqid});" << endl;
+ indent() << "$self->{output}->writeMessageBegin('" << (*f_iter)->get_name() << "', " <<
+ ((*f_iter)->is_oneway() ? "TMessageType::ONEWAY" : "TMessageType::CALL") <<
+ ", $self->{seqid});" << endl;
f_service_ <<
indent() << "my $args = new " << argsname << "();" << endl;
diff --git a/compiler/cpp/src/generate/t_php_generator.cc b/compiler/cpp/src/generate/t_php_generator.cc
index 9bf1139c5..a787f70ed 100644
--- a/compiler/cpp/src/generate/t_php_generator.cc
+++ b/compiler/cpp/src/generate/t_php_generator.cc
@@ -1665,8 +1665,12 @@ void t_php_generator::generate_service_client(t_service* tservice) {
indent() << "if ($bin_accel)" << endl;
scope_up(f_service_);
+ string messageType = (*f_iter)->is_oneway() ? "TMessageType::ONEWAY" : "TMessageType::CALL";
+
f_service_ <<
- indent() << "thrift_protocol_write_binary($this->output_, '" << (*f_iter)->get_name() << "', " << "TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());" << endl;
+ indent() << "thrift_protocol_write_binary($this->output_, '"
+ << (*f_iter)->get_name() << "', " << messageType
+ << ", $args, $this->seqid_, $this->output_->isStrictWrite());" << endl;
scope_down(f_service_);
f_service_ <<
@@ -1676,13 +1680,15 @@ void t_php_generator::generate_service_client(t_service* tservice) {
// Serialize the request header
if (binary_inline_) {
f_service_ <<
- indent() << "$buff = pack('N', (0x80010000 | " << "TMessageType::CALL));" << endl <<
+ indent() << "$buff = pack('N', (0x80010000 | " << messageType
+ << "));" << endl <<
indent() << "$buff .= pack('N', strlen('" << funname << "'));" << endl <<
indent() << "$buff .= '" << funname << "';" << endl <<
indent() << "$buff .= pack('N', $this->seqid_);" << endl;
} else {
f_service_ <<
- indent() << "$this->output_->writeMessageBegin('" << (*f_iter)->get_name() << "', " << "TMessageType::CALL, $this->seqid_);" << endl;
+ indent() << "$this->output_->writeMessageBegin('" << (*f_iter)->get_name() << "', "
+ << messageType << ", $this->seqid_);" << endl;
}
// Write to the stream
diff --git a/compiler/cpp/src/generate/t_py_generator.cc b/compiler/cpp/src/generate/t_py_generator.cc
index f0c31a4c4..eb558add8 100644
--- a/compiler/cpp/src/generate/t_py_generator.cc
+++ b/compiler/cpp/src/generate/t_py_generator.cc
@@ -1344,17 +1344,18 @@ void t_py_generator::generate_service_client(t_service* tservice) {
indent_up();
std::string argsname = (*f_iter)->get_name() + "_args";
+ std::string messageType = (*f_iter)->is_oneway() ? "TMessageType.ONEWAY" : "TMessageType.CALL";
// Serialize the request header
if (gen_twisted_ || gen_tornado_) {
f_service_ <<
indent() << "oprot = self._oprot_factory.getProtocol(self._transport)" << endl <<
- indent() <<
- "oprot.writeMessageBegin('" << (*f_iter)->get_name() << "', TMessageType.CALL, self._seqid)"
- << endl;
+ indent() << "oprot.writeMessageBegin('" << (*f_iter)->get_name() << "', "
+ << messageType << ", self._seqid)" << endl;
} else {
f_service_ <<
- indent() << "self._oprot.writeMessageBegin('" << (*f_iter)->get_name() << "', TMessageType.CALL, self._seqid)" << endl;
+ indent() << "self._oprot.writeMessageBegin('" << (*f_iter)->get_name() << "', "
+ << messageType << ", self._seqid)" << endl;
}
f_service_ <<