packages feed

uniform-io-0.1.0.0: src/System/IO/Uniform/ds.h

#include <sys/types.h>
#include <netinet/in.h>
#include <openssl/ssl.h>

typedef struct {
  int s;
  int ipv6;
  int server;
  struct sockaddr_storage peer;
} *sockDs, s_sockDs;

typedef struct {
  int f;
} *fileDs, s_fileDs;

#define DEFAULT_LISTENNING_QUEUE 5

typedef struct{
  int s;
  int ipv6;
} *nethandler, s_nethandler;

typedef enum {
  file, sock
} dstype;

typedef struct {
  dstype tp;
  void *original;
  SSL *s;
} *tlsDs, s_tlsDs;

nethandler getIPv4Port(const int port);
nethandler getPort(const int port);

fileDs createFromFile(int);
fileDs createFromFileName(const char*);
sockDs createFromHandler(nethandler);
sockDs createToIPv4Host(const unsigned long, const int);
sockDs createToIPv6Host(const unsigned char[16], const int);

tlsDs startSockTls(sockDs, const char*, const char*);

int getPeer(sockDs, unsigned long*, unsigned char[16], int*);

void closeSockDs(sockDs);
void closeFileDs(fileDs);
void closeHandler(nethandler);
void closeTlsDs(tlsDs);

int fileDsSend(fileDs, const char[const], const int);
int fileDsRecv(fileDs, char[], const int);

int sockDsSend(sockDs, const char[const], const int);
int sockDsRecv(sockDs, char[], const int);

int tlsDsSend(tlsDs, const char[const], const int);
int tlsDsRecv(tlsDs, char[], const int);

int stdDsSend(const char[const], const int);
int stdDsRecv(char[], const int);