X-Git-Url: http://xvm.mit.edu/gitweb/invirt/third/libt4.git/blobdiff_plain/06282fd37814c4a9d53bca089b048709b368f5b3..869c0cc91d8f6b2bb80026616372d16450b64d9f:/lock_server.cc?ds=sidebyside diff --git a/lock_server.cc b/lock_server.cc index a4d5881..141a598 100644 --- a/lock_server.cc +++ b/lock_server.cc @@ -3,7 +3,6 @@ #include "lock_server.h" #include #include -#include "handle.h" lock_state::lock_state(): held(false) @@ -47,20 +46,13 @@ void lock_server::revoker () { continue; lock_state & st = get_lock_state(lid); - holder_t held_by; - { - lock sl(st.m); - held_by = st.held_by; - } + lock sl(st.m); + holder_t held_by = st.held_by; + sl.unlock(); - rpcc *proxy = NULL; - // try a few times? - //int t=5; - //while (t-- && !proxy) - proxy = handle(held_by.first).safebind(); - if (proxy) { + if (auto cl = rpcc::bind_cached(held_by.first)) { int r; - auto ret = (rlock_protocol::status)proxy->call(rlock_protocol::revoke, r, lid, held_by.second); + auto ret = (rlock_protocol::status)cl->call(rlock_protocol::revoke, r, lid, held_by.second); LOG << "Revoke returned " << ret; } } @@ -83,14 +75,9 @@ void lock_server::retryer() { front = st.wanted_by.front(); } - rpcc *proxy = NULL; - // try a few times? - //int t=5; - //while (t-- && !proxy) - proxy = handle(front.first).safebind(); - if (proxy) { + if (auto cl = rpcc::bind_cached(front.first)) { int r; - auto ret = (rlock_protocol::status)proxy->call(rlock_protocol::retry, r, lid, front.second); + auto ret = (rlock_protocol::status)cl->call(rlock_protocol::retry, r, lid, front.second); LOG << "Retry returned " << ret; } }