source: flair-dev/trunk/include/FlairCore/Socket.h@ 54

Last change on this file since 54 was 13, checked in by Bayard Gildas, 8 years ago

formatting script + include reformatted

File size: 2.5 KB
RevLine 
[2]1// %flair:license{
[13]2// This file is part of the Flair framework distributed under the
3// CECILL-C License, Version 1.0.
[2]4// %flair:license}
5/*!
6 * \file Socket.h
7 * \brief Class defining a UDP socket
8 * \author Guillaume Sanahuja, Copyright Heudiasyc UMR UTC/CNRS 7253
9 * \date 2013/11/17
10 * \version 4.0
11 */
12
13#ifndef SOCKET_H
14#define SOCKET_H
15
16#include <unistd.h>
17#include <stdint.h>
18#include <Object.h>
19
20class Socket_impl;
21
[13]22namespace flair {
23namespace core {
[2]24
[13]25/*! \class Socket
26*
27* \brief Class encapsulating a UDP socket. It assumes packets are coming from
28*only one distant host on a given port.
29*
30*/
31class Socket : public Object {
32public:
33 /*!
34 * \brief Constructor
35 *
36 * Construct the client side of the socket
37 *
38 * \param parent parent
39 * \param name name
40 * \param address server address (ex 192.168.1.1:9000)
41 * \param broadcast true if address is a broadcast address
42 */
43 Socket(const Object *parent, std::string name, std::string address,
44 bool broadcast = false);
[2]45
[13]46 /*!
47 * \brief Constructor
48 *
49 * Construct the server side of the socket
50 *
51 * \param parent parent
52 * \param name name
53 * \param port listening port
54 */
55 Socket(const Object *parent, std::string name, uint16_t port);
[2]56
[13]57 /*!
58 * \brief Destructor
59 *
60 */
61 ~Socket();
[2]62
[13]63 /*!
64 * \brief Send a message
65 *
66 * In case of a broadcast Socket, Parent()->ObjectName() is used as source of
67 *the message, this name should be unique.
68 *
69 * \param message message
70 */
71 void SendMessage(std::string message);
[2]72
[13]73 /*!
74 * \brief Send a message
75 *
76 * \param message message
77 * \param message_len message length
78 */
79 void SendMessage(const char *message, size_t message_len);
[2]80
[13]81 /*!
82 * \brief Receive a message
83 *
84 * Receive a message and wait up to timeout. \n
85 * If src and src_len are specified, the source of the message will be
86 * copied in the src buffer. \n
87 * Note that in case of a broadcast socket, own messages are filtered and
88 * are not received.
89 *
90 * \param buf buffer to put the message
91 * \param buf_len buffer length
92 * \param timeout timeout
93 * \param src buffer to put source name
94 * \param src_len buffer length
95 *
96 * \return size of the received message
97 */
98 ssize_t RecvMessage(char *buf, size_t buf_len, Time timeout, char *src = NULL,
99 size_t *src_len = NULL);
[2]100
[13]101 void NetworkToHost(char *data, size_t dataSize);
102 void HostToNetwork(char *data, size_t dataSize);
[2]103
[13]104private:
105 class Socket_impl *pimpl_;
106};
[2]107
108} // end namespace core
109} // end namespace flair
110
111#endif // SOCKET_H
Note: See TracBrowser for help on using the repository browser.