packages feed

uniform-io-1.2.0.0: cbits/ds.h

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

typedef enum {
  file, std, sock
} dstype;

typedef struct {
  int fd;
  dstype tp;
  int ipv6;
  int server;
  struct sockaddr_storage peer;
} *ds, s_ds;

#define DEFAULT_LISTENNING_QUEUE 5

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

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

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

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

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

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

int closeDs(ds);
void closeHandler(nethandler);
ds closeTls(tlsDs);

int sendDs(ds, const char[const], const int);
int recvDs(ds, 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);

int getFd(ds);
int getTlsFd(tlsDs);
void closeFd(int);