Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/masterserver2/src/libraries/network/WANDiscoverable.cc @ 8137

Last change on this file since 8137 was 8053, checked in by smerkli, 14 years ago

Did not actually do any work, just looked through some of the code.

File size: 3.2 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 *      Fabian 'x3n' Landau (original)
24 *   Co-authors:
25 *      Sandro 'smerkli' Merkli (adaptions to WAN)
26 *      ...
27 *
28 */
29
30#include "WANDiscoverable.h"
31
32#include <enet/enet.h>
33#include <cstring>
34
35#include "MasterServerProtocol.h"
36#include "core/ConfigValueIncludes.h"
37#include "core/CoreIncludes.h"
38
39
40namespace orxonox
41{
42
43  WANDiscoverable::WANDiscoverable(): bActive_(false)
44  {
45    /* debugging output */
46    COUT(4) << "Creating WANDiscoverable.\n";
47 
48    /* register object in orxonox */
49    RegisterObject(WANDiscoverable);
50
51    /* check for the masterserver address option in orxonox.ini */
52    this->setConfigValues();
53   
54  }
55
56  /* read the master server address from config file */
57  void WANDiscoverable::setConfigValues()
58  {
59    /* update msaddress string from orxonox.ini config file, if it
60     * has changed.
61     */
62    SetConfigValueExternal(msaddress, "WANDiscovery", "msaddress", "orxonox.net");
63//     SetConfigValue( msaddress, "orxonox.net");
64  } 
65
66  /* destructor */
67  WANDiscoverable::~WANDiscoverable()
68  {
69    if( this->bActive_ )
70      this->disconnect();
71  }
72 
73  /* set the activity of the discoverable object:
74   * active or not active
75   */
76  void WANDiscoverable::setActivity(bool bActive)
77  {
78    if( bActive==this->bActive_ )
79      return;
80   
81    if( bActive )
82    {
83      if( this->connect() )
84        this->bActive_ = true;
85    }
86    else
87    {
88      this->disconnect();
89      this->bActive_ = false;
90    }
91  }
92 
93  bool WANDiscoverable::connect()
94  {
95    /* initialize it and see if it worked */
96    if( msc.initialize() )
97    {
98      COUT(2) << "Error: could not initialize master server communications!\n";
99      return false;
100    }
101   
102    /* connect and see if it worked */
103    if( msc.connect( this->msaddress.c_str(), ORX_MSERVER_PORT ) )
104    {
105      COUT(2) << "Error: could not connect to master server at " 
106                 << this->msaddress << std::endl;
107      return false;
108    }
109                 
110    /* debugging output */
111    COUT(4) << "Initialization of WANDiscoverable complete.\n";
112   
113   
114    // Now register the server at the master server
115    this->msc.sendRequest( MSPROTO_GAME_SERVER " " MSPROTO_REGISTER_SERVER );
116   
117    return true;
118  }
119
120  void WANDiscoverable::disconnect()
121  {
122    this->msc.sendRequest( MSPROTO_GAME_SERVER " " MSPROTO_SERVERDC );
123    msc.disconnect();
124  }
125
126
127
128 
129} // namespace orxonox
Note: See TracBrowser for help on using the repository browser.