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