To a large degree, moxi's modules map to the corresponding component files:
agent_* - integration with libconflate for dynamic reconfiguration
mcs - abstraction API over libvbucket and libmemcached
cproxy_config - API for configuration data structures
cproxy_front - the "front caching" feature of moxi
cproxy_multiget - support for multigets and optimizations (de-duplicating keys, de-mux'ing responses, etc)
cproxy_protocol_* - protocol translations
a - stands for ascii
b - stands for binary
the files include:
cproxy_protocol_a - parses and processes ascii client messages
cproxy_protocol_a2a
cproxy_protocol_a2b
cproxy_protocol_b - parses and processes binary client messages
cproxy_protocol_b2b
a2a, a2b, b2b stand for ascii-to-ascii, ascii-to-binary, and binary-to-binary respectively
or, more explicitly a2b stands for ascii-upstream to a binary-downstream
For completeness, here are some other files of lower-level functionality:
inherited from memcached:
memcached - main(argc,argv), cmd-line parsing, and connection state machine
thread - multithreading support
items - API for items
assoc - slabber aware hashtable
slabs - slabber allocator
http://code.google.com/p/memcached/wiki/MemcachedSlabAllocator
cache - utility memory allocator
genhash - utility hash table
stdin_check - feature to exit() when stdin closes, motivated by windows support.
other utility
htgram - histogram
matcher - simple string pattern matcher
util - other utility functions
work - multi-threaded work/message queues for communicating between threads
cJSON - json parsing library