void proc_0x0A(share* shared, craftIk_epoll* clnt_epoll, int clnt_num){ char message[1]; recv(clnt_epoll->events[clnt_num].data.fd, message, (size_t)sizeof(message), 0); players* thisPlayer= getThisPlayer(clnt_epoll->events[clnt_num].data.fd); memcpy(&(thisPlayer->on_ground), message, sizeof(thisPlayer->on_ground)); if(alive_tick_cool()== true){//TODO: alive_tick_cool send_keep_alive(shared, clnt_epoll, clnt_num);//TODO: send_keep_alive } }
static int keep_alive_timer_func(void *user_data, unsigned int events) { belle_sip_listening_point_t* lp=(belle_sip_listening_point_t*)user_data; belle_sip_list_t* iterator; belle_sip_channel_t* channel; belle_sip_list_t *to_be_closed=NULL; for (iterator=lp->channels;iterator!=NULL;iterator=iterator->next) { channel=(belle_sip_channel_t*)iterator->data; if (channel->state == BELLE_SIP_CHANNEL_READY && send_keep_alive(channel)==-1) { /*only send keep alive if ready*/ to_be_closed=belle_sip_list_append(to_be_closed,channel); } } for (iterator=to_be_closed;iterator!=NULL;iterator=iterator->next){ channel=(belle_sip_channel_t*)iterator->data; channel_set_state(channel,BELLE_SIP_CHANNEL_ERROR); belle_sip_channel_close(channel); } belle_sip_list_free(to_be_closed); return BELLE_SIP_CONTINUE_WITHOUT_CATCHUP; }