The InspIRCd Project
Home | Developers | Wiki | Forums | Bug Tracker | SVN | Download
Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members

irc::portparser Class Reference

The portparser class seperates out a port range into integers. More...

#include <hashcomp.h>

Inheritance diagram for irc::portparser:

Inheritance graph
[legend]
Collaboration diagram for irc::portparser:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 portparser (const std::string &source, bool allow_overlapped=true)
 Create a portparser and fill it with the provided data.
 ~portparser ()
 Frees the internal commasepstream object.
long GetToken ()
 Fetch the next token from the stream.

Private Member Functions

bool Overlaps (long val)
 Returns true if val overlaps an existing range.

Private Attributes

commasepstreamsep
 Used to split on commas.
long in_range
 Current position in a range of ports.
long range_begin
 Starting port in a range of ports.
long range_end
 Ending port in a range of ports.
bool overlapped
 Allow overlapped port ranges.
std::map< long, bool > overlap_set
 Used to determine overlapping of ports without O(n) algorithm being used.

Detailed Description

The portparser class seperates out a port range into integers.

A port range may be specified in the input string in the form "6660,6661,6662-6669,7020". The end of the stream is indicated by a return value of 0 from portparser::GetToken(). If you attempt to specify an illegal range (e.g. one where start >= end, or start or end < 0) then GetToken() will return the first element of the pair of numbers.

Definition at line 390 of file hashcomp.h.


Constructor & Destructor Documentation

irc::portparser::portparser const std::string source,
bool  allow_overlapped = true
 

Create a portparser and fill it with the provided data.

Parameters:
source The source text to parse from
allow_overlapped Allow overlapped ranges

Definition at line 418 of file hashcomp.cpp.

References overlap_set, and sep.

irc::portparser::~portparser  ) 
 

Frees the internal commasepstream object.

Definition at line 424 of file hashcomp.cpp.

References sep.


Member Function Documentation

long irc::portparser::GetToken  ) 
 

Fetch the next token from the stream.

Returns:
The next port number is returned, or 0 if none remain

Definition at line 443 of file hashcomp.cpp.

References irc::sepstream::GetToken(), in_range, Overlaps(), range_begin, range_end, and sep.

Referenced by InspIRCd::BindPorts(), ModuleXMLSocket::OnRehash(), ModuleSSLOpenSSL::OnRehash(), ModuleSSLGnuTLS::OnRehash(), ModuleHostChange::OnUserConnect(), ModuleDNSBL::ReadConf(), and SpanningTreeUtilities::ReadConfiguration().

bool irc::portparser::Overlaps long  val  )  [private]
 

Returns true if val overlaps an existing range.

Definition at line 429 of file hashcomp.cpp.

References overlap_set, and overlapped.

Referenced by GetToken().


Member Data Documentation

long irc::portparser::in_range [private]
 

Current position in a range of ports.

Definition at line 398 of file hashcomp.h.

Referenced by GetToken().

std::map<long, bool> irc::portparser::overlap_set [private]
 

Used to determine overlapping of ports without O(n) algorithm being used.

Definition at line 411 of file hashcomp.h.

Referenced by Overlaps(), and portparser().

bool irc::portparser::overlapped [private]
 

Allow overlapped port ranges.

Definition at line 407 of file hashcomp.h.

Referenced by Overlaps().

long irc::portparser::range_begin [private]
 

Starting port in a range of ports.

Definition at line 401 of file hashcomp.h.

Referenced by GetToken().

long irc::portparser::range_end [private]
 

Ending port in a range of ports.

Definition at line 404 of file hashcomp.h.

Referenced by GetToken().

commasepstream* irc::portparser::sep [private]
 

Used to split on commas.

Definition at line 395 of file hashcomp.h.

Referenced by GetToken(), portparser(), and ~portparser().


The documentation for this class was generated from the following files: