NISRecordLookupThread.cpp [plain text]
#include "NISHeaders.h"
NISRecordLookupThread::NISRecordLookupThread( CNSLPlugin* parentPlugin, char* serviceType, NISDirNodeRep* nodeDirRep )
{
DBGLOG( "NISRecordLookupThread::NISRecordLookupThread\n" );
mParentPlugin = parentPlugin;
mNodeToSearch = nodeDirRep;
mNeedToNotifyNodeToSearchWhenComplete = false; mCanceled = false;
mNodeName = mNodeToSearch->GetNodeName();
CFRetain( mNodeName );
if ( serviceType )
mServiceType = ::CFStringCreateWithCString( NULL, serviceType, kCFStringEncodingUTF8 );
else
{
DBGLOG( "NISRecordLookupThread::NISRecordLookupThread someone passed in a null serviceType!" );
mServiceType = ::CFStringCreateWithCString( NULL, "NULL_ServiceType", kCFStringEncodingUTF8 );
}
}
NISRecordLookupThread::~NISRecordLookupThread()
{
DBGLOG( "NISRecordLookupThread::~NISRecordLookupThread\n" );
if ( mNeedToNotifyNodeToSearchWhenComplete )
{
mNodeToSearch->ServiceLookupComplete( this );
}
if ( !AreWeCanceled() )
{
mCanceled = true;
}
if ( mServiceType )
::CFRelease( mServiceType );
if ( mNodeName )
CFRelease( mNodeName );
}
void NISRecordLookupThread::Resume( void )
{
if ( !AreWeCanceled() )
{
mNodeToSearch->StartingNewLookup( this );
mNeedToNotifyNodeToSearchWhenComplete = true;
if ( !AreWeCanceled() )
DSLThread::Resume();
}
}
void NISRecordLookupThread::AddResult( NISResult* newResult )
{
DBGLOG( "NISRecordLookupThread::AddResult\n" );
if ( !newResult->GetAttributeRef( CFSTR(kDSNAttrLocation) ) )
newResult->AddAttribute( CFSTR(kDSNAttrLocation), mNodeToSearch->GetNodeName() );
if ( !AreWeCanceled() )
mNodeToSearch->AddService( newResult );
}