0
0
Fork 0
mirror of https://github.com/matrix-construct/construct synced 2024-11-09 11:31:11 +01:00
Commit graph

933 commits

Author SHA1 Message Date
Jason Volk
2b0d74c862 configure.ac: Add -ffriend-injection to CXXFLAGS. 2017-03-20 00:00:14 -07:00
Jason Volk
99a4e523b8 fixup! fixup! fixup! fixup! ircd: Add the va_rtti construct. 2017-03-17 23:30:09 -07:00
Jason Volk
d3e5cb7f73 ircd::fmt: Add the %p format specifier for pointer types. 2017-03-17 21:14:45 -07:00
Jason Volk
3c38aeb96e ircd: Nest this ep initializer for now. 2017-03-17 20:35:00 -07:00
Jason Volk
710d959a63 ircd::json: Cleanup/improve grammar; improve linear array parse (incomplete). 2017-03-17 20:33:47 -07:00
Jason Volk
1016e993e9 ircd: Optimal HTTP status code and content length parsing. 2017-03-17 20:29:27 -07:00
Jason Volk
274e2ec717 fixup! ircd::fmt: Support string_view; updates to the format string system. 2017-03-17 20:27:33 -07:00
Jason Volk
8ef0b50131 ircd: Add tokens_after() util. 2017-03-17 20:25:42 -07:00
Jason Volk
a0e7002dde ircd::log: Drop in ircd::fmt. 2017-03-17 20:24:25 -07:00
Jason Volk
fa1c393d7a fixup! ircd: Add the va_rtti construct. 2017-03-17 20:05:36 -07:00
Jason Volk
9c137d7c50 ircd::mapi: Remove linkage of MAGIC value. 2017-03-17 17:46:20 -07:00
Jason Volk
e64ca2827d ircd: Drop in ircd::fmt for stdarg for ircd::exception. 2017-03-17 17:37:40 -07:00
Jason Volk
86804755c8 ircd: Add the va_rtti construct. 2017-03-17 17:36:09 -07:00
Jason Volk
33b5dc21b7 ircd::fmt: Support string_view; updates to the format string system. 2017-03-17 17:00:41 -07:00
Jason Volk
1d0e2b0a6a fixup! ircd::json: Add stronger value typing with runtime visitor switching. 2017-03-16 13:36:18 -07:00
Jason Volk
03ee560c13 ircd: Add aggregate spirit header (without pch at this time). 2017-03-16 13:35:37 -07:00
Jason Volk
03cf816bb7 ircd: Add labeled-params tokenizer; fix bad lexical cast exception type. 2017-03-16 13:31:17 -07:00
Jason Volk
150583c711 fixup! What is the Matrix? Control. 2017-03-15 12:08:26 -07:00
Jason Volk
c9ddf4f6ab ircd: Add lex_cast wrapper interface; various cleanup. 2017-03-14 15:03:15 -07:00
Jason Volk
26f59954af ircd: Fix seed pun. 2017-03-13 21:14:40 -07:00
Jason Volk
4a65843064 ircd: Interrupt client request parsing with 408 Request Time-out after timeout. 2017-03-13 18:44:08 -07:00
Jason Volk
55be9a9f6d ircd: Loop the whole input tape before returning to async. 2017-03-13 18:44:08 -07:00
Jason Volk
e849897cc0 ircd::parse: Capstan. 2017-03-13 18:44:08 -07:00
Jason Volk
472ee2c648 ircd: HTTP interface function-objects et al. 2017-03-13 18:44:00 -07:00
Jason Volk
bfd61f84f1 ircd: Various fixes. 2017-03-13 14:43:35 -07:00
Jason Volk
bac30f93d1 ircd::http: Add a few more protocol codes. 2017-03-13 14:43:35 -07:00
Jason Volk
49c2a5361c ircd: Various fixes. 2017-03-13 14:43:27 -07:00
Jason Volk
60ce08d0df ircd::client: http protocol dispatch. 2017-03-10 18:03:10 -08:00
Jason Volk
44ade2612c ircd::socket: Add scope_timeout for timing out synchronous operations. 2017-03-10 17:51:19 -08:00
Jason Volk
b592b69b86 What is the Matrix? Control. 2017-03-10 17:51:18 -08:00
Jason Volk
d90312bf10 ircd::js: Improve exception system flow. 2016-11-27 21:48:24 -08:00
Jason Volk
7fd111487d ircd::js: Add a branch in trap::function handler for constructors. 2016-11-25 22:53:31 -08:00
Jason Volk
a149d56afa ircd::js: Swap the flags and arity argument order for trap::function. 2016-11-25 22:52:56 -08:00
Jason Volk
8b0fe0318f gold linker. 2016-11-25 19:23:50 -08:00
Jason Volk
062e013617 ircd::js: GC Weak pointer callback logging stubs. 2016-11-25 19:23:49 -08:00
Jason Volk
d005a95e80 [todo] ircd::js: Reorg init. 2016-11-25 19:23:49 -08:00
Jason Volk
a4f55b4627 ircd::mods: Reorganize and distill interface. 2016-11-25 19:23:49 -08:00
Jason Volk
abf1dda3a6 ircd::js: Customize GC; emancipation from template types. 2016-11-25 19:23:49 -08:00
Jason Volk
d30b7ef1f6 ircd::js: Post internal errors as pending exceptions. 2016-11-25 19:23:49 -08:00
Jason Volk
686951ea8d ircd::js: Allow string deleter to print the string in its debug log. 2016-11-25 19:23:49 -08:00
Jason Volk
50cb4371dd ircd::js: Handle simple path case. 2016-11-25 19:23:49 -08:00
Jason Volk
01d814ea1a ircd::js: Add trap::property; Improve trap construction interface. 2016-11-25 19:23:49 -08:00
Jason Volk
8d92c8a9c4 ircd::js: Improve trap debug formatting. 2016-11-25 19:23:49 -08:00
Jason Volk
1e1b7c8ce9 ircd::js: Workaround SpiderMonkey linkage bug when DEBUG is defined. 2016-11-25 19:23:48 -08:00
Jason Volk
fbbe8e604a ircd::js: Add reflection and decompilation at the task level. 2016-11-25 19:23:48 -08:00
Jason Volk
4c6e182241 ircd::js: Add script bytecode and compile-test utils. 2016-11-25 19:23:48 -08:00
Jason Volk
6c54215336 ircd::js: Add handler for runtime Preserve Wrapper callback. 2016-11-25 19:23:48 -08:00
Jason Volk
3e8aaf0c13 ircd::js: #define DEBUG internally for JS when RB_DEBUG is also set. 2016-11-25 19:23:48 -08:00
Jason Volk
f2a395b879 ircd::js: Improve for_each(). 2016-11-25 19:23:48 -08:00
Jason Volk
4edfd51106 ircd::js: Various fixes for conversions and root-ordering through calls. 2016-11-25 19:23:48 -08:00
Jason Volk
0e47468e63 ircd::js: Add JSON support. 2016-11-25 19:23:47 -08:00
Jason Volk
3e4a9e58f7 ircd::js: Improve trap function interface. 2016-11-25 19:23:47 -08:00
Jason Volk
29b384ca0f ircd::js: Remove trap tree traversal in the virtual default. 2016-11-25 19:23:47 -08:00
Jason Volk
88fd6971ec ircd::js: Improve private data slot interface related. 2016-11-25 19:23:47 -08:00
Jason Volk
6aae248357 ircd::js: Fix various debug log messages. 2016-11-25 19:23:47 -08:00
Jason Volk
254f5b921a ircd::js: Fixes to async state related. 2016-11-25 19:23:47 -08:00
Jason Volk
61017f4cdc ircd::js: Add tracing support for GC.
ircd::js: Add template constexprs for jsapi handle types.
2016-11-25 19:23:47 -08:00
Jason Volk
20e62f04df ircd::js: Minor context interface cleanup; prevent task struct address change. 2016-11-25 19:23:47 -08:00
Jason Volk
070771f49b ircd::mods: Make log messages more consistent. 2016-11-25 19:23:47 -08:00
Jason Volk
8554fc858b ircd::log: Add function to logger with facility argument. 2016-11-25 19:23:47 -08:00
Jason Volk
f0a9f8bdc4 ircd::js: Improve information in various debug outputs. 2016-11-25 19:23:46 -08:00
Jason Volk
a44e6f701f ircd::js: Fix pending exception propagation on interleaving stack. 2016-11-25 19:23:46 -08:00
Jason Volk
ae4057b1d5 ircd::js: Use std::string for trap mapping. 2016-11-25 19:23:33 -08:00
Jason Volk
f92f117edc ircd::js: trap GC handler must be 'noexcept' apropos JS. 2016-11-13 16:34:27 -08:00
Jason Volk
559bc530c8 ircd::js: Improve off-thread compilation error handling. 2016-11-13 16:34:27 -08:00
Jason Volk
c8402577c3 ircd::js: GC related fixes. 2016-11-13 16:34:27 -08:00
Jason Volk
c3e6c52192 ircd::js: Improve private slot access. 2016-11-13 16:34:27 -08:00
Jason Volk
7a99d919d6 ircd::js: Improve reserved data access. 2016-11-13 16:34:27 -08:00
Jason Volk
84383d41d8 ircd::js: Fix unconditional cast of this to object type in trap::on_call handlers. 2016-11-13 16:34:24 -08:00
Jason Volk
fcc654699d ircd::locale: Add char16_t conversion overloads for unterminated strings.
ircd::js: Use sized conversions when calling ircd::locale.
2016-11-13 16:34:06 -08:00
Jason Volk
b8f5366f52 ircd::js: Improve trap callback arguments; add this value. 2016-11-13 16:34:00 -08:00
Jason Volk
67d9f11fbc ircd::js: Add constructible-id overload for get()/set()/has()/del(). 2016-11-13 16:33:25 -08:00
Jason Volk
da78598d86 ircd::mapi: Rectify linkage of the header symbol name string. 2016-11-13 16:33:25 -08:00
Jason Volk
0d2d21b49f ircd::js: Add asynchronous/concurrent compilation. 2016-11-13 16:33:24 -08:00
Jason Volk
edd77d2265 ircd::js: Add asynchronous state and completion target mechanism. 2016-11-13 16:33:22 -08:00
Jason Volk
333b0dca5a ircd::js: Use a script object in the task (more flexible than function). 2016-11-13 16:32:42 -08:00
Jason Volk
0e541cd3a9 ircd::js: get()/set()/has()/del() for array object indexes. 2016-11-13 16:32:41 -08:00
Jason Volk
d5fd794511 ircd::js: Add JSProp flags as arguments for constructing trap. 2016-11-13 16:32:41 -08:00
Jason Volk
0ed531fff1 ircd::js: Move JSClass instances to a drainage container until JSRuntime shutdown. 2016-11-13 16:32:41 -08:00
Jason Volk
f2b59a57dc ircd::js: Variadic arguments for object construction via trap. 2016-11-13 16:32:41 -08:00
Jason Volk
d2b3bedca6 ircd::js: Task identification (PID) and reference counted management. 2016-11-13 16:32:41 -08:00
Jason Volk
cca79d87fc ircd::js: Assertions for pending exceptions. 2016-11-13 16:32:41 -08:00
Jason Volk
e214d6e40c ircd::js: Remove boolean return type from trap hook for enumeration. 2016-11-13 16:32:41 -08:00
Jason Volk
bf540caead ircd::js: Order arguments to call() more intuitively. 2016-11-13 16:32:41 -08:00
Jason Volk
8a3f592753 ircd::js: Add property flag reflection. 2016-11-13 16:32:41 -08:00
Jason Volk
1adc76034c ircd::js: Fix trap constructor handler (?) 2016-11-13 16:32:41 -08:00
Jason Volk
3fcd3d2bb0 ircd::js: Trap find() overload with JSString type. 2016-11-13 16:32:40 -08:00
Jason Volk
12c1755899 ircd::js: Functions to get current zone; debug callbacks for zone; etc. 2016-11-13 16:32:40 -08:00
Jason Volk
c70ddd5a80 ircd::js: Allow setting the ECMA version for a compartment. 2016-11-13 16:32:40 -08:00
Jason Volk
845e81e446 ircd::locale: Move char16_t conversions into namespace. 2016-11-13 16:32:40 -08:00
Jason Volk
fc6cf72e2d ircd::js: Nullify the trap JSClass contents on dtor; minor fixes. 2016-11-13 16:32:40 -08:00
Jason Volk
cff506e0be ircd::js: Add global/task struct. 2016-11-13 16:32:40 -08:00
Jason Volk
d0ec6497c7 ircd::js: Add object private/reserved getters and setters. 2016-11-13 16:32:40 -08:00
Jason Volk
2846f80a8d ircd::js: Make trap tree root thread local near rt/cx. 2016-11-13 16:32:40 -08:00
Jason Volk
5e81c26fdf ircd::js: Add and use calls for current_compartment(). 2016-11-13 16:32:39 -08:00
Jason Volk
639dd7903b ircd::js: Move TLS assignment out of runtime/context (though this doesn't matter). 2016-11-13 16:32:39 -08:00
Jason Volk
ac14c2a4db ircd::js: Add generator state class. 2016-11-13 16:32:39 -08:00
Jason Volk
afefb2db07 ircd::js: Fix erroneous has() exception. 2016-11-13 16:32:39 -08:00
Jason Volk
7e18e32ce4 ircd::js: Improve/cleanup exception string generaton related. 2016-11-13 16:32:39 -08:00
Jason Volk
164f650a0f ircd::js: Use JS::Heap<> container for exception value. 2016-11-13 16:32:39 -08:00
Jason Volk
6b5bab0871 ircd::js: Convert all JS type wrappers into templates and typedef on requsted GC.
Templates are now in the namespace basic:: i.e `basic::value<>`
Typedefs are in ircd::js:: matching the original non-template types.

Ex. stack-duration type in template form is: `basic::value<lifetime::stack>`
Ex. stack-duration type in typedef form is `value`
Ex. heap-duration type in template form is: `basic::value<lifetime::heap>`
Ex. heap-duration type in typedef form is: `heap_value`
2016-11-13 16:32:39 -08:00
Jason Volk
7e66df914a ircd::js: Add debug dump() calls from JS_DEBUG ifdef'ed api. 2016-11-13 16:32:39 -08:00
Jason Volk
54c8044ca1 ircd::js: Add trap_function alternative to full object trap. 2016-11-13 16:32:38 -08:00
Jason Volk
5de2622bd1 ircd::js: Add string literal constructor to prevent any alloc/copy/free. 2016-11-13 16:32:38 -08:00
Jason Volk
118fc20bbc ircd::js: Use js strings in trap tree mappings. 2016-11-13 16:32:38 -08:00
Jason Volk
be48466ef3 fixup! [temp] Checkpoint test. 2016-11-13 16:32:38 -08:00
Jason Volk
4c62795aeb ircd::js: Use jsapi external string facilities for string constructions. 2016-11-13 16:32:38 -08:00
Jason Volk
6a1fb4e8fb ircd::local: Add additional char/char16_t buffer conversion. 2016-11-13 16:32:37 -08:00
Jason Volk
97c0d3df7d ircd::js: Support trap dtors on GC. 2016-11-13 16:32:37 -08:00
Jason Volk
ae40f9c016 ircd: Move all signal handling to charybdis executable. 2016-11-13 16:32:37 -08:00
Jason Volk
2d89b583e9 ircd::mods: Throw filesystem_error when requesting symbols on bad path. 2016-11-13 16:32:37 -08:00
Jason Volk
859f464698 ircd::ctx: Set the SELF_DESTRUCT flag on context::detach(). 2016-11-13 16:32:37 -08:00
Jason Volk
a8736e2198 ircd::js: Record the main thread id to know if js ever calls/debugs from another. 2016-11-13 16:32:37 -08:00
Jason Volk
04c6b67649 fixup! ircd::js: Stub runtime/context callback framework. 2016-11-13 16:32:37 -08:00
Jason Volk
91d11f391b ircd::js: Add recursive tree semantics to object trap system. 2016-11-13 16:29:47 -08:00
Jason Volk
fedeab2ddd ircd: Add locale:: namespace for portable internationalization. 2016-11-13 16:29:47 -08:00
Jason Volk
fd0f925459 ircd::js: Add handle typedefs in object wrappers to clean up arguments. 2016-11-13 16:29:47 -08:00
Jason Volk
6d7e1157b1 ircd::js: Add recursive has(), get(), set(), del(). 2016-11-13 16:29:46 -08:00
Jason Volk
b69444138f ircd::js: Reflect JSType + value type tests. 2016-11-13 16:29:46 -08:00
Jason Volk
1ae9f4ffa4 ircd::js: Add function_literal convenience. 2016-11-13 16:29:46 -08:00
Jason Volk
c2f23a01bd ircd::js: Support more debug and statistics from js engine. 2016-11-13 16:29:46 -08:00
Jason Volk
8f9465764d ircd::js: Construct compartment from more implicit information. 2016-11-13 16:29:46 -08:00
Jason Volk
c704c67aa5 ircd: Add more stringops tokenizer overloads. 2016-11-13 16:29:46 -08:00
Jason Volk
9ecb26d27e ircd::js: Simplify the interrupt(context) call. 2016-11-13 16:29:46 -08:00
Jason Volk
b6ba71b6a0 ircd::js: Add ctor/call functionality to object trap. 2016-11-13 16:29:46 -08:00
Jason Volk
83fbbc6462 ircd::js: Fix compartment acquire; trap JSClass delete; debug related. 2016-11-13 16:29:46 -08:00
Jason Volk
5069df70c0 ircd::js: Add string comparison, equality operator and empty on null. 2016-11-13 16:29:45 -08:00
Jason Volk
aae1264d7f ircd::js: Add some GC related stats/controls. 2016-11-13 16:29:45 -08:00
Jason Volk
2d89f0e97c ircd::js: Improve exception sequence / Add script and line data. 2016-11-13 16:29:45 -08:00
Jason Volk
f9848b0494 ircd::js: Add wait-free (for the user) timer. 2016-11-13 16:29:45 -08:00
Jason Volk
ad1fef4247 ircd::js: Add wait-free execution interruption. 2016-11-13 16:29:45 -08:00
Jason Volk
2f645941a8 ircd::ctx: Move ctx headers into directory. 2016-11-13 16:29:45 -08:00
Jason Volk
e6c8025ae0 ircd::ctx: Add yield() allowing other contexts to run before returning. 2016-11-13 16:29:45 -08:00
Jason Volk
b289c63b99 ircd::js: Improve the exception translation. 2016-11-13 16:29:45 -08:00
Jason Volk
4872883860 ircd::js: Improve value construction / string related. 2016-11-13 16:29:45 -08:00
Jason Volk
0b9efe06a1 ircd::js: Make the best of SM's jsalloc.h missing ReportOutOfMemory here. 2016-11-13 16:29:45 -08:00
Jason Volk
23318a2b4f ircd::js: Add script object + caller / deinline function caller. 2016-11-13 16:29:44 -08:00
Jason Volk
8108773021 ircd::js: Wrap JSAPI objects for better semantics. 2016-11-13 16:29:44 -08:00
Jason Volk
f0a1177c07 ircd::js: Fix assertion of handler type for Global object trap. 2016-11-13 16:29:44 -08:00
Jason Volk
b3c46af4a1 ircd::js: Lock context and run js dtor even on bailout for now. 2016-11-13 16:29:44 -08:00
Jason Volk
7fa3777a57 ircd::js: Improve trap exceptions; noexcept all jsapi callbacks. 2016-11-13 16:29:44 -08:00
Jason Volk
4171a9c834 ircd::js: Add js exception hierarchy. 2016-11-13 16:29:44 -08:00
Jason Volk
2c231ac187 ircd: Add exception message generation bypass constructor. 2016-11-13 16:29:44 -08:00
Jason Volk
dffb39f8cc ircd::js: Add string utf conversions; improve string related. 2016-11-13 16:29:44 -08:00
Jason Volk
4cc0b16086 ircd::js: Force garbage collection when a trap is destructed. 2016-11-13 16:29:44 -08:00
Jason Volk
7b5629e4a5 ircd::js: Add basic trap debug / rename trap.res -> trap.has. 2016-11-13 16:29:44 -08:00
Jason Volk
34881325bb ircd::js: Develop object compartment related. 2016-11-13 16:29:43 -08:00
Jason Volk
0e2b8600e5 ircd::js: Moz people recommend thread_local JSRuntime/JSContext;
There is no reason to clutter most arguments with contexts. Additionally
these will be merged in the future SpiderMonkey. There is only one
JSRuntime/JSContext per thread and it must be locked when in use.
2016-11-13 16:29:43 -08:00
Jason Volk
6db6b2a975 ircd::js: Add trap to define JSObject functionality in C. 2016-11-13 16:29:43 -08:00
Jason Volk
c7ea23bece ircd::js: Add debug / reflection for JSErrorReport; deinline other debug. 2016-11-13 16:29:43 -08:00
Jason Volk
01e6e732cc ircd::js: Stub runtime/context callback framework. 2016-10-25 01:55:50 -07:00
Jason Volk
c1fd6391c6 ircd::js: Add barebones accoutrements. 2016-10-25 01:55:50 -07:00
Jason Volk
191258cea5 ircd::js: Add main runtime and main context. 2016-10-25 01:55:50 -07:00
Jason Volk
95068c7d06 Introduce Mozilla SpiderMonkey. 2016-10-25 01:55:50 -07:00
Jason Volk
fde4626fce ircd::cmds: Minor cleanup of cmds:: related. 2016-10-11 03:30:11 -07:00
Jason Volk
43b07d1180 ircd: Add more token related stringops. 2016-10-11 03:30:11 -07:00
Jason Volk
5e0659b2f9 ircd: Use variable length receive buffer. 2016-09-28 14:19:18 -07:00
Jason Volk
757d7e10a8 [temp] checkpoint some crap which isn't going to stick. 2016-09-27 17:29:06 -07:00
Jason Volk
bbd73746c3 ircd::ctx: Abstract the db::work subsystem into ctx::ole OffLoad Engine (OLE). 2016-09-27 17:28:24 -07:00
Jason Volk
33cc4c19d7 ircd::db: Add standard iteration + caching/options improvements. 2016-09-27 17:27:48 -07:00
Jason Volk
2251595551 ircd::ctx: Add preliminary profiling system to mitigate silent degradation.
This system alerts the developer when something blocks a context from yielding
for too long or exceeds stack usage limits. More profiling can be added for
further optimization.
2016-09-27 17:27:48 -07:00
Jason Volk
acd5593aac ircd::db: Develop basic key/value API. 2016-09-27 17:27:48 -07:00
Jason Volk
3083bb8e62 ircd::db: Add logging mask for db subsys and improve handle opening messages. 2016-09-27 17:27:48 -07:00
Jason Volk
34eae9a829 ircd::db: Develop options system for database. 2016-09-27 17:27:48 -07:00
Jason Volk
5df4bf6da2 ircd::db: Add database interface. Support RocksDB. 2016-09-27 02:20:42 -07:00
Jason Volk
e642d24681 ircd::mods: Allow a symbol unloader when no loader is given. 2016-09-27 02:20:42 -07:00
Jason Volk
1da6aa2b93 ircd::mapi: Improve the stuck-module message by showing it immediately. 2016-09-27 02:20:42 -07:00
Jason Volk
6d2d5a71f5 ircd::fs: Add function to build path. 2016-09-26 16:06:56 -07:00
Jason Volk
0913873b30 ircd::fs: Generalize DBPATH. 2016-09-26 16:06:56 -07:00
Jason Volk
284bad47e9 ircd: Add mods::init; a subsystem init/fini singleton held by ircd::main(). 2016-09-24 16:40:02 -07:00
Jason Volk
a4d186b6a1 ircd: Refactor hook system. 2016-09-23 00:01:00 -07:00
Jason Volk
2d494d8924 charybdis: Move getopt out from ircd::. 2016-09-23 00:01:00 -07:00
Jason Volk
f7f9d87df0 ircd::ctx: Add context pool. 2016-09-23 00:01:00 -07:00
Jason Volk
e2d115a97a ircd::ctx: Add sleep() suite, or a wait() which ignores notification. 2016-09-22 16:18:32 -07:00
Jason Volk
1a367399d3 ircd::rfc1459: Replace gather() with charset() for use with spirit char_(). 2016-09-22 16:18:32 -07:00
Jason Volk
581ca84439 ircd: sendf() directly to client (prelim). 2016-09-22 16:18:32 -07:00
Jason Volk
5dd280bb3b ircd::fmt: snprintf -> category. 2016-09-22 16:18:32 -07:00
Jason Volk
ccac92704d ircd::fmt: Add "%param" and "%parv" for middle and full-vector, respectively. 2016-09-22 16:18:32 -07:00
Jason Volk
fb50f82b6e ircd::rfc1459: Allow generation of single character params, and empty strings. 2016-09-22 16:18:32 -07:00
Jason Volk
99ad299ef0 ircd::fmt: Add a "%prefix" specifier which builds ":foo!bar@baz" from the arg. 2016-09-22 16:18:32 -07:00
Jason Volk
21aacf6509 ircd::fmt: Add syntax for specifier forced-termination.
This is available for a particular corner case due to our use of full-
word format specifiers.

Case: "%couch" is that %c followed by ouch, or is that the handled
format specifier '%couch' ?

If '%couch' is not registered there is no fallback to finding '%c'
(maybe one day), so in this case one must write "%c$ouch" and '%c'
becomes the specifier and the output for 'p' will be "pouch" and for
"%c$$ouch" the output will be "p$ouch."
2016-09-22 16:18:32 -07:00
Jason Volk
d82c013552 ircd::fmt: Develop format string basics. 2016-09-22 16:18:32 -07:00
Jason Volk
2b8bf0a4d1 ircd::fmt: Add modular format specifiers. 2016-09-22 16:18:32 -07:00
Jason Volk
d698b8a4a8 ircd: Break up rfc1459:: 2016-09-22 16:18:32 -07:00
Jason Volk
1837f55d11 ircd::rfc1459: Output grammar [part 2: protocol-safe format strings]. 2016-09-22 16:18:32 -07:00
Jason Volk
1e2ce3617d ircd::rfc1459: Output grammar [part 1: structure streams]. 2016-09-22 16:18:31 -07:00
Jason Volk
d8d2fe1564 ircd: Add scope 'life_guard' util for references in reentrant contexts. 2016-09-22 16:18:31 -07:00
Jason Volk
417594d0cd mapi: Add check for "stuck modules" and display warning for developer. 2016-09-21 16:29:30 -07:00
Jason Volk
0096a4a8c6 mapi: Reincarnate MAPI III key-value metadata, C++ style. 2016-09-21 16:29:30 -07:00
Jason Volk
679855be15 ircd: Split rbuf.h off client.cc 2016-09-21 16:29:30 -07:00
Jason Volk
ca4e04d85f ircd::vm: Introduce vm; temp demo an immediate context. 2016-09-21 16:29:30 -07:00
Jason Volk
fcd410d656 ircd::client: Add timer logic to client socket/io.
Note: Not sure if I like two reference counters for each client,
ideally, but we'll see where it goes after abstractions.
2016-09-21 16:29:30 -07:00
Jason Volk
a9f967d16a ircd: Feed received tape into the machine. 2016-09-21 16:29:30 -07:00
Jason Volk
fe7a1faccb ircd::rfc1459: Modify the tape grammar to accept empty terminated inputs. 2016-09-21 16:29:30 -07:00
Jason Volk
c706357db7 ircd: Add empty() for empty line checks; retune ircd::line typedef. 2016-09-21 16:29:29 -07:00
Jason Volk
e87a8cc5d2 ircd: Add low-level net utils for client (non-abstract). 2016-09-21 16:29:29 -07:00
Jason Volk
221145b31b ircd: Remove operhash. 2016-09-21 16:29:29 -07:00
Jason Volk
1fcb08d261 ircd: Post main exit cb to ios to keep the user off our stack; improve main comments. 2016-09-21 16:29:29 -07:00
Jason Volk
5cc056e68c ircd: Remove privset. 2016-09-21 16:29:29 -07:00
Jason Volk
dd1ef4fecf ircd: Remove dns, packet/parse, reject. 2016-09-21 16:29:29 -07:00
Jason Volk
922337386e ircd: Remove authproc, sslproc, wsproc, bandbi. 2016-09-21 16:29:29 -07:00
Jason Volk
d36541bb86 ircd: Remove old listener. (note to readd ban logic). 2016-09-21 16:29:29 -07:00
Jason Volk
d098a524e1 ircd: Remove msgbuf. 2016-09-21 16:29:29 -07:00
Jason Volk
6252d6f11e ircd: Remove cruft which boost abstracts away. 2016-09-21 16:29:29 -07:00
Jason Volk
26a3cd8441 Preliminary new client. Reorg/renames for ircd::client struct symbol. 2016-09-21 16:29:29 -07:00
Jason Volk
9d558e5eb4 ircd: Rename cmd.h/cc files to cmds.h/.cc 2016-09-21 16:29:28 -07:00
Jason Volk
556ceba8a0 ircd: new client; start over. 2016-09-21 16:29:28 -07:00
Jason Volk
89c2e74f3b ircd::ctx: Improve context interface. 2016-09-21 16:29:26 -07:00
Jason Volk
26adba7356 ircd::mods: Ignore empty handlers. 2016-09-21 16:28:52 -07:00
Jason Volk
090def32d2 ircd::mods: Add unload() to unload all modules. 2016-09-21 16:28:52 -07:00
Jason Volk
f71a7a5fb9 ircd::rfc1459: Reorganize grammar for better reuse. Add tape parser. 2016-09-21 16:28:52 -07:00
Jason Volk
07177e8a6b ircd/charybdis: Add at_main_exit() callback to indicate IRCd has finished
to the host program. Without any indication, the outer program's handlers
will continue to keep ios.run() from returning.
2016-09-21 16:28:51 -07:00
Jason Volk
aca6eefcd9 ircd: Improve exception reporting on newconf parsing. 2016-09-21 16:28:51 -07:00
Jason Volk
45c37f602e ircd: Establish main context; primary flow. 2016-09-21 16:28:51 -07:00
Jason Volk
2742547826 Introduce modular configuration system. 2016-09-21 16:28:51 -07:00
Jason Volk
d2bb8cd8a7 ircd::ctx: Add primary features to context. 2016-09-21 16:28:49 -07:00
Jason Volk
249ba02faa Introduce userspace contexts. 2016-09-09 16:17:36 -07:00
Jason Volk
88a15924ed ircd::log: Add console_quiet to suppress log messages to console. 2016-09-09 16:17:36 -07:00
Jason Volk
cead127c73 ircd::rfc1459: Adjust grammar to allow 'empty message' of "\r\n" 2016-09-09 16:17:36 -07:00
Jason Volk
9275429ee1 Replace command system. 2016-09-09 16:17:36 -07:00
Jason Volk
46d992d3a0 ircd::log: Connect the -debug command line switch to DEBUG facility. 2016-09-09 16:17:34 -07:00
Jason Volk
ae71d5eabb ircd::modules: Search for module with automated path suffix. 2016-09-09 16:17:03 -07:00
Jason Volk
db3d770b9d ircd::rfc1459: Introduce formal grammar. 2016-09-09 16:17:03 -07:00
Jason Volk
f446081021 ircd::rfc1459: Add util to build string of characters by attribute. 2016-09-09 16:17:03 -07:00
Jason Volk
2c854124af ircd::conf: Add newconf to oldconf translation. 2016-09-09 16:17:02 -07:00
Jason Volk
3e1bf93a22 ircd: Move reconstruct_parv() from parse.cc to stringops.cc 2016-09-09 16:17:02 -07:00
Jason Volk
670990a215 Upgrade newconf parser to boost::spirit. 2016-09-09 16:17:02 -07:00
Jason Volk
edd8fa2ab0 Chase the Bison off a cliff.
---<<|<᚜<᚜᚜᚜᚜-
2016-09-09 16:17:02 -07:00
Jason Volk
12c836dc6e Rip out libltdl. 2016-09-09 16:17:02 -07:00
Jason Volk
5aeeb73e20 ircd: Introduce ASIO; stub for signal handling and console UI. 2016-09-09 16:17:02 -07:00
Jason Volk
baa60ed253 ircd: Add booltype to getopts parser. 2016-09-09 16:17:02 -07:00
Jason Volk
4b9dc5bff4 ircd: Populate path:: with boost::filesystem wrapping. 2016-09-09 16:17:02 -07:00
Jason Volk
4b62a704bf charybdis: Establish main entry point. 2016-09-09 16:17:02 -07:00
Jason Volk
4399c1e2c3 ircd: Populate stringops with some general utils. 2016-09-09 16:17:01 -07:00
Jason Volk
a8ed3d2dc2 Simplify ircd::fs::path related to ircd::path. 2016-09-09 16:17:01 -07:00
Jason Volk
102c15d768 ircd: Remove fs path relocations for windows. 2016-09-09 16:17:01 -07:00
Jason Volk
153b017358 ircd: Remove pidfile. 2016-09-09 16:17:01 -07:00
Jason Volk
9d0a959bb5 MAPI IV. This iteration leverages the C++11 standardized RTTI.
* Simplifies the export declarations for module developers. While
MAPI III utilized a flexible key-value vector to eliminate positional
arguments in a header initializer, now the developer simply makes
a list of pointers to what they want to export for injection into
IRCd. Example:

mapi::header IRCD_MODULE
{
	"mymod",
	"My module adds a command, a hook, and a CLICAP",
	&my_cmdtab,
	&some_hook,
	&clicaptab
};

* Distributes the handlers for items passed to the above vector.
Anyone can add a type-handler to the module system from anywhere in IRCd
(and other modules?) When your type is encountered a handler is called
providing the symbol name to read out of the module. Example in parser.cc:

mods::add_loader<Message>([]
(mod &loading, const std::string &symbol)
{
	auto &msg(get<Message>(loading, symbol));
	add_command(msg.name, msg);
});
2016-09-09 16:17:01 -07:00
Jason Volk
e052b0ed06 ircd: Reuse umode template code here and there. 2016-09-09 16:17:01 -07:00
Jason Volk
3ebde4ab50 Convert umodes to mode_lease mechanism. 2016-09-09 16:17:01 -07:00
Jason Volk
127378b57c Refactor logger. 2016-09-09 16:17:00 -07:00
Jason Volk
7dc9b7648e ircd: Remove pleonastic message prefix in sendto_realops_snomask(). 2016-08-28 01:48:25 -07:00
Jason Volk
052a6c8d22 Refactor snomask. 2016-08-28 01:48:25 -07:00
Jason Volk
883dada3d4 ircd: Rename hostmask to mask; add pretty_mask() from chmode. 2016-08-27 20:57:36 -07:00
Jason Volk
8cca1190ec ircd: Deinline stringops.h 2016-08-27 20:57:36 -07:00
Jason Volk
21cfd2eefd ircd: Rename newconf name conflict. 2016-08-26 08:50:11 -07:00
Jason Volk
9d87313756 ircd: Hose fork()/close(fd) related. 2016-08-25 22:02:19 -07:00
Jason Volk
d9e90e8937 ircd::cache: Convert send function arguments client* -> client& 2016-08-25 04:57:23 -07:00
Jason Volk
5f79420c29 Refactor isupport. 2016-08-25 03:01:45 -07:00
Jason Volk
9c16de2d41 Refactor whowas. 2016-08-25 02:34:28 -07:00
Jason Volk
5f218cdbb2 Refactor scache. 2016-08-25 02:07:11 -07:00
Jason Volk
3e26e7ab44 ircd: Move tgchange related into namespace. 2016-08-25 02:07:11 -07:00
Jason Volk
9eaf1c80d1 ircd::client: Split client. 2016-08-25 02:07:11 -07:00
Jason Volk
f33b369609 Refactor umodes. 2016-08-23 15:25:09 -07:00
Jason Volk
2088193118 ircd: Allow non-default CAP_MASK during server estab. 2016-08-23 05:22:38 -07:00
Jason Volk
b65c5430f2 Refactor client flags. 2016-08-23 05:22:38 -07:00
Jason Volk
ab9a8e5c04 Convert all client handler arguments to reference type. 2016-08-23 05:22:38 -07:00
Jason Volk
dd9124b687 Preliminary Client refactor.
Add client to ircd::client:: namespace.

Also move former struct User and struct Server into client.cc as
opaque structure demo.
2016-08-22 15:56:12 -07:00
Jason Volk
90093b82e6 Upgrade user struct. 2016-08-21 15:30:22 -07:00
Jason Volk
9a22cfd393 ircd::chan: Add some basic protocol ERR exceptions. 2016-08-21 15:30:22 -07:00
Jason Volk
68b8a83419 ircd: Reduce is_chanop_voiced(). 2016-08-21 15:30:22 -07:00
Jason Volk
25d7274afa Fix missing namespace import. 2016-08-20 20:39:31 -07:00
Jason Volk
9835d43977 Upgrade channels structure. 2016-08-20 20:39:29 -07:00
Jason Volk
5752be41b8 Upgrade channel membership lists. 2016-08-20 19:30:35 -07:00
Jason Volk
276cad4275 Upgrade the channel invite list. 2016-08-20 19:30:35 -07:00
Jason Volk
a84fe8a09b Upgrade bqeI channel lists. 2016-08-20 19:30:35 -07:00
Jason Volk
125e3b21f2 ircd: Improve/rename channel name check related. 2016-08-20 19:30:34 -07:00
Jason Volk
7d44e271f7 Better names for some channel mode convenience former-macros. 2016-08-20 19:30:34 -07:00
Jason Volk
e1cccd482b Updates to match utilities. 2016-08-20 19:30:34 -07:00
Jason Volk
b7a84d3650 Prevent ambiguous cast when the comparator function is overloaded. 2016-08-20 19:30:34 -07:00
Jason Volk
2352528ffb ircd: rename mask_match() to match_mask(). 2016-08-20 19:30:34 -07:00
Jason Volk
f5143fbf73 Add channel structure into namespace + remove related rb_banheaps. 2016-08-20 19:30:34 -07:00
Jason Volk
03660fc4b0 Refactor chmode into namespace.
She's still a bit of a mess.
2016-08-20 19:30:34 -07:00
Jason Volk
f112111e51 Add rfc1459:: case compliance namespace. 2016-08-20 19:30:34 -07:00
Jason Volk
3f6d567285 ircd: Improve/refactor version.cc -> info.cc related. 2016-08-20 19:30:34 -07:00
Jason Volk
60c044d78a Fix redundant/conflicting namespace labels. 2016-08-20 19:30:33 -07:00
Jason Volk
fc4af83fdf Remove __unused macro. 2016-08-20 19:30:33 -07:00
Jason Volk
61b517ca3c Precompile and remove most include directives. Notes:
* To benefit from the precompiled-header (PCH) it MUST provide "the first C token."

Advantages:
Never worry about the include stack again. Remember, this means one less thing
for random module developers, community people learning C++, and new developers
to deal with. It should reduce the learning curve and barrier for participation.

Disadvantages:
Makes overall compilation a bit slower, especially without any additional
work to improve it again. There are several opportunities, places where the
PCH is probably being ignored, etc that can be addressed.
2016-08-20 19:30:33 -07:00
Jason Volk
029a83a17d ircd: Update exception macro to ensure format string checks. 2016-08-20 19:30:32 -07:00
Jason Volk
a1ee5034a2 Organize fs/path related into namespace. 2016-08-19 22:39:34 -07:00
Jason Volk
90c9fe686e ircd: Namespace and partially modernize ircd::cache. 2016-08-19 22:39:34 -07:00
Jason Volk
a71a4551ae ircd: Insert into ircd:: namespace. 2016-08-13 02:43:42 -07:00
Jason Volk
0e62b5a91a Add PIC/PCH condition in stdinc.h. 2016-08-13 02:43:41 -07:00
Jason Volk
fb8792da3d ircd: Towards a comprehensive capability C -> C++ refactor. 2016-08-13 02:43:41 -07:00
Jason Volk
f6199d5d12 Reduce redundant includes. 2016-08-12 16:41:40 -07:00
William Pitcock
09d19cbbd3 capability: clean up CAP_REQUIRED and CAP_ORPHANED flags, use bool variables instead 2016-07-31 18:39:19 -05:00
William Pitcock
e7a768ca22 capability: fix capability stats dumping 2016-07-31 18:10:31 -05:00
William Pitcock
8bb208aaa2 version: don't crash due to buffer underrun 2016-07-31 03:35:45 -05:00
William Pitcock
d0a59d58a0 capability: major rewrite for C++ support.
- no rb_dictionary use anymore
- CapabilityIndex converted into a proper class
- proper RAII lifecycle management
2016-07-31 03:18:22 -05:00
William Pitcock
10ff2d192c alias: convert to RAII/std::string/etc, no more rb_dictionary use (ref #202) 2016-07-31 01:57:04 -05:00
William Pitcock
1c77b054a8 parse: move cmd_dict to a std::set 2016-07-31 01:36:14 -05:00
William Pitcock
4ed0aebcb6 cache: further cleanups 2016-07-31 01:21:10 -05:00
William Pitcock
840ffb0935 cache: do not cause an implicit copy of std::string elements 2016-07-31 01:19:15 -05:00
William Pitcock
c7135bdf9a cache: adopt proper RAII pattern 2016-07-31 01:03:05 -05:00
William Pitcock
1c813cee95 cache: rough conversion of help system to std::map (ref #202) 2016-07-30 22:13:29 -05:00
Jason Volk
625fb277ca Add root exception + basic utilities. 2016-07-25 19:43:26 -07:00
Jason Volk
73297c988b Preliminary defaults/paths namespacing.
The namespace is inline to mimic the C namespace for now.
2016-07-25 16:49:00 -07:00
Jason Volk
4796bec441 Activate PCH for position independent code.
Cuts compilation time by 30%+
2016-07-25 00:54:38 -07:00
Jason Volk
d1edbc0e58 Complete the C++ linkage with flex/bison. 2016-07-25 00:54:38 -07:00
Jason Volk
404239eb60 Build system cleanup. 2016-07-22 19:46:28 -07:00