Fix templates and remove old cruft
[senf.git] / Socket / FileHandle.hh
1 // $Id$
2 //
3 // Copyright (C) 2006 
4 // Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS)
5 // Kompetenzzentrum fuer Satelitenkommunikation (SatCom)
6 //     Stefan Bund <stefan.bund@fokus.fraunhofer.de>
7 //
8 // This program is free software; you can redistribute it and/or modify
9 // it under the terms of the GNU General Public License as published by
10 // the Free Software Foundation; either version 2 of the License, or
11 // (at your option) any later version.
12 //
13 // This program is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 // GNU General Public License for more details.
17 //
18 // You should have received a copy of the GNU General Public License
19 // along with this program; if not, write to the
20 // Free Software Foundation, Inc.,
21 // 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
22
23 /** \mainpage The SENF Socket Library
24
25 \section arch Overall Architecture
26
27 \image html "../../SocketLibrary-classes.png" Class Diagram
28
29  */
30
31 #ifndef HH_FileHandle_
32 #define HH_FileHandle_ 1
33
34 // Custom includes
35 #include <memory> // std::auto_ptr
36
37 //#include "FileHandle.mpp"
38 ///////////////////////////////hh.p////////////////////////////////////////
39 #include "FileHandle.ih"
40
41 namespace satcom {
42 namespace lib {
43     
44     /** \brief
45      */
46     class FileHandle
47     {
48     public:
49         ///////////////////////////////////////////////////////////////////////////
50         // Types
51
52         ///////////////////////////////////////////////////////////////////////////
53         ///\name Structors and default members
54         ///@{
55
56         // protected default constructor
57         // default copy constructor
58         // default copy assignment
59         // default destructor
60
61         // no conversion constructors
62
63         ///@}
64         ///////////////////////////////////////////////////////////////////////////
65         
66         void close();
67         void terminate();
68
69         bool readable() const;
70         void waitReadable() const;
71         bool writeable() const;
72         void waitWriteable() const;
73
74         bool blocking() const;
75         void blocking(bool status);
76
77         bool eof() const;
78         bool valid() const;
79
80         operator bool () const;
81         bool operator!() const;
82
83         int fd() const;
84
85         static FileHandle cast_static(FileHandle handle);
86         static FileHandle cast_dynamic(FileHandle handle);
87
88     protected:
89         explicit FileHandle(std::auto_ptr<FileBody> body);
90
91         FileBody & body();
92         FileBody const & body() const;
93         static FileBody & body(FileHandle & handle);
94         static FileBody const & body(FileHandle const & handle);
95
96         void fd(int fd);
97
98     private:
99         FileBody::ptr body_;
100     };
101
102 }}
103
104 ///////////////////////////////hh.e////////////////////////////////////////
105 #include "FileHandle.cci"
106 //#include "FileHandle.ct"
107 //#include "FileHandle.cti"
108 #endif
109
110 \f
111 // Local Variables:
112 // mode: c++
113 // c-file-style: "satcom"
114 // End: