#include <DescriptorSet.h>

Collaboration diagram for DescriptorSet:

Public Types

typedef const intconst_iterator
 

Public Member Functions

 DescriptorSet ()
 
 ~DescriptorSet ()
 
bool has (const int fd) const
 checks whether fd is in the set More...
 
bool add (int fd)
 adds if unique; returns true if added More...
 
bool del (int fd)
 deletes if there; returns true if deleted More...
 
int pop ()
 deletes and returns one descriptor, in unspecified order More...
 
bool empty () const
 number of descriptors in the set More...
 
const_iterator begin () const
 begin iterator a la STL; may become invalid if the object is modified More...
 
const_iterator end () const
 end iterator a la STL; may become invalid if the object is modified More...
 
void print (std::ostream &os) const
 outputs debugging info about the set More...
 

Private Member Functions

 DescriptorSet (const DescriptorSet &s)
 
DescriptorSetoperator= (const DescriptorSet &s)
 

Private Attributes

intdescriptors_
 descriptor values in random order More...
 
intindex_
 descriptor:position index into descriptors_ More...
 
int capacity_
 total number of descriptor slots More...
 
int size_
 number of descriptors in the set More...
 

Detailed Description

Todo:
: Should we use std::set<int> with its flexibility? Our implementation has constant overhead, which is smaller than log(n) of std::set.

an unordered collection of unique descriptors with O(1) add/del/has ops

Definition at line 20 of file DescriptorSet.h.

Member Typedef Documentation

Definition at line 24 of file DescriptorSet.h.

Constructor & Destructor Documentation

DescriptorSet::DescriptorSet ( )

Definition at line 16 of file DescriptorSet.cc.

References capacity_, descriptors_, i, index_, and Squid_MaxFD.

DescriptorSet::~DescriptorSet ( )

Definition at line 30 of file DescriptorSet.cc.

References descriptors_, and index_.

DescriptorSet::DescriptorSet ( const DescriptorSet s)
private

Member Function Documentation

bool DescriptorSet::add ( int  fd)

Definition at line 38 of file DescriptorSet.cc.

References assert, capacity_, descriptors_, has(), index_, and size_.

Referenced by commStartHalfClosedMonitor().

const_iterator DescriptorSet::begin ( ) const
inline

Definition at line 42 of file DescriptorSet.h.

References descriptors_.

Referenced by commHalfClosedCheck(), and end().

bool DescriptorSet::del ( int  fd)

Definition at line 55 of file DescriptorSet.cc.

References assert, capacity_, descriptors_, empty(), has(), index_, and size_.

Referenced by commStopHalfClosedMonitor().

bool DescriptorSet::empty ( ) const
inline

Definition at line 39 of file DescriptorSet.h.

References size_.

Referenced by commPlanHalfClosedCheck(), del(), and pop().

const_iterator DescriptorSet::end ( ) const
inline

Definition at line 44 of file DescriptorSet.h.

References begin(), and size_.

Referenced by commHalfClosedCheck().

bool DescriptorSet::has ( const int  fd) const
inline

Definition at line 30 of file DescriptorSet.h.

References capacity_, and index_.

Referenced by add(), commHasHalfClosedMonitor(), and del().

DescriptorSet& DescriptorSet::operator= ( const DescriptorSet s)
private
int DescriptorSet::pop ( )

ejects one descriptor in unspecified order

Definition at line 83 of file DescriptorSet.cc.

References assert, capacity_, descriptors_, empty(), index_, and size_.

void DescriptorSet::print ( std::ostream &  os) const

Definition at line 98 of file DescriptorSet.cc.

References size_.

Referenced by operator<<().

Member Data Documentation

int DescriptorSet::capacity_
private

Definition at line 56 of file DescriptorSet.h.

Referenced by add(), del(), DescriptorSet(), has(), and pop().

int* DescriptorSet::descriptors_
private

Definition at line 54 of file DescriptorSet.h.

Referenced by add(), begin(), del(), DescriptorSet(), pop(), and ~DescriptorSet().

int* DescriptorSet::index_
private

Definition at line 55 of file DescriptorSet.h.

Referenced by add(), del(), DescriptorSet(), has(), pop(), and ~DescriptorSet().

int DescriptorSet::size_
private

Definition at line 57 of file DescriptorSet.h.

Referenced by add(), del(), empty(), end(), pop(), and print().


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

 

Introduction

Documentation

Support

Miscellaneous

Web Site Translations

Mirrors