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)