@node Spool @unnumbered Spool directory Spool directory holds @ref{Encrypted, encrypted packets} received from remote nodes and queued for sending to them. It has the following example structure with just single outbound (@code{tx}) packet @code{LYT64MWSNDK34CVYOO7TA6ZCJ3NWI2OUDBBMX2A4QWF34FIRY4DQ} to the node @code{2WHBV3TPZHDOZGUJEH563ZEK7M33J4UESRFO4PDKWD5KZNPROABQ}: @example spool/2WHBV3TPZHDOZGUJEH563ZEK7M33J4UESRFO4PDKWD5KZNPROABQ/toss.lock spool/2WHBV3TPZHDOZGUJEH563ZEK7M33J4UESRFO4PDKWD5KZNPROABQ/rx.lock spool/2WHBV3TPZHDOZGUJEH563ZEK7M33J4UESRFO4PDKWD5KZNPROABQ/rx/ spool/2WHBV3TPZHDOZGUJEH563ZEK7M33J4UESRFO4PDKWD5KZNPROABQ/tx.lock spool/2WHBV3TPZHDOZGUJEH563ZEK7M33J4UESRFO4PDKWD5KZNPROABQ/tx/LYT64MWSNDK34CVYOO7TA6ZCJ3NWI2OUDBBMX2A4QWF34FIRY4DQ spool/tmp @end example @table @file @item tmp directory contains various temporary files that under normal circumstances are renamed to necessary files inside other directories. All directories in @file{spool} @strong{have to} be on the same filesystem for working renaming. @item 2WHBV3TPZHDOZGUJEH563ZEK7M33J4UESRFO4PDKWD5KZNPROABQ is an example Base32-encoded neighbour identifier. @item rx, tx directories are for incoming and outgoing encrypted packets. @file{rx} contains currently unfinished, non-checked, unprocessed, etc packets. @item toss.lock, rx.lock, tx.lock Lock files. Only single process can work with @file{rx}/@file{tx} directories at once. @item LYT64MWSNDK34CVYOO7TA6ZCJ3NWI2OUDBBMX2A4QWF34FIRY4DQ is an example @ref{Encrypted, encrypted packet}. Its filename is Base32 encoded BLAKE2b hash of the whole contents. It can be integrity checked anytime. @item LYT64MWSNDK34CVYOO7TA6ZCJ3NWI2OUDBBMX2A4QWF34FIRY4DQ.part is an example @strong{partly} received file. It can appear only when online transfer is used. Its filename is sent by remote side and until file is fully downloaded -- it plays no role. @item LYT64MWSNDK34CVYOO7TA6ZCJ3NWI2OUDBBMX2A4QWF34FIRY4DQ.nock non-checksummed (NoCK) @strong{fully} received file. Its checksum is verified against its filename either by @ref{nncp-check}, or by working online daemons. If it is correct, then its extension is trimmed. @item LYT64MWSNDK34CVYOO7TA6ZCJ3NWI2OUDBBMX2A4QWF34FIRY4DQ.seen @ref{nncp-toss} utility can be invoked with @option{-seen} option, leading to creation of @file{.seen} files, telling that the file with specified hash has already been processed before. It could be useful when there are use-cases where multiple ways of packets transfer available and there is possibility of duplicates reception. You have to manually remove them, when you do not need them (probably because they are expired). @anchor{HdrFile} @item LYT64MWSNDK34CVYOO7TA6ZCJ3NWI2OUDBBMX2A4QWF34FIRY4DQ.hdr If no @ref{CfgNoHdr, nohdr} option is enabled in configuration file, then @file{.hdr} files are automatically created for every ordinary (fully received and checksummed) packet. It literally contains just the header of the corresponding packet. It will be automatically created even during simple @ref{nncp-stat} call. On filesystems with big blocksize (ZFS for example) it can greatly help listing the packets in directories, because it prevents unnecessary read-amplification. On other filesystems probably it won't help at all, or even harm performance. There is a hack: you can create more dense @file{.hdr} allocation by removing all @file{.hdr} files and then running @command{nncp-stat}, that will recreate them. In many cases many @file{.hdr} files will be allocated more or less linearly on the disk, decreasing listing time even more. @end table