=head1 Internal Structure For the curious or the brave, here is an ASCII diagram of how the pieces fit: +---------+ +---------+ +--------+ | Browser | <--> | Adaptor | --> | Mapper | +---------+ +---------+ +--------+ ^ | | | +---------------------+ | | +-------------------+---------+----------+ | | | | | V V V | +---------+ +---------+ +---------+ | | Session | | Session | | Session | | | Request | | Request | | Request | | | Queue | | Queue | | Queue | | | | | | | | | | | | | V | | V | | V | | +---------+ +---------+ +---------+ | | | | | V V V | +-----+ +------+ +-----+ +------+ +-----+ +------+ | | Cur |<->| Your | | Cur |<->| Your | | Cur |<->| Your | | | Req | | Code | | Req | | Code | | Req | | Code | | +-----+ +------+ +-----+ +------+ +-----+ +------+ | | | | | V V V +-----+--------------------+--------------------+ ** "Cur Req" == "Current Request" Basically, the Adaptor accepts requests from the browser, hands them off to the Mapper, which then queues them into the correct session queue (or creates a new queue). When Your Code calls C<< $request->next >> the Current Request overwrites itself with the next item in the queue (or waits until there is one). Most of the time you will have pretty empty queues -- they are mostly there for safety, in case you have a lot of incoming requests and running sessions. For further internal development documentation, please see the wiki or email me. =cut