view sources/headers/network.h @ 0:bafff9de2a76

Initial commit since summer'07
author Vlad Glagolev <enqlave@gmail.com>
date Sun, 20 Jan 2008 19:25:25 +0300
parents
children
line wrap: on
line source

/**
 * network.h (2007-04-02)
 *
 * -- CABAL -- network header
 *
 * Copyright (c) 2007 Vlad Glagolev <enqlave@gmail.com>
 * All rights reserved.
 *
 * Permission to use, copy, modify, and distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */

#ifndef _NETWORK_H_
#define _NETWORK_H_

#include "core.h"

class Network {

public:
	Network();
	~Network();

	void msgSend(string);
	string msgReceive();

	int cs;

	struct address_type {
		int inet;
		struct sockaddr_in sa;
#ifdef ENABLE_IPV6
		struct sockaddr_in6 sa6;
#endif
	} address;

	bool socketClose();

	bool hostResolve(pchar, address_type *, int inet = 0);
	bool tcpActivate(int, pchar host = 0);
	bool hostOpen();

	int canRead(int);
	int canWrite(int);

	fd_set rs, ws;
	timeval timeout;

	bool connecting, connected;
};

#endif // _NETWORK_H_