Sha256: 7c8d889322cf8e5e6e6909cfe26f430e7bc5dbb395882cd87160000d4a659c6f

Contents?: true

Size: 1.72 KB

Versions: 9

Compression:

Stored size: 1.72 KB

Contents

#
# ServerEngine
#
# Copyright (C) 2012-2013 Sadayuki Furuhashi
#
#    Licensed under the Apache License, Version 2.0 (the "License");
#    you may not use this file except in compliance with the License.
#    You may obtain a copy of the License at
#
#        http://www.apache.org/licenses/LICENSE-2.0
#
#    Unless required by applicable law or agreed to in writing, software
#    distributed under the License is distributed on an "AS IS" BASIS,
#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#    See the License for the specific language governing permissions and
#    limitations under the License.
#
require 'serverengine/multi_worker_server'

module ServerEngine

  class MultiThreadServer < MultiWorkerServer
    private

    def start_worker(wid)
      w = create_worker(wid)

      w.before_fork
      begin
        thread = Thread.new(&w.method(:main))
      ensure
        w.after_start
      end

      return WorkerMonitor.new(w, thread)
    end

    class WorkerMonitor
      def initialize(worker, thread)
        @worker = worker
        @thread = thread
        @restart_at = nil
      end

      attr_accessor :restart_at

      def send_stop(stop_graceful)
        Thread.new do
          begin
            @worker.stop
          rescue => e
            ServerEngine.dump_uncaught_error(e)
          end
        end
        nil
      end

      def send_reload
        Thread.new do
          begin
            @worker.reload
          rescue => e
            ServerEngine.dump_uncaught_error(e)
          end
        end
        nil
      end

      def join
        @thread.join
      end

      def alive?
        @thread.alive?
      end

      def recoverable?
        true
      end
    end
  end

end

Version data entries

9 entries across 9 versions & 5 rubygems

Version Path
serverengine-2.4.0 lib/serverengine/multi_thread_server.rb
fluent-plugin-nuopenlineage-light-0.1.0 vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/lib/serverengine/multi_thread_server.rb
fluent-plugin-openlineage-light-0.1.4 vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/lib/serverengine/multi_thread_server.rb
fluent-plugin-openlineage-light-0.1.3 vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/lib/serverengine/multi_thread_server.rb
fluent-plugin-openlineage-0.1.0 vendor/bundle/ruby/3.3.0/gems/serverengine-2.3.2/lib/serverengine/multi_thread_server.rb
fluent-plugin-google-cloud-logging-on-prem-0.1.0 vendor/ruby/3.1.0/gems/serverengine-2.3.2/lib/serverengine/multi_thread_server.rb
serverengine-2.3.2 lib/serverengine/multi_thread_server.rb
serverengine-2.3.1 lib/serverengine/multi_thread_server.rb
serverengine-2.3.0 lib/serverengine/multi_thread_server.rb