如何使函数返回时自动执行某段代码?
技巧:可以在函数中定义一个局部对象,在对象的类的析构函数里执行某段代码。
例如:
在brpc::ClosureGuard done_guard(done)对象析构时执行done->Run()
#include "echo.pb.h"
...
class MyEchoService : public EchoService {
public:
void Echo(::google::protobuf::RpcController* cntl_base,
const ::example::EchoRequest* request,
::example::EchoResponse* response,
::google::protobuf::Closure* done) {
// 这个对象确保在return时自动调用done->Run()
brpc::ClosureGuard done_guard(done);
brpc::Controller* cntl = static_cast(cntl_base);
// 填写response
response->set_message(request->message());
}
};



