Sha256: ce71e3e531cddcadf66fdf7566d34597796eb8711995a03af6ae396326511526

Contents?: true

Size: 1.55 KB

Versions: 7

Compression:

Stored size: 1.55 KB

Contents

module Isomorfeus
  module Transport
    class ServerSocketProcessor
      include Isomorfeus::Transport::ServerProcessor

      def on_message(client, data)
        if Isomorfeus.development?
          write_lock = Isomorfeus.zeitwerk_lock.try_write_lock
          if write_lock
            Isomorfeus.zeitwerk.reload
            Isomorfeus.zeitwerk_lock.release_write_lock
          end
          Isomorfeus.zeitwerk_lock.acquire_read_lock
        end
        request_hash = Oj.load(data, mode: :strict)
        handler_instance_cache = {}
        response_agent_array = []
        process_request(client, user(client), request_hash, handler_instance_cache, response_agent_array)
        handler_instance_cache.each_value do |handler|
          handler.resolve if handler.resolving?
        end
        result = {}
        response_agent_array.each do |response_agent|
          result.deep_merge!(response_agent.result)
        end
        client.write Oj.dump(result, mode: :strict)
      ensure
        Isomorfeus.zeitwerk_lock.release_read_lock if Isomorfeus.development?
      end

      def on_close(client)
        # nothing for now
      end

      def on_open(client)
        # nothing for now
      end

      def on_shutdown(client)
        # nothing for now
      end

      def user(client)
        # TODO get session cooke and load user from session
        current_user = client.instance_variable_get(:@isomorfeus_user)
        return current_user if current_user
        # TODO get session cooke and load user from session
        Anonymous.new
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
isomorfeus-transport-1.0.0.zeta12 lib/isomorfeus/transport/server_socket_processor.rb
isomorfeus-transport-1.0.0.zeta11 lib/isomorfeus/transport/server_socket_processor.rb
isomorfeus-transport-1.0.0.zeta10 lib/isomorfeus/transport/server_socket_processor.rb
isomorfeus-transport-1.0.0.zeta9 lib/isomorfeus/transport/server_socket_processor.rb
isomorfeus-transport-1.0.0.zeta8 lib/isomorfeus/transport/server_socket_processor.rb
isomorfeus-transport-1.0.0.zeta7 lib/isomorfeus/transport/server_socket_processor.rb
isomorfeus-transport-1.0.0.zeta6 lib/isomorfeus/transport/server_socket_processor.rb