# File lib_core/rucy/server.rb, line 226
    def accept
      begin
        begin
          open_server
          @accept_lock.synchronize{
            @accept_state = :open
            @accept_thread = Thread.current
          }
          loop do
            begin
              socket = @server.accept
              socket.setsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1) # for fast response.
            rescue
              @logger.warn("accept error: #{$!.message} (#{$!.class}): #{$!.backtrace[0]}")
              retry
            end
            @socket_queue.push(socket)
          end
        rescue ServerRestartException
          sleep(0.1)           # wait for intercepting accept
          close_server
          reset
          @restart_count += 1
          @restart_time = Time.now
          retry
        end
      rescue ServerStopException
        sleep(0.1)             # wait for intercepting accept
      ensure
        @accept_lock.synchronize{
          @accept_state = :close
          @accept_thread = nil
        }
        close_server
        until (@socket_queue.empty?)
          socket = @socket_queue.pop
          socket.shutdown
        end
      end

      nil
    end