[ https://issues.apache.org/jira/browse/THRIFT-2304?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Martin Vogt updated THRIFT-2304: -------------------------------- Attachment: setProto_Client-131231v1.patch > 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 > Attachments: setProto_Client-131231v1.patch > > > 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)