|
|||
|
|||
|
#include <logger.h>
Inheritance diagram for FileWriter:


Public Member Functions | |
| FileWriter (InspIRCd *Instance, FILE *logfile) | |
| The constructor takes an already opened logfile. | |
| virtual void | HandleEvent (EventType et, int errornum=0) |
| Handle pending write events. | |
| void | WriteLogLine (const std::string &line) |
| Write one or more preformatted log lines. | |
| virtual void | Close () |
| Close the log file and cancel any events. | |
| virtual | ~FileWriter () |
| Close the log file and cancel any events. | |
Protected Attributes | |
| InspIRCd * | ServerInstance |
| The creator/owner of this object. | |
| FILE * | log |
| The log file (fd is inside this somewhere, we get it out with fileno()). | |
| int | writeops |
| Number of write operations that have occured. | |
Most people writing an ircd give little thought to their disk i/o. On a congested system, disk writes can block for long periods of time (e.g. if the system is busy and/or swapping a lot). If we just use a blocking fprintf() call, this could block for undesirable amounts of time (half of a second through to whole seconds). We DO NOT want this, so we make our logfile nonblocking and hook it into the SocketEngine. NB: If the operating system does not support nonblocking file I/O (linux seems to, as does freebsd) this will default to blocking behaviour.
Definition at line 29 of file logger.h.
|
||||||||||||
|
The constructor takes an already opened logfile.
Definition at line 333 of file logger.cpp. |
|
|
Close the log file and cancel any events. (indirectly call Close() Definition at line 363 of file logger.cpp. |
|
|
Close the log file and cancel any events.
Definition at line 354 of file logger.cpp. References log. |
|
||||||||||||
|
Handle pending write events. This will flush any waiting data to disk. If any data remains after the fprintf call, another write event is scheduled to write the rest of the data when possible. Implements EventHandler. Definition at line 338 of file logger.cpp. |
|
|
Write one or more preformatted log lines. If the data cannot be written immediately, this class will insert itself into the SocketEngine, and register a write event, and when the write event occurs it will attempt again to write the data. Definition at line 342 of file logger.cpp. Referenced by FileLogStream::OnLog(). |
|
|
The log file (fd is inside this somewhere, we get it out with fileno()).
Definition at line 39 of file logger.h. Referenced by Close(), and WriteLogLine(). |
|
|
The creator/owner of this object.
|
|
|
Number of write operations that have occured.
Definition at line 43 of file logger.h. Referenced by WriteLogLine(). |