2018-10-25 15:02:48 +02:00
|
|
|
/*
|
2018-11-13 15:48:02 +01:00
|
|
|
* Copyright (C) 2018 dimercur
|
|
|
|
*
|
|
|
|
* This program is free software: you can redistribute it and/or modify
|
|
|
|
* it under the terms of the GNU General Public License as published by
|
|
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
|
|
* (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
2018-10-25 15:02:48 +02:00
|
|
|
*/
|
|
|
|
|
2018-11-13 15:48:02 +01:00
|
|
|
/**
|
|
|
|
* \file server.h
|
|
|
|
* \author PE.Hladik
|
|
|
|
* \version 1.0
|
|
|
|
* \date 06/06/2017
|
|
|
|
* \brief Library for opening a TCP server, receiving data and sending message to monitor
|
2018-10-25 15:02:48 +02:00
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef _SERVER_H_
|
|
|
|
#define _SERVER_H_
|
|
|
|
|
2018-11-13 15:48:02 +01:00
|
|
|
#include "image.h"
|
2018-10-25 15:02:48 +02:00
|
|
|
#define DEFAULT_SERVER_PORT 2323
|
|
|
|
|
2018-11-13 15:48:02 +01:00
|
|
|
/**
|
|
|
|
* \brief Open server port, connect and listen to given port.
|
|
|
|
*
|
|
|
|
* \param port A valid port number (1024 - 65535)
|
|
|
|
* \return -1 if opening failed or the socket number
|
|
|
|
*/
|
2018-10-25 15:02:48 +02:00
|
|
|
int openServer (int port);
|
2018-11-13 15:48:02 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* \brief Close server
|
|
|
|
*
|
|
|
|
* \return -1 if closing failed , 0 otherwise
|
|
|
|
*/
|
2018-10-25 15:02:48 +02:00
|
|
|
int closeServer();
|
2018-11-13 15:48:02 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* \brief Wait for a client to connect
|
|
|
|
*
|
|
|
|
* \return Return client Id or -1 if it failed
|
|
|
|
*/
|
2018-10-25 15:02:48 +02:00
|
|
|
int acceptClient();
|
|
|
|
|
2018-11-13 15:48:02 +01:00
|
|
|
/**
|
|
|
|
* \brief Send given data to monitor
|
|
|
|
* \details Send given data to monitor using default client ID
|
|
|
|
*
|
|
|
|
* \param data A valid pointer to a buffer
|
|
|
|
* \param length Amount of data to send
|
|
|
|
* \return Return amount of data really written. 0 if communication is broken
|
|
|
|
*/
|
2018-10-25 15:02:48 +02:00
|
|
|
int sendDataToServer(char *data, int length);
|
2018-11-13 15:48:02 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* \brief Send given data to monitor, using specific client ID
|
|
|
|
* \details Send given data to monitor using given client ID.
|
|
|
|
*
|
|
|
|
* \param client Client Id to send data to
|
|
|
|
* \param data A valid pointer to a buffer
|
|
|
|
* \param length Amount of data to send
|
|
|
|
* \return Return amount of data really written. 0 if communication is broken
|
|
|
|
*/
|
2018-10-25 15:02:48 +02:00
|
|
|
int sendDataToServerForClient(int client, char *data, int length);
|
2018-11-13 15:48:02 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* \brief Read data from monitor.
|
|
|
|
* \details Read, at most, size data from monitor. Data must be a valid pointer to a buffer large enough.
|
|
|
|
*
|
|
|
|
* \param data A valid pointer to a buffer
|
|
|
|
* \param size Amount of data to read
|
|
|
|
* \return Return amount of data really received. 0 if communication is broken
|
|
|
|
*/
|
2018-10-25 15:02:48 +02:00
|
|
|
int receiveDataFromServer(char *data, int size);
|
2018-11-13 15:48:02 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* \brief Read data from monitor, using specific client ID.
|
|
|
|
* \details Read, at most, size data from monitor. Data must be a valid pointer to a buffer large enough.
|
|
|
|
*
|
|
|
|
* \param client Client Id to receive from
|
|
|
|
* \param data A valid pointer to a buffer
|
|
|
|
* \param size Amount of data to read
|
|
|
|
* \return Return amount of data really received. 0 if communication is broken
|
|
|
|
*/
|
2018-10-25 15:02:48 +02:00
|
|
|
int receiveDataFromServerFromClient(int client, char *data, int size);
|
2018-11-13 15:48:02 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* \brief Send image to monitor using default client ID
|
|
|
|
* \details Convert image to raw data, and add correct header before sending to monitor
|
|
|
|
*
|
|
|
|
* \param image An image object after compression
|
|
|
|
* \return Return amount of data really received. 0 if communication is broken
|
|
|
|
*/
|
|
|
|
int sendImage(Jpg *image);
|
2018-10-25 15:02:48 +02:00
|
|
|
#endif /* _SERVER_H_ */
|
|
|
|
|