Class: Spring
  
  
  
  
    
      Constant Summary
      collapse
    
    
      
        - GET =
          
        
 
        :get
 
      
        - SIGN_UP =
          
        
 
        :sign_up
 
      
    
  
  
    
      Instance Method Summary
      collapse
    
    
  
  
  
  
  
  
  
  
  
  Methods included from Observable
  #add_observers, included, #list_observers, #notify_observer, #observer?
  Constructor Details
  
    
  
  
    #initialize(*items)  ⇒ Spring 
  
  
  
  
    
Returns a new instance of Spring.
   
 
  
  
    
      
20
21
22
23
24 
     | 
    
      # File 'lib/spring.rb', line 20
def initialize(*items)
  @q = *items
  @mutex = Mutex.new
  @collecter = []
end 
     | 
  
 
  
 
  
    Instance Method Details
    
      
  
  
    #empty?  ⇒ Boolean 
  
  
  
  
    
      
42
43
44 
     | 
    
      # File 'lib/spring.rb', line 42
def empty?
  @mutex.synchronize { return @q.empty? }
end
     | 
  
 
    
      
  
  
    #get(collecter_id)  ⇒ Object 
  
  
  
  
    
      
26
27
28
29
30
31
32
33
34
35 
     | 
    
      # File 'lib/spring.rb', line 26
def get(collecter_id)
  @mutex.synchronize do
    if @collecter.include?(collecter_id)
      item = @q.shift
      changed(true)
      notify_observers(self.object_id, GET, collecter_id)
      return item
    end
  end
end
     | 
  
 
    
      
  
  
    #num_collecter  ⇒ Object 
  
  
  
  
    
      
57
58
59 
     | 
    
      # File 'lib/spring.rb', line 57
def num_collecter
  @mutex.synchronize { @collecter.length }
end
     | 
  
 
    
      
  
  
    #sign_up(collecter_id)  ⇒ Object 
  
  
  
  
    
      
46
47
48
49
50
51
52
53
54
55 
     | 
    
      # File 'lib/spring.rb', line 46
def sign_up(collecter_id)
  @mutex.synchronize do
    unless @collecter.include?(collecter_id)
      @collecter << collecter_id
      changed(true)
      notify_observers(self.object_id, SIGN_UP, collecter_id)
      return nil
    end
  end
end
     | 
  
 
    
      
  
  
    #size  ⇒ Object 
  
  
    Also known as:
    length
    
  
  
  
    
      
37
38
39 
     | 
    
      # File 'lib/spring.rb', line 37
def size
  @mutex.synchronize { return @q.size }
end
     |