Hi,

the following service generates oneway RPC call flagged with T_CALL flag as
opposed to expected T_ONEWAY; I need the T_ONEWAY flag to implement proper
zero MQ message passing. Zero MQ message passing system differentiates
between request - reply patterns and push - pull ones at socket level;

Am I doing something wrong ?

best,
steve

service foo {
       oneway void bar( 1:string value );
}

void fooClient::put( const std::string& value  ) {
  send_bar( value ); // <- this is correct that recv_xxx is missing
}

// ----- incorrect or unreasoned T_CALL instead of T_ONEWAY
void fooClient::send_bar(const std::string& value) {
  int32_t cseqid = 0;
  oprot_->writeMessageBegin("bar", ::apache::thrift::protocol::T_CALL,
cseqid);
 ....
}

------ EXAMPLE -----
service foo {
    oneway void bar( 1:string value );
}

------------- response excerpt ----------

void fooClient::bar(const std::string& value)
{
  send_bar(value);
}

void fooClient::send_bar(const std::string& value)
{
  int32_t cseqid = 0;
  oprot_->writeMessageBegin("bar", ::apache::thrift::protocol::T_CALL,
cseqid);

  foo_bar_pargs args;
  args.value = &value;
  args.write(oprot_);

  oprot_->writeMessageEnd();
  oprot_->getTransport()->writeEnd();
  oprot_->getTransport()->flush();
}

Reply via email to