Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/cpp11_v2/src/libraries/network/NetworkPrereqs.h @ 11006

Last change on this file since 11006 was 11006, checked in by landauf, 8 years ago

made some enums in network library strongly typed. for most other enums in network this isn't possible because they are often used like flags (converted to int and compared with binary operators).
packet::Type now uses uint8_t as underlying type which reduces the network traffic (by default the type was int)

  • Property svn:eol-style set to native
File size: 5.0 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 *      Reto Grieder
24 *   Co-authors:
25 *      ...
26 *
27 */
28
29/**
30@file
31@brief
32    Shared library macros, enums, constants and forward declarations for the network library
33*/
34
35#ifndef _NetworkPrereqs_H__
36#define _NetworkPrereqs_H__
37
38#include "OrxonoxConfig.h"
39
40//-----------------------------------------------------------------------
41// Shared library settings
42//-----------------------------------------------------------------------
43
44#if defined(ORXONOX_PLATFORM_WINDOWS) && !defined( NETWORK_STATIC_BUILD )
45#  ifdef NETWORK_SHARED_BUILD
46#    define _NetworkExport __declspec(dllexport)
47#  else
48#    if defined( __MINGW32__ )
49#      define _NetworkExport
50#    else
51#      define _NetworkExport __declspec(dllimport)
52#    endif
53#  endif
54#  define _NetworkPrivate
55#elif defined (ORXONOX_GCC_VISIBILITY)
56#  define _NetworkExport  __attribute__ ((visibility("default")))
57#  define _NetworkPrivate __attribute__ ((visibility("hidden")))
58#else
59#  define _NetworkExport
60#  define _NetworkPrivate
61#endif
62
63//-----------------------------------------------------------------------
64// Constants
65//-----------------------------------------------------------------------
66
67namespace orxonox
68{
69  static constexpr unsigned int GAMESTATEID_INITIAL       = static_cast<unsigned int>(-1);
70  extern const char* LAN_DISCOVERY_MESSAGE;
71  extern const char* LAN_DISCOVERY_ACK;
72  static constexpr unsigned int LAN_DISCOVERY_PORT          = 55558;
73  static constexpr unsigned int NETWORK_PEER_ID_SERVER      = 0;
74  static constexpr unsigned int NETWORK_PEER_ID_BROADCAST   = static_cast<unsigned int>(-1);
75  static constexpr unsigned int NETWORK_PEER_ID_UNKNOWN     = static_cast<unsigned int>(-2);
76  static constexpr unsigned int NETWORK_CHANNEL_DEFAULT     = 0;
77  static constexpr unsigned int NETWORK_CHANNEL_UNRELIABLE  = 1;
78  static constexpr unsigned int NETWORK_CHANNEL_COUNT       = 2;
79}
80
81//-----------------------------------------------------------------------
82// Enums
83//-----------------------------------------------------------------------
84
85namespace orxonox
86{
87  namespace packet
88  {
89    namespace PacketFlag
90    {
91      static constexpr uint32_t Reliable    = 1;
92      static constexpr uint32_t Unsequenced = 2;
93      static constexpr uint32_t NoAllocate  = 4;
94    }
95  }
96
97  namespace StaticInitialization
98  {
99    typedef int Type;
100    static constexpr Type NETWORK_FUNCTION = 6;
101  }
102}
103
104//-----------------------------------------------------------------------
105// Forward declarations
106//-----------------------------------------------------------------------
107
108// from ENet
109struct _ENetPeer;
110typedef _ENetPeer     ENetPeer;
111struct _ENetPacket;
112typedef _ENetPacket   ENetPacket;
113struct _ENetEvent;
114typedef _ENetEvent    ENetEvent;
115struct _ENetHost;
116typedef _ENetHost     ENetHost;
117struct _ENetAddress;
118typedef _ENetAddress  ENetAddress;
119typedef uint8_t       ENetChannelID;
120
121namespace orxonox
122{
123  class Client;
124  class ClientConnection;
125  class ClientConnectionListener;
126  class ClientInformation;
127  class Connection;
128  class FunctionCall;
129  class FunctionCallManager;
130  class GamestateClient;
131  class GamestateHandler;
132  class GamestateManager;
133  class Host;
134  class MasterServer;
135  class MasterServerComm;
136  class NetworkChatListener;
137  class NetworkFunctionBase;
138  struct NetworkFunctionPointer;
139  class NetworkFunctionStatic;
140  template <class T>
141  class NetworkMemberFunction;
142  class NetworkMemberFunctionBase;
143  class PeerList;
144  class Server;
145  class ServerConnection;
146  class TrafficControl;
147  class WANDiscoverable;
148  class WANDiscovery;
149
150  // packet
151  namespace packet
152  {
153    class Acknowledgement;
154    class Chat;
155    class ClassID;
156    class DeleteObjects;
157    class FunctionCalls;
158    class FunctionIDs;
159    class Gamestate;
160    class Packet;
161    class Welcome;
162  }
163
164  // synchronisable
165  template <class T>
166  class NetworkCallback;
167  template <class T, class U>
168  class NetworkCallbackNotify;
169  class NetworkCallbackBase;
170  class NetworkCallbackManager;
171  class Synchronisable;
172  class SynchronisableHeader;
173  template <class T>
174  class SynchronisableVariable;
175  class SynchronisableVariableBase;
176  template <class T>
177  class SynchronisableVariableBidirectional;
178}
179
180namespace boost
181{
182  class mutex;
183  class thread;
184}
185
186#endif /* _NetworkPrereqs_H__ */
Note: See TracBrowser for help on using the repository browser.