diff --git a/docs/code_structure.org b/docs/code_structure.org new file mode 100644 index 000000000..1efc68dcd --- /dev/null +++ b/docs/code_structure.org @@ -0,0 +1,102 @@ + +* lokinet components + +** basic data structures +*** AlignedBuffer +*** RouterContact +**** self signed router descriptor +*** Crypto key types + +** network / threading / sync utilities +*** threadpool +*** logic (single thread threadpool) + +** configuration +*** ini parser +*** llarp::Configuration + + +** cryptography +*** llarp::Crypto interface +**** libsodium / sntrup implementation +*** llarp::CryptoManager +**** crypto implementation signleton manager + +** nodedb +*** llarp_nodedb +**** holds many RouterContacts loaded from disk in memory +**** uses a filesystem skiplist for on disk storage +**** stores in a std::unordered_map addressable via public identity key + +** event loop +*** llarp_event_loop +**** udp socket read/write +**** network interface packet read/write +**** stream connection (outbound stream) +**** stream acceptor (inbound stream) + +** link layer message transport: +*** ILinkSession +**** the interface for an entity that is single session with relay +**** responsible for delivery recieval of link layer messages in full +*** ILinkLayer +**** bound to an address / interface +**** has a direction, inbound / outbound +**** distinctly identified by the union of interface and direction +**** Holds many ILinkSessions bound on the distinctly idenitfied direction/interface + +** link layer messages +*** link layer message parser +**** parses buffers as bencoded dicts +*** link layer message handler +**** handles each type of link layer message + +** IHopHandler +*** llarp::PathHopConfig +**** txid, rxid, shared secret at hop +*** llarp::path::Path +**** a built path or a path being built +**** owns a std::vector for each hop's info +*** TransitHop +**** a single hop on a built path +**** has txid, rxid, shared secret, hash of shared secret + + + +** pathset +*** path::Builder +**** builds and maintains a set of paths for a common use + +** routing layer message router +*** routing::IMessageHandler +**** interface for routing layer message processing +**** transit hops implement this if they are an endpoint +**** path::Path implement this always + +** dht "layer" / rc gossiper +** hidden service data structures +*** IntroSet +**** decrypted plaintext hidden service descriptor +*** EncryptedIntroSet +**** public encrpyted / signed version of IntroSet + +** service endpoint / outbound context connectivitybackend +*** service::Endpoint +**** backend for sending/recieving packets over the hidden service protocol layer +**** kitchen sink +*** service::SendContext +**** interface type for sending to a resource on the network +*** service::OutboundContext +**** implements SendContext extends path::Builder and path::PathSet +**** for maintaining a pathset that aligns on an introset's intros + +** snode / exit session management +*** exit::Session + +** snode / exit connectivity backend + +** snapp / exit / mobile / null frontend handlers + +** outbound message dispatcher + +