# File lib_core/rucy/messenger.rb, line 108
    def accept(queue)
      @closed and raise 'closed'
      begin
        loop do
          case (socket = queue.pop)
          when SocketQueue::CMD_CLOSE
            break
          else
            begin
              receive(socket)
            rescue StandardError, ScriptError
              @logger.warn("failed to dispatch: #{$!.message} (#{$!.class}): #{$!.backtrace[0]}")
            ensure
              begin
                socket.close unless socket.closed?
              rescue
                @logger.warn("failed to close socket: #{$!.message} (#{$!.class}): #{$!.backtrace[0]}")
              end
            end
          end
        end
      ensure
        begin
          close
        rescue
          @logger.warn("failed to close messenger: #{$!.message} (#{$!.class}): #{$!.backtrace[0]}")
        ensure
          @closed = true
        end
      end

      nil
    end