607 lines
29 KiB
C++
607 lines
29 KiB
C++
//--------------------------------------------------------------------------//
|
|
// Application Header Files. //
|
|
//--------------------------------------------------------------------------//
|
|
#include "precomp.h"
|
|
#include "callto.h"
|
|
#include "calltoContext.h"
|
|
#include "calltoResolver.h"
|
|
#include "calltoDisambiguator.h"
|
|
#include "calltoNM.h"
|
|
|
|
|
|
//--------------------------------------------------------------------------//
|
|
// CNMCallto::CNMCallto. //
|
|
//--------------------------------------------------------------------------//
|
|
CNMCallto::CNMCallto(void)
|
|
{
|
|
//tracec( assert( selfTest(), TEXT( "class CNMCallto failed self test..." ) ),
|
|
// TEXT( "class CNMCallto passed self test...\r\n" ) );
|
|
|
|
} // End of CNMCallto::CNMCallto.
|
|
|
|
|
|
//--------------------------------------------------------------------------//
|
|
// CNMCallto::~CNMCallto. //
|
|
//--------------------------------------------------------------------------//
|
|
CNMCallto::~CNMCallto(void)
|
|
{
|
|
} // End of CNMCallto::~CNMCallto.
|
|
|
|
|
|
//--------------------------------------------------------------------------//
|
|
// CNMCallto::callto. //
|
|
//--------------------------------------------------------------------------//
|
|
HRESULT
|
|
CNMCallto::callto
|
|
(
|
|
const TCHAR * const url,
|
|
const bool strict,
|
|
const bool uiEnabled,
|
|
INmCall** ppInternalCall
|
|
){
|
|
CCalltoProperties calltoProperties;
|
|
CCalltoCollection resolvedCalltoCollection;
|
|
CCalltoCollection disambiguatedCalltoCollection;
|
|
const ICallto * disambiguatedCallto = NULL;
|
|
HRESULT result;
|
|
|
|
if( url == NULL )
|
|
{
|
|
result = E_POINTER;
|
|
}
|
|
else if( url[ 0 ] == '\0' )
|
|
{
|
|
result = E_INVALIDARG;
|
|
}
|
|
else
|
|
{
|
|
result = m_resolver.resolve( this, &calltoProperties, &resolvedCalltoCollection, url, strict );
|
|
|
|
if( resolvedCalltoCollection.get_count() > 0 )
|
|
{
|
|
result = m_disambiguator.disambiguate( this, &resolvedCalltoCollection, &disambiguatedCalltoCollection );
|
|
|
|
if( (!uiEnabled) || (disambiguatedCalltoCollection.get_count() == 1) )
|
|
{
|
|
// Either there's only one choice or we've been instructed NOT to
|
|
// present any ui... either way we just grab the first one...
|
|
disambiguatedCallto = disambiguatedCalltoCollection.get_first();
|
|
|
|
// and verify that it was really disambiguated...
|
|
if( disambiguatedCallto->get_confidence() != S_UNDISAMBIGUATED )
|
|
{
|
|
result = S_OK;
|
|
}
|
|
else
|
|
{
|
|
disambiguatedCallto = NULL;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
CCallto emptyCallto;
|
|
|
|
if( uiEnabled && (disambiguatedCallto == NULL) )
|
|
{
|
|
// the user must now make the decision...
|
|
result = disambiguate( &disambiguatedCalltoCollection, &emptyCallto, &disambiguatedCallto );
|
|
}
|
|
|
|
if( (result == S_OK) && (disambiguatedCallto != NULL) )
|
|
{
|
|
calltoProperties.set_url( disambiguatedCallto->get_qualifiedName() );
|
|
calltoProperties.set_destination( disambiguatedCallto->get_destination() );
|
|
calltoProperties.set_type( disambiguatedCallto->get_type() );
|
|
calltoProperties.set_alias( disambiguatedCallto->get_value() );
|
|
|
|
if( StrCmpNI_literal( disambiguatedCallto->get_type(), TEXT( "phone" ) ) )
|
|
{
|
|
calltoProperties.set_E164( disambiguatedCallto->get_value() );
|
|
}
|
|
|
|
result = ((ICalltoContext *) this)->callto( &calltoProperties, ppInternalCall );
|
|
}
|
|
|
|
return( result );
|
|
|
|
} // End of CNMCallto::callto.
|
|
|
|
|
|
//--------------------------------------------------------------------------//
|
|
// CNMCallto::get_mutableUIContext. //
|
|
//--------------------------------------------------------------------------//
|
|
IMutableUIContext * const
|
|
CNMCallto::get_mutableUIContext(void) const
|
|
{
|
|
|
|
return( CCalltoContext::get_mutableUIContext() );
|
|
|
|
} // End of CNMCallto::get_mutableUIContext.
|
|
|
|
|
|
//--------------------------------------------------------------------------//
|
|
// CNMCallto::get_mutableGatekeeperContext. //
|
|
//--------------------------------------------------------------------------//
|
|
IMutableGatekeeperContext * const
|
|
CNMCallto::get_mutableGatekeeperContext(void) const
|
|
{
|
|
|
|
return( CCalltoContext::get_mutableGatekeeperContext() );
|
|
|
|
} // End of CNMCallto::get_mutableGatekeeperContext.
|
|
|
|
|
|
//--------------------------------------------------------------------------//
|
|
// CNMCallto::get_mutableGatewayContext. //
|
|
//--------------------------------------------------------------------------//
|
|
IMutableGatewayContext * const
|
|
CNMCallto::get_mutableGatewayContext(void) const
|
|
{
|
|
|
|
return( CCalltoContext::get_mutableGatewayContext() );
|
|
|
|
} // End of CNMCallto::get_mutableGatewayContext.
|
|
|
|
|
|
//--------------------------------------------------------------------------//
|
|
// CNMCallto::get_mutableIlsContext. //
|
|
//--------------------------------------------------------------------------//
|
|
IMutableILSContext * const
|
|
CNMCallto::get_mutableIlsContext(void) const
|
|
{
|
|
|
|
return( CCalltoContext::get_mutableIlsContext() );
|
|
|
|
} // End of CNMCallto::get_mutableIlsContext.
|
|
|
|
|
|
#if 0
|
|
//--------------------------------------------------------------------------//
|
|
// CNMCallto::selfTest. //
|
|
//--------------------------------------------------------------------------//
|
|
bool
|
|
CNMCallto::selfTest(void)
|
|
{
|
|
static TCHAR buffer[ 2048 ];
|
|
static LONG tested = -1;
|
|
|
|
static HRESULT confidenceLevels[] =
|
|
{
|
|
S_CONFIDENCE_CERTITUDE,
|
|
S_CONFIDENCE_HIGH,
|
|
S_CONFIDENCE_MEDIUM,
|
|
S_CONFIDENCE_LOW
|
|
};
|
|
|
|
static const TCHAR * testUrls[] =
|
|
{
|
|
TEXT( "callto:myGateway|email:jlemire@microsoft.com" ), // full
|
|
TEXT( "callto:myGateway|email:jlemire" ),
|
|
TEXT( "callto:myGateway|phone:1 (425) 703-9224" ),
|
|
TEXT( "callto:myGateway|phone:1 (800) RU LEGIT" ),
|
|
TEXT( "callto:myGateway|string:helpdesk" ),
|
|
TEXT( "callto:myGateway|ils:jlemire@microsoft.com" ),
|
|
TEXT( "callto:myGateway|ils:msils/jlemire@microsoft.com" ),
|
|
TEXT( "callto:myGateway|ils:msils:80/jlemire@microsoft.com" ),
|
|
TEXT( "callto:myGateway|ip:157.59.14.64" ),
|
|
TEXT( "callto:myGateway|computer:JLEMIRE-2" ),
|
|
TEXT( "callto:myGateway|computer:\\\\JLEMIRE-2" ),
|
|
|
|
TEXT( "callto:email:jlemire@microsoft.com" ), // no gateway
|
|
TEXT( "callto:email:jlemire" ),
|
|
TEXT( "callto:phone:1 (425) 703-9224" ),
|
|
TEXT( "callto:phone:1 (800) RU LEGIT" ),
|
|
TEXT( "callto:string:helpdesk" ),
|
|
TEXT( "callto:ils:jlemire@microsoft.com" ),
|
|
TEXT( "callto:ils:msils/jlemire@microsoft.com" ),
|
|
TEXT( "callto:ils:msils:80/jlemire@microsoft.com" ),
|
|
TEXT( "callto:ip:157.59.14.64" ),
|
|
TEXT( "callto:computer:JLEMIRE-2" ),
|
|
TEXT( "callto:computer:\\\\JLEMIRE-2" ),
|
|
|
|
TEXT( "callto:myGateway|jlemire@microsoft.com" ), // no type
|
|
TEXT( "callto:myGateway|jlemire" ),
|
|
TEXT( "callto:myGateway|1 (425) 703-9224" ),
|
|
TEXT( "callto:myGateway|1 (800) RU LEGIT" ),
|
|
TEXT( "callto:myGateway|helpdesk" ),
|
|
TEXT( "callto:myGateway|jlemire@microsoft.com" ),
|
|
TEXT( "callto:myGateway|msils/jlemire@microsoft.com" ),
|
|
TEXT( "callto:myGateway|msils:80/jlemire@microsoft.com" ),
|
|
TEXT( "callto:myGateway|157.59.14.64" ),
|
|
TEXT( "callto:myGateway|JLEMIRE-2" ),
|
|
TEXT( "callto:myGateway|\\\\JLEMIRE-2" ),
|
|
|
|
TEXT( "callto:jlemire@microsoft.com" ), // no gateway + no type
|
|
TEXT( "callto:jlemire" ),
|
|
TEXT( "callto:1 (425) 703-9224" ),
|
|
TEXT( "callto:1 (800) RU LEGIT" ),
|
|
TEXT( "callto:helpdesk" ),
|
|
TEXT( "callto:jlemire@microsoft.com" ),
|
|
TEXT( "callto:msils/jlemire@microsoft.com" ),
|
|
TEXT( "callto:msils:80/jlemire@microsoft.com" ),
|
|
TEXT( "callto:msils:80/jlemire@microsoft.com" ),
|
|
TEXT( "callto:157.59.14.64" ),
|
|
TEXT( "callto:JLEMIRE-2" ),
|
|
TEXT( "callto:\\\\JLEMIRE-2" ),
|
|
|
|
// repeat with params
|
|
TEXT( "callto:myGateway|email:jlemire@microsoft.com+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ), // full
|
|
TEXT( "callto:myGateway|email:jlemire+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ),
|
|
TEXT( "callto:myGateway|phone:1 (425) 703-9224+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ),
|
|
TEXT( "callto:myGateway|phone:1 (800) RU LEGIT+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ),
|
|
TEXT( "callto:myGateway|string:helpdesk+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ),
|
|
TEXT( "callto:myGateway|ils:jlemire@microsoft.com+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ),
|
|
TEXT( "callto:myGateway|ils:msils/jlemire@microsoft.com+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ),
|
|
TEXT( "callto:myGateway|ils:msils:80/jlemire@microsoft.com+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ),
|
|
TEXT( "callto:myGateway|ip:157.59.14.64+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ),
|
|
TEXT( "callto:myGateway|computer:JLEMIRE-2+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ),
|
|
TEXT( "callto:myGateway|computer:\\\\JLEMIRE-2+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ),
|
|
|
|
TEXT( "callto:email:jlemire@microsoft.com+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ), // no gateway
|
|
TEXT( "callto:email:jlemire+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ),
|
|
TEXT( "callto:phone:1 (425) 703-9224+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ),
|
|
TEXT( "callto:phone:1 (800) RU LEGIT+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ),
|
|
TEXT( "callto:string:helpdesk+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ),
|
|
TEXT( "callto:ils:jlemire@microsoft.com+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ),
|
|
TEXT( "callto:ils:msils/jlemire@microsoft.com+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ),
|
|
TEXT( "callto:ils:msils:80/jlemire@microsoft.com+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ),
|
|
TEXT( "callto:ip:157.59.14.64+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ),
|
|
TEXT( "callto:computer:JLEMIRE-2+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ),
|
|
TEXT( "callto:computer:\\\\JLEMIRE-2+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ),
|
|
|
|
TEXT( "callto:myGateway|jlemire@microsoft.com+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ), // no type
|
|
TEXT( "callto:myGateway|jlemire+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ),
|
|
TEXT( "callto:myGateway|1 (425) 703-9224+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ),
|
|
TEXT( "callto:myGateway|1 (800) RU LEGIT+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ),
|
|
TEXT( "callto:myGateway|helpdesk+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ),
|
|
TEXT( "callto:myGateway|jlemire@microsoft.com+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ),
|
|
TEXT( "callto:myGateway|msils/jlemire@microsoft.com+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ),
|
|
TEXT( "callto:myGateway|msils:80/jlemire@microsoft.com+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ),
|
|
TEXT( "callto:myGateway|157.59.14.64+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ),
|
|
TEXT( "callto:myGateway|JLEMIRE-2+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ),
|
|
TEXT( "callto:myGateway|\\\\JLEMIRE-2+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ),
|
|
|
|
TEXT( "callto:jlemire@microsoft.com+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ), // no gateway + no type
|
|
TEXT( "callto:jlemire+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ),
|
|
TEXT( "callto:1 (425) 703-9224+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ),
|
|
TEXT( "callto:1 (800) RU LEGIT+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ),
|
|
TEXT( "callto:helpdesk+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ),
|
|
TEXT( "callto:jlemire@microsoft.com+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ),
|
|
TEXT( "callto:msils/jlemire@microsoft.com+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ),
|
|
TEXT( "callto:msils:80/jlemire@microsoft.com+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ),
|
|
TEXT( "callto:msils:80/jlemire@microsoft.com+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ),
|
|
TEXT( "callto:157.59.14.64+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ),
|
|
TEXT( "callto:JLEMIRE-2+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ),
|
|
TEXT( "callto:\\\\JLEMIRE-2+secure+certificate=NetMeeting Default Certificate+mysteryParam=" ),
|
|
|
|
// repeat without callto:
|
|
TEXT( "myGateway|email:jlemire@microsoft.com" ), // full
|
|
TEXT( "myGateway|email:jlemire" ),
|
|
TEXT( "myGateway|phone:1 (425) 703-9224" ),
|
|
TEXT( "myGateway|phone:1 (800) RU LEGIT" ),
|
|
TEXT( "myGateway|string:helpdesk" ),
|
|
TEXT( "myGateway|ils:jlemire@microsoft.com" ),
|
|
TEXT( "myGateway|ils:msils/jlemire@microsoft.com" ),
|
|
TEXT( "myGateway|ils:msils:80/jlemire@microsoft.com" ),
|
|
TEXT( "myGateway|ip:157.59.14.64" ),
|
|
TEXT( "myGateway|computer:JLEMIRE-2" ),
|
|
TEXT( "myGateway|computer:\\\\JLEMIRE-2" ),
|
|
|
|
TEXT( "email:jlemire@microsoft.com" ), // no gateway
|
|
TEXT( "email:jlemire" ),
|
|
TEXT( "phone:1 (425) 703-9224" ),
|
|
TEXT( "phone:1 (800) RU LEGIT" ),
|
|
TEXT( "string:helpdesk" ),
|
|
TEXT( "ils:jlemire@microsoft.com" ),
|
|
TEXT( "ils:msils/jlemire@microsoft.com" ),
|
|
TEXT( "ils:msils:80/jlemire@microsoft.com" ),
|
|
TEXT( "ip:157.59.14.64" ),
|
|
TEXT( "computer:JLEMIRE-2" ),
|
|
TEXT( "computer:\\\\JLEMIRE-2" ),
|
|
|
|
TEXT( "myGateway|jlemire@microsoft.com" ), // no type
|
|
TEXT( "myGateway|jlemire" ),
|
|
TEXT( "myGateway|1 (425) 703-9224" ),
|
|
TEXT( "myGateway|1 (800) RU LEGIT" ),
|
|
TEXT( "myGateway|helpdesk" ),
|
|
TEXT( "myGateway|jlemire@microsoft.com" ),
|
|
TEXT( "myGateway|msils/jlemire@microsoft.com" ),
|
|
TEXT( "myGateway|msils:80/jlemire@microsoft.com" ),
|
|
TEXT( "myGateway|157.59.14.64" ),
|
|
TEXT( "myGateway|JLEMIRE-2" ),
|
|
TEXT( "myGateway|\\\\JLEMIRE-2" ),
|
|
|
|
TEXT( "jlemire@microsoft.com" ), // no gateway + no type
|
|
TEXT( "jlemire" ),
|
|
TEXT( "1 (425) 703-9224" ),
|
|
TEXT( "1 (800) RU LEGIT" ),
|
|
TEXT( "helpdesk" ),
|
|
TEXT( "jlemire@microsoft.com" ),
|
|
TEXT( "msils/jlemire@microsoft.com" ),
|
|
TEXT( "msils:80/jlemire@microsoft.com" ),
|
|
TEXT( "msils:80/jlemire@microsoft.com" ),
|
|
TEXT( "157.59.14.64" ),
|
|
TEXT( "JLEMIRE-2" ),
|
|
TEXT( "\\\\JLEMIRE-2" ),
|
|
|
|
TEXT( "callto:futuretype:aren't I nicely extensible?" ),
|
|
TEXT( "callto:myGateway|futuretype:aren't I nicely extensible?" )
|
|
};
|
|
|
|
static TCHAR * expectedResults[ elementsof( testUrls ) ] =
|
|
{
|
|
TEXT( "callto:myGateway|email:jlemire@microsoft.com" ), // TEXT( "callto:myGateway|email:jlemire@microsoft.com" )
|
|
TEXT( "" ), // TEXT( "callto:myGateway|email:jlemire" )
|
|
TEXT( "" ), // TEXT( "callto:myGateway|phone:1 (425) 703-9224" )
|
|
TEXT( "" ), // TEXT( "callto:myGateway|phone:1 (800) RU LEGIT" )
|
|
TEXT( "" ), // TEXT( "callto:myGateway|string:helpdesk" )
|
|
TEXT( "" ), // TEXT( "callto:myGateway|ils:jlemire@microsoft.com" )
|
|
TEXT( "" ), // TEXT( "callto:myGateway|ils:msils/jlemire@microsoft.com" )
|
|
TEXT( "" ), // TEXT( "callto:myGateway|ils:msils:80/jlemire@microsoft.com" )
|
|
TEXT( "" ), // TEXT( "callto:myGateway|ip:157.59.14.64" )
|
|
TEXT( "" ), // TEXT( "callto:myGateway|computer:JLEMIRE-2" )
|
|
TEXT( "" ), // TEXT( "callto:myGateway|computer:\\\\JLEMIRE-2" )
|
|
|
|
TEXT( "" ), // TEXT( "callto:email:jlemire@microsoft.com" ),
|
|
TEXT( "" ), // TEXT( "callto:email:jlemire" )
|
|
TEXT( "" ), // TEXT( "callto:phone:1 (425) 703-9224" )
|
|
TEXT( "" ), // TEXT( "callto:phone:1 (800) RU LEGIT" )
|
|
TEXT( "" ), // TEXT( "callto:string:helpdesk" )
|
|
TEXT( "" ), // TEXT( "callto:ils:jlemire@microsoft.com" )
|
|
TEXT( "" ), // TEXT( "callto:ils:msils/jlemire@microsoft.com" )
|
|
TEXT( "" ), // TEXT( "callto:ils:msils:80/jlemire@microsoft.com" )
|
|
TEXT( "" ), // TEXT( "callto:ip:157.59.14.64" )
|
|
TEXT( "" ), // TEXT( "callto:computer:JLEMIRE-2" )
|
|
TEXT( "" ), // TEXT( "callto:computer:\\\\JLEMIRE-2" )
|
|
|
|
TEXT( "" ), // TEXT( "callto:myGateway|jlemire@microsoft.com" )
|
|
TEXT( "" ), // TEXT( "callto:myGateway|jlemire" )
|
|
TEXT( "" ), // TEXT( "callto:myGateway|1 (425) 703-9224" )
|
|
TEXT( "" ), // TEXT( "callto:myGateway|1 (800) RU LEGIT" )
|
|
TEXT( "" ), // TEXT( "callto:myGateway|helpdesk" )
|
|
TEXT( "" ), // TEXT( "callto:myGateway|jlemire@microsoft.com" )
|
|
TEXT( "" ), // TEXT( "callto:myGateway|msils/jlemire@microsoft.com" )
|
|
TEXT( "" ), // TEXT( "callto:myGateway|msils:80/jlemire@microsoft.com" )
|
|
TEXT( "" ), // TEXT( "callto:myGateway|157.59.14.64" )
|
|
TEXT( "" ), // TEXT( "callto:myGateway|JLEMIRE-2" )
|
|
TEXT( "" ), // TEXT( "callto:myGateway|\\\\JLEMIRE-2" )
|
|
|
|
TEXT( "" ), // TEXT( "callto:jlemire@microsoft.com" )
|
|
TEXT( "" ), // TEXT( "callto:jlemire" )
|
|
TEXT( "" ), // TEXT( "callto:1 (425) 703-9224" )
|
|
TEXT( "" ), // TEXT( "callto:1 (800) RU LEGIT" )
|
|
TEXT( "" ), // TEXT( "callto:helpdesk" )
|
|
TEXT( "" ), // TEXT( "callto:jlemire@microsoft.com" )
|
|
TEXT( "" ), // TEXT( "callto:msils/jlemire@microsoft.com" )
|
|
TEXT( "" ), // TEXT( "callto:msils:80/jlemire@microsoft.com" )
|
|
TEXT( "" ), // TEXT( "callto:msils:80/jlemire@microsoft.com" )
|
|
TEXT( "" ), // TEXT( "callto:157.59.14.64" )
|
|
TEXT( "" ), // TEXT( "callto:JLEMIRE-2" )
|
|
TEXT( "" ), // TEXT( "callto:\\\\JLEMIRE-2" )
|
|
|
|
TEXT( "" ), // TEXT( "callto:myGateway|email:jlemire@microsoft.com+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
TEXT( "" ), // TEXT( "callto:myGateway|email:jlemire+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
TEXT( "" ), // TEXT( "callto:myGateway|phone:1 (425) 703-9224+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
TEXT( "" ), // TEXT( "callto:myGateway|phone:1 (800) RU LEGIT+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
TEXT( "" ), // TEXT( "callto:myGateway|string:helpdesk+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
TEXT( "" ), // TEXT( "callto:myGateway|ils:jlemire@microsoft.com+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
TEXT( "" ), // TEXT( "callto:myGateway|ils:msils/jlemire@microsoft.com+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
TEXT( "" ), // TEXT( "callto:myGateway|ils:msils:80/jlemire@microsoft.com+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
TEXT( "" ), // TEXT( "callto:myGateway|ip:157.59.14.64+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
TEXT( "" ), // TEXT( "callto:myGateway|computer:JLEMIRE-2+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
TEXT( "" ), // TEXT( "callto:myGateway|computer:\\\\JLEMIRE-2+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
|
|
TEXT( "" ), // TEXT( "callto:email:jlemire@microsoft.com+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
TEXT( "" ), // TEXT( "callto:email:jlemire+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
TEXT( "" ), // TEXT( "callto:phone:1 (425) 703-9224+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
TEXT( "" ), // TEXT( "callto:phone:1 (800) RU LEGIT+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
TEXT( "" ), // TEXT( "callto:string:helpdesk+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
TEXT( "" ), // TEXT( "callto:ils:jlemire@microsoft.com+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
TEXT( "" ), // TEXT( "callto:ils:msils/jlemire@microsoft.com+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
TEXT( "" ), // TEXT( "callto:ils:msils:80/jlemire@microsoft.com+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
TEXT( "" ), // TEXT( "callto:ip:157.59.14.64+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
TEXT( "" ), // TEXT( "callto:computer:JLEMIRE-2+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
TEXT( "" ), // TEXT( "callto:computer:\\\\JLEMIRE-2+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
|
|
TEXT( "" ), // TEXT( "callto:myGateway|jlemire@microsoft.com+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
TEXT( "" ), // TEXT( "callto:myGateway|jlemire+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
TEXT( "" ), // TEXT( "callto:myGateway|1 (425) 703-9224+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
TEXT( "" ), // TEXT( "callto:myGateway|1 (800) RU LEGIT+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
TEXT( "" ), // TEXT( "callto:myGateway|helpdesk+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
TEXT( "" ), // TEXT( "callto:myGateway|jlemire@microsoft.com+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
TEXT( "" ), // TEXT( "callto:myGateway|msils/jlemire@microsoft.com+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
TEXT( "" ), // TEXT( "callto:myGateway|msils:80/jlemire@microsoft.com+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
TEXT( "" ), // TEXT( "callto:myGateway|157.59.14.64+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
TEXT( "" ), // TEXT( "callto:myGateway|JLEMIRE-2+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
TEXT( "" ), // TEXT( "callto:myGateway|\\\\JLEMIRE-2+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
|
|
TEXT( "" ), // TEXT( "callto:jlemire@microsoft.com+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
TEXT( "" ), // TEXT( "callto:jlemire+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
TEXT( "" ), // TEXT( "callto:1 (425) 703-9224+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
TEXT( "" ), // TEXT( "callto:1 (800) RU LEGIT+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
TEXT( "" ), // TEXT( "callto:helpdesk+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
TEXT( "" ), // TEXT( "callto:jlemire@microsoft.com+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
TEXT( "" ), // TEXT( "callto:msils/jlemire@microsoft.com+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
TEXT( "" ), // TEXT( "callto:msils:80/jlemire@microsoft.com+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
TEXT( "" ), // TEXT( "callto:msils:80/jlemire@microsoft.com+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
TEXT( "" ), // TEXT( "callto:157.59.14.64+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
TEXT( "" ), // TEXT( "callto:JLEMIRE-2+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
TEXT( "" ), // TEXT( "callto:\\\\JLEMIRE-2+secure+certificate=NetMeeting Default Certificate+mysteryParam=" )
|
|
|
|
TEXT( "" ), // TEXT( "myGateway|email:jlemire@microsoft.com" )
|
|
TEXT( "" ), // TEXT( "myGateway|email:jlemire" )
|
|
TEXT( "" ), // TEXT( "myGateway|phone:1 (425) 703-9224" )
|
|
TEXT( "" ), // TEXT( "myGateway|phone:1 (800) RU LEGIT" )
|
|
TEXT( "" ), // TEXT( "myGateway|string:helpdesk" )
|
|
TEXT( "" ), // TEXT( "myGateway|ils:jlemire@microsoft.com" )
|
|
TEXT( "" ), // TEXT( "myGateway|ils:msils/jlemire@microsoft.com" )
|
|
TEXT( "" ), // TEXT( "myGateway|ils:msils:80/jlemire@microsoft.com" )
|
|
TEXT( "" ), // TEXT( "myGateway|ip:157.59.14.64" )
|
|
TEXT( "" ), // TEXT( "myGateway|computer:JLEMIRE-2" )
|
|
TEXT( "" ), // TEXT( "myGateway|computer:\\\\JLEMIRE-2" )
|
|
|
|
TEXT( "" ), // TEXT( "email:jlemire@microsoft.com" )
|
|
TEXT( "" ), // TEXT( "email:jlemire" )
|
|
TEXT( "" ), // TEXT( "phone:1 (425) 703-9224" )
|
|
TEXT( "" ), // TEXT( "phone:1 (800) RU LEGIT" )
|
|
TEXT( "" ), // TEXT( "string:helpdesk" )
|
|
TEXT( "" ), // TEXT( "ils:jlemire@microsoft.com" )
|
|
TEXT( "" ), // TEXT( "ils:msils/jlemire@microsoft.com" )
|
|
TEXT( "" ), // TEXT( "ils:msils:80/jlemire@microsoft.com" )
|
|
TEXT( "" ), // TEXT( "ip:157.59.14.64" )
|
|
TEXT( "" ), // TEXT( "computer:JLEMIRE-2" )
|
|
TEXT( "" ), // TEXT( "computer:\\\\JLEMIRE-2" )
|
|
|
|
TEXT( "" ), // TEXT( "myGateway|jlemire@microsoft.com" )
|
|
TEXT( "" ), // TEXT( "myGateway|jlemire" )
|
|
TEXT( "" ), // TEXT( "myGateway|1 (425) 703-9224" )
|
|
TEXT( "" ), // TEXT( "myGateway|1 (800) RU LEGIT" )
|
|
TEXT( "" ), // TEXT( "myGateway|helpdesk" )
|
|
TEXT( "" ), // TEXT( "myGateway|jlemire@microsoft.com" )
|
|
TEXT( "" ), // TEXT( "myGateway|msils/jlemire@microsoft.com" )
|
|
TEXT( "" ), // TEXT( "myGateway|msils:80/jlemire@microsoft.com" )
|
|
TEXT( "" ), // TEXT( "myGateway|157.59.14.64" )
|
|
TEXT( "" ), // TEXT( "myGateway|JLEMIRE-2" )
|
|
TEXT( "" ), // TEXT( "myGateway|\\\\JLEMIRE-2" )
|
|
|
|
TEXT( "" ), // TEXT( "jlemire@microsoft.com" )
|
|
TEXT( "" ), // TEXT( "jlemire" )
|
|
TEXT( "" ), // TEXT( "1 (425) 703-9224" )
|
|
TEXT( "" ), // TEXT( "1 (800) RU LEGIT" )
|
|
TEXT( "" ), // TEXT( "helpdesk" )
|
|
TEXT( "" ), // TEXT( "jlemire@microsoft.com" )
|
|
TEXT( "" ), // TEXT( "msils/jlemire@microsoft.com" )
|
|
TEXT( "" ), // TEXT( "msils:80/jlemire@microsoft.com" )
|
|
TEXT( "" ), // TEXT( "msils:80/jlemire@microsoft.com" )
|
|
TEXT( "" ), // TEXT( "157.59.14.64" )
|
|
TEXT( "" ), // TEXT( "JLEMIRE-2" )
|
|
TEXT( "" ), // TEXT( "\\\\JLEMIRE-2" )
|
|
|
|
TEXT( "" ), // TEXT( "callto:futuretype:aren't I nicely extensible?" )
|
|
TEXT( "" ) // TEXT( "callto:myGateway|futuretype:aren't I nicely extensible?"
|
|
};
|
|
|
|
static int contexts[ 4 ];
|
|
static TCHAR * actualResults[ elementsof( testUrls ) * elementsof( contexts ) ];
|
|
|
|
HRESULT result = S_OK;
|
|
|
|
if( InterlockedIncrement( &tested ) == 0 )
|
|
{
|
|
CCalltoProperties calltoProperties;
|
|
CCalltoCollection resolvedCalltoCollection;
|
|
CCalltoCollection disambiguatedCalltoCollection;
|
|
|
|
for( int context = 0; context < elementsof( contexts ); context++ )
|
|
{
|
|
CGatekeeperContext::set_enabled( context == 0 );
|
|
CGatewayContext::set_enabled( context == 1 );
|
|
CILSContext::set_enabled( context == 2 );
|
|
|
|
for( int nn = 0; nn < elementsof( testUrls ); nn++ )
|
|
{
|
|
HRESULT testResult = m_resolver.resolve( this, &calltoProperties, &resolvedCalltoCollection, testUrls[ nn ], false );
|
|
|
|
if( testResult != S_OK )
|
|
{
|
|
wsprintf( buffer, TEXT( "NOT RESOLVED!!!\t\tresult:0x%08X:\r\n" ), testResult );
|
|
|
|
if( FAILED( testResult ) && (!FAILED( result )) )
|
|
{
|
|
result = testResult;
|
|
}
|
|
else if( !FAILED( result ) )
|
|
{
|
|
result = MAKE_HRESULT( SEVERITY_ERROR, FACILITY_WIN32, nn );
|
|
}
|
|
}
|
|
else
|
|
{
|
|
*buffer = NULL;
|
|
|
|
for( int level = 0; level < elementsof( confidenceLevels ); level++ )
|
|
{
|
|
const ICallto * resolvedCallto;
|
|
|
|
for( resolvedCallto = resolvedCalltoCollection.get_first();
|
|
resolvedCallto != NULL;
|
|
resolvedCallto = resolvedCalltoCollection.get_next() )
|
|
{
|
|
if( resolvedCallto->get_confidence() == confidenceLevels[ level ] )
|
|
{
|
|
wsprintf( &buffer[ lstrlen( buffer ) ], TEXT( "\t\t\t%9s: %s\r\n" ), ((confidenceLevels[ level ] == S_CONFIDENCE_CERTITUDE)? TEXT( "CERTITUDE" ): ((confidenceLevels[ level ] == S_CONFIDENCE_HIGH)? TEXT( "HIGH" ): ((confidenceLevels[ level ] == S_CONFIDENCE_MEDIUM)? TEXT( "MEDIUM" ): TEXT( "LOW" )))), resolvedCallto->get_qualifiedName() );
|
|
}
|
|
}
|
|
}
|
|
|
|
testResult = m_disambiguator.disambiguate( this, &calltoProperties, &resolvedCalltoCollection, &disambiguatedCalltoCollection );
|
|
|
|
if( disambiguatedCalltoCollection.get_count() == 0 )
|
|
{
|
|
wsprintf( buffer, TEXT( "NOT DISAMBIGUATED!!!\t\tresult:0x%08X:\r\n" ), testResult );
|
|
|
|
actualResults[ nn + (context * elementsof( testUrls )) ] = NULL;
|
|
|
|
if( FAILED( testResult ) && (!FAILED( result )) )
|
|
{
|
|
result = testResult;
|
|
}
|
|
else if( !FAILED( result ) )
|
|
{
|
|
result = MAKE_HRESULT( SEVERITY_ERROR, FACILITY_WIN32, nn );
|
|
}
|
|
}
|
|
else
|
|
{
|
|
const ICallto * disambiguatedCallto = disambiguatedCalltoCollection.get_first();
|
|
|
|
level = disambiguatedCallto->get_confidence();
|
|
|
|
wsprintf( &buffer[ lstrlen( buffer ) ], TEXT( "\r\n%9s:\t%s\tresult:0x%08X\r\n" ), ((level == S_CONFIDENCE_CERTITUDE)? TEXT( "CERTITUDE" ): ((level == S_CONFIDENCE_HIGH)? TEXT( "HIGH" ): ((level == S_CONFIDENCE_MEDIUM)? TEXT( "MEDIUM" ): TEXT( "LOW" )))), disambiguatedCallto->get_qualifiedName(), testResult );
|
|
}
|
|
}
|
|
|
|
if( (actualResults[ nn + (context * elementsof( testUrls )) ] = new TCHAR [ lstrlen( buffer ) + 1 ]) != NULL )
|
|
{
|
|
lstrcpy( actualResults[ nn + (context * elementsof( testUrls )) ], buffer );
|
|
}
|
|
}
|
|
}
|
|
|
|
for( int nn = 0; nn < elementsof( actualResults ); nn++ )
|
|
{
|
|
trace( TEXT( "------------------------------------------------------------------------------\r\n" ) );
|
|
trace( TEXT( "%03d:\tgatekeeper:%-5s\tgateway:%s\tils:%s\r\n\r\n" ), nn, (((nn / elementsof( testUrls )) == 0)? TEXT( "true" ): TEXT( "false" )), (((nn / elementsof( testUrls )) == 1)? TEXT( "true" ): TEXT( "false" )), (((nn / elementsof( testUrls )) == 2)? TEXT( "true" ): TEXT( "false" )) );
|
|
trace( TEXT( "\t\t\t%s\r\n" ), testUrls[ nn % elementsof( testUrls ) ] );
|
|
trace( TEXT( "%s" ), actualResults[ nn ] );
|
|
trace( TEXT( "------------------------------------------------------------------------------\r\n\r\n" ) );
|
|
delete [] actualResults[ nn ];
|
|
}
|
|
|
|
m_selfTestResult = result;
|
|
}
|
|
|
|
return( result == S_OK );
|
|
|
|
} // End of CNMCallto::selfTest.
|
|
|
|
|
|
//--------------------------------------------------------------------------//
|
|
// Win32 console process entry point. //
|
|
//--------------------------------------------------------------------------//
|
|
int
|
|
main
|
|
(
|
|
int ,//ArgC,
|
|
const char * const //ArgV[]
|
|
){
|
|
CNMCallto callto; // Just instantiating one of these will also cause CCalltoResolver::selfTest() to run...
|
|
|
|
callto.callto( TEXT( "jlemire" ), false ); // not strict...
|
|
|
|
return( (int) callto.m_selfTestResult );
|
|
|
|
} // End of main.
|
|
#endif // 0
|