40 auto msg = std::make_shared<Message>();
46 std::shared_ptr<Message> message =
obtain();
47 message->mHandler = handler;
51std::shared_ptr<Message>
Message::obtain(
const std::shared_ptr<Handler>& handler, int32_t obtain_what)
53 std::shared_ptr<Message> message =
obtain();
54 message->mHandler = handler;
55 message->what = obtain_what;
59std::shared_ptr<Message>
Message::obtain(
const std::shared_ptr<Handler>& handler, int32_t obtain_what
60 , int32_t obtain_arg1)
62 std::shared_ptr<Message> message =
obtain();
63 message->mHandler = handler;
64 message->what = obtain_what;
65 message->arg1 = obtain_arg1;
69std::shared_ptr<Message>
Message::obtain(
const std::shared_ptr<Handler>& handler, int32_t obtain_what
72 std::shared_ptr<Message> message =
obtain();
73 message->mHandler = handler;
74 message->what = obtain_what;
75 message->obj = obtain_obj;
80std::shared_ptr<Message>
Message::obtain(
const std::shared_ptr<Handler>& handler, int32_t obtain_what
81 , int32_t obtain_arg1, int32_t obtain_arg2)
83 std::shared_ptr<Message> message =
obtain();
84 message->mHandler = handler;
85 message->what = obtain_what;
86 message->arg1 = obtain_arg1;
87 message->arg2 = obtain_arg2;
92std::shared_ptr<Message>
Message::obtain(
const std::shared_ptr<Handler>& handler, int32_t obtain_what
93 , int32_t obtain_arg1, int32_t obtain_arg2,
void* obtain_obj)
95 std::shared_ptr<Message> message =
obtain();
96 message->mHandler = handler;
97 message->what = obtain_what;
98 message->arg1 = obtain_arg1;
99 message->arg2 = obtain_arg2;
100 message->obj = obtain_obj;
105std::shared_ptr<Message>
Message::obtain(
const std::shared_ptr<Handler>& handler, int32_t obtain_what
106 , int32_t obtain_arg1, int32_t obtain_arg2, int32_t obtain_arg3)
108 std::shared_ptr<Message> message =
obtain();
109 message->mHandler = handler;
110 message->what = obtain_what;
111 message->arg1 = obtain_arg1;
112 message->arg2 = obtain_arg2;
113 message->arg3 = obtain_arg3;
119 std::shared_ptr<Message> dupMessage =
obtain();
120 dupMessage->what = message->
what;
121 dupMessage->arg1 = message->
arg1;
122 dupMessage->arg2 = message->
arg2;
123 dupMessage->arg3 = message->
arg3;
124 dupMessage->obj = message->
obj;
125 dupMessage->spRef = message->
spRef;
126 dupMessage->whenUs = 0;
127 dupMessage->mHandler = message->
mHandler;
128 dupMessage->mNextMessage = NULL;
133std::shared_ptr<Message>
Message::obtain(
const std::shared_ptr<Handler>& handler, int32_t obtain_what
134 , std::shared_ptr<RefBase> obtain_spRef)
136 std::shared_ptr<Message> message =
obtain();
137 message->mHandler = handler;
138 message->what = obtain_what;
139 message->spRef= obtain_spRef;
151 return mHandler->sendMessage(shared_from_this());
152 }
catch (
const std::bad_weak_ptr& e) {
154 std::cerr <<
"Error: Message not managed by shared_ptr" << std::endl;
200 whenUs = other.whenUs;
Message object for event-driven communication between threads and handlers.
std::shared_ptr< Message > dup() const
Create a deep copy of this message.
void setTo(const Message &other)
Set this message to another message's contents.
std::shared_ptr< RefBase > spRef
Smart pointer reference.
virtual ~Message()
Virtual destructor.
Message()
Default constructor - creates empty message.
bool sendToTarget()
Send this message to its target handler.
ssize_t obj_size
Size of object (if applicable)
Message & operator=(const Message &other)
Assignment operator - deep copy from another message.
std::shared_ptr< Message > mNextMessage
Next message in queue.
void clear()
Clear all fields in the message.
std::shared_ptr< Handler > mHandler
Target handler.
int32_t arg3
Third argument.
int32_t what
Message type code.
int32_t arg2
Second argument.
void * obj
Raw object pointer.
int32_t arg1
First argument.
static std::shared_ptr< Message > obtain()
Obtain a new empty message.
Software Timer namespace containing all timer-related classes.