summaryrefslogtreecommitdiffstats
path: root/PICA_client.h
diff options
context:
space:
mode:
authorme_desk <me_desk@fb96df88-216d-11de-830c-f3023f12d8ac>2013-11-26 17:56:28 +0000
committerme_desk <me_desk@fb96df88-216d-11de-830c-f3023f12d8ac>2013-11-26 17:56:28 +0000
commit964f8ccd1398638d3e5dfd9abb9edd23190b188f (patch)
tree467a776618d66b21adf9a22a2f6183254cd4109c /PICA_client.h
parent530d8a587e08b83b047eefa3f2f07761c7fb25b5 (diff)
downloadpica-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-xPICA_client.h32
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);