Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
sktometometo committed Feb 4, 2022
1 parent 6b204b6 commit be201bd
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 3 deletions.
2 changes: 1 addition & 1 deletion node_scripts/lock_manager_node.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@

rospy.init_node('lock_manager')
node = LockManager()
rospy.spin()
node.spin()
20 changes: 18 additions & 2 deletions python/ros_lock/lock_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@ def __init__(self, lock_name, client_name=None):
self.lock_name = lock_name
self.client_name = client_name

def acquire(self):
def acquire(self, timeout):

return self.lock.acquire()
return self.lock.acquire(timeout=timeout)

def release(self):

Expand All @@ -27,6 +27,13 @@ def locked(self):

return self.lock.locked()

def is_client_active(self):

if self.client_name is not None:
return ( '/' + self.client_name ) / rosnode.get_node_names()
else:
return False


class LockManager(object):

Expand Down Expand Up @@ -91,3 +98,12 @@ def spin(self, hz=1):
rate = rospy.Rate(hz)
while not rospy.is_shutdown():
rate.sleep()
with self.lock_for_lock_list:
for lock_name in self.lock_list:
if not self.lock_list[lock_name].is_client_active() \
and self.lock_list[lock_name].locked():
rospy.logwarn('Client {} for lock {} is not active. released.'.format(
self.lock_list[lock_name].client_name,
lock_name
))
self.lock_list[lock_name].release()

0 comments on commit be201bd

Please sign in to comment.