Method: Thread::Channel#send

Defined in:
lib/thread/channel.rb

#send(what) ⇒ Object

Send a message to the channel.

If there’s a guard, the value is passed to it, if the guard returns a falsy value an ArgumentError exception is raised and the message is not sent.



33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/thread/channel.rb', line 33

def send(what)
  if @check && !@check.call(what)
    raise ArgumentError, 'guard mismatch'
  end

  @mutex.synchronize {
    @messages << what

    cond.broadcast if cond?
  }

  self
end