在一个const函数中无法修改类成员的值,通过试用mutable可以改变这种窘况。次关键字在Mock测试中(MockTest)很有用:
class ObMockMergerAsyncRpcStub : public ObMergerAsyncRpcStub
{
public:
ObMockMergerAsyncRpcStub()
{
rpc_events_list_.init(1024, rpc_events_, 0);
}
virtual ~ObMockMergerAsyncRpcStub(){}
virtual int scan(const int64_t timeout, const ObServer & server,
const ObScanParam & scan_param, ObMergerRpcEvent & result) const
{
if(!rpc_events_list_.push_back(&result))
{
TBSYS_LOG(ERROR, "fail to save rpc result");
}
else
{
TBSYS_LOG(INFO, "a RPC result save to rpc_event_list_");
}
return OB_SUCCESS;
}
mutable ObMergerRpcEvent *rpc_events_[1024];
mutable ObArrayHelper<ObMergerRpcEvent*> rpc_events_list_;
};