httpdirfs/network.h

59 lines
1.1 KiB
C
Raw Normal View History

2018-07-21 03:51:49 +02:00
#ifndef NETWORK_H
#define NETWORK_H
2018-07-22 12:50:51 +02:00
2018-07-26 11:29:44 +02:00
#include "link.h"
2018-07-30 15:20:04 +02:00
#define NETWORK_MAX_CONNS 20
2018-07-26 11:29:44 +02:00
typedef struct {
char *memory;
size_t size;
} MemoryStruct;
typedef enum {
2018-07-26 11:29:44 +02:00
FILESTAT = 's',
DATA = 'd'
} TransferType;
typedef struct {
TransferType type;
int transferring;
Link *link;
} TransferStruct;
2018-07-30 15:20:04 +02:00
typedef struct {
char *username;
char *password;
2018-07-30 15:55:38 +02:00
char *proxy;
char *proxy_user;
char *proxy_pass;
2018-07-30 15:20:04 +02:00
long max_conns;
} NetworkConfigStruct;
/** \brief CURL configuration */
extern NetworkConfigStruct NETWORK_CONFIG;
2018-07-26 11:29:44 +02:00
/** \brief curl shared interface */
2018-07-30 15:20:04 +02:00
extern CURLSH *CURL_SHARE;
2018-07-26 11:29:44 +02:00
2018-07-26 11:58:51 +02:00
/** \brief perform one transfer cycle */
2018-07-26 11:29:44 +02:00
int curl_multi_perform_once();
2018-07-30 15:20:04 +02:00
/** \brief initialise network config struct */
void network_config_init();
/** \brief initialise the network module */
LinkTable *network_init(const char *url);
2018-07-26 11:58:51 +02:00
/** \brief blocking file transfer */
2018-07-26 11:29:44 +02:00
void transfer_blocking(CURL *curl);
2018-07-26 11:58:51 +02:00
/** \brief non blocking file transfer */
2018-07-26 11:29:44 +02:00
void transfer_nonblocking(CURL *curl);
2018-07-20 16:38:44 +02:00
2018-07-26 11:58:51 +02:00
/** \brief callback function for file transfer */
2018-07-26 11:29:44 +02:00
size_t
2018-07-30 15:20:04 +02:00
write_memory_callback(void *contents, size_t size, size_t nmemb, void *userp);
2018-07-18 17:26:26 +02:00
#endif