Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
May 20, 2009, 4:18:02 PM (16 years ago)
Author:
adrfried
Message:

some asio functionality

Location:
code/branches/ggz/src/orxonox
Files:
2 deleted
3 edited

Legend:

Unmodified
Added
Removed
  • code/branches/ggz/src/orxonox/GGZClient.cc

    r2889 r2997  
    88
    99    GGZClient::GGZClient()
     10        : ggzSocket(io), gameSocket(io)
    1011    {
    1112        assert(singletonRef_s == 0);
    1213        singletonRef_s = this;
     14
     15        boost::asio::ip::tcp::socket::non_blocking_io non_blocking_io(true);
     16        ggzSocket.io_control(non_blocking_io);
     17        gameSocket.io_control(non_blocking_io);
    1318
    1419        active = ggzmod_is_ggz_mode();
     
    3439    }
    3540
     41    void GGZClient::tick(const float /*dt*/)
     42    {
     43        boost::system::error_code ec;
     44        io.poll(ec);
     45        if (ec) {
     46            /* TODO: Error */
     47        }
     48    }
     49
    3650    void GGZClient::initGGZ()
    3751    {
     
    4256            /* TODO: Error */
    4357        }
    44         int ggzSocket = ggzmod_get_fd(ggzmod);
    45         if (ggzSocket < 0) {
     58        int fd = ggzmod_get_fd(ggzmod);
     59        if (fd < 0) {
    4660            /* TODO: Error */
    4761        }
    48         sockets.add(ggzSocket, &orxonox::GGZClient::handleGGZ);
     62        /* TODO: Error */
     63        ggzSocket.assign(boost::asio::ip::tcp::v4(), fd);
     64        ggzSocket.async_read_some(boost::asio::null_buffers(), handleGGZ);
    4965    }
    5066
     
    5672
    5773    /* Got data from game server */
    58     void handleGame(int fd)
     74    void handleGame(const boost::system::error_code& /*e*/)
    5975    {
    60         /* TODO: read from fd */
     76        /* TODO: read from gameSocket */
    6177    }
    6278
    6379    /* Got data from GGZ */
    64     void GGZClient::handleGGZ(int fd)
     80    void GGZClient::handleGGZ(const boost::system::error_code& /*e*/)
    6581    {
    6682        ggzmod_dispatch(getInstance().ggzmod);
     
    7288    {
    7389        ggzmod_set_state(ggzmod, GGZMOD_STATE_PLAYING);
    74         int gameSocket = *(int*)data;
    75         getInstance().sockets.add(gameSocket, &orxonox::GGZClient::handleGGZ);
     90        gameSocket.assign(boost::asio::ip::tcp::v4(), *(int*)data);
     91        gameSocket.async_read_some(boost::asio::null_buffers(), handleGame);
    7692    }
    7793}
  • code/branches/ggz/src/orxonox/GGZClient.h

    r2889 r2997  
    33
    44#include "OrxonoxPrereqs.h"
    5 #include "objects/FDWatcher.h"
     5#include "objects/Tickable.h"
    66
    77#include <ggzmod.h>
     8#include <boost/asio.hpp>
    89
    910namespace orxonox
    1011{
    11     class _OrxonoxExport GGZClient
     12    class _OrxonoxExport GGZClient : public Tickable
    1213    {
    1314        public:
     
    1617
    1718            static GGZClient& getInstance();
     19            virtual void tick(const float dt);
    1820
    1921        private:
     
    2123
    2224            bool active;
    23             GGZMod *ggzmod;
    24             FDWatcher sockets;
     25            GGZMod * ggzmod;
     26            boost::asio::io_service io;
     27            boost::asio::ip::tcp::socket ggzSocket;
     28            boost::asio::ip::tcp::socket gameSocket;
    2529
    2630            void initGGZ();
    2731            void deinitGGZ();
    28             static void handleGame(int fd);
    29             static void handleGGZ(int fd);
     32            void handleGame(const boost::system::error_code& e);
     33            void handleGGZ(const boost::system::error_code& e);
    3034            static void handleGGZModServer(GGZMod * ggzmod, GGZModEvent e,
    3135                    const void *data);
  • code/branches/ggz/src/orxonox/objects/CMakeLists.txt

    r2889 r2997  
    33  EventDispatcher.cc
    44  EventTarget.cc
    5   FDWatcher.cc
    65  GlobalShader.cc
    76  Level.cc
Note: See TracChangeset for help on using the changeset viewer.