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

187 lines
5.2 KiB
C++

#if !defined( calltoDisambiguator_h )
#define calltoDisambiguator_h
//--------------------------------------------------------------------------//
//--------------------------------------------------------------------------//
// Application Header Files. //
//--------------------------------------------------------------------------//
#include "callto.h"
#include "calltoContext.h"
//--------------------------------------------------------------------------//
// interface IDisambiguator. //
//--------------------------------------------------------------------------//
class IDisambiguator
{
protected: // protected constructors --------------------------------//
IDisambiguator(){};
public: // public destructor ------------------------------------//
virtual
~IDisambiguator(){};
public: // public methods ----------------------------------------//
virtual
HRESULT
disambiguate
(
const ICalltoContext * const calltoContext,
IMutableCalltoCollection * const calltoCollection,
const ICallto * const resolvedCallto
) = 0;
}; // End of interface IDisambiguator.
//--------------------------------------------------------------------------//
// class CGatekeeperDisambiguator. //
//--------------------------------------------------------------------------//
class CGatekeeperDisambiguator: public IDisambiguator
{
public: // public methods (IDisambiguator) --------------------//
virtual
HRESULT
disambiguate
(
const ICalltoContext * const calltoContext,
IMutableCalltoCollection * const calltoCollection,
const ICallto * const resolvedCallto
);
}; // End of CGatekeeperDisambiguator.
//--------------------------------------------------------------------------//
// class CGatewayDisambiguator. //
//--------------------------------------------------------------------------//
class CGatewayDisambiguator: public IDisambiguator
{
public: // public methods (IDisambiguator) --------------------//
virtual
HRESULT
disambiguate
(
const ICalltoContext * const calltoContext,
IMutableCalltoCollection * const calltoCollection,
const ICallto * const resolvedCallto
);
}; // End of CGatewayDisambiguator.
//--------------------------------------------------------------------------//
// class CComputerDisambiguator. //
//--------------------------------------------------------------------------//
class CComputerDisambiguator: public IDisambiguator
{
public: // public methods (IDisambiguator) --------------------//
virtual
HRESULT
disambiguate
(
const ICalltoContext * const calltoContext,
IMutableCalltoCollection * const calltoCollection,
const ICallto * const resolvedCallto
);
}; // End of CComputerDisambiguator.
//--------------------------------------------------------------------------//
// class CILSDisambiguator. //
//--------------------------------------------------------------------------//
class CILSDisambiguator: public IDisambiguator
{
public: // public methods (IDisambiguator) --------------------//
virtual
HRESULT
disambiguate
(
const ICalltoContext * const calltoContext,
IMutableCalltoCollection * const calltoCollection,
const ICallto * const resolvedCallto
);
}; // End of CILSDisambiguator.
//--------------------------------------------------------------------------//
// class CUnrecognizedDisambiguator. //
//--------------------------------------------------------------------------//
class CUnrecognizedDisambiguator: public IDisambiguator
{
public: // public methods (IDisambiguator) --------------------//
virtual
HRESULT
disambiguate
(
const ICalltoContext * const calltoContext,
IMutableCalltoCollection * const calltoCollection,
const ICallto * const resolvedCallto
);
}; // End of CUnrecognizedDisambiguator.
//--------------------------------------------------------------------------//
// class CCalltoDisambiguator. //
//--------------------------------------------------------------------------//
class CCalltoDisambiguator
{
public: // public constructors ------------------------------------//
CCalltoDisambiguator(void);
public: // public destructor ------------------------------------//
~CCalltoDisambiguator();
public: // public methods ----------------------------------------//
HRESULT
disambiguate
(
const ICalltoContext * const calltoContext,
ICalltoCollection * const resolvedCalltoCollection,
CCalltoCollection * const disambiguatedCalltoCollection
);
private: // private methods ----------------------------------------//
bool
addDisambiguator
(
IDisambiguator * const disambiguator
);
private: // private members ----------------------------------------//
CGatekeeperDisambiguator m_gatekeeperDisambiguator;
CGatewayDisambiguator m_gatewayDisambiguator;
CILSDisambiguator m_ilsDisambiguator;
CComputerDisambiguator m_computerDisambiguator;
CUnrecognizedDisambiguator m_unrecognizedDisambiguator;
IDisambiguator * m_disambiguators[ 5 ];
int m_registeredDisambiguators;
}; // End of class CCalltoDisambiguator.
//--------------------------------------------------------------------------//
#endif // !defined( calltoDisambiguator_h )