0
0
Fork 0
mirror of https://github.com/matrix-construct/construct synced 2024-12-26 07:23:53 +01:00

ircd: Start a README.md for any directory missing one; fix conformity of existing.

This commit is contained in:
Jason Volk 2019-01-26 12:29:08 -08:00
parent c458448104
commit a30c808b0e
8 changed files with 43 additions and 4 deletions

View file

@ -0,0 +1,26 @@
## Memory Buffer Tools
This is a modernization of the `(char *buf, size_t buf_sz)` pattern used
when working with segments of RAMs. While in C99 it is possible (and
recommended) for a project to create a `struct buffer { char *ptr; size_t size; };`
and then manually perform object semantics `buffer_copy(dst, src);`
`buffer_move(dst, src)``buffer_free(buf);` etc, we create those devices using
C++ language features here instead.
This suite is born out of (though not directly based on) the boost::asio buffer
objects `boost::asio::const_buffer` and `boost::asio::mutable_buffer` and the
two principal objects used ubiquitously throughout IRCd share the same names
and general properties. We also offer conversions between them for developers
working with any asio interfaces directly.
To summarize some basics about these tools:
- Most of these interfaces are "thin" and don't own their underlying data, nor
will they copy their underlying data even if their instance itself is copied.
- We work with signed `char *` (and `const char *`) types. We do not work with
`void` pointers because size integers always represent a count of single bytes
and there is no reason to lose or confuse that information. If `unsigned char *`
types are required by some library function an explicit cast to `uint8_t *` may
be required especially to avoid warnings. Note that we compile this project with
`-fsigned-char` and don't support platforms that have incompatible conversions.

View file

@ -1,4 +1,4 @@
# Userspace Context Switching
## Userspace Context Switching
The `ircd::ctx` subsystem is a userspace threading library meant to regress
the asynchronous callback pattern back to synchronous suspensions. These are

View file

@ -1,4 +1,4 @@
## IRCd Database
## Database
The database here is a strictly schematized key-value grid built from the primitives of
`column`, `cell` and `row`. We use the database as both a flat-object store (matrix

View file

@ -0,0 +1 @@
## Local Filesystem Interface

View file

@ -0,0 +1,5 @@
## Loadable Modules
In the spirit of IRCd we present this fundamental interface to load and update
the functionality of the server at runtime without restarting and interrupting
service to users.

View file

@ -1,4 +1,4 @@
## IRCd Networking
## Network Interface
#### open()

View file

@ -0,0 +1,7 @@
## Interface To Remote Servers
This system manages connections and requests to remote servers when this
server plays the role of client. This interface allows its user to make
concurrent requests using the promise/future pattern. It is built on top of
`ircd::ctx::future`, as well as many functions of `ircd::net` and also
uses `ircd::http`.

View file

@ -1,4 +1,4 @@
# Utility toolchest
## Utility Toolchest
This namespace contains an accumulated collection of miscellaneous classes
and functions which have demonstrated value some place in the project, but are