#ifndef __CONSUMER_H__
#define __CONSUMER_H__

#include "Thread.hxx"
#include "Pool.hxx"
#include "../camera/PerspectiveCamera.hxx"
#include "../Scene.hxx"
#include <string>

class Consumer : public Thread {
	private:
		static Mutex mtx;
		Pool<std::pair<unsigned int, unsigned int> > * pool;
		std::string id;
		size_t num_items;
		Camera& camera;
		Scene scene;
		Vec3f *image;
	protected:
		virtual void run();
	public:
		Consumer(Pool<std::pair<unsigned int, unsigned int> > * pool, std::string id,
				Camera& camera, Scene& scene, Vec3f image[])
		: pool(pool), id(id), num_items(0), camera(camera), scene(scene), image(image) {};
		
		void consume(size_t);
};

#endif