Modules graph
Modules graph, hilight on region/library.
Modules graph, hilight on the tree structure.
Producer-consumer
We implemented this feature to allow the client to start receiving the mail
before the whole message is received by LiberoPOPs. This avoids timeouts when receiving big messages.
Problems:
- The popserver module is the only module that sees the client.
- The libhttp module is the only one that receives data
from the net.
- As you can see from the modules graph there is no direct
connection between them.
- Popserver must be a stand alone pop3server module.
- Libhttp must be a stand alone library for the http protocol.
Our solution:
- Popserver supports "partials" answers from the retr and top
functions, and calls them until they return an error.
The state for these calls is struct asyncop_t
that must be used/initialized/freed by the function.
The function should return POPSERVER_ERR_EOF to comunicate
popserver that there is no more data.
- Libhttp can give back to the caller the data in syncronous or
asyncronous way. The second one is made with a passing le baton
strategy. The struct prod_cons_t contains semaphores
that must be used by the caller to syncronize with the thread
that will handle his request.
- Libero_engine passes le baton with the libhttp thread and gives the
data to popserver as described before.
Generated on Wed Oct 29 09:48:25 2003 for LiberoPOPs by
1.3.4