Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/branches/powerups/src/lib/network/network_manager.cc @ 5955

Last change on this file since 5955 was 5955, checked in by bensch, 18 years ago

branches/powerups: merged the trunk to branches/powerup
merged with commandsvn merge ../trunk/ powerups/ -r5848:HEAD
conflicts resolved in favor of the trunk

File size: 4.2 KB
RevLine 
[5530]1/*
[5520]2   orxonox - the future of 3D-vertical-scrollers
3
4   Copyright (C) 2004 orx
5
6   This program is free software; you can redistribute it and/or modify
7   it under the terms of the GNU General Public License as published by
8   the Free Software Foundation; either version 2, or (at your option)
9   any later version.
10
11   ### File Specific:
12   main-programmer: Patrick Boenzli
13   co-programmer: ...
14*/
15
16
[5525]17/* this is for debug output. It just says, that all calls to PRINT() belong to the DEBUG_MODULE_NETWORK module
[5530]18   For more information refere to https://www.orxonox.net/cgi-bin/trac.cgi/wiki/DebugOutput
[5525]19*/
[5530]20#define DEBUG_MODULE_NETWORK
[5525]21
22
[5566]23#include "network_stream.h"
[5572]24#include "class_list.h"
[5566]25
[5605]26#include "debug.h"
[5566]27
[5605]28
[5525]29/* include your own header */
[5520]30#include "network_manager.h"
31
[5530]32
[5525]33/* using namespace std is default, this needs to be here */
[5520]34using namespace std;
35
36
[5525]37/************************************
38  What you will see here are the function definitions from the header file (network_manager.h) with doxygen documentation. Here is an example:
[5520]39
[5530]40
41 In file network_manager.h
42
[5525]43 class NetworkManager
44 {
45   int doSomeStuff(float argument, float* pointer);
[5530]46 }
[5520]47
[5525]48 will be implemented in the source file as follows:
49
50 In file network_manager.cc
51
52 / **
53  *  this is the short description for this function: it just does some stuff
54  * @param argument: this is the first argument, stuff...
[5530]55  * @param pointer:  this is the pointer to nowhereland
56  * return: whatever the function returns: for example an index, number, etc.
57  * /
[5525]58 int NetworkManager::doSomeStuff(float argument, float* pointer)
59 {
[5530]60   // whaterver you want to do
61 }
[5525]62
[5530]63
[5525]64 if you want to make automake compile your files: you will want to add the file names to the local Makefile.am
[5530]65
[5525]66 ************************************/
67
[5530]68
[5605]69
[5520]70/**
71 *  standard constructor
72 */
73NetworkManager::NetworkManager()
[5566]74{
[5572]75  /* set the class id for the base object */
[5575]76  this->setClassID(CL_NETWORK_MANAGER, "NetworkManager");
[5804]77
[5572]78  /* initialize the references */
79  this->netStreamList = NULL;
80  this->syncList = NULL;
[5804]81
[5605]82  PRINTF(0)("NetworkManager created\n");
[5566]83}
[5520]84
85
86/**
87 *  standard deconstructor
88 */
89NetworkManager::~NetworkManager()
90{}
91
[5522]92
93/**
94 *  initializes the network manager
95 */
96void NetworkManager::initialize()
[5572]97{
98  /* get the synchronizeable list from the class list */
[5575]99  this->netStreamList = ClassList::getList(CL_SYNCHRONIZEABLE);
[5605]100  PRINTF(0)("NetworkManager initzalized\n");
[5572]101}
[5522]102
[5530]103
[5522]104/**
105 *  shutsdown the network manager
106 */
107void NetworkManager::shutdown()
[5578]108{
[5522]109
[5578]110}
[5522]111
[5578]112
[5522]113/**
114 *  creates a connection from one object to a host
[5647]115 * @param hostName: the name of the destination host
116 * @param synchronizeable: reference to the sync object
117 */
118NetworkStream& establishConnection(const char& hostName, const Synchronizeable& sync)
119{}
120
121
122/**
123 *  creates a connection from one object to a host
[5522]124 * @param address: the address of the destination host
125 * @param synchronizeable: reference to the sync object
126 */
[5648]127NetworkStream& NetworkManager::establishConnection(IPaddress& address, Synchronizeable& sync)
[5572]128{
[5804]129  printf("Establish connection to server %s, on port %u\n", SDLNet_ResolveIP(&address), address.port);
[5578]130  /* creating a new network stream, it will register itself automaticaly to the class list */
[5649]131  NetworkStream* netStream = new NetworkStream(address, sync, NET_CLIENT);
[5572]132}
[5522]133
[5649]134/**
135 *  creates a new NetworkStream of server type
136 * @param sync: the listener
137 */
[5804]138NetworkStream& NetworkManager::createServer(Synchronizeable& sync, unsigned int port)
[5649]139{
[5805]140  PRINTF(0)("Create a new server socket\n");
[5649]141  /* creating a new network stream, it will register itself automaticaly to the class list */
[5811]142  NetworkStream* netStream = new NetworkStream(port, sync, NET_SERVER);
[5649]143}
[5522]144
[5649]145
[5522]146/**
147 *  teardown a connection
148 */
149void NetworkManager::shutdownConnection()
[5605]150{
151  PRINTF(0)("Shutdown connection\n");
152}
[5522]153
[5530]154
[5522]155
156/**
157 *  sync the network
158 */
159void NetworkManager::synchronize()
[5578]160{
161  if (this->netStreamList != NULL || (this->netStreamList = ClassList::getList(CL_NETWORK_STREAM)) != NULL)
162  {
[5955]163    std::list<BaseObject*>::const_iterator stream;
[5822]164    for (stream = this->netStreamList->begin(); stream != this->netStreamList->end(); ++stream)
165      static_cast<NetworkStream*>(*stream)->processData();
[5578]166  }
[5522]167
[5578]168}
Note: See TracBrowser for help on using the repository browser.