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)