windows-nt/Source/XPSP1/NT/enduser/netmeeting/ui/conf/calltonm.cpp
2020-09-26 16:20:57 +08:00

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