- Severl client connections
- Assorted filter modules
- Indexing module
- Writing module
- Configuration Module
- UI module
This setup is very similar to the client. In fact, it's possible that the
same program could do both server and client with different sets of
modules. This reduced overlapping code and all those other good things.
The basic plan is several incoming connections come in from clients (1).
For each file that we get, we optionally pass it through some filters (2),
and then we pass the metadata (the name, size, owner, original host) to an
indexing module (3). Then the data and a copy of the metadata both go the
writing module(4) where they are written to media.
As with the client we have a configuration and