Update lua versions
[ryzomcore.git] / nel / samples / net / udp_ping / udp_service.cpp
bloba62c394e59712ef721f3c26aa3c639f1a09d822c
1 // NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
2 // Copyright (C) 2010 Winch Gate Property Limited
3 //
4 // This program is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU Affero General Public License as
6 // published by the Free Software Foundation, either version 3 of the
7 // License, or (at your option) any later version.
8 //
9 // This program is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU Affero General Public License for more details.
14 // You should have received a copy of the GNU Affero General Public License
15 // along with this program. If not, see <http://www.gnu.org/licenses/>.
18 // Includes
21 #include "nel/misc/types_nl.h"
23 #include "nel/net/service.h"
24 #include "nel/net/udp_sim_sock.h"
27 // Namespaces
30 using namespace std;
31 using namespace NLMISC;
32 using namespace NLNET;
35 // Variables
38 CUdpSock *UdpSock = NULL;
41 // Main Class
44 class CBenchService : public IService
46 public:
48 void init()
50 uint16 port = ConfigFile.getVar("UdpPort").asInt();
51 nlinfo ("Starting external UDP socket on port %d", port);
52 UdpSock = new CUdpSock (false);
53 nlassert (UdpSock);
54 UdpSock->bind (port);
57 bool update ()
59 try
61 uint len;
62 CInetAddress addr;
63 uint8 buffer[1000];
65 while (UdpSock->dataAvailable())
67 len = 1000;
68 UdpSock->receivedFrom((uint8*)buffer, len, addr);
69 nlinfo ("Received UDP datagram size %d from %s", len, addr.asString().c_str());
71 CMemStream msgout;
72 uint32 foo = 10;
73 msgout.serial (foo);
74 uint32 size = msgout.length();
75 UdpSock->sendTo (msgout.buffer(), size, addr);
76 nldebug ("Sent UDP datagram size %d to %s", size, addr.asString().c_str());
79 catch (Exception &e)
81 nlwarning ("Exception catched: '%s'", e.what());
83 return true;
86 void release ()
88 if (UdpSock != NULL)
89 delete UdpSock;
94 NLNET_SERVICE_MAIN (CBenchService, "UDPS", "udp_service", 0, EmptyCallbackArray, "", "")