0
0
Fork 0
mirror of https://github.com/matrix-construct/construct synced 2024-07-05 18:18:35 +02:00
Commit graph

219 commits

Author SHA1 Message Date
Jason Volk a6466631ce ircd::ctx: Add a mutex primitive. 2016-09-22 16:18:32 -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 fb50f82b6e ircd::rfc1459: Allow generation of single character params, and empty strings. 2016-09-22 16:18:32 -07:00
Jason Volk a42765f0f3 ircd::rfc1459: Relax construction of primitive structures.
Allows cleaner bracket-notated aggregate initialization through pfx.
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 8f9a4bd6db ircd::util: Add util to test is type is complete. 2016-09-21 16:29:30 -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 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 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 ec283711c2 ircd: Rename ircd_getopt.h. 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 847cb12d35 ircd: Add preliminary u::id struct. 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 a4e810d1c8 ircd::util: Prevent scope copying / minor cleanup. 2016-09-21 16:29:28 -07:00
Jason Volk a023048419 ircd::util: Add weak typedef util. 2016-09-21 16:29:28 -07:00
Jason Volk 59982cff43 ircd: Add utils for manipulating boost iov's. 2016-09-21 16:29:28 -07:00
Jason Volk 4f6b56c3af ircd::util: Add std::chrono timer for benching. 2016-09-21 16:29:28 -07:00
Jason Volk eb1d8fd8e6 ircd: Add convenience to test if line has a param number. 2016-09-21 16:29:28 -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 090def32d2 ircd::mods: Add unload() to unload all modules. 2016-09-21 16:28:52 -07:00
Jason Volk 0dbb0d4af5 ircd::util: Split lex_cast into header (otherwise the ifdef will never be true). 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 cd92e5ed91 ircd: Split cmd.h to line.h 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 f25cb78588 ircd: Enumerate non-standard but ubiquitous mIRC colors. 2016-09-21 16:28:51 -07:00
Jason Volk 0115433a84 Convert the console to a context. 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 6674648590 ircd::util: Add util for template based nothrow overloading. 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 9275429ee1 Replace command system. 2016-09-09 16:17:36 -07:00
Jason Volk 7ae8449078 ircd::util: Add util to output the sizeof() something at compile time.
This produces an error which stops compilation, but the result of sizeof()
is given in the error message.
2016-09-09 16:17:03 -07:00
Jason Volk 8eeb6af31f ircd::util: Define user literals for space units. 2016-09-09 16:17:03 -07:00
Jason Volk 94acd49766 ircd::util: Obligatory bernstein hash. 2016-09-09 16:17:03 -07:00
Jason Volk 55d3b7ec0c ircd::util: Add logical not convenience for std::string (in our ns). 2016-09-09 16:17:03 -07:00
Jason Volk 68a1d161b9 mapi: Add alternate simple constructor. 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 7bc7d37052 ircd::util: Add string() convenience to 'to_string' an object stream. 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 22587f465d ircd::util: Make the flag enum operators constexpr. 2016-09-09 16:17:02 -07:00
Jason Volk f076b33724 ircd: Trivial type clarifications in rfc1459. 2016-09-09 16:17:02 -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 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 5994fa3f21 ircd: static_assertion for critical unsigned mode mask value. 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 052a6c8d22 Refactor snomask. 2016-08-28 01:48:25 -07:00
Jason Volk ef1a01b752 Introduce the abstract mode_lease mechanism to acquire and release slots. 2016-08-28 01:48:25 -07:00
Jason Volk 248497505b Introduce the abstract mode table template. 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 e586d268fc ircd::util: Add microtime() util. 2016-08-25 21:48:16 -07:00
Jason Volk 4e8fd35341 ircd::util: Add enum for_each closure for conforming enums. 2016-08-25 20:43:40 -07:00
Jason Volk 004d60658b ircd: Remove unused patchlevel.h header. 2016-08-25 06:32:52 -07:00
Jason Volk e4673b3fc0 ircd: Remove the restart.h header (temp merge into ircd.h). 2016-08-25 06:32:52 -07:00
Jason Volk 1f91909181 ircd: Remove unused ircd_linker.h header. 2016-08-25 06:27:20 -07:00
Jason Volk 3846579e59 ircd: Remove ircd_signals.h header (temp merge into ircd.h). 2016-08-25 06:27:10 -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 fdf396862b ircd: Move inline/stringops.h out of inline/ 2016-08-25 02:07:11 -07:00
Jason Volk fa3d3badb7 ircd::rfc1459: Add less comparison for char pointer. 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 b85b33d668 ircd: Scaffold some fnv_hash overloads for now. 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