Core Components Pop3 client Router Storage Pop3 Server
Pop3 Client and Server Client pulls email off Pop3 servers (yahoo.com, sumatra, etc) Server allows outside (of one.box network) access to email
Router Directs email from the Pop3 client or any other internal client. Human readable message is stored in user’s inbox. Control message is sent to the recipient service or is left in the service’s undelivered tuple.
Auth Keeps track of users in the system Keeps track of the various authentication information –Data for contacting external pop3 servers Centralized place to store this data –Not a secure solution
Monitor(Pop3 Client) Collects email from external Pop3 servers Each monitor serves a different user in the system
Filter Directs email from the Monitor Human readable or control message?
Router Gets control message from filter Finds the service control message is intended for
Inbox Holds all the users email data Uses checkpoint –Movable too (but not implemented) Data is never deleted
Pop3Server Used to communicate with email clients Hardest component to implement –Delete messages here –Distributed state –Mixture of messaging style Asynchronous with rest of one.box Synchronous with email clients
ServiceComponent External services implement this interface Scheme configurable Printer is a ServiceComponent
Normal Operation Monitor To Filter Filter Checks Message –If Control Message Send to Router Router sends To Appropriate Service –If Email Send to Inbox Inbox Stores the Email
Normal Operation (2) Service Processes Control Message –Printer Pop3Server polls the Inboxes –Downloaded to itself –Serves it to connecting email clients
Good & Bad Things Asynchronous events –Pop3Server –Everything else Discovery Transparency
Bad Things Synchronization/Threading complexities Interaction with Swing Harder to one.worldize –ServiceComponent is our solution for one.box
Good Things Integrated System Structured IO Code and Data is shared
Future Work Stability OneBox/Mover/WatchDog New Patterns/Refactoring Better Setup Tools Integration with Other Systems