Hasty Badger
Small UI library (a branch of Turbo Badger)
 All Classes Namespaces Functions Variables Enumerations Enumerator Friends Groups Pages
tb_msg.h
1 // ================================================================================
2 // == This file is a part of Turbo Badger. (C) 2011-2014, Emil SegerÃ¥s ==
3 // == See tb_core.h for more information. ==
4 // ================================================================================
5 
6 #ifndef TB_MSG_H
7 #define TB_MSG_H
8 
9 #include "tb_core.h"
10 #include "tb_linklist.h"
11 #include "tb_value.h"
12 #include "tb_object.h"
13 #include "tb_id.h"
14 
15 namespace tb {
16 
17 class TBMessageHandler;
18 
21 #define TB_NOT_SOON 0xffffffff
22 
26 {
27 public:
28  TBMessageData() {}
29  TBMessageData(int v1, int v2) : v1(v1), v2(v2) {}
30  virtual ~TBMessageData() {}
31 public:
36 };
37 
41 class TBMessageLink : public TBLinkOf<TBMessageLink> { };
42 
47 class TBMessage : public TBLinkOf<TBMessage>, public TBMessageLink
48 {
49 private:
50  TBMessage(TBID message, TBMessageData *data, double fire_time_ms, TBMessageHandler *mh);
51  ~TBMessage();
52 
53 public:
56 
58  double GetFireTime() { return fire_time_ms; }
59 
60 private:
61  friend class TBMessageHandler;
62  double fire_time_ms;
63  TBMessageHandler *mh;
64 };
65 
73 {
74 public:
76  virtual ~TBMessageHandler();
77 
81  bool PostMessageDelayed(TBID message, TBMessageData *data, uint32_t delay_in_ms);
82 
86  bool PostMessageOnTime(TBID message, TBMessageData *data, double fire_time);
87 
91  bool PostMessage(TBID message, TBMessageData *data);
92 
96  TBMessage *GetMessageByID(TBID message);
97 
99  void DeleteMessage(TBMessage *msg);
100 
102  void DeleteAllMessages();
103 
108  virtual void OnMessageReceived(TBMessage * /*msg*/) {}
109 
110  // == static methods to handle the queue of messages ====================================================
111 
113  static void ProcessMessages();
114 
119  static double GetNextMessageFireTime();
120 private:
121  TBLinkListOf<TBMessage> m_messages;
122 };
123 
124 } // namespace tb
125 
126 #endif // TB_MSG_H
void DeleteAllMessages()
Delete all messages from this message handler.
Definition: tb_msg.cpp:132
TBID id1
Use for anything.
Definition: tb_msg.h:34
double GetFireTime()
The time which a delayed message should have fired (0 for non delayed messages)
Definition: tb_msg.h:58
TBValue v1
Use for anything.
Definition: tb_msg.h:32
TBMessageData * data
The message data, or nullptr if no data is set.
Definition: tb_msg.h:55
TBMessage * GetMessageByID(TBID message)
Check if this messagehandler has a pending message with the given id.
Definition: tb_msg.cpp:104
static double GetNextMessageFireTime()
Get when the time when ProcessMessages needs to be called again.
Definition: tb_msg.cpp:176
TBID id2
Use for anything.
Definition: tb_msg.h:35
TBID is a wrapper for a uint32_t to be used as ID.
Definition: tb_id.h:18
TBValue v2
Use for anything.
Definition: tb_msg.h:33
Definition: tb_object.h:21
TBMessageHandler handles a list of pending messages posted to itself.
Definition: tb_msg.h:72
bool PostMessageOnTime(TBID message, TBMessageData *data, double fire_time)
Posts a message to the target at the given time (relative to TBSystem::GetTimeMS()).
Definition: tb_msg.cpp:46
TBID message
The message id.
Definition: tb_msg.h:54
TBValue holds value of a specific type.
Definition: tb_value.h:59
TBMessage is a message created and owned by TBMessageHandler.
Definition: tb_msg.h:47
void DeleteMessage(TBMessage *msg)
Delete the message from this message handler.
Definition: tb_msg.cpp:113
virtual void OnMessageReceived(TBMessage *)
Called when a message is delivered.
Definition: tb_msg.h:108
bool PostMessageDelayed(TBID message, TBMessageData *data, uint32_t delay_in_ms)
Posts a message to the target after a delay.
Definition: tb_msg.cpp:41
TBMessageData holds custom data to send with a posted message.
Definition: tb_msg.h:25
bool PostMessage(TBID message, TBMessageData *data)
Posts a message to the target.
Definition: tb_msg.cpp:88
static void ProcessMessages()
Process any messages in queue.
Definition: tb_msg.cpp:139