Class: MultiThreadVariable
- Inherits:
-
Object
- Object
- MultiThreadVariable
- Defined in:
- lib/buzzcore/thread_utils.rb
Instance Attribute Summary collapse
-
#read_timeout ⇒ Object
Returns the value of attribute read_timeout.
-
#write_timeout ⇒ Object
Returns the value of attribute write_timeout.
Instance Method Summary collapse
- #clear ⇒ Object
- #empty? ⇒ Boolean
-
#initialize(aReadTimeout = nil, aWriteTimeout = nil) ⇒ MultiThreadVariable
constructor
A new instance of MultiThreadVariable.
- #inner_value_set(aValue) ⇒ Object
- #reject_value ⇒ Object
- #unblock ⇒ Object
- #value ⇒ Object
- #value=(aValue) ⇒ Object
Constructor Details
#initialize(aReadTimeout = nil, aWriteTimeout = nil) ⇒ MultiThreadVariable
Returns a new instance of MultiThreadVariable.
197 198 199 200 201 |
# File 'lib/buzzcore/thread_utils.rb', line 197 def initialize(aReadTimeout=nil,aWriteTimeout=nil) @q = SizedQueue.new(1) @read_timeout = aReadTimeout @write_timeout = aWriteTimeout end |
Instance Attribute Details
#read_timeout ⇒ Object
Returns the value of attribute read_timeout.
195 196 197 |
# File 'lib/buzzcore/thread_utils.rb', line 195 def read_timeout @read_timeout end |
#write_timeout ⇒ Object
Returns the value of attribute write_timeout.
195 196 197 |
# File 'lib/buzzcore/thread_utils.rb', line 195 def write_timeout @write_timeout end |
Instance Method Details
#clear ⇒ Object
203 204 205 |
# File 'lib/buzzcore/thread_utils.rb', line 203 def clear @q.clear end |
#empty? ⇒ Boolean
207 208 209 |
# File 'lib/buzzcore/thread_utils.rb', line 207 def empty? @q.empty? end |
#inner_value_set(aValue) ⇒ Object
221 222 223 224 225 226 227 228 229 |
# File 'lib/buzzcore/thread_utils.rb', line 221 def inner_value_set(aValue) Thread.exclusive do if @reject_next clear else @q.push(aValue) end end end |
#reject_value ⇒ Object
244 245 246 247 248 249 250 251 252 |
# File 'lib/buzzcore/thread_utils.rb', line 244 def reject_value Thread.exclusive do if !empty? clear else @reject_next = true end end end |
#unblock ⇒ Object
240 241 242 |
# File 'lib/buzzcore/thread_utils.rb', line 240 def unblock() @q.unblock() end |
#value ⇒ Object
211 212 213 214 215 216 217 218 219 |
# File 'lib/buzzcore/thread_utils.rb', line 211 def value if @read_timeout Timeout.timeout(@read_timeout) do @q.pop end else @q.pop end end |
#value=(aValue) ⇒ Object
231 232 233 234 235 236 237 238 |
# File 'lib/buzzcore/thread_utils.rb', line 231 def value=(aValue) if @write_timeout Timeout.timeout(@write_timeout) { inner_value_set(aValue) } else inner_value_set(aValue) end aValue end |