#ifndef CONNECTIONFACTORY_H
#define CONNECTIONFACTORY_H
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/time.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <string>

#include "Connection.h"
#include "FilterConnection.h"
#include "InputConnection.h"
#include "OutputConnection.h"
#include "ConfigConnection.h"
#include "ConnectionWrap.h"


class ConnectionFactory {
	public:
	ConnectionFactory(int start);
	ConnectionFactory(int inputPort,int outputPort,int filterPort,int configPort);
	bool isThereANewConnection();
	ConnectionWrap * ConnectionFactory::processConnection();   //return NULL for ones that weren't recorded.. This is
	private:
	void init(int inputPort,int outputPort,int filterPort,int configPort);
	int inputfd;
	int outputfd;
	int filterfd;
	int configfd;
	fd_set conn;
	fd_set conn_set;
	struct timeval tv;
	int maxfd;
};
#endif

