1111#include "../ccompat.h"
1212#include "../tox.h"
1313#include "../tox_events.h"
14+ #include "../tox_unpack.h"
1415
1516
1617/*****************************************************
@@ -27,16 +28,6 @@ struct Tox_Event_Conference_Invite {
2728 size_t cookie_length ;
2829};
2930
30- static void tox_event_conference_invite_pack (const Tox_Event_Conference_Invite * event , msgpack_packer * mp )
31- {
32- assert (event != nullptr );
33- msgpack_pack_array (mp , 3 );
34- msgpack_pack_uint32 (mp , event -> friend_number );
35- msgpack_pack_uint32 (mp , event -> type );
36- msgpack_pack_bin (mp , event -> cookie_length );
37- msgpack_pack_bin_body (mp , event -> cookie , event -> cookie_length );
38- }
39-
4031static void tox_event_conference_invite_construct (Tox_Event_Conference_Invite * conference_invite )
4132{
4233 * conference_invite = (Tox_Event_Conference_Invite ) {
@@ -73,8 +64,7 @@ Tox_Conference_Type tox_event_conference_invite_get_type(const Tox_Event_Confere
7364}
7465
7566static bool tox_event_conference_invite_set_cookie (Tox_Event_Conference_Invite * conference_invite ,
76- const uint8_t * cookie ,
77- size_t cookie_length )
67+ const uint8_t * cookie , size_t cookie_length )
7868{
7969 assert (conference_invite != nullptr );
8070
@@ -105,6 +95,31 @@ const uint8_t *tox_event_conference_invite_get_cookie(const Tox_Event_Conference
10595 return conference_invite -> cookie ;
10696}
10797
98+ static void tox_event_conference_invite_pack (
99+ const Tox_Event_Conference_Invite * event , msgpack_packer * mp )
100+ {
101+ assert (event != nullptr );
102+ msgpack_pack_array (mp , 3 );
103+ msgpack_pack_uint32 (mp , event -> friend_number );
104+ msgpack_pack_uint32 (mp , event -> type );
105+ msgpack_pack_bin (mp , event -> cookie_length );
106+ msgpack_pack_bin_body (mp , event -> cookie , event -> cookie_length );
107+ }
108+
109+ static bool tox_event_conference_invite_unpack (
110+ Tox_Event_Conference_Invite * event , const msgpack_object * obj )
111+ {
112+ assert (event != nullptr );
113+
114+ if (obj -> type != MSGPACK_OBJECT_ARRAY || obj -> via .array .size < 3 ) {
115+ return false;
116+ }
117+
118+ return tox_unpack_u32 (& event -> friend_number , & obj -> via .array .ptr [0 ])
119+ && tox_unpack_conference_type (& event -> type , & obj -> via .array .ptr [1 ])
120+ && tox_unpack_bin (& event -> cookie , & event -> cookie_length , & obj -> via .array .ptr [2 ]);
121+ }
122+
108123
109124/*****************************************************
110125 *
@@ -181,6 +196,27 @@ void tox_events_pack_conference_invite(const Tox_Events *events, msgpack_packer
181196 }
182197}
183198
199+ bool tox_events_unpack_conference_invite (Tox_Events * events , const msgpack_object * obj )
200+ {
201+ if (obj -> type != MSGPACK_OBJECT_ARRAY ) {
202+ return false;
203+ }
204+
205+ for (uint32_t i = 0 ; i < obj -> via .array .size ; ++ i ) {
206+ Tox_Event_Conference_Invite * event = tox_events_add_conference_invite (events );
207+
208+ if (event == nullptr ) {
209+ return false;
210+ }
211+
212+ if (!tox_event_conference_invite_unpack (event , & obj -> via .array .ptr [i ])) {
213+ return false;
214+ }
215+ }
216+
217+ return true;
218+ }
219+
184220
185221/*****************************************************
186222 *
0 commit comments