Spool directory holds encrypted packets received from remote nodes and queued for sending to them. It has the following example structure:
spool/tmp/ spool/2WHB...OABQ/rx.lock spool/2WHB...OABQ/rx/5ZIB...UMKW.part spool/2WHB...OABQ/tx.lock spool/BYRR...CG6Q/rx.lock spool/BYRR...CG6Q/rx/ spool/BYRR...CG6Q/tx.lock spool/BYRR...CG6Q/tx/AQUT...DGNT.seen spool/BYRR...CG6Q/tx/NSYY...ZUU6 spool/BYRR...CG6Q/tx/VCSR...3VXX.seen spool/BYRR...CG6Q/tx/ZI5U...5RRQ
Except for tmp, all other directories are Base32-encoded node identifiers (2WHB...OABQ, BYRR...CG6Q in our example). Each node subdirectory has rx (received, partially received and currently unprocessed packets) and tx (for outbound packets) directories.
Each rx/tx directory contains one file per encrypted packet. Its filename is Base32 encoded BLAKE2b hash of the contents. So it can be integrity checked at any time. 5ZIB...UMKW.part is partially received file from 2WHB...OABQ node. tx directory can not contain partially written files – they are moved atomically from tmp.
When nncp-toss utility is called with -seen option, it will create empty XXX.seen files, telling that some kind of packet was already tossed sometime.
Only one process can work with rx/tx directories at once, so there are corresponding lock files.