OSSP CVS Repository
|1.41||Check-in : Adjust copyright messages for new year 2005. By rse.|
|1.40||Check-in : Fix compile warnings related to sigaction()'s sa_handler. By rse. (diff)|
|1.39||Check-in : Adjust copyright messages for new year 2005. By rse. (diff)|
|1.38||Check-in : - remove trailing whitespaces - adjust copyright messages - consistently use "OSSP l2" - consistently talk about "Flexible Logging" - use standard OSSP ASCII-art By rse. (diff)|
|1.37||Check-in : polish for release By rse. (diff)|
|1.36||Check-in : bump copyright year By rse. (diff)|
|1.35||Check-in : Cleanup before introducing timer changes. By ms. (diff)|
Hell, I've seldom seen that it is needed to prepare and adjust such a
lot of subtle details of existing code in order to make a new feature
implementable in a straight-forward way. Anyway, here comes one more
preparation change for the forthcoming channel tree specification
- change l2_util_setparam() to take an l2_env_t parameter which allows the function to report better error messages.
- completely rewrite l2_util_setparam() to support calls l2_channel_configure(ch, "n1=v1,n2=v2,n3=v3") and/or l2_channel_configure(ch, "n1=%x,n2=%x,n3=%x", v1, v2, v3) instead of l2_channel_configure(ch, "n1,n2,n3", v1, v2, v3)
This is both a step forward to make the interface of l2_channel_configure() more flexible (because one now can directly inline values instead of having them to be passed explicitly) and allows the spec parser not having to know the type (integer, floating point or string) of a parameter (which is important if one wants the parser to be independent of the implementing channel handlers).By rse. (diff)
More preparations for forthcoming channel tree specification parser
(especially to allow the parser to determine the handler structure
from a handler name without introducing another and this way redundant
- add "char *name" to l2_handler_t in order to tag each handler structure with the corresponding channel name
- add l2_env_handler() function to add handler to l2_env_t objects. All l2_handler_xxxx are automatically pre-configured there after l2_env_create().
- change l2_channel_create() to take a "const char *name" (handler name) instead of the "l2_handler_t *h" (handler pointer) to make the stuff consistent and more clear.
- adjust l2_test.c to reflect the changes. By rse. (diff)
|1.32||Check-in : be pedantic about syntax in order to be really portable By rse. (diff)|
|1.31||Check-in : Channel-Only Revamping Step 1: allow multiple downstream channels in order to approach the later tree-like channel-only structure. By rse. (diff)|
|1.30||Check-in : Bug fixes, correction of sys/type.h inclusion, rid of warning errors. By ms. (diff)|
|1.29||Check-in : Fixed implicit inclusion of sys/time.h. Now it is included explicitly, and solves a linux OS preprocessor problem found by Lawrence "Larry" Greenfield <email@example.com>. By ms. (diff)|
|1.28||Check-in : external feedback. I don't think hardcoding the include would be correct solution By thl. (diff)|
|1.27||Check-in : get rid of compile warnings by moving code By rse. (diff)|
|1.26||Check-in : Implemented half-solution to occupied timer problem. By ms. (diff)|
|1.25||Check-in : Completed implementation of timer. Beware of scope problem - I have only tested it, but not proven it correct. By ms. (diff)|
|1.24||Check-in : Make usage of setitimer(2) dependent on if it exists on the target system. Quick hack, future fix will replace lost functionality by issuing a call to alarm(3) instead. By ms. (diff)|
|1.23||Check-in : Changed timer from VIRTUAL to REAL. Completed flush alarm mechanism which seems to work, probably because we are not forking. By ms. (diff)|
|1.22||Check-in : Added untested code to implement alarm exceptions in the buffer channel. The buffer will auto-flush after a user specified timeout if it is even possible to do this with a c-style exception handler. By ms. (diff)|
|1.21||Check-in : 1. make level flushing optional by introducing a "levelflush" parameter which by default is off to make sure maximum throughput is achieved. 2. bugfix the write operation. By rse. (diff)|
|1.20||Check-in : Added new logic to buffer only until incoming message level changes. By ms. (diff)|
|1.19||Check-in : Corrected bufsize variable inconsistency and upgraded file descriptor handler to new L2_LEVEL parameter design. By ms. (diff)|
|1.18||Check-in : fix channel destruction in case of channel stacks By rse. (diff)|
|1.17||Check-in : Simplify channels again: The channel framework gurranties that the handler context is available if the handler has set it, so there is no need to perform an additional run-time check and try to return L2_ERR_ARG. By rse. (diff)|
|1.16||Check-in : Replace generic L2_ERROR with more granular L2_ERR_XXX and make sure that we always check with "!= L2_OK". By rse. (diff)|
|1.15||Check-in : Fix buffer channel: in case the buffer is full, the "write" operation has to flush it instead of complaining, of course. By rse. (diff)|
|1.14||Check-in : Be politically correct: channels are intended to be implemented also by users, which have only access to the public API (l2.h), so do not even try to use anything more in our own shipped channels. By rse. (diff)|
|1.13||Check-in : Be pedantically correct: handler hooks return "l2_result_t" and not "int", although currently it is just an int/enum. By rse. (diff)|
Revamp channel handler API:
Instead of passing the downstream channel to all channels we instead provide a l2_channel_downstream() function and provide the current channel. This way the handler API is prototype-wise fully orthogonal with the channel API (which it implements) and we no longer pass information to 2/3 of our (output) channels which is of no use there.
Additionally add a channel type field to l2_handler_t which allows a handler to say what type of channel it implements (filter or output). This information is now used in l2_channel_stack() to make sure that one can only stack a filter channel on top of another channel. For convinience reasons there is also a new l2_channel_type() function which allows one to query the type of a particular channel. By rse. (diff)
|1.11||Check-in : fix array sizes By rse. (diff)|
Wohhooooo! Here comes the underlying message formatting support:
1. renamed l2_channel_setparam() to l2_util_setparam() because it is just a utility function and is not tied to any channel.
2. moved l2_util_setparam() to its own l2_ut_param.c source file.
3. added l2_ut_format.c which contains a slightly adjusted version of Str's str_format() stuff under the name l2_util_format().
4. use l2_util_format() in l2_stream.c instead of vsnprintf() and this way finally support l2_formatter_t callbacks.
5. cleanup adjustments to the l2_stream_formatter() API.
Let's rock... By rse. (diff)
|1.9||Check-in : Buffer channel now flushes itself to the downstream channel before closing itself due to a call to its close method. By ms. (diff)|
|1.8||Check-in : Conforms to doc (mostly comments) standard set by l2_ch_file.c. By ms. (diff)|
|1.7||Check-in : Upgraded bzero(3) to memset(3). By ms. (diff)|
|1.6||Check-in : When buffer will overflow, it should fail first. Also, when buffer gets a write message it should not pass it downstream. The buffer writes data further downstream only when it is flushed (either by the user or implicitly.) By ms. (diff)|
|1.5||Check-in : Fix more ossp.com references by replacing with the correct domain name ossp.org. By rse. (diff)|
|1.4||Check-in : o rename l2_error_t to l2_result_t o introduce internal channel state for API robustness By rse. (diff)|
|1.3||Check-in : Implement a first cut for a buffer channel (still untested). By rse. (diff)|
|1.2||Check-in : Fill in channel handler template code. By rse. (diff)|
|1.1||Check-in : Initial revision By rse.|
|126.96.36.199||Check-in : L2 initial source tree By rse. (diff)|