@@ -1,9 +1,11 @@
/* ! \file piclientserver_client_base.h
* \ingroup ClientServer
* \~ \brief
* \~english
* \~russian
*/
// ! \file piclientserver_client_base.h
//! \ingroup ClientServer
//! \brief
//! \~english Base class for client-server communication
//! \~russian Базовый класс для клиент-серверного взаимодействия
//! \details
//! \~english Provides base functionality for client-server communication with diagnostics support.
//! \~russian Обеспечивает базовую функциональность для клиент-серверного взаимодействия с поддержкой диагностики.
/*
PIP - Platform Independent Primitives
Ivan Pelipenko peri4ko@yandex.ru
@@ -37,77 +39,112 @@ class Server;
class ClientInterface { } ;
//! ~english Base class for client-server communication with diagnostics support
//! ~russian Базовый класс для клиент-серверного взаимодействия с поддержкой диагностики
//! \brief
//! \~english Base class for client and server-side client
//! \~russian Базовый класс для клиента и клиента на стороне сервера
// template<bool EnableDiagnostics = false>
class PIP_CLIENT_SERVER_EXPORT ClientBase {
friend class Server ;
NO_COPY_CLASS ( ClientBase ) ;
public :
//! \brief
//! \~english Constructs ClientBase
//! \~russian Создает ClientBase
ClientBase ( ) ;
//! \brief
//! \~english Destructor
//! \~russian Деструктор
virtual ~ ClientBase ( ) ;
//! ~english Gets underlying TCP connection
//! ~russian Возвращает TCP-соединение
//! \brief
//! \~english Gets underlying TCP connection
//! \~russian Возвращает TCP-соединение
const PIEthernet * getTCP ( ) const { return tcp ; }
//! ~english Closes the connection
//! ~russian Закрывает соединение
//! \brief
//! \~english Closes the connection
//! \~russian Закрывает соединение
void close ( ) ;
//! ~english Gracefully stops and waits for completion
//! ~russian Плавно останавливает и ожидает завершения
//! \brief
//! \~english Gracefully stops and waits for completion
//! \~russian Плавно останавливает и ожидает завершения
void stopAndWait ( ) ;
//! ~english Writes byte array to the connection
//! ~russian Записывает массив байтов в соединение
//! \brief
//! \~english Writes byte array to the connection
//! \~russian Записывает массив байтов в соединение
int write ( const void * d , const size_t s ) ;
//! ~english Writes byte array to the connection
//! ~russian Записывает массив байтов в соединение
//! \brief
//! \~english Writes byte array to the connection
//! \~russian Записывает массив байтов в соединение
int write ( const PIByteArray & ba ) { return write ( ba . data ( ) , ba . size ( ) ) ; }
//! ~english Enables diagnostics collection
//! ~russian Включает с б о р диагностики
//! \brief
//! \~english Enables diagnostics collection
//! \~russian Включает с б о р диагностики
void enableDiagnostics ( ) ;
//! ~english Gets current diagnostics state
//! ~russian Возвращает текущее состояние диагностики
//! \brief
//! \~english Gets current diagnostics state
//! \~russian Возвращает текущее состояние диагностики
PIDiagnostics : : State diagnostics ( ) const ;
//! ~english Gets current received packet bytes already received (all bytes count passed in \a receivePacketStart())
//! ~russian Возвращает сколько байт принимаемого пакета получено (общее количество передается в \a receivePacketStart())
//! \brief
//! \~english Gets current received packet bytes already received (all bytes count passed in \a receivePacketStart())
//! \~russian Возвращает сколько байт принимаемого пакета получено (общее количество передается в \a receivePacketStart())
int receivePacketProgress ( ) const ;
//! \brief
//! \~english Returns stream configuration
//! \~russian Возвращает конфигурацию стрима
const PIStreamPackerConfig & configuration ( ) const { return stream . configuration ( ) ; }
//! \brief
//! \~english Returns stream configuration
//! \~russian Возвращает конфигурацию стрима
PIStreamPackerConfig & configuration ( ) { return stream . configuration ( ) ; }
//! \brief
//! \~english Sets stream configuration
//! \~russian Устанавливает конфигурацию стрима
void setConfiguration ( const PIStreamPackerConfig & config ) { stream . setConfiguration ( config ) ; }
protected :
//! ~english Called when data is received
//! ~russian Вызывается при получении данных
//! \brief
//! \~english Called when data is received
//! \~russian Вызывается при получении данных
virtual void readed ( PIByteArray data ) { }
//! ~english Called when connection is established
//! ~russian Вызывается при установке соединения
//! \brief
//! \~english Called when connection is established
//! \~russian Вызывается при установке соединения
virtual void connected ( ) { }
//! ~english Called when connection is closed
//! ~russian Вызывается при закрытии соединения
//! \brief
//! \~english Called when connection is closed
//! \~russian Вызывается при закрытии соединения
virtual void disconnected ( ) { }
//! ~english Called when packet receiving starts
//! ~russian Вызывается при начале получения пакета
//! \brief
//! \~english Called when packet receiving starts
//! \~russian Вызывается при начале получения пакета
virtual void receivePacketStart ( int size ) { }
//! ~english Called when packet receiving ends
//! ~russian Вызывается при завершении получения пакета
//! \brief
//! \~english Called when packet receiving ends
//! \~russian Вызывается при завершении получения пакета
virtual void receivePacketEnd ( ) { }
//! \brief
//! \~english Initializes the client
//! \~russian Инициализирует клиента
void init ( ) ;
bool own_tcp = false ;