Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

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

some asio functionality

File:
1 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}
Note: See TracChangeset for help on using the changeset viewer.