Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.12.2009, 13:36   #1
MInner
Новичок
Джуниор
 
Регистрация: 06.12.2009
Сообщений: 2
По умолчанию Boost (asio + thread) - noncopyable

Код:
#include <iostream>

#include <boost/thread/thread.hpp>
#include <boost/threadpool.hpp>
#include <boost/asio.hpp>
#include <boost/shared_ptr.hpp>
#include <boost/enable_shared_from_this.hpp> 


class Connecter {
public:
	typedef boost::shared_ptr<Connecter> ConPtr;
private:
	boost::asio::io_service t_io;
	boost::asio::ip::tcp::socket _sock;
	Connecter(boost::asio::io_service& ios) : t_io(ios), _sock(ios) {}
	boost::asio::streambuf _inbuffer;
public:
	static ConPtr givePtr(boost::asio::io_service& io){ return ConPtr(new Connecter(io)); }
	boost::asio::ip::tcp::socket Socket(){return _sock;}
	void Read(){ // we do, what we want...
		boost::asio::read_until(_sock, _inbuffer, "\r\n\r\n" );
	}
	void Analys(){};
};

class PortListner {
	boost::asio::ip::tcp::acceptor p_acc;
	boost::asio::io_service p_io;
	boost::threadpool::pool _pool;
	Connecter::ConPtr _cur_con;

	void WaitForPromt(){ //waits till something happens
		p_acc.async_accept(_cur_con->Socket(), boost::bind(&PortListner::ThreadOut, this, boost::asio::placeholders::error));
	}

	void ThreadOut(boost::system::error_code& e){ //hey! there's something there!
		if (!e){
			_pool.schedule(boost::bind(&Connecter::Read , _cur_con)); //put it into it's own way... 
			_cur_con = Connecter::givePtr(p_io);
			WaitForPromt();
		}
	}
public:
		PortListner(int port, int thnum):_pool(thnum), p_acc(p_io) {}
};

int pulnum = 5;
int portnum = 80;

int main(){
	PortListner(portnum, pulnum);
	return 0;
}

ргается мол:

error C2248: boost::noncopyable_::noncopyable::n oncopyable: невозможно обратиться к private член, объявленному в классе "boost::noncopyable_::noncopyab le" d:\dv\boost\include\boost\boost\asi o\io_service.hpp 519


вроде не копирую его же ж...

Последний раз редактировалось Sazary; 06.12.2009 в 23:57.
MInner вне форума Ответить с цитированием
Старый 06.12.2009, 16:41   #2
MInner
Новичок
Джуниор
 
Регистрация: 06.12.2009
Сообщений: 2
По умолчанию

Еще прару блох нашел, компилируется, но теперь вылетает с исключением "Нарушение прав доступа при чтении" в создании критических секций в win_mutex.hpp ....
MInner вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Thread.Приложение не отвечает. Не запускается поток. Zerofill Общие вопросы Delphi 2 10.10.2009 16:04
Проблема с Thread Arnezami Общие вопросы .NET 2 04.10.2009 22:08
Thread creation error - Недостаточно памяти RealSwift Общие вопросы Delphi 1 06.07.2008 12:27
Запрос к БД в отдельном потоке (Thread) tyrell lab БД в Delphi 1 14.06.2007 08:42