Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/gui/src/network/ClientConnection.h @ 1967

Last change on this file since 1967 was 1638, checked in by rgrieder, 16 years ago

merged input branch into gui test branch (was about time)
svn save (it's still a mess and CMLs haven't been updated)
I'll have to create a special project to create the tolua_bind files for tolua itself anyway..

  • Property svn:eol-style set to native
File size: 2.9 KB
Line 
1/*
2 *   ORXONOX - the hottest 3D action shooter ever to exist
3 *                    > www.orxonox.net <
4 *
5 *
6 *   License notice:
7 *
8 *   This program is free software; you can redistribute it and/or
9 *   modify it under the terms of the GNU General Public License
10 *   as published by the Free Software Foundation; either version 2
11 *   of the License, or (at your option) any later version.
12 *
13 *   This program is distributed in the hope that it will be useful,
14 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
15 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 *   GNU General Public License for more details.
17 *
18 *   You should have received a copy of the GNU General Public License
19 *   along with this program; if not, write to the Free Software
20 *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
21 *
22 *   Author:
23 *      Oliver Scheuss, (C) 2007
24 *   Co-authors:
25 *      ...
26 *
27 */
28
29//
30// C++ Interface: ClientConnection
31//
32// Description:
33//
34//
35// Author:  Oliver Scheuss, (C) 2007
36//
37// Copyright: See COPYING file that comes with this distribution
38//
39//
40#ifndef _ClientConnection_H__
41#define _ClientConnection_H__
42
43#include "NetworkPrereqs.h"
44
45#include <string>
46#include <enet/enet.h>
47#include <boost/thread/recursive_mutex.hpp>
48#include "PacketBuffer.h"
49
50namespace boost { class thread; }
51
52namespace network
53{
54
55#define NETWORK_PORT 55556
56#define NETWORK_CLIENT_MAX_CONNECTIONS 5
57#define NETWORK_CLIENT_WAIT_TIME 1
58#define NETWORK_CLIENT_CONNECT_TIMEOUT 3000 // miliseconds
59#define NETWORK_CLIENT_CHANNELS 2
60
61
62  class ClientConnection{
63  public:
64    ClientConnection(int port, std::string address);
65    ClientConnection(int port, const char* address);
66    //ENetPacket *getPacket(ENetAddress &address); // thread1
67    //ENetPacket *getPacket(); // thread1
68    ENetEvent *getEvent();
69    // check wheter the packet queue is empty
70    bool queueEmpty();
71    // create a new listener thread
72    bool createConnection();
73    bool closeConnection();
74    // add a packet to queue for the server
75    bool addPacket(ENetPacket *packet);
76    // send out all queued packets
77    bool sendPackets();
78    // send out all queued packets and save result in event
79    //bool sendPackets(ENetEvent *event);
80    bool waitEstablished(int milisec);
81    bool isConnected(){return established;}
82  private:
83    bool processData(ENetEvent *event);
84    // implementation of the listener
85    void receiverThread(); //thread2
86    //packetbuffer
87    bool establishConnection();
88    bool disconnectConnection();
89    PacketBuffer buffer;
90    // enet stuff
91    ENetHost *client;
92    ENetAddress serverAddress;
93    // quit-variable (communication with threads)
94    bool quit;
95    bool established;
96    // clientlist
97    ENetPeer *server;
98    boost::thread *receiverThread_;
99   
100    static boost::recursive_mutex enet_mutex_;
101  };
102
103
104
105
106
107
108
109
110}
111
112#endif /* _ClientConnection_H__ */
Note: See TracBrowser for help on using the repository browser.