reSIProcate/stack  9694
Public Member Functions | Public Attributes | Private Attributes
resip::TestDnsHandler Class Reference
Inheritance diagram for resip::TestDnsHandler:
Inheritance graph
[legend]
Collaboration diagram for resip::TestDnsHandler:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 TestDnsHandler ()
 TestDnsHandler (const std::vector< Tuple > &expectedResults, const resip::Uri &uri)
 TestDnsHandler (const std::vector< Tuple > &expectedResults, const std::set< Tuple > &resultsToBlacklist, const std::set< Tuple > &resultsToGreylist, const resip::Uri &uri)
void handle (DnsResult *result)
void rewriteRequest (const Uri &rewrite)
bool complete ()
void checkExpectedResults ()
int getPermutationNumber ()

Public Attributes

std::vector< Tupleresults

Private Attributes

bool mComplete
std::vector< TuplemExpectedResults
bool mCheckExpectedResults
Mutex mutex
Uri mUri
std::list< int > mPermutation
int mPermutationNumber
std::set< resip::TuplemResultsToBlacklist
std::set< resip::TuplemResultsToGreylist

Detailed Description

Definition at line 53 of file testDns.cxx.


Constructor & Destructor Documentation

resip::TestDnsHandler::TestDnsHandler ( ) [inline]

Definition at line 56 of file testDns.cxx.

resip::TestDnsHandler::TestDnsHandler ( const std::vector< Tuple > &  expectedResults,
const resip::Uri uri 
) [inline]

Definition at line 62 of file testDns.cxx.

      : mComplete(false),
         mExpectedResults(expectedResults),
         mCheckExpectedResults(true),
         mUri(uri),
         mPermutationNumber(0)
      {}
resip::TestDnsHandler::TestDnsHandler ( const std::vector< Tuple > &  expectedResults,
const std::set< Tuple > &  resultsToBlacklist,
const std::set< Tuple > &  resultsToGreylist,
const resip::Uri uri 
) [inline]

Definition at line 71 of file testDns.cxx.

      : mComplete(false),
         mExpectedResults(expectedResults),
         mCheckExpectedResults(true),
         mUri(uri),
         mPermutationNumber(0),
         mResultsToBlacklist(resultsToBlacklist),
         mResultsToGreylist(resultsToGreylist)
      {}

Member Function Documentation

void resip::TestDnsHandler::checkExpectedResults ( ) [inline]

Definition at line 127 of file testDns.cxx.

References resipCout.

      {
         std::cout << "Input Uri was " << mUri << endl;
         tassert(mExpectedResults.size() == results.size());
         tassert_reset();
         std::cout << "Expected " << mExpectedResults.size() << ", got " << results.size() << endl;
         std::vector<Tuple>::const_iterator e;
         std::vector<Tuple>::const_iterator o;
         
         for(e=mExpectedResults.begin();e!=mExpectedResults.end();++e)
         {
            int p=0;
            resipCout << "Looking for " << *e << endl;
            bool found=false;
            for(o=results.begin();(o!=results.end() && !found);++o)
            {
               ++p;
               if(*e==*o)
               {
                  found=true;
                  resipCout << *o << " matched!" << endl;
                  mPermutation.push_back(p);
               }
               else
               {
                  resipCout << *o << " didn't match." << endl;
               }
            }
            
            tassert(found);
            tassert_reset();
         }            
      }
bool resip::TestDnsHandler::complete ( ) [inline]

Definition at line 121 of file testDns.cxx.

      {
         Lock lock(mutex);
         return mComplete;
      }
int resip::TestDnsHandler::getPermutationNumber ( ) [inline]

Definition at line 161 of file testDns.cxx.

      {
         if(mPermutationNumber!=0)
         {
            return mPermutationNumber;
         }
         
         int result=1;

         // .bwc. Please forgive me for my use of permutation-group-foo.
         for(int i=mPermutation.size();i>0;--i)
         {
            int foundAt=0;
            for(std::list<int>::iterator j=mPermutation.begin();j!=mPermutation.end();++j)
            {
               ++foundAt;
               if(*j==i)
               {
                  result*=((foundAt-i)%i+1);
                  mPermutation.erase(j);
                  j=mPermutation.end();
               }
            }
         }
         
         mPermutationNumber=result;
         return result;
      }
void resip::TestDnsHandler::handle ( DnsResult result) [inline, virtual]

Implements resip::DnsHandler.

Definition at line 84 of file testDns.cxx.

References resip::DnsResult::available(), resip::DnsResult::blacklistLast(), gf, resip::DnsResult::greylistLast(), resip::DnsResult::next(), resipCout, resip::DnsResult::target(), type, and ub.

      {
         
         std::cout << gf << "DnsHandler received " <<  result->target() << ub <<  std::endl;
         Lock lock(mutex);
         DnsResult::Type type;
         while ((type=result->available()) == DnsResult::Available)
         {
            Tuple tuple = result->next();
            results.push_back(tuple);
            resipCout << gf << result->target() << " -> " << tuple << ub <<  std::endl;
            if(mResultsToGreylist.count(tuple)!=0)
            {
               result->greylistLast(Timer::getTimeMs()+15000);
            }

            if(mResultsToBlacklist.count(tuple)!=0)
            {
               result->blacklistLast(Timer::getTimeMs()+15000);
            }
         }
         if (type != DnsResult::Pending)
         {
            mComplete = true;
            if(mCheckExpectedResults)
            {
               checkExpectedResults();
            }
         }
      }

Here is the call graph for this function:

void resip::TestDnsHandler::rewriteRequest ( const Uri rewrite) [inline, virtual]

Implements resip::DnsHandler.

Definition at line 115 of file testDns.cxx.

      {
         std::cout << "Rewriting uri (enum) to " << rewrite << std::endl;
      }

Member Data Documentation

Definition at line 195 of file testDns.cxx.

Definition at line 193 of file testDns.cxx.

Definition at line 194 of file testDns.cxx.

std::list<int> resip::TestDnsHandler::mPermutation [private]

Definition at line 198 of file testDns.cxx.

Definition at line 199 of file testDns.cxx.

Definition at line 200 of file testDns.cxx.

Definition at line 201 of file testDns.cxx.

Definition at line 197 of file testDns.cxx.

Definition at line 196 of file testDns.cxx.

Definition at line 190 of file testDns.cxx.


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