source: flair-src/trunk/lib/FlairCore/src/UdpSocket.h@ 439

Last change on this file since 439 was 387, checked in by Sanahuja Guillaume, 4 years ago

resolve bug with udp broadcast

File size: 2.9 KB
RevLine 
[2]1// %flair:license{
[15]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
[178]13#ifndef UDPSOCKET_H
14#define UDPSOCKET_H
[2]15
16#include <Object.h>
17
[178]18class UdpSocket_impl;
[2]19
[15]20namespace flair {
21namespace core {
[2]22
[178]23/*! \class UdpSocket
[15]24*
25* \brief Class encapsulating a UDP socket. It assumes packets are coming from
26*only one distant host on a given port.
27*
28*/
[178]29class UdpSocket : public Object {
[15]30public:
31 /*!
32 * \brief Constructor
33 *
34 * Construct the client side of the socket
35 *
36 * \param parent parent
37 * \param name name
38 * \param address server address (ex 192.168.1.1:9000)
39 * \param broadcast true if address is a broadcast address
40 */
[178]41 UdpSocket(const Object *parent, std::string name, std::string address,
[15]42 bool broadcast = false);
[2]43
[15]44 /*!
45 * \brief Constructor
46 *
47 * Construct the server side of the socket
48 *
49 * \param parent parent
50 * \param name name
51 * \param port listening port
52 */
[178]53 UdpSocket(const Object *parent, std::string name, uint16_t port);
[2]54
[15]55 /*!
56 * \brief Destructor
57 *
58 */
[178]59 ~UdpSocket();
[2]60
[15]61 /*!
62 * \brief Send a message
63 *
64 * In case of a broadcast Socket, Parent()->ObjectName() is used as source of
65 *the message, this name should be unique.
66 *
67 * \param message message
[387]68 * \param dst_id id of the dst if multiple connection (quick and dirty hack for sido, only works on NRT)
[15]69 */
[387]70 void SendMessage(std::string message,int dst_id=0);
[2]71
[15]72 /*!
73 * \brief Send a message
74 *
75 * \param message message
76 * \param message_len message length
[363]77 * \param dst_id id of the dst if multiple connection (quick and dirty hack for sido, only works on NRT)
[15]78 */
[363]79 void SendMessage(const char *message, size_t message_len,int dst_id=0);
[2]80
[15]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
[363]86 * copied in the src buffer. Source is the Flair name of sender\n
[15]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
[363]95 * \param src_id id of the src, to be used for sending if multiple connection (quick and dirty hack for sido, only works on NRT)
[15]96 *
97 * \return size of the received message
98 */
99 ssize_t RecvMessage(char *buf, size_t buf_len, Time timeout, char *src = NULL,
[363]100 size_t *src_len = NULL,int *src_id=NULL);
[2]101
[15]102 void NetworkToHost(char *data, size_t dataSize);
103 void HostToNetwork(char *data, size_t dataSize);
[2]104
[15]105private:
[178]106 class UdpSocket_impl *pimpl_;
[15]107};
[2]108
109} // end namespace core
110} // end namespace flair
111
[178]112#endif // UDPSOCKET_H
Note: See TracBrowser for help on using the repository browser.