Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/trunk/src/network/PacketBufferTestExt.cc @ 811

Last change on this file since 811 was 790, checked in by nicolasc, 17 years ago

merged FICN back into trunk
awaiting release.

File size: 2.0 KB
RevLine 
[514]1/*
[777]2*   ORXONOX - the hottest 3D action shooter ever to exist
3*
4*
5*   License notice:
6*
7*   This program is free software; you can redistribute it and/or
8*   modify it under the terms of the GNU General Public License
9*   as published by the Free Software Foundation; either version 2
10*   of the License, or (at your option) any later version.
11*
12*   This program is distributed in the hope that it will be useful,
13*   but WITHOUT ANY WARRANTY; without even the implied warranty of
14*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15*   GNU General Public License for more details.
16*
17*   You should have received a copy of the GNU General Public License
18*   along with this program; if not, write to the Free Software
19*   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
20*
21*   Author:
22*      ...
23*   Co-authors:
24*      ...
25*
26*/
[514]27
[188]28#include <string>
29#include <iostream>
30#include <enet/enet.h>
31#include <boost/thread/thread.hpp>
[777]32
33#include "util/Sleep.h"
[285]34#include "PacketBuffer.h"
35#include "PacketBuffer.cc"
[175]36
37using namespace network;
38
39void write(PacketBuffer *test){
[351]40  ENetEvent event;
[188]41  ENetPacket *packet;
[175]42  if(test->isEmpty())
43    std::cout << "empty buffer" << std::endl;
44  for(int i=0; i<10; i++){
[188]45    std::string temp = "packet ";
[285]46    packet = enet_packet_create("packet", strlen("packet ")+1,
[777]47      ENET_PACKET_FLAG_RELIABLE);
[188]48    std::cout << i << ": pushing " << packet->data << std::endl;
[351]49    event.packet=packet;
50    test->push(&event);
[175]51    if(i==5)
52      usleep(200000);
53  }
54  test->setClosed(true);
55  return;
56}
57
58void read(PacketBuffer *test){
[187]59  //test->print();
[175]60  // exit if the queue is closed and empty
61  while(!test->isClosed() || !test->isEmpty()){
62    // only pop if the queue isn't empty
63    while(!test->isEmpty()){
[188]64      std::cout << "We popped the value " << test->pop()->data << std::endl;
[175]65    }
66  }
67  return;
68}
69
70
71int main(int argc, char **argv[]){
72  PacketBuffer test = PacketBuffer();
73  boost::thread thrd1(boost::bind(&write, &test));
74  boost::thread thrd2(boost::bind(&read, &test));
[285]75
[175]76  thrd1.join();
77  thrd2.join();
[285]78
[175]79  return 0;
80}
81
Note: See TracBrowser for help on using the repository browser.