Name: DB Type: Server Description: stores persistent data Interface: # Per-Message Statistics AddMessageStats(server ID, client ID, size) returns: message ID ChangeMessageStats(message ID, status, processing time, ...) # Management General AddServerID(server ID) GetServerIDs() returns: list of server ID's ValidServerID(server ID) returns: true/false AddClientID(client ID) GetClientIDs() returns: list of client ID's ValidClientID(client ID) returns: true/false # Management of Statistics GetMessageIDs() returns: list of message ID's GetMessageStats(message ID) returns: message stats AddClientStats(client ID, time period, message count, ...) GetClientStatsIDs() returns: list of client statistics ID's GetClientStats(client stat ID) returns: client statistics GetClientStatsMatching(client ID, time period) returns: client statistics for client ID and time period AddServerStats(server ID, time period, message count, ...) GetServerStatsIDs() returns: list of server statistics ID's GetServerStats(server stat ID) returns: server statistics GetServerStatsMatching(server ID, time period) returns: server statistics for server ID and time period State: # Management (updated/changed through management interface periodically) Client Table ClientID [key] Name ClientStat Table ClientStatID [key] ClientID TimePeriod MessageCountProcessed MessageCountDropped MessageCountPending MessageSizeTotal MessageSizeAvg MessageProcessingTimeTotal MessageProcessingTimeAvg MessageRatingTotal (?) MessageRatingAvg (?) Server Table ServerID [key] Name ServerStat Table ServerStatID [key] ServerID TimePeriod MessageCountProcessed MessageCountDropped MessageCountPending MessageSizeTotal MessageSizeAvg MessageProcessingTimeTotal MessageProcessingTimeAvg MessageRatingTotal (?) MessageRatingAvg (?) # Statistics MessageStat Table MessageID [key] ServerID ClientID Timestamp MessageStatus{Processed, Dropped, Pending} MessageSize MessageProcessingTime MessageRating (?) Uses: None Used By: MailProcessor ManagementClient Exceptions: System Errors InvalidClientID InvalidServerID InvalidMessageID InvalidStatID