48 lines
1.0 KiB
C++
48 lines
1.0 KiB
C++
/*
|
||
* IDataLink.h
|
||
*
|
||
* Created on: 13 сент. 2018 г.
|
||
* Author: titov
|
||
*/
|
||
|
||
#ifndef SOURCE_DRIVER_IDATALINK_H_
|
||
#define SOURCE_DRIVER_IDATALINK_H_
|
||
|
||
#include <cstddef>
|
||
|
||
namespace driver {
|
||
|
||
//! Интерфейс передачи данных.
|
||
class ITxLink {
|
||
public:
|
||
virtual bool send( const char * data, std::size_t size ) = 0;
|
||
template<typename T>
|
||
bool operator <<( const T & );
|
||
virtual ~ITxLink() {}
|
||
};
|
||
|
||
//! Интерфейс приемах данных.
|
||
class IRxLink {
|
||
public:
|
||
virtual bool receive( char * data, std::size_t size ) = 0;
|
||
template<typename T>
|
||
bool operator >>( T & );
|
||
virtual ~IRxLink() {}
|
||
};
|
||
|
||
class IDataLink : public ITxLink, public IRxLink {};
|
||
|
||
}
|
||
|
||
template<typename T>
|
||
inline bool driver::ITxLink::operator <<( const T & data ) {
|
||
return send( reinterpret_cast<const char *>(&data), sizeof(data) );
|
||
}
|
||
|
||
template<typename T>
|
||
inline bool driver::IRxLink::operator >>( T & data ) {
|
||
return receive( reinterpret_cast<char *>(&data), sizeof(data) );
|
||
}
|
||
|
||
#endif /* SOURCE_DRIVER_IDATALINK_H_ */
|