#ifndef _OWLPS_POSITIONING_INPUTMEDIUM_HH_ #define _OWLPS_POSITIONING_INPUTMEDIUM_HH_ #include "request.hh" /// Super class of all input media /** * Provide interface for input media, i.e. to read Request sent by a * Mobile. */ class InputMedium { protected: Request *current_request ; /// Number of the current line proceeded unsigned long current_line_nb ; public: InputMedium(void) ; virtual ~InputMedium(void) ; /** @name Read accessors */ //@{ const Request& get_current_request(void) const ; unsigned int get_current_line_nb(void) const ; /// Checks if the last request has been reached /** * @return \em true if the last request has been reached. * @return \em false if there is something more to read. */ virtual bool eof(void) const = 0 ; //@} // End Read accessors /** @name Operations */ //@{ /// Reads the next request /** * Reads a Request, increments current_line_nb, updates #current_request * and returns it. * @return The Request read, or an empty Request in case of error or * EOF (note that when casted in bool, an empty Request is false, see * Request::operator bool()). */ virtual const Request& get_next_request(void) = 0 ; /// Converts #current_request into a CalibrationRequest void current_request_to_calibration_request( uint_fast8_t request_type = OWL_REQUEST_CALIBRATION) ; /// Clears (reallocates to Request if needed) #current_request void clear_current_request(void) ; //@} // End Operations } ; /* *** Read accessors *** */ inline const Request& InputMedium::get_current_request() const { return *current_request ; } inline unsigned int InputMedium::get_current_line_nb() const { return current_line_nb ; } #endif // _OWLPS_POSITIONING_INPUTMEDIUM_HH_