Martin Vogt created THRIFT-2304:
-----------------------------------

             Summary: Move client assignments from construtor in method
                 Key: THRIFT-2304
                 URL: https://issues.apache.org/jira/browse/THRIFT-2304
             Project: Thrift
          Issue Type: Improvement
          Components: C++ - Compiler
    Affects Versions: 0.9.1
            Reporter: Martin Vogt
            Priority: Trivial


The current generated client code in C++ look like this
(namespace removed, for better formatting):

{code}
class MyServiceClient : virtual public MyServiceIf {
 public:
  MyServiceClient(shared_ptr< TProtocol> prot) :
    piprot_(prot),
    poprot_(prot) {
    iprot_ = prot.get();
    oprot_ = prot.get();
  }
 [...]
{code}

The member variables are assigned in the constructor.
The patch puts the assignment into its own method:

{code}
class MyServiceClient : virtual public MyServiceIf {
 public:
  MyServiceClient(shared_ptr< TProtocol> prot) {
    setProtocol(prot);
  }
  [..]
private:
  void setProtocol(shared_ptr< TProtocol> prot) {
     setProtocol(prot,prot);
  }
 void setProtocol(shared<:TProtocol> iprot,shared_ptr<TProtocol> oprot) {
    piprot_=iprot;
    poprot_=oprot;
    iprot_ = iprot.get();
    oprot_ = oprot.get();
  }
{code}

This allows to change the TProtocol instance, after the Client creation. (With 
removing the private field or using a virtual method in a Service base class)



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to