X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Socket%2FFileHandle.cci;h=62cbfaf5881abd6fa517ceadeef2f01f8570a449;hb=1ad3873b372da6187b1fbc645bf276287d2efb54;hp=0fc5f3e52537650a243434b8e82f1da2d5e97363;hpb=70256cc93f59f5d2c9b3428775a181e5e225bfc5;p=senf.git diff --git a/Socket/FileHandle.cci b/Socket/FileHandle.cci index 0fc5f3e..62cbfaf 100644 --- a/Socket/FileHandle.cci +++ b/Socket/FileHandle.cci @@ -1,6 +1,6 @@ // $Id$ // -// Copyright (C) 2006 +// Copyright (C) 2006 // Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS) // Kompetenzzentrum fuer Satelitenkommunikation (SatCom) // Stefan Bund @@ -21,14 +21,14 @@ // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. /** \file - \brief senf::FileHandle inline non-template implementation + \brief FileHandle inline non-template implementation */ //#include "FileHandle.ih" // Custom includes #include -#include "Utils/Exception.hh" +#include "../Utils/Exception.hh" #define prefix_ inline ///////////////////////////////cci.p/////////////////////////////////////// @@ -54,7 +54,7 @@ prefix_ senf::FileBody::~FileBody() prefix_ void senf::FileBody::close() { if (!valid()) - throw SystemException(EBADF); + throwErrno(EBADF); v_close(); fd_ = -1; } @@ -67,6 +67,11 @@ prefix_ void senf::FileBody::terminate() } } +prefix_ senf::FileHandle senf::FileBody::handle() +{ + return FileHandle(ptr(this)); +} + prefix_ int senf::FileBody::fd() const { @@ -171,7 +176,7 @@ prefix_ bool senf::FileHandle::eof() prefix_ bool senf::FileHandle::valid() const { - return body().valid(); + return body_ && body().valid(); } prefix_ bool senf::FileHandle::boolean_test() @@ -186,18 +191,28 @@ prefix_ int senf::FileHandle::fd() return body().fd(); } +prefix_ senf::FileHandle::FileHandle() + : body_(0) +{} + prefix_ senf::FileHandle::FileHandle(std::auto_ptr body) : body_(body.release()) {} +prefix_ senf::FileHandle::FileHandle(FileBody::ptr body) + : body_(body) +{} + prefix_ senf::FileBody & senf::FileHandle::body() { + BOOST_ASSERT(body_); return *body_; } prefix_ senf::FileBody const & senf::FileHandle::body() const { + BOOST_ASSERT(body_); return *body_; } @@ -240,5 +255,10 @@ prefix_ int senf::retrieve_filehandle(FileHandle handle) // Local Variables: // mode: c++ +// fill-column: 100 // c-file-style: "senf" +// indent-tabs-mode: nil +// ispell-local-dictionary: "american" +// compile-command: "scons -u test" +// comment-column: 40 // End: