Sha256: d9fec3ab3065aa1b7ded8a08fd14ed5c89cfd1d44982abed1d99cfbfe462cb63
Contents?: true
Size: 931 Bytes
Versions: 3
Compression:
Stored size: 931 Bytes
Contents
require 'thread' require_relative 'notification_reader' require_relative 'ssl_server' module Grocer class Server attr_reader :notifications def initialize(server) @server = server @clients = [] @notifications = Queue.new end def accept Thread.new { begin @server.accept { |client| @clients << client Thread.new { begin NotificationReader.new(client).each(¬ifications.method(:push)) rescue Errno::EBADF, NoMethodError # Expected when another thread closes the socket end } } rescue Errno::EBADF # Expected when another thread closes the socket end } end def close if @server @server.close @server = nil end @clients.each(&:close) @clients = [] end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
grocer-0.0.10 | lib/grocer/server.rb |
grocer-0.0.9 | lib/grocer/server.rb |
grocer-0.0.8 | lib/grocer/server.rb |