00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00024 #include "ReadHelper.ih"
00025
00026
00027 #include <senf/Utils/Exception.hh>
00028
00029 #define prefix_ inline
00030
00031
00032 template <class Handle>
00033 prefix_ typename senf::ReadHelper<Handle>::ptr
00034 senf::ReadHelper<Handle>::dispatch(Handle handle, std::string::size_type maxSize,
00035 Callback callback)
00036 {
00037 return ptr(new ReadHelper(handle, maxSize, 0, callback));
00038 }
00039
00040 template <class Handle>
00041 template <class Predicate>
00042 prefix_ typename senf::ReadHelper<Handle>::ptr
00043 senf::ReadHelper<Handle>::dispatch(Handle handle, std::string::size_type maxSize,
00044 Predicate const & predicate, Callback callback)
00045 {
00046 return ptr(new ReadHelper(handle, maxSize,
00047 new typename InternalPredicate::template Dispatcher<Predicate>(predicate),
00048 callback));
00049 }
00050
00051 template <class Handle>
00052 prefix_ Handle senf::ReadHelper<Handle>::handle()
00053 const
00054 {
00055 return handle_;
00056 }
00057
00058 template <class Handle>
00059 prefix_ std::string::size_type senf::ReadHelper<Handle>::maxSize()
00060 const
00061 {
00062 return maxSize_;
00063 }
00064
00065 template <class Handle>
00066 prefix_ std::string const & senf::ReadHelper<Handle>::data()
00067 const
00068 {
00069 return data_;
00070 }
00071
00072 template <class Handle>
00073 prefix_ std::string const & senf::ReadHelper<Handle>::tail()
00074 const
00075 {
00076 return tail_;
00077 }
00078
00079 template <class Handle>
00080 prefix_ bool senf::ReadHelper<Handle>::complete()
00081 const
00082 {
00083 return complete_;
00084 }
00085
00086 template <class Handle>
00087 prefix_ bool senf::ReadHelper<Handle>::error()
00088 const
00089 {
00090 return errno_ != 0;
00091 }
00092
00093 template <class Handle>
00094 prefix_ void senf::ReadHelper<Handle>::throw_error()
00095 const
00096 {
00097 if (errno_ != 0) throw SystemException(errno_ SENF_EXC_DEBUGINFO);
00098 }
00099
00100
00101 #undef prefix_
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112