// Copyright (c) 1999-2000 David Muse
// See the COPYING file for more information.

#ifndef CLIENT_H
#define CLIENT_H

#include <strstream.h>

#include <sys/types.h>
#include <sys/un.h>
#include <netinet/in.h>
#include <netdb.h>

class client {
	public:
			client();
			client(char *hostname, unsigned short int port, 
				int retrytime, int tries);
			client(char *unixport, int retrytime, int tries);
		virtual	~client();

		int	openInetConnection(char *hostname, 
					unsigned short int port, 
					int retrytime, int tries);
		int	openUnixConnection(char *unixport, 
					int retrytime, int tries);

		int	writeToServer(short number);
		int	writeToServer(long number);
		int	writeToServer(float number);
		int	writeToServer(double number);
		int	writeToServer(char character);
		int	writeToServer(char *string);
		int	writeToServer(char *string, int size);
		int	writeToServer(void *buffer, int size);

		int	readFromServer(short *buffer);
		int	readFromServer(long *buffer);
		int	readFromServer(float *buffer);
		int	readFromServer(double *buffer);
		int	readFromServer(char *buffer, int size);
		int	readFromServer(void *buffer, int size);
		void	readFromServer(strstream *buffer, char *terminator);

		int	getServerSocket();

		void	closeConnection();

	private:
		#include <private/client.h>

};

#endif