X-Git-Url: http://xvm.mit.edu/gitweb/invirt/third/libt4.git/blobdiff_plain/a4175b2e216a20b86cc872dea8a08005c60617a5..6b5e09540e9392a7015fae1ad3b01b0973600ff2:/handle.h diff --git a/handle.h b/handle.h index 6b042fb..f4df61a 100644 --- a/handle.h +++ b/handle.h @@ -1,5 +1,5 @@ // manage a cache of RPC connections. -// assuming cid is a std::string holding the +// assuming cid is a string holding the // host:port of the RPC server you want // to talk to: // @@ -23,24 +23,16 @@ #ifndef handle_h #define handle_h -#include -#include +#include "types.h" #include "rpc/rpc.h" -struct hinfo { - rpcc *cl; - int refcnt; - bool del; - std::string m; - std::mutex cl_mutex; -}; +class hinfo; class handle { private: - struct hinfo *h; + shared_ptr h; public: - handle(std::string m); - ~handle(); + handle(const string & m); /* safebind will try to bind with the rpc server on the first call. * Since bind may block, the caller probably should not hold a mutex * when calling safebind. @@ -60,20 +52,10 @@ class handle { * } */ rpcc *safebind(); -}; -class handle_mgr { - private: - std::mutex handle_mutex; - std::map hmap; - public: - handle_mgr(); - struct hinfo *get_handle(std::string m); - void done_handle(struct hinfo *h); - void delete_handle(std::string m); - void delete_handle_wo(std::string m); + void invalidate(); }; -extern class handle_mgr mgr; +void invalidate_handle(const string & m); #endif