diff options
| author | me_desk <me_desk@fb96df88-216d-11de-830c-f3023f12d8ac> | 2013-11-26 17:56:28 +0000 |
|---|---|---|
| committer | me_desk <me_desk@fb96df88-216d-11de-830c-f3023f12d8ac> | 2013-11-26 17:56:28 +0000 |
| commit | 964f8ccd1398638d3e5dfd9abb9edd23190b188f (patch) | |
| tree | 467a776618d66b21adf9a22a2f6183254cd4109c /PICA_client.h | |
| parent | 530d8a587e08b83b047eefa3f2f07761c7fb25b5 (diff) | |
| download | pica-pica-964f8ccd1398638d3e5dfd9abb9edd23190b188f.tar.gz pica-pica-964f8ccd1398638d3e5dfd9abb9edd23190b188f.zip | |
file transfer - added protocol messages, handler functions, PICA_client API functions
git-svn-id: svn://localhost/project_picapica/trunk@299 fb96df88-216d-11de-830c-f3023f12d8ac
Diffstat (limited to 'PICA_client.h')
| -rwxr-xr-x | PICA_client.h | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/PICA_client.h b/PICA_client.h index fc12aa1..4f637a9 100755 --- a/PICA_client.h +++ b/PICA_client.h @@ -11,6 +11,7 @@ #include <windows.h> typedef unsigned __int16 uint16_t; +typedef unsigned __int64 uint64_t; #else @@ -20,6 +21,7 @@ typedef unsigned __int16 uint16_t; #include <arpa/inet.h> #include <netdb.h> #include <signal.h> +#include <stdint.h> #ifdef PICA_MULTITHREADED #include <pthread.h> @@ -71,6 +73,10 @@ typedef unsigned __int16 uint16_t; #define PICA_ERRPROTOOLD -14 #define PICA_ERRPROTONEW -15 +#define PICA_ERRINVFILENAME -16 +#define PICA_ERRFILETRANSFERINPROGRESS -17 +#define PICA_ERRFILETRANSFERNOTINPROGRESS -18 +#define PICA_ERRFILEFRAGMENTCROSSEDSIZE -19 //#define PICA_CHNMSGBUFLEN 104 @@ -83,6 +89,13 @@ typedef unsigned __int16 uint16_t; #define PICA_CONNSTATE_CONNECTING 17 #define PICA_CONNSTATE_CONNECTED 19 +#define PICA_CHANSENDFILESTATE_IDLE 0 +#define PICA_CHANSENDFILESTATE_SENTREQ 20 +#define PICA_CHANSENDFILESTATE_SENDING 22 + +#define PICA_CHANRECVFILESTATE_IDLE 0 +#define PICA_CHANRECVFILESTATE_RECEIVING 23 + #define PICA_CHAN_ACTIVATE_TIMEOUT 30 @@ -137,12 +150,18 @@ struct PICA_chaninfo *next; struct PICA_chaninfo *prev; int state; time_t timestamp; +int sendfilestate; +uint64_t sendfile_size; +uint64_t sendfile_pos; +int recvfilestate; +uint64_t recvfile_size; +uint64_t recvfile_pos; }; struct PICA_client_callbacks { //получение сообщения. -void (*newmsg_cb)(const unsigned char *peer_id,char* msgbuf,unsigned int nb,int type); +void (*newmsg_cb)(const unsigned char *peer_id,const char* msgbuf,unsigned int nb,int type); //получение подтверждения о доставке сообщения void (*msgok_cb)(const unsigned char *peer_id); //создание канала с собеседником @@ -160,6 +179,14 @@ void (*channel_closed_cb)(const unsigned char *peer_id, int reason); void (*nodelist_cb)(int type, void *addr_bin, const char *addr_str, unsigned int port); //сертификат собеседника в формате PEM. Функция должна сравнить предъявленный сертификат с сохранённым (если есть) и вернуть 1 при успешной проверке, 0 - при неуспешной int (*peer_cert_verify_cb)(const unsigned char *peer_id, const char *cert_pem, unsigned int nb); + +int (*accept_file_cb)(const unsigned char *peer_id, uint64_t file_size, const char *filename, unsigned int filename_size); + +void (*accepted_file_cb)(const unsigned char *peer_id); + +void (*denied_file_cb)(const unsigned char *peer_id); + +void (*file_fragment)(const unsigned char *peer_id, const char* buf,unsigned int nb); }; @@ -193,6 +220,9 @@ int PICA_write(struct PICA_conninfo *ci); int PICA_send_msg(struct PICA_chaninfo *chn, char *buf,unsigned int len); int PICA_read_msg(struct PICA_chaninfo *chn,char *buf,unsigned int *n); +int PICA_send_file_request(struct PICA_chaninfo *chn, const char *filename, uint64_t file_size); +int PICA_send_file_fragment(struct PICA_chaninfo *chn, const char *buf, size_t fragment_size); + void PICA_close_channel(struct PICA_chaninfo *chn); void PICA_close_connection(struct PICA_conninfo *cid); |
