// // Lol Engine // // Copyright: (c) 2013 Benjamin "Touky" Huet // (c) 2013 Sam Hocevar // This program is free software; you can redistribute it and/or // modify it under the terms of the Do What The Fuck You Want To // Public License, Version 2, as published by Sam Hocevar. See // http://www.wtfpl.net/ for more details. // #pragma once // // The Message Service class // ---------------- // namespace lol { //MessageBucket -- Utility enum for message service --------------------------- struct MessageBucketBase : public StructSafeEnum { enum Type { AppIn, AppOut, Bckt0, Bckt1, Bckt2, Bckt3, Bckt4, Bckt5, Bckt6, Bckt7, Bckt8, Bckt9, MAX }; protected: virtual bool BuildEnumMap(map& enum_map) { enum_map[AppIn] = "AppIn"; enum_map[AppOut] = "AppOut"; enum_map[Bckt0] = "Bckt0"; enum_map[Bckt1] = "Bckt1"; enum_map[Bckt2] = "Bckt2"; enum_map[Bckt3] = "Bckt3"; enum_map[Bckt4] = "Bckt4"; enum_map[Bckt5] = "Bckt5"; enum_map[Bckt6] = "Bckt6"; enum_map[Bckt7] = "Bckt7"; enum_map[Bckt8] = "Bckt8"; enum_map[Bckt9] = "Bckt9"; enum_map[MAX] = "MAX"; return true; } }; typedef SafeEnum MessageBucket; //Message list container with time in it struct MessageList { MessageList(time_t timestamp, const String& message) { m_timestamp = timestamp; m_message = message; } time_t m_timestamp; String m_message; }; /* A template class perhaps ? */ class MessageService { public: //CTor/DTor MessageService(); ~MessageService(); static char const *GetName() { return ""; } //Setup/Destroy static void Setup(); static void Destroy(); //Common interactions static bool Send(MessageBucket id, const String& message); static bool Send(MessageBucket id, const char* message); static bool FetchFirst(MessageBucket id, String& message); static bool FetchFirst(MessageBucket id, String& message, time_t ×tamp); static bool FetchAll(MessageBucket id, String& message); static bool FetchAll(MessageBucket id, String& message, time_t &first_timestamp); private: array > m_bucket; }; extern MessageService *g_messageservice; } /* namespace lol */