ft data cb
This commit is contained in:
parent
4afd13f70e
commit
9edf3fcf2f
60
ngc_ft1.cpp
60
ngc_ft1.cpp
@ -11,8 +11,10 @@
|
|||||||
struct NGC_FT1 {
|
struct NGC_FT1 {
|
||||||
NGC_FT1_options options;
|
NGC_FT1_options options;
|
||||||
|
|
||||||
std::unordered_map<NGC_FT1_file_kind, NGC_FT1_recv_request_cb*> cb_request;
|
std::unordered_map<NGC_FT1_file_kind, NGC_FT1_recv_request_cb*> cb_recv_request;
|
||||||
std::unordered_map<NGC_FT1_file_kind, NGC_FT1_recv_init_cb*> cb_init;
|
std::unordered_map<NGC_FT1_file_kind, NGC_FT1_recv_init_cb*> cb_recv_init;
|
||||||
|
std::unordered_map<NGC_FT1_file_kind, NGC_FT1_recv_data_cb*> cb_recv_data;
|
||||||
|
std::unordered_map<NGC_FT1_file_kind, NGC_FT1_send_data_cb*> cb_send_data;
|
||||||
|
|
||||||
struct Group {
|
struct Group {
|
||||||
struct Peer {
|
struct Peer {
|
||||||
@ -94,8 +96,6 @@ bool NGC_FT1_init(NGC_EXT_CTX* ngc_ext_ctx, const struct NGC_FT1_options* option
|
|||||||
ngc_ext_ctx->callbacks[FT1_DATA_ACK] = nullptr;
|
ngc_ext_ctx->callbacks[FT1_DATA_ACK] = nullptr;
|
||||||
ngc_ext_ctx->callbacks[FT1_DATA_FIN] = nullptr;
|
ngc_ext_ctx->callbacks[FT1_DATA_FIN] = nullptr;
|
||||||
ngc_ext_ctx->callbacks[FT1_DATA_FIN_ACK] = nullptr;
|
ngc_ext_ctx->callbacks[FT1_DATA_FIN_ACK] = nullptr;
|
||||||
//ngc_ext_ctx->callbacks[HS1_REQUEST_LAST_IDS] = _handle_HS1_REQUEST_LAST_IDS;
|
|
||||||
//ngc_ext_ctx->callbacks[HS1_RESPONSE_LAST_IDS] = _handle_HS1_RESPONSE_LAST_IDS;
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -105,6 +105,35 @@ void NGC_FT1_kill(NGC_EXT_CTX* ngc_ext_ctx) {
|
|||||||
ngc_ext_ctx->ngc_ft1_ctx = nullptr;
|
ngc_ext_ctx->ngc_ft1_ctx = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NGC_FT1_register_callback_recv_request(NGC_EXT_CTX* ngc_ext_ctx, NGC_FT1_file_kind file_kind, NGC_FT1_recv_request_cb* callback) {
|
||||||
|
assert(ngc_ext_ctx);
|
||||||
|
assert(ngc_ext_ctx->ngc_ft1_ctx);
|
||||||
|
|
||||||
|
ngc_ext_ctx->ngc_ft1_ctx->cb_recv_request[file_kind] = callback;
|
||||||
|
}
|
||||||
|
|
||||||
|
void NGC_FT1_register_callback_recv_init(NGC_EXT_CTX* ngc_ext_ctx, NGC_FT1_file_kind file_kind, NGC_FT1_recv_init_cb* callback) {
|
||||||
|
assert(ngc_ext_ctx);
|
||||||
|
assert(ngc_ext_ctx->ngc_ft1_ctx);
|
||||||
|
|
||||||
|
ngc_ext_ctx->ngc_ft1_ctx->cb_recv_init[file_kind] = callback;
|
||||||
|
}
|
||||||
|
|
||||||
|
void NGC_FT1_register_callback_recv_data(NGC_EXT_CTX* ngc_ext_ctx, NGC_FT1_file_kind file_kind, NGC_FT1_recv_data_cb* callback) {
|
||||||
|
assert(ngc_ext_ctx);
|
||||||
|
assert(ngc_ext_ctx->ngc_ft1_ctx);
|
||||||
|
|
||||||
|
ngc_ext_ctx->ngc_ft1_ctx->cb_recv_data[file_kind] = callback;
|
||||||
|
}
|
||||||
|
|
||||||
|
void NGC_FT1_register_callback_send_data(NGC_EXT_CTX* ngc_ext_ctx, NGC_FT1_file_kind file_kind, NGC_FT1_send_data_cb* callback) {
|
||||||
|
assert(ngc_ext_ctx);
|
||||||
|
assert(ngc_ext_ctx->ngc_ft1_ctx);
|
||||||
|
|
||||||
|
ngc_ext_ctx->ngc_ft1_ctx->cb_send_data[file_kind] = callback;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// iterate
|
// iterate
|
||||||
|
|
||||||
void NGC_FT1_send_request(
|
void NGC_FT1_send_request(
|
||||||
@ -145,14 +174,6 @@ void NGC_FT1_send_request_private(
|
|||||||
_send_pkg_FT1_REQUEST(tox, group_number, peer_number, file_kind, file_id, file_id_size);
|
_send_pkg_FT1_REQUEST(tox, group_number, peer_number, file_kind, file_id, file_id_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
void NGC_FT1_register_callback_recv_request(NGC_EXT_CTX* ngc_ext_ctx, NGC_FT1_file_kind file_kind, NGC_FT1_recv_request_cb* callback) {
|
|
||||||
assert(ngc_ext_ctx);
|
|
||||||
assert(ngc_ext_ctx->ngc_ft1_ctx);
|
|
||||||
|
|
||||||
ngc_ext_ctx->ngc_ft1_ctx->cb_request[file_kind] = callback;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
bool NGC_FT1_send_init_private(
|
bool NGC_FT1_send_init_private(
|
||||||
Tox *tox, NGC_EXT_CTX* ngc_ext_ctx,
|
Tox *tox, NGC_EXT_CTX* ngc_ext_ctx,
|
||||||
uint32_t group_number, uint32_t peer_number,
|
uint32_t group_number, uint32_t peer_number,
|
||||||
@ -205,13 +226,6 @@ bool NGC_FT1_send_init_private(
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void NGC_FT1_register_callback_recv_init(NGC_EXT_CTX* ngc_ext_ctx, NGC_FT1_file_kind file_kind, NGC_FT1_recv_init_cb* callback) {
|
|
||||||
assert(ngc_ext_ctx);
|
|
||||||
assert(ngc_ext_ctx->ngc_ft1_ctx);
|
|
||||||
|
|
||||||
ngc_ext_ctx->ngc_ft1_ctx->cb_init[file_kind] = callback;
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool _send_pkg_FT1_REQUEST(const Tox* tox, uint32_t group_number, uint32_t peer_number, uint8_t file_kind, const uint8_t* file_id, size_t file_id_size) {
|
static bool _send_pkg_FT1_REQUEST(const Tox* tox, uint32_t group_number, uint32_t peer_number, uint8_t file_kind, const uint8_t* file_id, size_t file_id_size) {
|
||||||
// - 1 byte packet id
|
// - 1 byte packet id
|
||||||
// - 1 byte (TODO: more?) file_kind
|
// - 1 byte (TODO: more?) file_kind
|
||||||
@ -341,8 +355,8 @@ static void _handle_FT1_REQUEST(
|
|||||||
fprintf(stderr, "]\n");
|
fprintf(stderr, "]\n");
|
||||||
|
|
||||||
NGC_FT1_recv_request_cb* fn_ptr = nullptr;
|
NGC_FT1_recv_request_cb* fn_ptr = nullptr;
|
||||||
if (ngc_ext_ctx->ngc_ft1_ctx->cb_request.count(file_kind)) {
|
if (ngc_ext_ctx->ngc_ft1_ctx->cb_recv_request.count(file_kind)) {
|
||||||
fn_ptr = ngc_ext_ctx->ngc_ft1_ctx->cb_request.at(file_kind);
|
fn_ptr = ngc_ext_ctx->ngc_ft1_ctx->cb_recv_request.at(file_kind);
|
||||||
}
|
}
|
||||||
if (fn_ptr) {
|
if (fn_ptr) {
|
||||||
fn_ptr(tox, ngc_ext_ctx, group_number, peer_number, data+curser, length-curser);
|
fn_ptr(tox, ngc_ext_ctx, group_number, peer_number, data+curser, length-curser);
|
||||||
@ -396,8 +410,8 @@ static void _handle_FT1_INIT(
|
|||||||
// did we allready ack this and the other side just did not see the ack?
|
// did we allready ack this and the other side just did not see the ack?
|
||||||
|
|
||||||
NGC_FT1_recv_init_cb* fn_ptr = nullptr;
|
NGC_FT1_recv_init_cb* fn_ptr = nullptr;
|
||||||
if (ngc_ext_ctx->ngc_ft1_ctx->cb_init.count(file_kind)) {
|
if (ngc_ext_ctx->ngc_ft1_ctx->cb_recv_init.count(file_kind)) {
|
||||||
fn_ptr = ngc_ext_ctx->ngc_ft1_ctx->cb_init.at(file_kind);
|
fn_ptr = ngc_ext_ctx->ngc_ft1_ctx->cb_recv_init.at(file_kind);
|
||||||
}
|
}
|
||||||
bool accept_ft;
|
bool accept_ft;
|
||||||
if (fn_ptr) {
|
if (fn_ptr) {
|
||||||
|
11
ngc_ft1.h
11
ngc_ft1.h
@ -89,6 +89,17 @@ typedef bool NGC_FT1_recv_init_cb(Tox *tox, NGC_EXT_CTX* ngc_ext_ctx, uint32_t g
|
|||||||
|
|
||||||
void NGC_FT1_register_callback_recv_init(NGC_EXT_CTX* ngc_ext_ctx, NGC_FT1_file_kind file_kind, NGC_FT1_recv_init_cb* callback);
|
void NGC_FT1_register_callback_recv_init(NGC_EXT_CTX* ngc_ext_ctx, NGC_FT1_file_kind file_kind, NGC_FT1_recv_init_cb* callback);
|
||||||
|
|
||||||
|
// ========== data ==========
|
||||||
|
|
||||||
|
typedef void NGC_FT1_recv_data_cb(Tox *tox, NGC_EXT_CTX* ngc_ext_ctx, uint32_t group_number, uint32_t peer_number, uint8_t transfer_id, size_t data_offset, const uint8_t* data, size_t data_size);
|
||||||
|
|
||||||
|
void NGC_FT1_register_callback_recv_data(NGC_EXT_CTX* ngc_ext_ctx, NGC_FT1_file_kind file_kind, NGC_FT1_recv_data_cb* callback);
|
||||||
|
|
||||||
|
typedef void NGC_FT1_send_data_cb(Tox *tox, NGC_EXT_CTX* ngc_ext_ctx, uint32_t group_number, uint32_t peer_number, uint8_t transfer_id, size_t data_offset, uint8_t** data, size_t* data_size);
|
||||||
|
|
||||||
|
void NGC_FT1_register_callback_send_data(NGC_EXT_CTX* ngc_ext_ctx, NGC_FT1_file_kind file_kind, NGC_FT1_send_data_cb* callback);
|
||||||
|
|
||||||
|
|
||||||
// ========== peer online/offline ==========
|
// ========== peer online/offline ==========
|
||||||
//void NGC_FT1_peer_online(Tox* tox, NGC_FT1* ngc_hs1_ctx, uint32_t group_number, uint32_t peer_number, bool online);
|
//void NGC_FT1_peer_online(Tox* tox, NGC_FT1* ngc_hs1_ctx, uint32_t group_number, uint32_t peer_number, bool online);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user