Sfoglia il codice sorgente

MessageService : Safe Enum added to ensure good usage.

undefined
Benjamin ‘Touky’ Huet Sam Hocevar <sam@hocevar.net> 11 anni fa
parent
commit
17109e369f
7 ha cambiato i file con 60 aggiunte e 31 eliminazioni
  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 Vedi File

@@ -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)
{


+ 36
- 7
src/messageservice.h Vedi File

@@ -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 &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:
Array<Array<MessageList> > m_bucket;


+ 2
- 2
src/platform/emscripten/lol_shell.html Vedi File

@@ -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)
{


+ 1
- 1
src/platform/nacl/nacl-instance.cpp Vedi File

@@ -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
- 1
test/data/mesh-buffer.txt Vedi File

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


+ 7
- 7
test/meshviewer.cpp Vedi File

@@ -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


+ 3
- 0
test/nacl_loading.js Vedi File

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


Caricamento…
Annulla
Salva