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

#ifndef SERVER_H
#define SERVER_H

#include <strstream.h>

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

class server {
	public:
			server();
		virtual	~server();

		int	openSockets(unsigned short int inetport, 
					char *unixport, mode_t mode,
					int backlog);
		int	openInetSocket(unsigned short int port, 
					int backlog);
		int	openUnixSocket(char *port, mode_t mode,
					int backlog);
		int	acceptConnection(int timeoutsec, 
					int timeoutusec);

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

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

		int	getServerSocket();
		int	getClientSocket();

		void	closeClientSocket();
		void	closeServerSocket();

		unsigned short int	getInetServerPort();
		char			*getUnixServerPort();

	protected:
		#include <private/server.h>

};

#endif