In regular mode, a tool operates with same behavior as previously implemented, reservations are allowed and tool can be used on first come first serve basis.
Wait List Mode
In wait list mode, the tool does not accept reservations, users can enter the wait list of a tool
if the tool is currently in use or there are other people in the wait list.
A tool is considered free to use, when there is no current user using the tool
A user in the wait list is notified when their turn has come to use a tool
The tool is free to use
The user is at the top of the wait list
A user's spot is held for a customizable set period of time since their turn has last become available, after that period, their spot expires and the next user's turn becomes available.
In wait list mode, the user's time starts from on of these times (the latest one)
Last tool usage has ended
Previous user in the wait list has exited the wait list (either voluntarily or because their spot expired)
A customization setting is available to configure the time to expiration for a spot in the wait list
An option to skip the line is always available to allow for edge cases when users need to use the tool out of turn, when that happens, the current user at the top of the wait list will retain their spot until the tool becomes available again, and they will be notified again.
Hybrid Mode
In hybrid mode, the tool operates the same as in wait list mode, with a few differences
The tool will allow reservation
A tool is considered free to use
There is no current reservation ongoing
There is no upcoming reservation within a set number of minutes (reservation buffer zone) this allows the tool to be free for the users that have an upcoming reservation when their time comes.
The user is at the top of the wait list
A customization setting is available to configure the reservation buffer zone
In hybrid mode, the user's time starts from on of these times (the latest one)
Last tool usage has ended
Previous user in the wait list has exited the wait list (either voluntarily or because their spot expired)
Last tool reservation has ended
If the reservation is missed, then the reservation end date is considered to be the reservation_start + missed_threshold
Notes
The wait list check and update is performed in a timed_service that needs to be run periodically (e.g. every minute), if the service is not running, users will not be notified when their turns are available and the wait list will not expire spots.
Wait List Feature
A tool can operate in three different modes
Regular Mode
In regular mode, a tool operates with same behavior as previously implemented, reservations are allowed and tool can be used on first come first serve basis.
Wait List Mode
In wait list mode, the tool does not accept reservations, users can enter the wait list of a tool
A tool is considered free to use, when there is no current user using the tool
A user in the wait list is notified when their turn has come to use a tool
A user's spot is held for a customizable set period of time since their turn has last become available, after that period, their spot expires and the next user's turn becomes available.
In wait list mode, the user's time starts from on of these times (the latest one)
A customization setting is available to configure the time to expiration for a spot in the wait list
An option to skip the line is always available to allow for edge cases when users need to use the tool out of turn, when that happens, the current user at the top of the wait list will retain their spot until the tool becomes available again, and they will be notified again.
Hybrid Mode
In hybrid mode, the tool operates the same as in wait list mode, with a few differences
The tool will allow reservation
A tool is considered free to use
A customization setting is available to configure the reservation buffer zone
In hybrid mode, the user's time starts from on of these times (the latest one)
Notes
The wait list check and update is performed in a timed_service that needs to be run periodically (e.g. every minute), if the service is not running, users will not be notified when their turns are available and the wait list will not expire spots.