Changeset 706


Ignore:
Timestamp:
12/01/11 12:29:46 (6 months ago)
Author:
shiretu
Message:

-- added fd counters stats inside the netio layer

Location:
trunk/sources/thelib
Files:
3 added
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/thelib/include/netio/epoll/iohandler.h

    r637 r706  
    1 /*  
     1/* 
    22 *  Copyright (c) 2010, 
    33 *  Gavriloaie Eugen-Andrei (shiretu@gmail.com) 
     
    2424#include "common.h" 
    2525#include "netio/epoll/iohandlermanagertoken.h" 
    26  
    27 typedef enum _IOHandlerType { 
    28         IOHT_ACCEPTOR, 
    29         IOHT_TCP_CONNECTOR, 
    30         IOHT_TCP_CARRIER, 
    31         IOHT_UDP_CARRIER, 
    32         IOHT_INBOUNDNAMEDPIPE_CARRIER, 
    33         IOHT_TIMER, 
    34         IOHT_STDIO 
    35 } IOHandlerType; 
     26#include "netio/iohandlertype.h" 
    3627 
    3728class BaseProtocol; 
  • trunk/sources/thelib/include/netio/epoll/iohandlermanager.h

    r614 r706  
    1 /*  
     1/* 
    22 *  Copyright (c) 2010, 
    33 *  Gavriloaie Eugen-Andrei (shiretu@gmail.com) 
     
    2424#include "common.h" 
    2525#include "netio/epoll/iohandlermanagertoken.h" 
     26#include "netio/fdstats.h" 
    2627 
    2728class IOHandler; 
     
    4142        static TimersManager *_pTimersManager; 
    4243        static struct epoll_event _dummy; 
     44        static FdStats _fdStats; 
    4345public: 
    4446        static map<uint32_t, IOHandler *> & GetActiveHandlers(); 
     
    5153        static void RegisterIOHandler(IOHandler *pIOHandler); 
    5254        static void UnRegisterIOHandler(IOHandler *pIOHandler); 
     55        static int CreateRawUDPSocket(); 
     56        static void CloseRawUDPSocket(int socket); 
    5357        static bool EnableReadData(IOHandler *pIOHandler); 
    5458        static bool DisableReadData(IOHandler *pIOHandler, bool ignoreError = false); 
  • trunk/sources/thelib/include/netio/kqueue/iohandler.h

    r637 r706  
    1 /*  
     1/* 
    22 *  Copyright (c) 2010, 
    33 *  Gavriloaie Eugen-Andrei (shiretu@gmail.com) 
     
    2424#include "common.h" 
    2525#include "netio/kqueue/iohandlermanagertoken.h" 
    26  
    27 typedef enum _IOHandlerType { 
    28         IOHT_ACCEPTOR, 
    29         IOHT_TCP_CONNECTOR, 
    30         IOHT_TCP_CARRIER, 
    31         IOHT_UDP_CARRIER, 
    32         IOHT_INBOUNDNAMEDPIPE_CARRIER, 
    33         IOHT_TIMER, 
    34         IOHT_STDIO 
    35 } IOHandlerType; 
     26#include "netio/iohandlertype.h" 
    3627 
    3728class BaseProtocol; 
  • trunk/sources/thelib/include/netio/kqueue/iohandlermanager.h

    r617 r706  
    1 /*  
     1/* 
    22 *  Copyright (c) 2010, 
    33 *  Gavriloaie Eugen-Andrei (shiretu@gmail.com) 
     
    2424#include "common.h" 
    2525#include "netio/kqueue/iohandlermanagertoken.h" 
     26#include "netio/fdstats.h" 
    2627 
    2728class IOHandler; 
     
    4041        static int32_t _pendingEventsCount; 
    4142        static int32_t _eventsSize; 
     43        static FdStats _fdStats; 
    4244#ifndef HAS_KQUEUE_TIMERS 
    4345        static struct timespec _timeout; 
     
    6163        static void RegisterIOHandler(IOHandler *pIOHandler); 
    6264        static void UnRegisterIOHandler(IOHandler *pIOHandler); 
     65        static int CreateRawUDPSocket(); 
     66        static void CloseRawUDPSocket(int socket); 
    6367        static bool EnableReadData(IOHandler *pIOHandler); 
    6468        static bool DisableReadData(IOHandler *pIOHandler, bool ignoreError = false); 
  • trunk/sources/thelib/include/netio/netio.h

    r177 r706  
    1 /*  
     1/* 
    22 *  Copyright (c) 2010, 
    33 *  Gavriloaie Eugen-Andrei (shiretu@gmail.com) 
     
    2121#ifndef _NETIO_H 
    2222#define _NETIO_H 
     23 
     24#include "netio/iohandlertype.h" 
     25#include "netio/fdstats.h" 
    2326 
    2427#ifdef NET_KQUEUE 
  • trunk/sources/thelib/include/netio/select/iohandler.h

    r637 r706  
    1 /*  
     1/* 
    22 *  Copyright (c) 2010, 
    33 *  Gavriloaie Eugen-Andrei (shiretu@gmail.com) 
     
    2323 
    2424#include "common.h" 
    25  
    26 /*! 
    27         IO Handler types. 
    28 */ 
    29 typedef enum _IOHandlerType { 
    30         IOHT_ACCEPTOR, 
    31         IOHT_TCP_CONNECTOR, 
    32         IOHT_TCP_CARRIER, 
    33         IOHT_UDP_CARRIER, 
    34         IOHT_INBOUNDNAMEDPIPE_CARRIER, 
    35         IOHT_TIMER, 
    36         IOHT_STDIO 
    37 } IOHandlerType; 
     25#include "netio/iohandlertype.h" 
    3826 
    3927class BaseProtocol; 
  • trunk/sources/thelib/include/netio/select/iohandlermanager.h

    r614 r706  
    1 /*  
     1/* 
    22 *  Copyright (c) 2010, 
    33 *  Gavriloaie Eugen-Andrei (shiretu@gmail.com) 
     
    2424 
    2525#include "common.h" 
     26#include "netio/fdstats.h" 
    2627 
    2728class IOHandler; 
     
    3940        static map<int32_t, map<uint32_t, uint8_t> > _fdState; 
    4041        static bool _isShuttingDown; 
     42        static FdStats _fdStats; 
    4143public: 
    4244        static map<uint32_t, IOHandler *> & GetActiveHandlers(); 
     
    7981        static void UnRegisterIOHandler(IOHandler *pIOHandler); 
    8082 
     83        static int CreateRawUDPSocket(); 
     84        static void CloseRawUDPSocket(int socket); 
     85 
    8186        /*! 
    82                 @brief Enables the IO handler to read data.  
     87                @brief Enables the IO handler to read data. 
    8388                @discussion This assigns a FDSTATE_READ_ENABLED to the inbound file descriptor's state 
    8489         */ 
     
    9196 
    9297        /*! 
    93                 @brief Enables the IO handler to write data.  
     98                @brief Enables the IO handler to write data. 
    9499                @discussion This assigns a FDSTATE_WRITE_ENABLED to the inbound file descriptor's state 
    95100         */ 
  • trunk/sources/thelib/src/netio/epoll/iohandlermanager.cpp

    r614 r706  
    1 /*  
     1/* 
    22 *  Copyright (c) 2010, 
    33 *  Gavriloaie Eugen-Andrei (shiretu@gmail.com) 
     
    3131vector<IOHandlerManagerToken *> *IOHandlerManager::_pRecycledTokens; 
    3232TimersManager *IOHandlerManager::_pTimersManager = NULL; 
     33FdStats IOHandlerManager::_fdStats; 
    3334struct epoll_event IOHandlerManager::_dummy = {0, 
    3435        {0}}; 
     
    4344 
    4445void IOHandlerManager::Initialize() { 
     46        _fdStats.Reset(); 
    4547        _eq = 0; 
    4648        _pAvailableTokens = &_tokensVector1; 
     
    9799        size_t before = _activeIOHandlers.size(); 
    98100        _activeIOHandlers[pIOHandler->GetId()] = pIOHandler; 
     101        _fdStats.RegisterManaged(pIOHandler->GetType()); 
    99102        DEBUG("Handlers count changed: %"PRIz"u->%"PRIz"u %s", before, before + 1, 
    100103                        STR(IOHandler::IOHTToString(pIOHandler->GetType()))); 
     
    103106void IOHandlerManager::UnRegisterIOHandler(IOHandler *pIOHandler) { 
    104107        if (MAP_HAS1(_activeIOHandlers, pIOHandler->GetId())) { 
     108                _fdStats.UnRegisterManaged(pIOHandler->GetType()); 
    105109                FreeToken(pIOHandler); 
    106110                size_t before = _activeIOHandlers.size(); 
     
    109113                                STR(IOHandler::IOHTToString(pIOHandler->GetType()))); 
    110114        } 
     115} 
     116 
     117int IOHandlerManager::CreateRawUDPSocket() { 
     118        int result = socket(AF_INET, SOCK_DGRAM, 0); 
     119        if (result >= 0) { 
     120                _fdStats.RegisterRawUdp(); 
     121        } else { 
     122                uint32_t err = LASTSOCKETERROR; 
     123                FATAL("Unable to create raw udp socket. Error code was: %"PRIu32, err); 
     124        } 
     125        return result; 
     126} 
     127 
     128void IOHandlerManager::CloseRawUDPSocket(int socket) { 
     129        if (socket > 0) { 
     130                _fdStats.UnRegisterRawUdp(); 
     131        } 
     132        CLOSE_SOCKET(socket); 
    111133} 
    112134 
  • trunk/sources/thelib/src/netio/kqueue/iohandlermanager.cpp

    r617 r706  
    1 /*  
     1/* 
    22 *  Copyright (c) 2010, 
    33 *  Gavriloaie Eugen-Andrei (shiretu@gmail.com) 
     
    3535int32_t IOHandlerManager::_pendingEventsCount = 0; 
    3636int32_t IOHandlerManager::_eventsSize = 0; 
     37FdStats IOHandlerManager::_fdStats; 
    3738#ifndef HAS_KQUEUE_TIMERS 
    3839struct timespec IOHandlerManager::_timeout = {1, 0}; 
     
    8283 
    8384void IOHandlerManager::Initialize() { 
     85        _fdStats.Reset(); 
    8486        _kq = 0; 
    8587        _pAvailableTokens = &_tokensVector1; 
     
    144146        _activeIOHandlers[pIOHandler->GetId()] = pIOHandler; 
    145147        SetupToken(pIOHandler); 
     148        _fdStats.RegisterManaged(pIOHandler->GetType()); 
    146149        DEBUG("Handlers count changed: %"PRIz"u->%"PRIz"u %s", before, before + 1, 
    147150                        STR(IOHandler::IOHTToString(pIOHandler->GetType()))); 
     
    150153void IOHandlerManager::UnRegisterIOHandler(IOHandler *pIOHandler) { 
    151154        if (MAP_HAS1(_activeIOHandlers, pIOHandler->GetId())) { 
     155                _fdStats.UnRegisterManaged(pIOHandler->GetType()); 
    152156                FreeToken(pIOHandler); 
    153157                size_t before = _activeIOHandlers.size(); 
     
    156160                                STR(IOHandler::IOHTToString(pIOHandler->GetType()))); 
    157161        } 
     162} 
     163 
     164int IOHandlerManager::CreateRawUDPSocket() { 
     165        int result = socket(AF_INET, SOCK_DGRAM, 0); 
     166        if (result >= 0) { 
     167                _fdStats.RegisterRawUdp(); 
     168        } else { 
     169                uint32_t err = LASTSOCKETERROR; 
     170                FATAL("Unable to create raw udp socket. Error code was: %"PRIu32, err); 
     171        } 
     172        return result; 
     173} 
     174 
     175void IOHandlerManager::CloseRawUDPSocket(int socket) { 
     176        if (socket > 0) { 
     177                _fdStats.UnRegisterRawUdp(); 
     178        } 
     179        CLOSE_SOCKET(socket); 
    158180} 
    159181 
  • trunk/sources/thelib/src/netio/select/iohandlermanager.cpp

    r614 r706  
    1 /*  
     1/* 
    22 *  Copyright (c) 2010, 
    33 *  Gavriloaie Eugen-Andrei (shiretu@gmail.com) 
     
    3737select_event IOHandlerManager::_currentEvent = {0}; 
    3838bool IOHandlerManager::_isShuttingDown = false; 
     39FdStats IOHandlerManager::_fdStats; 
    3940 
    4041map<uint32_t, IOHandler *> & IOHandlerManager::GetActiveHandlers() { 
     
    4748 
    4849void IOHandlerManager::Initialize() { 
     50        _fdStats.Reset(); 
    4951        FD_ZERO(&_readFds); 
    5052        FD_ZERO(&_writeFds); 
     
    8486        size_t before = _activeIOHandlers.size(); 
    8587        _activeIOHandlers[pIOHandler->GetId()] = pIOHandler; 
     88        _fdStats.RegisterManaged(pIOHandler->GetType()); 
    8689        DEBUG("Handlers count changed: %"PRIz"u->%"PRIz"u %s", before, before + 1, 
    8790                        STR(IOHandler::IOHTToString(pIOHandler->GetType()))); 
     
    9497        DisableTimer(pIOHandler); 
    9598        if (MAP_HAS1(_activeIOHandlers, pIOHandler->GetId())) { 
     99                _fdStats.UnRegisterManaged(pIOHandler->GetType()); 
    96100                size_t before = _activeIOHandlers.size(); 
    97101                _activeIOHandlers.erase(pIOHandler->GetId()); 
     
    99103                                STR(IOHandler::IOHTToString(pIOHandler->GetType()))); 
    100104        } 
     105} 
     106 
     107int IOHandlerManager::CreateRawUDPSocket() { 
     108        int result = socket(AF_INET, SOCK_DGRAM, 0); 
     109        if (result >= 0) { 
     110                _fdStats.RegisterRawUdp(); 
     111        } else { 
     112                uint32_t err = LASTSOCKETERROR; 
     113                FATAL("Unable to create raw udp socket. Error code was: %"PRIu32, err); 
     114        } 
     115        return result; 
     116} 
     117 
     118void IOHandlerManager::CloseRawUDPSocket(int socket) { 
     119        if (socket > 0) { 
     120                _fdStats.UnRegisterRawUdp(); 
     121        } 
     122        CLOSE_SOCKET(socket); 
    101123} 
    102124 
Note: See TracChangeset for help on using the changeset viewer.