| @@ -26,12 +26,9 @@ namespace lol | |||
| #if EMSCRIPTEN | |||
| extern "C" | |||
| { | |||
| int C_Send(int id, const char* message) | |||
| { | |||
| return (int)MessageService::Send(id, message); | |||
| } | |||
| int C_Send(const char* message) { return (int)MessageService::Send(MessageBucket::In, message); } | |||
| //NOT IMPLEMENTED | |||
| //bool C_FetchFirst(int id, String& message); | |||
| //bool C_FetchFirst(String& message); | |||
| } | |||
| #endif //EMSCRIPTEN | |||
| @@ -53,10 +50,10 @@ MessageService::~MessageService() | |||
| } | |||
| //Setup/Destroy | |||
| void MessageService::Setup(int bucket_size) | |||
| void MessageService::Setup() | |||
| { | |||
| g_messageservice = new MessageService(); | |||
| g_messageservice->m_bucket.Resize(bucket_size); | |||
| g_messageservice->m_bucket.Resize(MessageBucket::Max); | |||
| } | |||
| void MessageService::Destroy() | |||
| @@ -66,7 +63,7 @@ void MessageService::Destroy() | |||
| } | |||
| //----------------------------------------------------------------------------- | |||
| bool MessageService::Send(int id, const String& message) | |||
| bool MessageService::Send(MessageBucket id, const String& message) | |||
| { | |||
| if (g_messageservice) | |||
| { | |||
| @@ -76,7 +73,7 @@ bool MessageService::Send(int id, const String& message) | |||
| return false; | |||
| } | |||
| bool MessageService::Send(int id, const char* message) | |||
| bool MessageService::Send(MessageBucket id, const char* message) | |||
| { | |||
| if (g_messageservice) | |||
| { | |||
| @@ -90,7 +87,7 @@ bool MessageService::Send(int id, const char* message) | |||
| } | |||
| //---- | |||
| bool MessageService::FetchFirst(int id, String& message) | |||
| bool MessageService::FetchFirst(MessageBucket id, String& message) | |||
| { | |||
| if (g_messageservice) | |||
| { | |||
| @@ -101,7 +98,7 @@ bool MessageService::FetchFirst(int id, String& message) | |||
| return false; | |||
| } | |||
| bool MessageService::FetchFirst(int id, String& message, time_t& timestamp) | |||
| bool MessageService::FetchFirst(MessageBucket id, String& message, time_t& timestamp) | |||
| { | |||
| if (g_messageservice) | |||
| { | |||
| @@ -121,7 +118,7 @@ bool MessageService::FetchFirst(int id, String& message, time_t& timestamp) | |||
| } | |||
| //---- | |||
| bool MessageService::FetchAll(int id, String& message) | |||
| bool MessageService::FetchAll(MessageBucket id, String& message) | |||
| { | |||
| if (g_messageservice) | |||
| { | |||
| @@ -132,7 +129,7 @@ bool MessageService::FetchAll(int id, String& message) | |||
| return false; | |||
| } | |||
| bool MessageService::FetchAll(int id, String& message, time_t& first_timestamp) | |||
| bool MessageService::FetchAll(MessageBucket id, String& message, time_t& first_timestamp) | |||
| { | |||
| if (g_messageservice) | |||
| { | |||
| @@ -20,6 +20,35 @@ | |||
| namespace lol | |||
| { | |||
| //Utility enum for message service | |||
| struct MessageBucket | |||
| { | |||
| enum Value | |||
| { | |||
| AppIn = 0, | |||
| AppOut, | |||
| Bckt0, | |||
| Bckt1, | |||
| Bckt2, | |||
| Bckt3, | |||
| Bckt4, | |||
| Bckt5, | |||
| Bckt6, | |||
| Bckt7, | |||
| Bckt8, | |||
| Bckt9, | |||
| Max | |||
| } | |||
| m_value; | |||
| inline MessageBucket(Value v) : m_value(v) {} | |||
| inline MessageBucket() : m_value(AppIn) {} | |||
| inline operator Value() { return m_value; } | |||
| }; | |||
| //Message list container with time in it | |||
| struct MessageList | |||
| { | |||
| MessageList(time_t timestamp, const String& message) | |||
| @@ -45,16 +74,16 @@ public: | |||
| static char const *GetName() { return "<messageservice>"; } | |||
| //Setup/Destroy | |||
| static void Setup(int bucket_size); | |||
| static void Setup(); | |||
| static void Destroy(); | |||
| //Common interactions | |||
| static bool Send(int id, const String& message); | |||
| static bool Send(int id, const char* message); | |||
| static bool FetchFirst(int id, String& message); | |||
| static bool FetchFirst(int id, String& message, time_t ×tamp); | |||
| static bool FetchAll(int id, String& message); | |||
| static bool FetchAll(int id, String& message, time_t &first_timestamp); | |||
| 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<Array<MessageList> > m_bucket; | |||
| @@ -142,7 +142,7 @@ canvas.emscripten | |||
| Module.setStatus('All downloads complete.', 1, 1); | |||
| }, | |||
| //IMPORTANT : This is the C -> Javascript wraping, add your functions list here. | |||
| wrapup_list: [ {src_obj: null, func_name: 'DoSendMessage', c_func_name: 'C_Send', return_var: 'number', args: ['number', 'string'] } ], | |||
| wrapup_list: [ {src_obj: null, func_name: 'DoSendMessage', c_func_name: 'C_Send', return_var: 'number', args: ['string'] } ], | |||
| do_wrapup: function() | |||
| { | |||
| for (var i = 0; i < this.wrapup_list.length; i++) | |||
| @@ -158,7 +158,7 @@ canvas.emscripten | |||
| //Module <-> Page communication setup | |||
| SendMessage:function(message) | |||
| { | |||
| this.DoSendMessage(0, message); | |||
| this.DoSendMessage(message); | |||
| }, | |||
| ModuleSendMessage:function(message) | |||
| { | |||
| @@ -137,7 +137,7 @@ void NaClInstance::HandleMessage(const pp::Var& message) | |||
| return; | |||
| /* FIXME: do some shit here */ | |||
| MessageService::Send(0/*MSG_IN*/, message.AsString().c_str()); | |||
| MessageService::Send(MessageBucket::AppIn, message.AsString().c_str()); | |||
| } | |||
| void NaClInstance::DidChangeView(const pp::Rect& position, const pp::Rect& clip) | |||
| @@ -1,4 +1,4 @@ | |||
| sc#fff ab 2 | |||
| sc#fff ab 4 | |||
| //splt 0 | |||
| //test | |||
| @@ -194,7 +194,7 @@ public: | |||
| #endif //NO_NACL_EM | |||
| // Message Service | |||
| MessageService::Setup(MSG_MAX); | |||
| MessageService::Setup(); | |||
| // Mesh Setup | |||
| m_render_max = vec2(-.9f, 6.1f); | |||
| @@ -428,7 +428,7 @@ public: | |||
| //-- | |||
| String mesh(""); | |||
| int u = 4; | |||
| while (u-- > 0 && MessageService::FetchFirst(MSG_IN, mesh)) | |||
| while (u-- > 0 && MessageService::FetchFirst(MessageBucket::AppIn, mesh)) | |||
| { | |||
| int o = 1; | |||
| while (o-- > 0) | |||
| @@ -448,10 +448,10 @@ public: | |||
| if (m_stream_update_time > .0f) | |||
| { | |||
| m_stream_update_time = -1.f; | |||
| MessageService::Send(MSG_IN, "[sc#f8f ab 1]"); | |||
| // MessageService::Send(MSG_IN, "[sc#f8f ab 1 splt 4 twy 90]"); | |||
| // MessageService::Send(MSG_IN, "[sc#8ff afcb 1 1 1 0]"); | |||
| // MessageService::Send(MSG_IN, "[sc#ff8 afcb 1 1 1 0]"); | |||
| MessageService::Send(MessageBucket::AppIn, "[sc#f8f ab 1]"); | |||
| // MessageService::Send(MessageBucket::AppIn, "[sc#f8f ab 1 splt 4 twy 90]"); | |||
| // MessageService::Send(MessageBucket::AppIn, "[sc#8ff afcb 1 1 1 0]"); | |||
| // MessageService::Send(MessageBucket::AppIn, "[sc#ff8 afcb 1 1 1 0]"); | |||
| } | |||
| #elif WIN32 | |||
| //-- | |||
| @@ -491,7 +491,7 @@ public: | |||
| && (!m_cmdlist.Count() || cmd != m_cmdlist.Last())) | |||
| { | |||
| m_cmdlist << cmd; | |||
| MessageService::Send(MSG_IN, cmd); | |||
| MessageService::Send(MessageBucket::AppIn, cmd); | |||
| } | |||
| } | |||
| #endif //WINDOWS | |||
| @@ -1,3 +1,6 @@ | |||
| //------------------------------------------------------------------------- | |||
| // MODULE INIT FUNCTIONS | |||
| //------------------------------------------------------------------------- | |||
| function RegisterListener() | |||
| { | |||
| //Register all the correct functions to the listener | |||