X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fio%2Fbase.cpp;h=b8c13d2193060f94f957178f8f01052c62593d41;hb=4ad05c650c55e3edccea887d15b26f41cdf60fb6;hp=052d464becb6f793cb774c32e38c4fa40e686721;hpb=5b541316a8c7bbf8b812c0f1e2dbebaa6563b0ee;p=libs%2Fcore.git diff --git a/source/io/base.cpp b/source/io/base.cpp index 052d464..b8c13d2 100644 --- a/source/io/base.cpp +++ b/source/io/base.cpp @@ -6,14 +6,13 @@ using namespace std; namespace Msp { namespace IO { -Base::Base(): - mode(M_READ), - eof_flag(false) +Base::Base() { } Base::~Base() { signal_deleted.emit(); + delete mutex; } void Base::check_access(Mode m) const @@ -29,7 +28,7 @@ bool Base::getline(string &line) if(eof_flag) return false; - while(1) + while(!eof()) { int c = get(); if(c==-1 || c=='\n') @@ -57,9 +56,18 @@ void Base::set_eof() } } -const Handle &Base::get_handle(Mode) + +Base::Synchronize::Synchronize(Base &i): + io(i) +{ + if(!io.mutex) + io.mutex = new Mutex; + io.mutex->lock(); +} + +Base::Synchronize::~Synchronize() { - throw logic_error("Base::get_handle"); + io.mutex->unlock(); } } // namespace IO