diff options
author | Gregory Mullen (grayhatter) <greg@grayhatter.com> | 2016-09-11 16:27:03 -0700 |
---|---|---|
committer | Gregory Mullen (grayhatter) <greg@grayhatter.com> | 2016-09-17 14:05:51 -0700 |
commit | 21f8db12c45bd56293262cd4abfb73cd9abec821 (patch) | |
tree | 580729367d00e1eb7e0c4d533777d22af7d7ffc5 /toxav/bwcontroller.c | |
parent | 5da85c582d97d746887da407153afc0acf0a4215 (diff) |
Make ToxAV stateless
Diffstat (limited to 'toxav/bwcontroller.c')
-rw-r--r-- | toxav/bwcontroller.c | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/toxav/bwcontroller.c b/toxav/bwcontroller.c index b97135d6..63350f17 100644 --- a/toxav/bwcontroller.c +++ b/toxav/bwcontroller.c | |||
@@ -40,7 +40,7 @@ | |||
40 | */ | 40 | */ |
41 | 41 | ||
42 | struct BWController_s { | 42 | struct BWController_s { |
43 | void (*mcb)(BWController *, uint32_t, float, void *); | 43 | void (*mcb)(BWController *, uint32_t, float, void *, void *); |
44 | void *mcb_data; | 44 | void *mcb_data; |
45 | 45 | ||
46 | Messenger *m; | 46 | Messenger *m; |
@@ -61,17 +61,18 @@ struct BWController_s { | |||
61 | } rcvpkt; /* To calculate average received packet */ | 61 | } rcvpkt; /* To calculate average received packet */ |
62 | }; | 62 | }; |
63 | 63 | ||
64 | int bwc_handle_data(Messenger *m, uint32_t friendnumber, const uint8_t *data, uint16_t length, void *object); | 64 | int bwc_handle_data(Messenger *m, uint32_t friendnumber, const uint8_t *data, uint16_t length, void *object, |
65 | void *userdata); | ||
65 | void send_update(BWController *bwc); | 66 | void send_update(BWController *bwc); |
66 | 67 | ||
67 | BWController *bwc_new(Messenger *m, uint32_t friendnumber, | 68 | BWController *bwc_new(Messenger *m, uint32_t friendnumber, |
68 | void (*mcb)(BWController *, uint32_t, float, void *), | 69 | void (*mcb)(BWController *, uint32_t, float, void *, void *), |
69 | void *udata) | 70 | void *call_data) |
70 | { | 71 | { |
71 | BWController *retu = calloc(sizeof(struct BWController_s), 1); | 72 | BWController *retu = calloc(sizeof(struct BWController_s), 1); |
72 | 73 | ||
73 | retu->mcb = mcb; | 74 | retu->mcb = mcb; |
74 | retu->mcb_data = udata; | 75 | retu->mcb_data = call_data; |
75 | retu->m = m; | 76 | retu->m = m; |
76 | retu->friend_number = friendnumber; | 77 | retu->friend_number = friendnumber; |
77 | retu->cycle.lsu = retu->cycle.lfu = current_time_monotonic(); | 78 | retu->cycle.lsu = retu->cycle.lfu = current_time_monotonic(); |
@@ -179,7 +180,7 @@ void send_update(BWController *bwc) | |||
179 | bwc->cycle.lsu = current_time_monotonic(); | 180 | bwc->cycle.lsu = current_time_monotonic(); |
180 | } | 181 | } |
181 | } | 182 | } |
182 | static int on_update(BWController *bwc, const struct BWCMessage *msg) | 183 | static int on_update(BWController *bwc, const struct BWCMessage *msg, void *userdata) |
183 | { | 184 | { |
184 | LOGGER_DEBUG(bwc->m->log, "%p Got update from peer", bwc); | 185 | LOGGER_DEBUG(bwc->m->log, "%p Got update from peer", bwc); |
185 | 186 | ||
@@ -199,16 +200,18 @@ static int on_update(BWController *bwc, const struct BWCMessage *msg) | |||
199 | if (lost && bwc->mcb) { | 200 | if (lost && bwc->mcb) { |
200 | bwc->mcb(bwc, bwc->friend_number, | 201 | bwc->mcb(bwc, bwc->friend_number, |
201 | ((float) lost / (recv + lost)), | 202 | ((float) lost / (recv + lost)), |
202 | bwc->mcb_data); | 203 | bwc->mcb_data, |
204 | userdata); | ||
203 | } | 205 | } |
204 | 206 | ||
205 | return 0; | 207 | return 0; |
206 | } | 208 | } |
207 | int bwc_handle_data(Messenger *m, uint32_t friendnumber, const uint8_t *data, uint16_t length, void *object) | 209 | int bwc_handle_data(Messenger *m, uint32_t friendnumber, const uint8_t *data, uint16_t length, void *object, |
210 | void *userdata) | ||
208 | { | 211 | { |
209 | if (length - 1 != sizeof(struct BWCMessage)) { | 212 | if (length - 1 != sizeof(struct BWCMessage)) { |
210 | return -1; | 213 | return -1; |
211 | } | 214 | } |
212 | 215 | ||
213 | return on_update(object, (const struct BWCMessage *)(data + 1)); | 216 | return on_update(object, (const struct BWCMessage *)(data + 1), userdata); |
214 | } | 217 | } |