xorp

xrl_io_tcpudp_manager.hh

00001 // -*- c-basic-offset: 4; tab-width: 8; indent-tabs-mode: t -*-
00002 
00003 // Copyright (c) 2007-2009 XORP, Inc.
00004 //
00005 // This program is free software; you can redistribute it and/or modify
00006 // it under the terms of the GNU General Public License, Version 2, June
00007 // 1991 as published by the Free Software Foundation. Redistribution
00008 // and/or modification of this program under the terms of any other
00009 // version of the GNU General Public License is not permitted.
00010 // 
00011 // This program is distributed in the hope that it will be useful, but
00012 // WITHOUT ANY WARRANTY; without even the implied warranty of
00013 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For more details,
00014 // see the GNU General Public License, Version 2, a copy of which can be
00015 // found in the XORP LICENSE.gpl file.
00016 // 
00017 // XORP Inc, 2953 Bunker Hill Lane, Suite 204, Santa Clara, CA 95054, USA;
00018 // http://xorp.net
00019 
00020 // $XORP: xorp/fea/xrl_io_tcpudp_manager.hh,v 1.6 2008/10/02 21:56:51 bms Exp $
00021 
00022 #ifndef __FEA_XRL_IO_TCPUDP_MANAGER_HH__
00023 #define __FEA_XRL_IO_TCPUDP_MANAGER_HH__
00024 
00025 #include "io_tcpudp_manager.hh"
00026 
00027 class XrlRouter;
00028 
00033 class XrlIoTcpUdpManager : public IoTcpUdpManagerReceiver {
00034 public:
00038     XrlIoTcpUdpManager(IoTcpUdpManager& io_tcpudp_manager,
00039                XrlRouter& xrl_router);
00040 
00044     virtual ~XrlIoTcpUdpManager();
00045 
00059     void recv_event(const string&       receiver_name,
00060             const string&       sockid,
00061             const string&       if_name,
00062             const string&       vif_name,
00063             const IPvX&         src_host,
00064             uint16_t            src_port,
00065             const vector<uint8_t>&  data);
00066 
00078     void inbound_connect_event(const string&    receiver_name,
00079                    const string&    sockid,
00080                    const IPvX&  src_host,
00081                    uint16_t     src_port,
00082                    const string&    new_sockid);
00083 
00094     void outgoing_connect_event(int     family,
00095                 const string&   receiver_name,
00096                 const string&   sockid);
00097 
00109     void error_event(int            family,
00110              const string&      receiver_name,
00111              const string&      sockid,
00112              const string&      error,
00113              bool           fatal);
00114 
00127     void disconnect_event(int           family,
00128               const string&     receiver_name,
00129               const string&     sockid);
00130 
00131 private:
00132     XrlRouter&      xrl_router() { return _xrl_router; }
00133 
00137     void xrl_send_recv_event_cb(const XrlError& xrl_error, int family,
00138                 string receiver_name);
00139     void xrl_send_inbound_connect_event_cb(const XrlError& xrl_error,
00140                        const bool* accept, int family,
00141                        string sockid, 
00142                        string receiver_name);
00143     void xrl_send_outgoing_connect_event_cb(const XrlError& xrl_error,
00144                         int family, string receiver_name);
00145     void xrl_send_error_event_cb(const XrlError& xrl_error, int family,
00146                  string receiver_name);
00147     void xrl_send_disconnect_event_cb(const XrlError& xrl_error, int family,
00148                       string receiver_name);
00149 
00150     IoTcpUdpManager&    _io_tcpudp_manager;
00151     XrlRouter&      _xrl_router;
00152 };
00153 
00154 #endif // __FEA_XRL_IO_TCPUDP_MANAGER_HH__
 All Classes Namespaces Functions Variables Typedefs Enumerations