[Positioning] InputMedium: current_request now pointer

To handle calibration requests, we will need to make current_request be
either a Request or a CalibrationRequest, so we must dynamically
allocate it.
This commit is contained in:
Matteo Cypriani 2010-02-16 20:00:14 +01:00
parent 0b461bf4d0
commit 1ceab071a2
2 changed files with 35 additions and 29 deletions

View File

@ -119,8 +119,8 @@ const Request& InputCSV::get_next_request()
if (eof_close()) if (eof_close())
{ {
// End of file or error: blank current request // End of file or error: blank current request
current_request.clear() ; current_request->clear() ;
return current_request ; return *current_request ;
} }
// Split read string into fields (semicolon-separated) // Split read string into fields (semicolon-separated)
@ -133,8 +133,8 @@ const Request& InputCSV::get_next_request()
if (ti == tok.end()) if (ti == tok.end())
{ {
// Wrong number of fields: blank current request // Wrong number of fields: blank current request
current_request.clear() ; current_request->clear() ;
return current_request ; return *current_request ;
} }
// If the mobile did not exist, we create it // If the mobile did not exist, we create it
@ -146,18 +146,18 @@ const Request& InputCSV::get_next_request()
{ {
Stock::getw_mobile(*ti).set_mac_addr(*ti) ; Stock::getw_mobile(*ti).set_mac_addr(*ti) ;
} }
current_request.set_mobile(&Stock::get_mobile(*ti)) ; current_request->set_mobile(&Stock::get_mobile(*ti)) ;
// Read Timestamp field // Read Timestamp field
if (++ti == tok.end()) if (++ti == tok.end())
{ {
// Wrong number of fields: blank current request // Wrong number of fields: blank current request
current_request.clear() ; current_request->clear() ;
return current_request ; return *current_request ;
} }
try try
{ {
current_request.set_timestamp(Timestamp current_request->set_timestamp(Timestamp
(lexical_cast<uint64_t>(*ti))) ; (lexical_cast<uint64_t>(*ti))) ;
} }
catch (bad_lexical_cast &e) catch (bad_lexical_cast &e)
@ -167,8 +167,8 @@ const Request& InputCSV::get_next_request()
<< *ti << " » at line " << *ti << " » at line "
<< current_line_nb << ", field « Timestamp », of input file « " << current_line_nb << ", field « Timestamp », of input file « "
<< input_file_name << " »!" << endl ; << input_file_name << " »!" << endl ;
current_request.clear() ; // Blank current request current_request->clear() ; // Blank current request
return current_request ; return *current_request ;
} }
// Read position fields // Read position fields
@ -179,8 +179,8 @@ const Request& InputCSV::get_next_request()
if (++ti == tok.end()) if (++ti == tok.end())
{ {
// Wrong number of fields: blank current request // Wrong number of fields: blank current request
current_request.clear() ; current_request->clear() ;
return current_request ; return *current_request ;
} }
try try
{ {
@ -196,8 +196,8 @@ const Request& InputCSV::get_next_request()
<< current_line_nb << ", position field #" << i << current_line_nb << ", position field #" << i
<< ", of input file « " << input_file_name << " »!" << ", of input file « " << input_file_name << " »!"
<< endl ; << endl ;
current_request.clear() ; // Blank current request current_request->clear() ; // Blank current request
return current_request ; return *current_request ;
} }
} }
@ -206,8 +206,8 @@ const Request& InputCSV::get_next_request()
if (++ti == tok.end()) if (++ti == tok.end())
{ {
// Wrong number of fields: blank current request // Wrong number of fields: blank current request
current_request.clear() ; current_request->clear() ;
return current_request ; return *current_request ;
} }
try try
{ {
@ -222,8 +222,8 @@ const Request& InputCSV::get_next_request()
<< *ti << " » at line " << *ti << " » at line "
<< current_line_nb << ", field « Direction », of input file « " << current_line_nb << ", field « Direction », of input file « "
<< input_file_name << " »!" << endl ; << input_file_name << " »!" << endl ;
current_request.clear() ; // Blank current request current_request->clear() ; // Blank current request
return current_request ; return *current_request ;
} }
// Reading {MAC_AP;SS} couples // Reading {MAC_AP;SS} couples
@ -236,8 +236,8 @@ const Request& InputCSV::get_next_request()
if (++ti == tok.end()) if (++ti == tok.end())
{ {
// Wrong number of fields: blank current request // Wrong number of fields: blank current request
current_request.clear() ; current_request->clear() ;
return current_request ; return *current_request ;
} }
int ss ; int ss ;
@ -253,8 +253,8 @@ const Request& InputCSV::get_next_request()
<< current_line_nb << current_line_nb
<< " of input file « " << input_file_name << " »!" << " of input file « " << input_file_name << " »!"
<< endl ; << endl ;
current_request.clear() ; // Blank current request current_request->clear() ; // Blank current request
return current_request ; return *current_request ;
} }
// If the AP did not exist, we create it // If the AP did not exist, we create it
@ -272,12 +272,12 @@ const Request& InputCSV::get_next_request()
measurements[mac_ap].add_ss(ss) ; measurements[mac_ap].add_ss(ss) ;
} }
current_request.set_measurements(measurements) ; current_request->set_measurements(measurements) ;
read_next_line() ; read_next_line() ;
if (is_calibration_request) if (is_calibration_request)
{} // TODO {} // TODO
return current_request ; return *current_request ;
} }

View File

@ -12,15 +12,14 @@ class InputMedium
{ {
protected: protected:
/// The Request just read /// The Request just read
Request current_request ; Request *current_request ;
/// Number of the current line proceeded /// Number of the current line proceeded
unsigned long current_line_nb ; unsigned long current_line_nb ;
public: public:
/// Default constructor
InputMedium(void) ; InputMedium(void) ;
virtual ~InputMedium(void) {} ///< Destructor (do nothing) virtual ~InputMedium(void) ;
/** @name Read accessors */ /** @name Read accessors */
//@{ //@{
@ -63,17 +62,24 @@ public:
inline InputMedium::InputMedium() inline InputMedium::InputMedium()
{ {
current_request = new Request() ;
current_line_nb = 0 ; current_line_nb = 0 ;
} }
inline InputMedium::~InputMedium()
{
delete current_request ;
}
/* *** Read accessors *** */ /* *** Read accessors *** */
inline const Request& InputMedium::get_current_request() const inline const Request& InputMedium::get_current_request() const
{ {
return current_request ; return *current_request ;
} }