Procházet zdrojové kódy

MessageService : Safe Enum added to ensure good usage.

undefined
Benjamin ‘Touky’ Huet Sam Hocevar <sam@hocevar.net> před 11 roky
rodič
revize
17109e369f
7 změnil soubory, kde provedl 60 přidání a 31 odebrání
  1. +10
    -13
      src/messageservice.cpp
  2. +36
    -7
      src/messageservice.h
  3. +2
    -2
      src/platform/emscripten/lol_shell.html
  4. +1
    -1
      src/platform/nacl/nacl-instance.cpp
  5. +1
    -1
      test/data/mesh-buffer.txt
  6. +7
    -7
      test/meshviewer.cpp
  7. +3
    -0
      test/nacl_loading.js

+ 10
- 13
src/messageservice.cpp Zobrazit soubor

@@ -26,12 +26,9 @@ namespace lol
#if EMSCRIPTEN #if EMSCRIPTEN
extern "C" 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 //NOT IMPLEMENTED
//bool C_FetchFirst(int id, String& message);
//bool C_FetchFirst(String& message);
} }
#endif //EMSCRIPTEN #endif //EMSCRIPTEN


@@ -53,10 +50,10 @@ MessageService::~MessageService()
} }


//Setup/Destroy //Setup/Destroy
void MessageService::Setup(int bucket_size)
void MessageService::Setup()
{ {
g_messageservice = new MessageService(); g_messageservice = new MessageService();
g_messageservice->m_bucket.Resize(bucket_size);
g_messageservice->m_bucket.Resize(MessageBucket::Max);
} }


void MessageService::Destroy() 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) if (g_messageservice)
{ {
@@ -76,7 +73,7 @@ bool MessageService::Send(int id, const String& message)
return false; return false;
} }


bool MessageService::Send(int id, const char* message)
bool MessageService::Send(MessageBucket id, const char* message)
{ {
if (g_messageservice) 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) if (g_messageservice)
{ {
@@ -101,7 +98,7 @@ bool MessageService::FetchFirst(int id, String& message)
return false; 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) 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) if (g_messageservice)
{ {
@@ -132,7 +129,7 @@ bool MessageService::FetchAll(int id, String& message)
return false; 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) if (g_messageservice)
{ {


+ 36
- 7
src/messageservice.h Zobrazit soubor

@@ -20,6 +20,35 @@
namespace lol 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 struct MessageList
{ {
MessageList(time_t timestamp, const String& message) MessageList(time_t timestamp, const String& message)
@@ -45,16 +74,16 @@ public:
static char const *GetName() { return "<messageservice>"; } static char const *GetName() { return "<messageservice>"; }


//Setup/Destroy //Setup/Destroy
static void Setup(int bucket_size);
static void Setup();
static void Destroy(); static void Destroy();


//Common interactions //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 &timestamp);
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 &timestamp);
static bool FetchAll(MessageBucket id, String& message);
static bool FetchAll(MessageBucket id, String& message, time_t &first_timestamp);


private: private:
Array<Array<MessageList> > m_bucket; Array<Array<MessageList> > m_bucket;


+ 2
- 2
src/platform/emscripten/lol_shell.html Zobrazit soubor

@@ -142,7 +142,7 @@ canvas.emscripten
Module.setStatus('All downloads complete.', 1, 1); Module.setStatus('All downloads complete.', 1, 1);
}, },
//IMPORTANT : This is the C -> Javascript wraping, add your functions list here. //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() do_wrapup: function()
{ {
for (var i = 0; i < this.wrapup_list.length; i++) for (var i = 0; i < this.wrapup_list.length; i++)
@@ -158,7 +158,7 @@ canvas.emscripten
//Module <-> Page communication setup //Module <-> Page communication setup
SendMessage:function(message) SendMessage:function(message)
{ {
this.DoSendMessage(0, message);
this.DoSendMessage(message);
}, },
ModuleSendMessage:function(message) ModuleSendMessage:function(message)
{ {


+ 1
- 1
src/platform/nacl/nacl-instance.cpp Zobrazit soubor

@@ -137,7 +137,7 @@ void NaClInstance::HandleMessage(const pp::Var& message)
return; return;


/* FIXME: do some shit here */ /* 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) void NaClInstance::DidChangeView(const pp::Rect& position, const pp::Rect& clip)


+ 1
- 1
test/data/mesh-buffer.txt Zobrazit soubor

@@ -1,4 +1,4 @@
sc#fff ab 2
sc#fff ab 4
//splt 0 //splt 0
//test //test


+ 7
- 7
test/meshviewer.cpp Zobrazit soubor

@@ -194,7 +194,7 @@ public:
#endif //NO_NACL_EM #endif //NO_NACL_EM


// Message Service // Message Service
MessageService::Setup(MSG_MAX);
MessageService::Setup();


// Mesh Setup // Mesh Setup
m_render_max = vec2(-.9f, 6.1f); m_render_max = vec2(-.9f, 6.1f);
@@ -428,7 +428,7 @@ public:
//-- //--
String mesh(""); String mesh("");
int u = 4; int u = 4;
while (u-- > 0 && MessageService::FetchFirst(MSG_IN, mesh))
while (u-- > 0 && MessageService::FetchFirst(MessageBucket::AppIn, mesh))
{ {
int o = 1; int o = 1;
while (o-- > 0) while (o-- > 0)
@@ -448,10 +448,10 @@ public:
if (m_stream_update_time > .0f) if (m_stream_update_time > .0f)
{ {
m_stream_update_time = -1.f; 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 #elif WIN32
//-- //--
@@ -491,7 +491,7 @@ public:
&& (!m_cmdlist.Count() || cmd != m_cmdlist.Last())) && (!m_cmdlist.Count() || cmd != m_cmdlist.Last()))
{ {
m_cmdlist << cmd; m_cmdlist << cmd;
MessageService::Send(MSG_IN, cmd);
MessageService::Send(MessageBucket::AppIn, cmd);
} }
} }
#endif //WINDOWS #endif //WINDOWS


+ 3
- 0
test/nacl_loading.js Zobrazit soubor

@@ -1,3 +1,6 @@
//-------------------------------------------------------------------------
// MODULE INIT FUNCTIONS
//-------------------------------------------------------------------------
function RegisterListener() function RegisterListener()
{ {
//Register all the correct functions to the listener //Register all the correct functions to the listener


Načítá se…
Zrušit
Uložit