E-MailRelay
geventhandler.cpp
Go to the documentation of this file.
1//
2// Copyright (C) 2001-2021 Graeme Walker <graeme_walker@users.sourceforge.net>
3//
4// This program is free software: you can redistribute it and/or modify
5// it under the terms of the GNU General Public License as published by
6// the Free Software Foundation, either version 3 of the License, or
7// (at your option) any later version.
8//
9// This program is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12// GNU General Public License for more details.
13//
14// You should have received a copy of the GNU General Public License
15// along with this program. If not, see <http://www.gnu.org/licenses/>.
16// ===
17///
18/// \file geventhandler.cpp
19///
20
21#include "gdef.h"
22#include "geventhandler.h"
23#include "gexception.h"
24#include "glog.h"
25
27{
28 G_DEBUG( "GNet::EventHandler::readEvent: no override" ) ;
29}
30
32{
33 G_DEBUG( "GNet::EventHandler::writeEvent: no override" ) ;
34}
35
36void GNet::EventHandler::otherEvent( EventHandler::Reason reason )
37{
38 // this event is mostly relevant to windows -- the default action
39 // is to throw an exception -- for 'reason_closed' (ie. a clean
40 // shutdown()) it would also be reasonable to read the socket
41 // until it returns an error or zero, and/or set a close timer
42
43 throw G::Exception( "socket disconnect event" , str(reason) ) ;
44}
45
46std::string GNet::EventHandler::str( EventHandler::Reason reason )
47{
48 if( reason == EventHandler::Reason::closed ) return "closed" ;
49 if( reason == EventHandler::Reason::down ) return "network down" ;
50 if( reason == EventHandler::Reason::reset ) return "connection reset by peer" ;
51 if( reason == EventHandler::Reason::abort ) return "connection aborted" ;
52 return std::string() ;
53}
54
virtual void readEvent()
Called for a read event.
virtual void writeEvent()
Called for a write event.
virtual void otherEvent(Reason)
Called for a socket-exception event, or a socket-close event on windows.
static std::string str(Reason)
Returns a printable description of the other-event reason.
A general-purpose exception class derived from std::exception and containing an error message.
Definition: gexception.h:45