Class: OpenC3::Schedule
- Defined in:
- lib/openc3/microservices/timeline_microservice.rb
Overview
Shared between the monitor thread and the manager thread to share the planned activities. This should remain a thread safe implamentation.
Instance Method Summary collapse
- #activities ⇒ Object
- #add_activity(input_activity) ⇒ Object
-
#initialize(name) ⇒ Schedule
constructor
A new instance of Schedule.
- #not_queued?(start) ⇒ Boolean
- #remove_activity(input_activity) ⇒ Object
- #update(input_activities) ⇒ Object
Constructor Details
Instance Method Details
#activities ⇒ Object
158 159 160 161 162 |
# File 'lib/openc3/microservices/timeline_microservice.rb', line 158 def activities @activities_mutex.synchronize do return @activities.dup end end |
#add_activity(input_activity) ⇒ Object
170 171 172 173 174 175 176 |
# File 'lib/openc3/microservices/timeline_microservice.rb', line 170 def add_activity(input_activity) @activities_mutex.synchronize do if @activities.find { |x| x.start == input_activity.start }.nil? @activities << input_activity end end end |
#not_queued?(start) ⇒ Boolean
150 151 152 153 154 155 156 |
# File 'lib/openc3/microservices/timeline_microservice.rb', line 150 def not_queued?(start) return false if @queue.index(start) @queue[@index] = start @index = @index + 1 >= @size ? 0 : @index + 1 return true end |
#remove_activity(input_activity) ⇒ Object
178 179 180 181 182 |
# File 'lib/openc3/microservices/timeline_microservice.rb', line 178 def remove_activity(input_activity) @activities_mutex.synchronize do @activities.delete_if { |h| h.start == input_activity.start } end end |
#update(input_activities) ⇒ Object
164 165 166 167 168 |
# File 'lib/openc3/microservices/timeline_microservice.rb', line 164 def update(input_activities) @activities_mutex.synchronize do @activities = input_activities.dup end end |