owlps/owlps-positioning/request.hh

95 lines
2.1 KiB
C++

#ifndef _OWLPS_POSITIONING_REQUEST_HH_
#define _OWLPS_POSITIONING_REQUEST_HH_
class Mobile ;
#include "measurement.hh"
#include <ctime>
#include <unordered_map>
#include <ostream>
class Request
{
protected:
Mobile *mobile ;
struct timespec timestamp ;
std::tr1::unordered_map<std::string, Measurement> measurements ;
public:
Request(const std::tr1::unordered_map<std::string, Measurement> &_measurements
= std::tr1::unordered_map<std::string, Measurement>()) ;
Request(const struct timespec &_timestamp,
const std::tr1::unordered_map<std::string, Measurement> &_measurements
= std::tr1::unordered_map<std::string, Measurement>()) ;
Request(const Mobile *_mobile, const struct timespec &_timestamp,
const std::tr1::unordered_map<std::string, Measurement> &_measurements
= std::tr1::unordered_map<std::string, Measurement>()) ;
Mobile* get_mobile() const ;
void set_mobile(const Mobile *_mobile) ;
void set_timestamp(const struct timespec &_timestamp) ;
void set_measurements(const std::tr1::unordered_map
<std::string, Measurement> &_measurements) ;
void clear(void) ;
operator bool(void) const ;
friend std::ostream &operator<<(std::ostream &os, const Request &r) ;
} ;
/*** Accesseurs lecture ***/
inline Mobile* Request::get_mobile() const
{
return mobile ;
}
/*** Accesseurs écriture ***/
inline void Request::set_mobile(const Mobile *_mobile)
{
mobile = (Mobile *) _mobile ;
}
inline void Request::set_timestamp(const struct timespec &_timestamp)
{
timestamp = _timestamp ;
}
inline void Request::set_measurements(const std::tr1::unordered_map
<std::string, Measurement> &_measurements)
{
measurements = _measurements ;
}
/*** Opérateurs ***/
/*
* Returns false if the Request is empty, or true if at least one
* attribute is initialised.
*/
inline Request::operator bool() const
{
return
mobile != NULL ||
timestamp.tv_sec != 0 ||
measurements.size() > 0 ;
}
#endif // _OWLPS_POSITIONING_REQUEST_HH_