When to use Reference, and when to just use a pointer?

here the data structure to maintain some states for resolver is used as a reference, but here the data structure to maintain inner states for proxy is used as a pointer, what’s the logic for u to decide when to use Reference and when to just use pointer?

is there anyone can help?

I didn’t stare at the code for long enough to be certain, but I don’t think Resolver needs to be reference counted. We should be able to just replace

state Reference<Resolver> self(new Resolver(resolver.id(), initReq.commitProxyCount, initReq.resolverCount));

with

state Resolver self(resolver.id(), initReq.commitProxyCount, initReq.resolverCount);

Usually Reference is used whenever object-ownership is shared across multiple actors. Otherwise using stack-allocated variables is usually faster. So it’s the same rule as for using std::shared_ptr in standard C++, Reference is just slightly more efficient at the cost of not supporting weak pointers.

1 Like