/** \file
\brief ReadHelper public header */
-#ifndef HH_ReadHelper_
-#define HH_ReadHelper_ 1
+#ifndef HH_SENF_Scheduler_ReadHelper_
+#define HH_SENF_Scheduler_ReadHelper_ 1
// Custom includes
#include <string>
#include <boost/intrusive_ptr.hpp>
#include <boost/scoped_ptr.hpp>
-#include "Utils/intrusive_refcount.hh"
+#include "../Utils/intrusive_refcount.hh"
#include "Scheduler.hh"
//#include "ReadHelper.mpp"
/** \brief Asyncronous reading helper
This class provides a simple asynchronous reading facility. This helper will register with
- the Scheduler and read incoming data. It will collect the data until a specific numbner of
+ the Scheduler and read incoming data. It will collect the data until a specific number of
bytes has been read or some Predicate evaluated on the data read thus far signals end of
data.
The predicate is any class instance with an <tt>operator(std::string const &)</tt>. This
operator is called, whenever some data has been read. If the data is not yet complete, the
- predicate must return \c std::string::npos. If the ReadHelper should stop readeing more
+ predicate must return \c std::string::npos. If the ReadHelper should stop reading more
data, the predicate must return the number of bytes which are to be considered 'matched'.
\todo Move all not Handle dependent members to a ReadHandleBase class
\param[in] handle file descriptor or handle providing
the Handle interface defined above.
\param[in] maxSize maximum number of bytes to read
- \param[in] cb callback
+ \param[in] callback callback
\returns Smart pointer to new ReadHelper instance */
template <class Predicate>
the Handle interface defined above.
\param[in] maxSize maximum number of bytes to read
\param[in] predicate predicate to check
- \param[in] cb callback
+ \param[in] callback callback
\returns smart pointer to new ReadHelper instance */
///@}
///////////////////////////////////////////////////////////////////////////
Handle handle() const; ///< Access the handle object
- unsigned maxSize() const; ///< Return maximum number of bytes to be read
+ std::string::size_type maxSize() const; ///< Return maximum number of bytes to be read
std::string const & data() const; ///< return data read
std::string const & tail() const; ///< return data read but not matched by the predicate
- bool complete() const; ///< Check wether the read has completed successfully
+ bool complete() const; ///< Check whether the read has completed successfully
bool error() const; ///< Check for error condition
- void throw_error() const; ///< If an error occured, throw it
+ void throw_error() const; ///< If an error occurred, throw it
void revoke(); ///< Remove the ReadHelper from the scheduler
private:
struct InternalPredicate;
- ReadHelper(Handle handle, unsigned maxSize, InternalPredicate * predicate, Callback cb);
+ ReadHelper(Handle handle, std::string::size_type maxSize,
+ InternalPredicate * predicate, Callback cb);
- static void dispatchProcess(ptr helper, Handle handle, senf::Scheduler::EventId event);
- void process(Handle handle, senf::Scheduler::EventId event);
+ static void dispatchProcess(ptr helper, Handle handle, int event);
+ void process(Handle handle, int event);
void done();
Handle handle_;
+ scheduler::FdEvent fde_;
std::string::size_type maxSize_;
boost::scoped_ptr<InternalPredicate> predicate_;
Callback callback_;
// c-file-style: "senf"
// indent-tabs-mode: nil
// ispell-local-dictionary: "american"
+// compile-command: "scons -u test"
+// comment-column: 40
// End: