#ifndef CONNECTION_H
#define CONNECTION_H
#include <string>
#include <iostream.h>
#include <vector>
#include "BufferedFile.h"

class Connection {
	//public:
	//virtual void   disconnect();
	//virtual string getName();
	//virtual bool   readable();
	//virtual bool   writable();
	//virtual int write(const SAMPLE * data, int size);
	//virtual int read(SAMPLE * data, int size);
	//int getFileHandle();
	//virtual string getType();
	//virtual void setType(string type);
	//Connection(BufferedFile fd);
	//Connection(BufferedFile fd,string name);
	//virtual ~Connection();
	//void init(BufferedFile fd,string name);
	//protected:
	//string type;
	//string connectionName;
	//BufferedFile file;
	public:
	string type;
	string connectionName;
	BufferedFile file;
	Connection(BufferedFile fd) {	
		init(fd,"Unnamed");
	}
	virtual ~Connection() {	
	}
	Connection(BufferedFile fd,string name) {	
		init(fd,name);
	}
	virtual void   disconnect() {
		file.Close();
	}
	 
	virtual string getName() {
		return connectionName;
	}
	 
	virtual bool   readable() {
		return true;
	}
	 
	virtual bool   writable() {
		return true;
	}
	 
	virtual int write(const SAMPLE * data, int size) { //is char valid? void would be more acceptable..
		//return write(filehandle,(void *)data, sizeof(SAMPLE)*size);
		return file.Write((char *)data,sizeof(SAMPLE)*size);
	}
	 
	virtual int read(SAMPLE * data, int size) { //is char valid? void would be more acceptable...
		//return read(this.filehandle,(void *)data, sizeof(SAMPLE)*size);
		return file.Read((char *) data,sizeof(SAMPLE)*size);
	}
	 
	void init(BufferedFile file,string name) {
		connectionName = new string(name);
		this.file = file;
		type = "short";
	}
	 
	virtual int getFileHandle() {
		return file.getFileHandle();
	}
	 
	virtual string getType() {
		return type;
	}
	 
	virtual void setType(string type) {
		this.type = string(type);
	}
};
#endif

