static void send_peers(pcu_aa_tree t) { if (pcu_aa_empty(t)) return; pcu_msg_peer* peer; peer = (pcu_msg_peer*)t; pcu_mpi_send(&(peer->message),pcu_user_comm); send_peers(t->left); send_peers(t->right); }
void pcu_msg_send(pcu_msg* m) { if (m->state != pack_state) reel_fail("PCU_Comm_Send called at the wrong time"); send_peers(m->peers); m->state = send_recv_state; }
static void handle_direct_packet(Group_Chats *g_c, int groupnumber, const uint8_t *data, uint16_t length, int close_index) { if (length == 0) return; switch (data[0]) { case PEER_QUERY_ID: { Group_c *g = get_group_c(g_c, groupnumber); if (!g) return; send_peers(g_c, groupnumber, g->close[close_index].number, g->close[close_index].group_number); } break; case PEER_RESPONSE_ID: { handle_send_peers(g_c, groupnumber, data + 1, length - 1); } break; } }
static void handle_direct_packet(Group_Chats *g_c, int groupnumber, const uint8_t *data, uint16_t length, int close_index) { if (length == 0) return; switch (data[0]) { case PEER_KILL_ID: { Group_c *g = get_group_c(g_c, groupnumber); if (!g) return; if (!g->close[close_index].closest) { g->close[close_index].type = GROUPCHAT_CLOSE_NONE; kill_friend_connection(g_c->fr_c, g->close[close_index].number); } } case PEER_QUERY_ID: { Group_c *g = get_group_c(g_c, groupnumber); if (!g) return; send_peers(g_c, groupnumber, g->close[close_index].number, g->close[close_index].group_number); } break; case PEER_RESPONSE_ID: { handle_send_peers(g_c, groupnumber, data + 1, length - 1); } break; } }