def start!
      update_proc_title(:starting)

      server_thread = Thread.new do
        logger.info { "Starting gruf server at #{@hostname}..." }
        server.run
      end

      stop_server_thread = Thread.new do
        loop do
          break if @stop_server

          @stop_server_mu.synchronize { @stop_server_cv.wait(@stop_server_mu, 10) }
        end
        logger.info { 'Shutting down...' }
        server.stop
      end

      server.wait_till_running
      @started = true
      update_proc_title(:serving)
      stop_server_thread.join
      server_thread.join
      @started = false

      update_proc_title(:stopped)
      logger.info { 'Goodbye!' }
    end
def start!
      update_proc_title(:starting)

      server_thread = Thread.new do
        logger.info { "Starting gruf server at #{@hostname}..." }
        server.run
      end

      stop_server_thread = Thread.new do
        loop do
          break if @stop_server

          @stop_server_mu.synchronize { @stop_server_cv.wait(@stop_server_mu, 10) }
        end
        logger.info { 'Shutting down...' }
        server.stop
      end

      server.wait_till_running
      @started = true
      update_proc_title(:serving)
      stop_server_thread.join
      server_thread.join
      @started = false

      update_proc_title(:stopped)
      logger.info { 'Goodbye!' }
    end
Start the gRPC server

 :nocov: