Class: OpenC3::Schedule

Inherits:
Object show all
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

Constructor Details

#initialize(name) ⇒ Schedule

Returns a new instance of Schedule.



141
142
143
144
145
146
147
148
# File 'lib/openc3/microservices/timeline_microservice.rb', line 141

def initialize(name)
  @name = name
  @activities_mutex = Mutex.new
  @activities = []
  @size = 20
  @queue = Array.new(@size)
  @index = 0
end

Instance Method Details

#activitiesObject



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

Returns:

  • (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