|
Hermes
Simulation Orchestration Platform for Aerospace
|
Public Member Functions | |
| None | __init__ (self, str name, int count) |
| str | name (self) |
| int | count (self) |
| None | create (self) |
| None | attach (self) |
| None | signal_step (self) |
| bool | wait_step (self, float|None timeout=None) |
| None | signal_done (self) |
| bool | wait_all_done (self, float|None timeout=None) |
| None | close (self) |
| None | destroy (self) |
| FrameBarrier | __enter__ (self) |
| None | __exit__ (self, *object args) |
Protected Attributes | |
| str | _name = name |
| int | _count = count |
| posix_ipc.Semaphore|None | _step_sem = None |
| posix_ipc.Semaphore|None | _done_sem = None |
Synchronization barrier for frame execution.
Coordinates multiple module processes to execute frames in lockstep.
Uses two semaphores:
- step_sem: Scheduler signals modules to start stepping
- done_sem: Modules signal completion to scheduler
Example:
# Scheduler side
barrier = FrameBarrier("/hermes_barrier", count=3)
barrier.create()
barrier.signal_step() # Release all modules
barrier.wait_all_done() # Wait for all to finish
# Module side
barrier = FrameBarrier("/hermes_barrier", count=3)
barrier.attach()
barrier.wait_step() # Wait for scheduler
# ... execute frame ...
barrier.signal_done() # Signal completion
| None hermes.backplane.sync.FrameBarrier.__init__ | ( | self, | |
| str | name, | ||
| int | count ) |
Initialize frame barrier.
Args:
name: Base name for semaphores (e.g., "/hermes_barrier")
count: Number of module processes to synchronize
Raises:
SemaphoreError: If count is less than 1
| FrameBarrier hermes.backplane.sync.FrameBarrier.__enter__ | ( | self | ) |
| None hermes.backplane.sync.FrameBarrier.__exit__ | ( | self, | |
| *object | args ) |
| None hermes.backplane.sync.FrameBarrier.attach | ( | self | ) |
Attach to existing barrier semaphores.
Raises:
SemaphoreError: If already attached
posix_ipc.ExistentialError: If semaphores don't exist
| None hermes.backplane.sync.FrameBarrier.close | ( | self | ) |
Close semaphore handles without destroying.
| int hermes.backplane.sync.FrameBarrier.count | ( | self | ) |
Number of processes to synchronize.
| None hermes.backplane.sync.FrameBarrier.create | ( | self | ) |
Create barrier semaphores.
Raises:
SemaphoreError: If already created
posix_ipc.ExistentialError: If semaphores already exist
| None hermes.backplane.sync.FrameBarrier.destroy | ( | self | ) |
Destroy the barrier semaphores. Should only be called by the creator after all users close.
| str hermes.backplane.sync.FrameBarrier.name | ( | self | ) |
Barrier name.
| None hermes.backplane.sync.FrameBarrier.signal_done | ( | self | ) |
Module: signal that step execution is complete.
| None hermes.backplane.sync.FrameBarrier.signal_step | ( | self | ) |
Scheduler: signal all modules to execute a step. Releases the step semaphore `count` times so all modules can proceed.
| bool hermes.backplane.sync.FrameBarrier.wait_all_done | ( | self, | |
| float | None | timeout = None ) |
Scheduler: wait for all modules to complete.
Args:
timeout: Maximum seconds to wait per module, None for infinite
Returns:
True if all done, False if any timeout
| bool hermes.backplane.sync.FrameBarrier.wait_step | ( | self, | |
| float | None | timeout = None ) |
Module: wait for step signal from scheduler.
Args:
timeout: Maximum seconds to wait, None for infinite
Returns:
True if signaled, False if timeout
|
protected |
|
protected |
|
protected |
|
protected |