void fs_node_recv_data(struct fs_node* node, BYTE* data, size_t len){ if(!node->recv_buffer){ fprintf(stderr, "fs_node_recv_data but node recvbuffer is NULL\n"); return ; } fs_stream_write_data(node->recv_buffer, data, len); const BYTE* stream_data = fs_output_stream_get_dataptr(node->recv_buffer); size_t stream_len = fs_output_stream_get_len(node->recv_buffer); struct fs_pack* pack = NULL; size_t offset = 0; do{ pack = NULL; if(node->server != NULL){ size_t pack_len = fs_server_parse_pack(node->server, stream_data + offset, stream_len - offset, node->node_id, &pack); if(pack_len){ fs_server_on_recv_pack(node->server, pack); } offset += pack_len; } }while (pack != NULL); if(offset > 0 && node->recv_buffer){ fs_output_stream_sub(node->recv_buffer, offset, stream_len - offset); } }
void fs_ruby_on_node_shudown( struct fs_server* server, fs_id node_id){ fs_server_on_recv_pack(server, fs_create_diconnect_pack(node_id)); }
void fs_ruby_on_server_start( struct fs_server* server ){ fs_server_on_recv_pack(server, fs_create_server_start(server)); }