Preston Elder

Added direct routing for where performance really matters more than…
Added direct routing for where performance really matters more than

flexibility of message handling. Direct routing requires:

a) That the client create their own message class derived from direct_message.

b) That any task handling said message class knows about it's lifetime charateristics.

c) That any task handling said message override do_message for direct_message.

Benchmarks show direct routing can be MUCH faster than standard routing,

(10-15 times faster in some cases), however standard messgaes are still

recommended where this kind of performance is not required or for portabiliy.

    • -71
    • +96
    /trunk/Mantra-I/mantra/scheduler/message.h
    • -6
    • +23
    /trunk/Mantra-I/mantra/scheduler/task.h
    • -10
    • +19
    /trunk/Mantra-I/src/scheduler/message.cpp
    • -2
    • +6
    /trunk/Mantra-I/src/scheduler/scheduler.cpp
    • -1
    • +39
    /trunk/Mantra-I/src/scheduler/task.cpp
Added directory for API documentation
Added directory for API documentation

    • -0
    • +0
    /trunk/Mantra-I/doc/api
Removed doc directories.
Removed doc directories.

Fixed core dump if tracing was enabled on shutdown.…
Fixed core dump if tracing was enabled on shutdown.

Also added MT_FLUSH for functions running in their own thread.

    • -0
    • +1
    /trunk/Mantra-I/src/utils/file/mmap_rwfile.cpp
Adjustments for SSL with tracing.…
Adjustments for SSL with tracing.

    • -0
    • +7
    /trunk/Mantra-I/src/utils/trace/CMakeLists.txt
Changed tracing so that it could support automatic assigning to a specific trace codetype based on the location of the code (ie. compile unit). Also went from 1 -> 16 reserved codetypes for mantra.
Changed tracing so that it could support automatic assigning to a specific trace codetype based on the location of the code (ie. compile unit). Also went from 1 -> 16 reserved codetypes for mantra.
    • -0
    • +2
    /trunk/Mantra-I/mantra/utils/trace/nibble0.h
Changed tracing so that it could support automatic assigning to a specific trace codetype based on the location of the code (ie. compile unit). Also went from 1 -> 16 reserved codetypes for mantra.
Changed tracing so that it could support automatic assigning to a specific trace codetype based on the location of the code (ie. compile unit). Also went from 1 -> 16 reserved codetypes for mantra.
    • -4
    • +14
    /trunk/Mantra-I/build/MantraFuncs.cmake
    • -1
    • +1
    /trunk/Mantra-I/mantra/admin/accepting_session.h
    • -11
    • +11
    /trunk/Mantra-I/mantra/admin/login.h
    • -10
    • +10
    /trunk/Mantra-I/mantra/admin/registry_selector.h
    • -5
    • +5
    /trunk/Mantra-I/mantra/admin/selector.h
    • -6
    • +5
    /trunk/Mantra-I/mantra/core/properties.h
  1. … 21 more files in changeset.
Added special handling for char/wchar_t * (and const versions) when logging ussing MLOGF.…
Added special handling for char/wchar_t * (and const versions) when logging ussing MLOGF.

And allowed for users to also add speical handling for any other types they deem necessary.

    • -0
    • +14
    /trunk/Mantra-I/src/core/service.cpp
Adjustmet to write PID every time.
Adjustmet to write PID every time.

Fixed test cases and depcrecated '-c' option on commandline.
Fixed test cases and depcrecated '-c' option on commandline.

    • -1
    • +1
    /trunk/Mantra-I/mantra/utils/trace/nibble1.h
    • -1
    • +1
    /trunk/Mantra-I/test/scheduler/CMakeLists.txt
    • -6
    • +10
    /trunk/Mantra-I/test/utils/CMakeLists.txt
    • -2
    • +6
    /trunk/Mantra-I/test/utils/file/CMakeLists.txt
    • -2
    • +1
    /trunk/Mantra-I/test/utils/trace/CMakeLists.txt
Changed version number.
Changed version number.

Changed trace so that autoflush is a property of the codetype (not TSS).…
Changed trace so that autoflush is a property of the codetype (not TSS).

Also changed task stopping to be a two-phase stop ('stop' and 'join').

    • -1
    • +1
    /trunk/Mantra-I/mantra/admin/accepting_session.h
    • -1
    • +2
    /trunk/Mantra-I/mantra/admin/editline_session.h
    • -2
    • +8
    /trunk/Mantra-I/mantra/scheduler/task.h
    • -3
    • +22
    /trunk/Mantra-I/mantra/utils/trace/trace.h
    • -25
    • +2
    /trunk/Mantra-I/mantra/utils/trace/tss.h
    • -8
    • +22
    /trunk/Mantra-I/src/admin/console_session.cpp
    • -3
    • +20
    /trunk/Mantra-I/src/admin/socket_session.cpp
    • -3
    • +20
    /trunk/Mantra-I/src/admin/telnet_session.cpp
    • -0
    • +198
    /trunk/Mantra-I/src/core/commands.cpp
  1. … 5 more files in changeset.
Added some additionally #defines to trace code to allow…
Added some additionally #defines to trace code to allow

third party users that use tracing to disable it entirely

from their code for unit testing and such.

    • -0
    • +4
    /trunk/Mantra-I/mantra/utils/trace/nibble0.h
    • -0
    • +4
    /trunk/Mantra-I/mantra/utils/trace/nibble1.h
    • -0
    • +4
    /trunk/Mantra-I/mantra/utils/trace/nibble2.h
    • -0
    • +4
    /trunk/Mantra-I/mantra/utils/trace/nibble3.h
    • -0
    • +12
    /trunk/Mantra-I/mantra/utils/trace/trace.h
Adjusted warnings to be a little cleaner.
Adjusted warnings to be a little cleaner.

    • -32
    • +43
    /trunk/Mantra-I/src/core/shutdown.cpp
Changed shutdown to allow for scheduling shutdowns from the config file.
Changed shutdown to allow for scheduling shutdowns from the config file.

    • -2
    • +9
    /trunk/Mantra-I/mantra/core/shutdown.h
    • -7
    • +25
    /trunk/Mantra-I/mantra/utils/duration.h
    • -3
    • +6
    /trunk/Mantra-I/src/core/application.cpp
    • -0
    • +269
    /trunk/Mantra-I/src/core/commands.cpp
    • -4
    • +63
    /trunk/Mantra-I/src/core/shutdown.cpp
Fixed bug where shutdown while telnet port is open can cause…
Fixed bug where shutdown while telnet port is open can cause

two threads to try and close socket at the same time, and one

of them will then raise an exception and cause a core.

Removed some unnecessary includes.
Removed some unnecessary includes.

    • -1
    • +0
    /trunk/Mantra-I/src/scheduler/event_task.cpp
    • -1
    • +0
    /trunk/Mantra-I/src/scheduler/task.cpp
Fixed problem where tcsetattr decides to try and write to…
Fixed problem where tcsetattr decides to try and write to

the PTY, which is not being read yet by the session (telnet

specifically). Changed it so that editline is not even

initalized until editline_session::run(), which means it is

in it's own thread, and AFTER the pty's other end is being

read by the service. This stops telnet blocking the service

handler if it only has one thread and termcap is b0rked.

    • -0
    • +1
    /trunk/Mantra-I/build/MantraDeps.cmake
    • -6
    • +25
    /trunk/Mantra-I/mantra/admin/editline_session.h
    • -72
    • +58
    /trunk/Mantra-I/src/admin/console_session.cpp
    • -18
    • +28
    /trunk/Mantra-I/src/admin/telnet_session.cpp
Fixed how socket session executes commands, and removed…
Fixed how socket session executes commands, and removed

conflict between editline and socket sessions.

    • -1
    • +1
    /trunk/Mantra-I/mantra/admin/editline_session.h
    • -3
    • +50
    /trunk/Mantra-I/src/admin/socket_session.cpp
Changes to accomodate difference between boost::filesystem v2 and v3.…
Changes to accomodate difference between boost::filesystem v2 and v3.

And also to stop an exception being thrown when tracing a closed socket.

    • -1
    • +1
    /trunk/Mantra-I/src/utils/file/saf.cpp
Changes for boost 1.46.1
Changes for boost 1.46.1

    • -1
    • +1
    /trunk/Mantra-I/mantra/admin/accepting_session.h
    • -54
    • +54
    /trunk/Mantra-I/src/core/commands.cpp
    • -1
    • +1
    /trunk/Mantra-I/src/utils/file/saf.cpp
Added dumb socket admin.…
Added dumb socket admin.

    • -0
    • +218
    /trunk/Mantra-I/mantra/admin/accepting_session.h
    • -1
    • +1
    /trunk/Mantra-I/mantra/admin/editline_session.h
    • -0
    • +237
    /trunk/Mantra-I/mantra/admin/socket_session.h
    • -0
    • +252
    /trunk/Mantra-I/mantra/admin/socket_session_impl.h
    • -138
    • +28
    /trunk/Mantra-I/mantra/admin/telnet_session.h
    • -3
    • +12
    /trunk/Mantra-I/src/admin/CMakeLists.txt
    • -0
    • +360
    /trunk/Mantra-I/src/admin/accepting_session.cpp
    • -1
    • +2
    /trunk/Mantra-I/src/admin/console_session.cpp
    • -0
    • +765
    /trunk/Mantra-I/src/admin/socket_session.cpp
    • -297
    • +15
    /trunk/Mantra-I/src/admin/telnet_session.cpp
Beginnings of windows support.
Beginnings of windows support.
    • -3
    • +11
    /trunk/Mantra-I/build/MantraDeps.cmake
    • -0
    • +155
    /trunk/Mantra-I/configure.bat
Altered the way I modify visibility for GCC.
Altered the way I modify visibility for GCC.

    • -0
    • +6
    /trunk/Mantra-I/mantra/admin/command.h
    • -0
    • +6
    /trunk/Mantra-I/mantra/admin/editline_session.h
    • -0
    • +6
    /trunk/Mantra-I/mantra/admin/properties.h
    • -0
    • +6
    /trunk/Mantra-I/mantra/admin/registry_selector.h
    • -0
    • +6
    /trunk/Mantra-I/mantra/admin/selector.h
    • -0
    • +7
    /trunk/Mantra-I/mantra/admin/session.h
    • -0
    • +6
    /trunk/Mantra-I/mantra/core/application.h
  1. … 124 more files in changeset.
Change to allow ccache/distcc compiling.
Change to allow ccache/distcc compiling.

Changes to the build to reduce the number of SO's created except where explicitly requested.
Changes to the build to reduce the number of SO's created except where explicitly requested.

    • -0
    • +27
    /trunk/Mantra-I/build/MantraFuncs.cmake
    • -10
    • +28
    /trunk/Mantra-I/src/CMakeLists.txt
    • -8
    • +6
    /trunk/Mantra-I/src/admin/CMakeLists.txt
    • -18
    • +1
    /trunk/Mantra-I/src/core/CMakeLists.txt
    • -10
    • +9
    /trunk/Mantra-I/src/log/CMakeLists.txt
    • -1
    • +1
    /trunk/Mantra-I/src/priv/CMakeLists.txt
    • -3
    • +4
    /trunk/Mantra-I/src/scheduler/CMakeLists.txt
    • -3
    • +4
    /trunk/Mantra-I/src/utils/CMakeLists.txt
    • -4
    • +4
    /trunk/Mantra-I/src/utils/file/CMakeLists.txt
    • -3
    • +4
    /trunk/Mantra-I/src/utils/trace/CMakeLists.txt
no_comment
no_comment
    • -13
    • +20
    /trunk/Mantra-I/mantra/scheduler/message.h
    • -0
    • +80
    /trunk/Mantra-I/mantra/utils/ordering.h
    • -1
    • +3
    /trunk/Mantra-I/mantra/utils/trace/tss.h
    • -6
    • +2
    /trunk/Mantra-I/src/core/CMakeLists.txt
    • -1
    • +92
    /trunk/Mantra-I/src/core/commands.cpp
    • -33
    • +0
    /trunk/Mantra-I/src/core/shutdown.cpp
    • -1
    • +1
    /trunk/Mantra-I/src/log/file_destination.cpp
  1. … 6 more files in changeset.
Fixed oper/sop detection for killchans.…
Fixed oper/sop detection for killchans.

Updated bot protection to have limits like the clone limits…
Updated bot protection to have limits like the clone limits

that will lead to an akill.

    • -0
    • +30
    /trunk/Magick-II/include/operserv.h
    • -19
    • +14
    /trunk/Magick-II/src/ircsocket.cpp
    • -0
    • +111
    /trunk/Magick-II/src/operserv.cpp
Stopped trying to do latency check immediately upon starting…
Stopped trying to do latency check immediately upon starting

service (or trying to do latency check if no threads are active).

Also fixed problem where formatting was not properly applied

because we were invoking the formatter callback by value instead

of reference (caused a core).

    • -1
    • +1
    /trunk/Mantra-I/src/log/blob_filter.cpp
    • -2
    • +2
    /trunk/Mantra-I/src/log/exec_destination.cpp
    • -7
    • +5
    /trunk/Mantra-I/src/log/file_destination.cpp
    • -2
    • +2
    /trunk/Mantra-I/src/log/mmap_destination.cpp
    • -1
    • +1
    /trunk/Mantra-I/src/log/string_filter.cpp