# File lib/new_relic/agent/commands/agent_command_router.rb, line 24
        def initialize(event_listener=nil)
          @handlers    = Hash.new { |*| Proc.new { |cmd| self.unrecognized_agent_command(cmd) } }

          @backtrace_service = Threading::BacktraceService.new(event_listener)

          @thread_profiler_session = ThreadProfilerSession.new(@backtrace_service)
          @xray_session_collection = XraySessionCollection.new(@backtrace_service, event_listener)

          @handlers['start_profiler'] = Proc.new { |cmd| thread_profiler_session.handle_start_command(cmd) }
          @handlers['stop_profiler']  = Proc.new { |cmd| thread_profiler_session.handle_stop_command(cmd) }
          @handlers['active_xray_sessions'] = Proc.new { |cmd| xray_session_collection.handle_active_xray_sessions(cmd) }

          if event_listener
            event_listener.subscribe(:before_shutdown, &method(:on_before_shutdown))
          end
        end