// Copyright (c) 2010 Martin Knafve / hMailServer.com. // http://www.hmailserver.com #pragma once namespace HM { class ServerStatus : public Singleton { public: ServerStatus(); virtual ~ServerStatus(); enum ServerState { StateUnknown = 0, StateStopped = 1, StateStarting = 2, StateRunning = 3, StateStopping = 4 }; String GetUnsortedMessageStatus() const; void OnMessageProcessed(); int GetNumberOfProcessedMessages() const; void OnSpamMessageDetected(); int GetNumberOfDetectedSpamMessages() const; void OnVirusRemoved(); int GetNumberOfRemovedViruses() const; void SetState(ServerState i); int GetState() const; int GetNumberOfSessions(int iSessionType); int GetThreadID() const; private: int processed_messages_; int number_of_spam_messages_detected_; int number_of_viruses_removed_; boost::recursive_mutex spam_message_dropped_mutex_; boost::recursive_mutex virus_removed_mutex_; ServerState state_; }; }