mirror of
https://github.com/valitydev/thrift.git
synced 2024-11-06 18:35:19 +00:00
THRIFT-4131: js / WebSocket / fix handling oneway methods
Client: js Patch: Martin Hejnfelt <mh@newtec.dk> This closes #1372
This commit is contained in:
parent
a17ef79e8f
commit
48ba736a58
@ -1510,16 +1510,20 @@ void t_js_generator::generate_service_client(t_service* tservice) {
|
||||
f_service_ << indent() << "return this.output.getTransport().flush(callback);" << endl;
|
||||
} else {
|
||||
f_service_ << indent() << "if (callback) {" << endl;
|
||||
f_service_ << indent() << " var self = this;" << endl;
|
||||
f_service_ << indent() << " this.output.getTransport().flush(true, function() {" << endl;
|
||||
f_service_ << indent() << " var result = null;" << endl;
|
||||
f_service_ << indent() << " try {" << endl;
|
||||
f_service_ << indent() << " result = self.recv_" << funname << "();" << endl;
|
||||
f_service_ << indent() << " } catch (e) {" << endl;
|
||||
f_service_ << indent() << " result = e;" << endl;
|
||||
f_service_ << indent() << " }" << endl;
|
||||
f_service_ << indent() << " callback(result);" << endl;
|
||||
f_service_ << indent() << " });" << endl;
|
||||
if((*f_iter)->is_oneway()) {
|
||||
f_service_ << indent() << " this.output.getTransport().flush(true, null);" << endl;
|
||||
} else {
|
||||
f_service_ << indent() << " var self = this;" << endl;
|
||||
f_service_ << indent() << " this.output.getTransport().flush(true, function() {" << endl;
|
||||
f_service_ << indent() << " var result = null;" << endl;
|
||||
f_service_ << indent() << " try {" << endl;
|
||||
f_service_ << indent() << " result = self.recv_" << funname << "();" << endl;
|
||||
f_service_ << indent() << " } catch (e) {" << endl;
|
||||
f_service_ << indent() << " result = e;" << endl;
|
||||
f_service_ << indent() << " }" << endl;
|
||||
f_service_ << indent() << " callback(result);" << endl;
|
||||
f_service_ << indent() << " });" << endl;
|
||||
}
|
||||
f_service_ << indent() << "} else {" << endl;
|
||||
f_service_ << indent() << " return this.output.getTransport().flush();" << endl;
|
||||
f_service_ << indent() << "}" << endl;
|
||||
|
@ -575,6 +575,15 @@ Thrift.TWebSocketTransport.prototype = {
|
||||
clientCallback();
|
||||
};
|
||||
}()));
|
||||
if(callback) {
|
||||
this.callbacks.push((function() {
|
||||
var clientCallback = callback;
|
||||
return function(msg) {
|
||||
self.setRecvBuffer(msg);
|
||||
clientCallback();
|
||||
};
|
||||
}()));
|
||||
}
|
||||
} else {
|
||||
//Queue the send to go out __onOpen
|
||||
this.send_pending.push({
|
||||
|
Loading…
Reference in New Issue
Block a user