src/sock_tcp.h
author Tero Marttila <terom@fixme.fi>
Sun, 22 Feb 2009 06:44:16 +0200
changeset 3 cc94ae754e2a
parent 2 a834f0559939
child 10 9fe218576d13
permissions -rw-r--r--
error handling magic
#ifndef SOCK_TCP_H
#define SOCK_TCP_H

/*
 * TCP implementation of sock_stream interface.
 */
#include "sock_internal.h"

/*
 * Contains the base sock_stream struct, and the file descriptor
 */
struct sock_tcp {
    /* The base struct for sock_stream_* functions */
    struct sock_stream base;
    
    /* The OS file descriptor */
    int fd;
};

#define SOCK_TCP_BASE(sock_ptr) (&(sock_ptr)->base)
#define SOCK_TCP_ERR(sock_ptr) SOCK_ERR(SOCK_TCP_BASE(sock_ptr))

/*
 * Allocate a new blank sock_tcp with a correctly initialized base
 */
err_t sock_tcp_alloc (struct sock_tcp **sock_ptr);

/*
 * Initialize a blank sock_tcp with a given already-existing fd
 */
err_t sock_tcp_init_fd (struct sock_tcp *sock, int fd);

/*
 * Initialize a blank sock_tcp by connecting
 */
err_t sock_tcp_init_connect (struct sock_tcp *sock, const char *hostname, const char *service);

/*
 * Release a non-connected sock_tcp
 */
void sock_tcp_release (struct sock_tcp *sock);

#endif /* SOCK_TCP_H */