Exemple #1
0
void *testThreadTwo(void *p)
{
	PRINTLOG(LOG_TRACE, ">>%s %s %d %s\n",__TIME__,  __FILE__, __LINE__, __FUNCTION__);
	int i = 20000;
	while (i--)
	{
		PRINTLOG(LOG_INFO, " %s %s %d %s %s\n",__TIME__,  __FILE__, __LINE__, __FUNCTION__, "there is thread two");
	}
	PRINTLOG(LOG_TRACE, "<<%s %s %d %s\n",__TIME__,  __FILE__, __LINE__, __FUNCTION__);
}
Exemple #2
0
int main()
{
	int ret = 0;
	ret = InitLog(LOG_DEBUG, OUT_FILE);
	//ret = InitLog(LOG_DEBUG, OUT_STDOUT);
	PRINTLOG(LOG_DEBUG, "%s%d\n", "wuhongtao", 123, 999);
	PRINTLOG(LOG_DEBUG, "%s%d\n", "wuhongtao");
	PRINTLOG(LOG_DEBUG, "%s%d\n", "wuhongtao", 789);
	PRINTLOG(LOG_DEBUG, "%s %d %s\n", __FILE__, __LINE__, __FUNCTION__);
	FreeLog();
	_CrtDumpMemoryLeaks();
	return 0;
}
/***
	PRIVATE
	Metodo GetUserType
	Obtem o tipo de um usuario

	Parameters:
		-
		-

	Return:
		- o tipo do usuario ou um valor negativo indicando erro

	Comments:
		-

***/
long
LBSC_Session::GetUserType( LBSC_Base *pUDB, char *szUserName )
{
	PRINTLOG( _clLBSLog, ("LBSC_Session::GetUserType") );

	if( !pUDB || !szUserName ){
		ERETURN( LBSE_BADARG );
	}
	// procurar o usuario na UDB (a password nao interessa)
	int iRet = FindUser( pUDB, szUserName, "$" );
	if( iRet != LBS_OK && iRet != LBSE_INVALIDPASSWORD ){
		// fudeu
		ERETURN( iRet );
	}
	LBSC_Field	*pf = (*pUDB)[ USERBASEUSERTYPE ];
	if( !pf ){
		ERETURN( LBSE_BADUSERBASE );
	}
	LBSC_Data	*pd = (*pf)[ 0 ];
	if( !pd ){
		ERETURN( LBSE_BADUSERBASE );
	}
	long lType = (long) (*pd);
	SetError( LBS_OK );
	return( lType );
}
/***
	PUBLIC
	Metodo DisableMultipleRecords
	Desabilita a carga de varios registros para a memoria. Aqui no LBS, este metodo
	nao faz nada. Ele serve para os stubs cliente/servidor

	Parameters:
		- 

	Return:
		- 

	Comments:
		- 

***/
void
LBSC_Base::DisableMultipleRecords()
{
	PRINTLOG( _clLBSLog, ("LBSC_Base::DisableMultipleRecords") );

	// este metodo eh dummy. esta' implementado nos stubs c/s
}
/***
	PUBLIC
	Metodo EnableMultipleRecords
	Habilita a carga de varios registros para a memoria. Aqui no LBS, este metodo
	nao faz nada. Ele serve para os stubs cliente/servidor

	Parameters:
		- iNumRegs		-> numero de registros que devem ser carregados para a memoria
						   quando uma operacao de leitura de registros for realizada

	Return:
		- 

	Comments:
		- 

***/
void
LBSC_Base::EnableMultipleRecords( int /*iNumRegs*/ )
{
	PRINTLOG( _clLBSLog, ("LBSC_Base::EnableMultipleRecords") );

	// este metodo eh dummy. esta' implementado nos stubs c/s
}
/***
	PUBLIC
	Metodo GetAllRepetitions
	Obtem todas as repeticoes, de varios tipos e tamanhos, 
	de um ou mais registros, de uma so' vez.

	Parameters:
		- pTicket	-> ticket de seguranca
		- iNumRegs	-> numero de registros que devem ser lidos
					   para o LBS obter as repeticoes. O default
					   eh 1 (apenas o registro corrente).

	Return:
		- ponteiro para uma tira de bytes contendo informacoes
		  como descritas no documento de HLD-performance-C/S ou
		  NULL em caso de erro.

	Comments:
		- a aplicacao DEVE deletar o buffer retornado por este metodo.

***/
C_Buffer *
LBSC_Base::GetAllRepetitions( const LBSC_Ticket *pTicket, int iNumRegs )
{
	PRINTLOG( _clLBSLog, ("LBSC_Base::GetAllRepetitions") );

	CLBAutoRegCrit	AutoRegCrit(&rcRegCrit);

	// algoritmo? Veja no documento de LLD das alteracoes do
	// LBS para c/s e LBWMonit

	if( bBaseObjOk == FALSE ){
		NRETURN( LBSE_OBJNOTOK );
	}
	if( plbscsOwnerSession->TicketIsOk( pTicket ) != 0 ){
		NRETURN( LBSE_TICKETNOTOK );
	}
	if( lbscrCurrRecord.IsUndefined() ){
		NRETURN( LBSE_UNDEFINEDRECORD );
	}

	C_Buffer *pBuf = NULL;
	long lRecordSize = 0;
	long lSuggestedPageSize = 0;
	if ( !GetRecordBuffer( &pBuf, &lRecordSize, &lSuggestedPageSize, TRUE) ) {
		NRETURN( LBSE_NOMEMORY );
	}

	SetError( LBS_OK );
	return( pBuf );
}
Exemple #7
0
/***
	PUBLIC
	Metodo ClearSynonym
	Realiza a delecao de todas as definicoes de sinonimos feita para o
	objeto LTC_SYNONYM.

	Parameters:
		-

	Return:
		0 se operacao OK ou negativo caso contrario.

	Comments:
		-

***/
int
LBSC_Base::ClearSynonym()
{
	PRINTLOG( _clLBSLog, ("LBSC_Base::ClearSynonym") );

	CLBAutoRegCrit	AutoRegCrit(&rcRegCrit);

	if( !plbscisIndexSystem ){
		ERETURN( LBSE_INVALIDINDEXSYSTEM );
	}

	if( pltcSynonym ){
		int iRet = pltcSynonym->LT_ClearSynonym();
		if( iRet == 0 ){
			LTC_SYNONYM *pAux = plbscisIndexSystem->LT_SetSynonym( NULL );
			if( pAux ){
				delete pAux;
			}
			SetError( plbscisIndexSystem->GetError() );
		} else {
			SetError( pltcSynonym->GetError() );
		}
		return( iRet );
	}
	ERETURN( LBSE_NOMEMORY );
}
/**********************************************************
// Function name	: LBSC_Session::Delete
// Description	    : 
// Return type		: void 
// Argument         : LBSC_MaintBase *pData
**********************************************************/
void LBSC_Session::Delete( LBSC_MaintBase *pData )
{
	PRINTLOG( _clLBSLog, ("LBSC_Session::Delete") );
	if( pData ){
		delete [] pData;
	}
}
/***
	STATIC PUBLIC
	Metodo GetGroups
	Obtem a lista de grupos de uma determinada UDB. Se o parâmetro szUserName
	for NULL, o metodo lista todos os grupos de todos os usuários;
	caso contrario, lista apenas os grupos do usuário szUserName.

	Parameters:
		- szUserName -> nome do usuario. Pode ser NULL para
				    indicar TODOS OS USUARIOS.
		- szUDBName	 -> nome da UDB
		- szServerName -> nome do servidor

	Return:
		- NULL em caso de erro. Uma string contendo os grupos separados
		  por espacos em branco se correr tudo bem.

	Comments:
		- O valor retornado DEVE ser deletado pela aplicacao.

***/
char *
LBSC_Session::GetGroups( const char *szUserName, const char *szUDBName, const char * /*szServerName*/ )
{
	PRINTLOG( _clLBSLog, ("LBSC_Session::GetGroups") );
	char	*szReturn = NULL;
	int		iRet = LBSE_NOMEMORY;

	// fazer um login para chamar o outro GetGroups

	LBSC_Session	*pSession = LBSC_Session::New();

	if( pSession ){
		// para o SLogin nao interessa o nome do usuario
		TNetInfo			tni( "$", "$", NULL, NULL, NULL, NULL );
		const	LBSC_Ticket	*pTicket = pSession->SLogin( tni );

		if( pTicket ){
			szReturn = pSession->GetGroups( pTicket, (char*) szUserName );
			iRet = pSession->LastError();
			pSession->Logout();
		} else {
			iRet = pSession->LastError();
		}
		LBSC_Session::Delete( pSession );
	}
	SetLastError( (DWORD) (iRet | 0x20000000) );
	return( szReturn );
}
Exemple #10
0
/***
	PUBLIC
	Metodo WhatBasesForUser
	Verifica quais as bases disponiveis na rede para um determinado usuario.

	Parameters:
		- iFilterLevel -> um filtro indicando o que
					  nao deve ser retornado na lista.

		- szUserName: se nao for informado assume-se o usuario que esta
				 logado.

	Return:
		- Apontador para uma lista de quadruplas:
		  [servidor, nome-da-base, nome longo da base, tipo da base, nome da BU]
		  indicando todas as bases disponiveis na rede para o usuario.

	Comments:
		- O usuario so pode usar este metodo para ele mesmo, a nao
		  ser que ele seja super usuario
		- Este metodo devera' ser implementado no stub servidor de rede.
		- Aqui, o LBS responde apenas por si' mesmo.

***/
LBSC_AllBasesList *
LBSC_Session::WhatBasesForUser( int iFilterLevel, char *szUserName = NULL )
{
	PRINTLOG( _clLBSLog, ("LBSC_Session::WhatBasesForUser") );
	LBSC_AllBasesList 	*plbscablAllBasesList;
	TAllBases		*palbAllBases;

	// Verifica se o usuario estah logado
	if( bIsLogged == FALSE ){
		NRETURN( LBSE_USERNOTLOGGED );
	}

	if( _bInvalidLicence ){
		// a licenca em uso foi invalidada por outra aplicacao.
		// devemos sair do ar e retornar para que o LBS revalide
		// a licenca.
		NRETURN( LBSE_INVALIDLIC );
	}

	// Checar se o usuario passado eh o mesmo que estah logado ou
	// se quem estah logado eh super usuario
	if( szUserName ){
		if( stricmp( szUserName, plbscuUser->GetUserName() ) != 0 ){
			if( plbscuUser->GetUserType() != MASTER_USER ){
				NRETURN( LBSE_USERNOTOWNERBASE );
			}
		}
	}

	// Instanciar a lista
	plbscablAllBasesList = new LBSC_AllBasesList;
	if( !plbscablAllBasesList ){
		NRETURN( LBSE_NOMEMORY );
	}
	palbAllBases = new TAllBases;	// Instanciar um no'
	if( !palbAllBases ){
		delete plbscablAllBasesList;
		NRETURN( LBSE_NOMEMORY );
	}
	char	*szServerName = WhatServers();
	palbAllBases->tmaServer = szServerName;
	if( szServerName ){
		delete szServerName;
	}
	palbAllBases->plbscsblServerBasesList = WhatBasesForUserOnServer( iFilterLevel, palbAllBases->tmaServer, szUserName );
	if( !(palbAllBases->plbscsblServerBasesList) ){
		delete palbAllBases;
		palbAllBases = NULL;
	} else {
		plbscablAllBasesList->Add( palbAllBases, TAIL );
	}
	if( plbscablAllBasesList->NumElem() == 0 ){
		delete plbscablAllBasesList;
		plbscablAllBasesList = NULL;
	} else {
		plbscablAllBasesList->First();
	}
	SetError( LBS_OK );
	return( plbscablAllBasesList );
}
Exemple #11
0
/***
	PUBLIC
	Metodo GetMask
	Obtem a lista de mascaras setada atualmente no sistema de indices.

	Parameters:
		- iIndex: Informa o indice de onde se quer obter a lista de
		mascaras. Podera ser para o indice de Data (DATETREE), Hora
		(TIMETREE) ou Valor (VALUETREE).

	Return:
		- Uma string com a lista de mascaras ativa para aquele indice,
		separadas por branco.

	Comments:
		- Este metodo retorna um apontador para uma string que a
		aplicacao DEVE deletar quando nao quiser mais usa-la.

***/
char *
LBSC_Base::GetMask( int iIndex )
{
	PRINTLOG( _clLBSLog, ("LBSC_Base::GetMask") );

	CLBAutoRegCrit	AutoRegCrit(&rcRegCrit);

	LTC_TERMLIST	*pOldMask;

	if( !plbscisIndexSystem ){
		NRETURN( LBSE_INVALIDINDEXSYSTEM );
	}
	if( (iIndex != DATETREE) && (iIndex != TIMETREE) && (iIndex != VALUETREE) ){
		NRETURN( LBSE_INVALIDINDEXTYPE );
	}
	if( pltcMaskList ){
		//Início Katyusco
		int iMaskType = 1; // Portugues
		if ( _pcInter ) {
			PRODMAINPARMS *pcInterMianParms = _pcInter->GetProdMainParms();
			iMaskType = ( strcmp(pcInterMianParms->currlang, "PORTUGUES") == 0 ? 1 : 0 );
		}
		pOldMask = plbscisIndexSystem->LT_SetMask( pltcMaskList, iIndex, iMaskType );
		SetError( LBS_OK );
		return( MakeLTString( pOldMask ) );
	}
	NRETURN( LBSE_NOMEMORY );
}
/***
	PRIVATE
	Metodo GetFNameOnProfile
	Obtem informacoes do LBS.INI.

	Parameters:
		- szFullAux
		- szAux

	Return:
		- LBS_OK caso obtenha sucesso.

	Comments:

***/
int
LBSC_Session::GetFNameOnProfile( char *szFullAux, char *szAux )
{
	PRINTLOG( _clLBSLog, ("LBSC_Session::GetFNameOnProfile") );
	strncpy( szFullAux, LBSC_ServerConfig::DirBase(), FULLNAMESIZE-1 );
	strncpy( szAux, LBSC_ServerConfig::BasesFileName(), FILENAMESIZE-1 );

	// testa se o caminho tem o drive!!!
	char szDrive[ _MAX_DRIVE ];
	_splitpath ( szFullAux, szDrive, NULL, NULL, NULL );
	if ( (szFullAux[0] != '\\' || szFullAux[1] != '\\') && strlen( szDrive ) == 0 ){
		// tenta descobrir o drive somente se estiver relativo ao drive onde estamos rodando
		getAppDrive( szDrive );
		char * szAux = strdup ( szFullAux );
		if ( szAux ){
			sprintf( szFullAux, "%s%s", szDrive, szAux );
			free ( szAux );
		}
	}
	if( ( strcmp( LBSINIDEFMSG, szFullAux ) == 0 ) ||
	    ( strcmp( LBSINIDEFMSG, szAux ) == 0 ) ){
		// $$$ deu pau (nao achei a string em LBS.INI)
		SetLastError( (DWORD) (LBSE_LBSINIERROR | 0x20000000) );
		return( LBSE_LBSINIERROR );
	}
	SetLastError( LBS_OK | 0x20000000 );
	return( LBS_OK );
}
Exemple #13
0
/***
	PUBLIC
	Metodo PutData
	Completa o processo de ordenacao.

	Parameters:
		- pvKey -> apontador para a chave que esta' ordenada.

	Return:
		-

	Comments:
		- Este metodo deve obter, dentro da chave apontada por pvKey,
		  informacoes necessarias para inserir essa chave na posicao
		  correta na nova lista de ocorrencias.

***/
void
LBSC_RepSort::PutData( void *pvKey )
{
	PRINTLOG( _clLBSLog, ("LBSC_RepSort::PutData") );

	if( !pSortField ){
		// este objeto nao esta' em condicoes de uso.
		return;
	}

	// extrair de pvKey o ponteiro para o comparator
	char *szKey = (char *) pvKey;
	pvKey = (void*) (((char*) pvKey) + sizeof( long ));
	
	// obter o ponteiro para a repeticao
	LBSC_Data	*pd = (LBSC_Data*) (*((long*)pvKey));

	if( pd ){
		// inserir pd na lista de repeticoes do campo pSortField.
		pSortField->IncNumberOfUpdates();
		pSortField->lbscdlDataList.Add( pd, TAIL );
		pSortField->UpdateFieldFlag( TRUE, iIndAtual );
		pd->SetModified( TRUE );
	}
	++iIndAtual;
	delete szKey;
}
Exemple #14
0
/***
	PUBLIC
	Metodo WhatServersForUser
	Verifica quais sao os servidores disponiveis na rede para um determinado
	servidor.

	Parameters:
		- szUserName

	Return:
		Apontador para uma string contendo os enderecos das maquinas
		servidoras separados por um espaco em branco.

	Comments:
		- Este metodo devera' ser implementado no stub servidor de rede.
		- Aqui, o LBS responde apenas por si' mesmo, retornando uma
		  copia do nome do servidor definido no LBS.INI ou "LOCALHOST".

***/
char *
LBSC_Session::WhatServersForUser( char * szUserName )
{
	PRINTLOG( _clLBSLog, ("LBSC_Session::WhatServersForUser") );
	// ja' que responderemos por si' mesmo, vamos verificar todas as UDBs
	// para saber se o usuario szUserName possui algum acesso

	// vamos fazer o seguinte:
	//	. procurar, no arquivo de controle, todas as UDBs do servidor
	//	. para cada UDB encontrada, verificar se o usuario possui algum acesso
	//	. se for encontrado algum acesso, podemos encerrar as buscas e retornar OK
	//	. se terminarmos de procurar em todas as UDBs e nao encontrarmos nada,
	//	  retornamos NULL
	// fim

	if( _bInvalidLicence ){
		// a licenca em uso foi invalidada por outra aplicacao.
		// devemos sair do ar e retornar para que o LBS revalide
		// a licenca.
		NRETURN( LBSE_INVALIDLIC );
	}

	C_SessCritSect	cCS4( this, CRITSECT4 );

	// Procurar usuario (nao importa a password, 
	// so' importa se ele estah ou nao cadastrado)
	if( FindUserInCache( szUserName, NULL, "" ) >= 0 ){
		// encontramos o cadastro do cara em alguma UDB
		return( WhatServers() );
	}
	NRETURN( LBSE_USERNOTFOUND );
}
/***
	PUBLIC
	Metodo GetAllFieldSlots
	Retorna os slots de todos os campos

	Parameters:
		- pTicket		-> ticket de seguranca

	Return:
		- ponteiro para uma estrutura

	Comments:
		- 

***/
TSlotCache *
LBSC_Base::GetAllFieldSlots( const LBSC_Ticket *pTicket )
{
	PRINTLOG( _clLBSLog, ("LBSC_Base::GetAllFieldSlots") );

	CLBAutoRegCrit	AutoRegCrit(&rcRegCrit);

	if( bBaseObjOk == FALSE ){
		NRETURN( LBSE_OBJNOTOK );
	}
	if( plbscsOwnerSession->TicketIsOk( pTicket ) != 0 ){
		NRETURN( LBSE_TICKETNOTOK );
	}
	TSlotCache	*ptscRet = new TSlotCache;
	if( !ptscRet ){
		NRETURN( LBSE_NOMEMORY );
	}
	ptscRet->iNumberOfFieldSlots = GetNumberOfFields();
	ptscRet->pSlots = new TSlotCacheInfo[ ptscRet->iNumberOfFieldSlots ];
	if( !ptscRet->pSlots ){
		delete ptscRet;
		NRETURN( LBSE_NOMEMORY );
	}
	for( int i = 0; i < ptscRet->iNumberOfFieldSlots; i++ ){
		// pra evitar a carga de todos os dados do registro so porque estamos querendo obter a estrutura
		BOOL bAux = lbscrCurrRecord.bMustLoadData;
		lbscrCurrRecord.bMustLoadData = FALSE;
		LBSC_Field	*pfField = lbscrCurrRecord[ i ];
		// reabilita a carga dos dados dos campos
		lbscrCurrRecord.bMustLoadData = bAux;

		if( !pfField ){
			// deu pau
			delete ptscRet;
			NRETURN( LBSE_ERROR );
		}
		ptscRet->pSlots[ i ].uiId = pfField->GetId();
		ptscRet->pSlots[ i ].iSize = pfField->lSlotSize;
		if( ptscRet->pSlots[ i ].iSize < 0 ){
			if( ptscRet->pSlots[ i ].iSize == LBSE_EMPTYSLOT ){
				ptscRet->pSlots[ i ].pBuff = NULL;
			} else {
				delete ptscRet;
				return( NULL );
			}
		} else {
			ptscRet->pSlots[ i ].pBuff = new char[ ptscRet->pSlots[ i ].iSize ];
			if( !ptscRet->pSlots[ i ].pBuff ){
				delete ptscRet;
				NRETURN( LBSE_NOMEMORY );
			}
			memcpy( ptscRet->pSlots[ i ].pBuff, pfField->pvSlot, pfField->lSlotSize );
		}
	}
	SetError( LBS_OK );
	return( ptscRet );
}
Exemple #16
0
int main(int argc, char **argv)
{
	int ret = 0;
	LEVEL level = LOG_TRACE;
	OUTWAY outway = OUT_FILE;

	//测试未初始化就使用PRINTFLOG的情况
	ret = PRINTLOG(LOG_TRACE, "未初始化\n");
	printf("未初始化 返回值=%d\n", ret);

	//正常的使用方法
	InitLog(level, outway);
	ret = PRINTLOG(LOG_TRACE, ">>%s %s %d %s\n",__TIME__,  __FILE__, __LINE__, __FUNCTION__);
	printf("输出级别和初始化级别相同 返回值=%d\n", ret);
	PRINTLOG(LOG_TRACE, "<<%s %s %d %s\n",__TIME__,  __FILE__, __LINE__, __FUNCTION__);
	FreeLog();

	sleep(1);

	//输出级别不同于初始化级别的测试
	level = LOG_INFO;
	InitLog(level, outway);
	ret = PRINTLOG(LOG_TRACE, " %s %s %d %s\n",__TIME__,  __FILE__, __LINE__, __FUNCTION__);
	printf("输出级别低于初始化级别 返回值=%d\n", ret);
	PRINTLOG(LOG_WARNING, " %s %s %d %s\n",__TIME__,  __FILE__, __LINE__, __FUNCTION__);
	FreeLog();

	sleep(1);

	//测试多线程
	level = LOG_TRACE;
	InitLog(level, outway);
	
	pthread_t t1, t2;
	pthread_create(&t1, NULL, testThreadOne, NULL);
	pthread_create(&t2, NULL, testThreadTwo, NULL);

	pthread_join(t1, NULL);
	pthread_join(t2, NULL);
	
	FreeLog();
	return 0;
}
Exemple #17
0
/***
	PUBLIC
	Metodo ExchangeOperator
	Esta funcao altera mnemonicos para os operadores ou localizadores das
	expressoes, permitindo que o usuario utilize os operadores no seu
	idioma e da maneira com a qual estiver melhor familiarizado. 


	Parameters:
		-szNewOp: Apontador para uma cadeia de caracteres, terminada
		 com '\0', contendo os operadores e/ou localizadores seguidos de seu respectivo mnemonico. 


	Return:
	       - Retorna um apontador para uma cadeia de caracteres, contendo
		os mnemonicos anteriormente setados ou NULL em caso de erro.


	Comments:
		- Ver metodo LT_ExchangeOperator  no manual da GREEN.


***/
char *
LBSC_Base::ExchangeOperator( char *szNewOp )
{
	PRINTLOG( _clLBSLog, ("LBSC_Base::ExchangeOperator") );

	CLBAutoRegCrit	AutoRegCrit(&rcRegCrit);

	char	*szAux = GLT_Session->LT_ExchangeOperator( szNewOp );
	SetError( GLT_Session->LT_GetError() );
	return( szAux );
}
Exemple #18
0
/***
	PUBLIC
	Metodo OLNot
	Faz um batimento NOT entre duas listas de ocorrencias
        e gera uma terceira lista

	Parameters:
		- lbscTicket : o ticket de seguranca
		- iHandle1 : handle da primeira LO
		- iHandle2 : handle da segunda LO

	Return:
		- o handle da LO gerada ou um erro (valor negativo)

	Comments:
        	- a LO gerada NAO se torna a corrente
                  (ela nao eh habilitada)

***/
int
LBSC_Base::OLNot( const LBSC_Ticket *lbscTicket, int iHandle1, int iHandle2 )
{
	PRINTLOG( _clLBSLog, ("LBSC_Base::OLNot") );

	CLBAutoRegCrit	AutoRegCrit(&rcRegCrit);

	if( plbscsOwnerSession->TicketIsOk( lbscTicket ) != 0 ){
		ERETURN( LBSE_TICKETNOTOK );
	}
	return( LogicalOp( OL_NOT, iHandle1, iHandle2 ) );
}
Exemple #19
0
/***
	PUBLIC
	Metodo ClearMasks
	Deleta a lista de mascaras.


	Parameters:


	Return:
		- 0 se operacao OK ou negativo caso contrario.

	Comments:
		-

***/
int
LBSC_Base::ClearMasks()
{
	PRINTLOG( _clLBSLog, ("LBSC_Base::ClearMasks") );

	CLBAutoRegCrit	AutoRegCrit(&rcRegCrit);

	if( pltcMaskList ){
		int	iRet = pltcMaskList->LT_DelAllTerm();
		ERETURN( LBS_OK );
	}
	ERETURN( LBSE_NOMEMORY );
}
Exemple #20
0
/***
	PUBLIC
	Metodo SavePhone
	Salva em arquivo o conteudo de um objeto LTC_PHONE, gravando os
	fonemas contidos neste objeto. 


	Parameters:
		- szFileName: nome do arquivo (inclusive path).


	Return:
		- 0 se operacao OK ou negativo caso contrario.

	Comments:
        	-


***/
int
LBSC_Base::SavePhone( char *szFileName )
{
	PRINTLOG( _clLBSLog, ("LBSC_Base::SavePhone") );

	CLBAutoRegCrit	AutoRegCrit(&rcRegCrit);

	if( pltcPhone ){
		int	iRet = pltcPhone->LT_SavePhone( szFileName );
		SetError( pltcPhone->GetError() );
		return( iRet );
	}
	ERETURN( LBSE_NOMEMORY );
}
Exemple #21
0
/***
	PUBLIC
	Metodo SaveMasks
	Salva a lista de mascaras ativa em um arquivo.

	Parameters:
		- szFileName: nome do arquivo( inclusive path ).


	Return:
		- 0 se operacao OK ou negativo caso contrario.


	Comments:
        	-

***/
int
LBSC_Base::SaveMasks( char *szFileName )
{
	PRINTLOG( _clLBSLog, ("LBSC_Base::SaveMasks") );

	CLBAutoRegCrit	AutoRegCrit(&rcRegCrit);

	if( pltcMaskList ){
		int	iRet = pltcMaskList->LT_SaveTermList( szFileName );
		SetError( pltcMaskList->GetError() );
		return( iRet );
	}
	ERETURN( LBSE_NOMEMORY );
}
Exemple #22
0
/***
	PUBLIC
	Metodo FindPhone
	Realiza uma pesquisa fonetica de um termo. Recebe um termo (ptctTerm)
	com parametro e devolve o numero fonetico correspondente a este termo.


	Parameters:
		- szTerm: termo;
		- szPhoneValue: 


	Return:
		- 0 se operacao OK ou negativo caso contrario.

	Comments:
		-

***/
int
LBSC_Base::FindPhone( char *szTerm, char *szPhoneValue )
{
	PRINTLOG( _clLBSLog, ("LBSC_Base::FindPhone") );

	CLBAutoRegCrit	AutoRegCrit(&rcRegCrit);

	if( pltcPhone ){
		int	iRet = pltcPhone->LT_FindPhone( szTerm, szPhoneValue );
		SetError( pltcPhone->GetError() );
		return( iRet );
	}
	ERETURN( LBSE_NOMEMORY );
}
Exemple #23
0
/***
	PUBLIC
	Metodo LoadSynonym
	Carrega um objeto LTC_SYNONYM armazenado em arquivo, lendo os termos
	e seus sinonimos que serao adicionados no objeto .


	Parameters:
		-szFileName: nome do arquivo.


	Return:
		- 0 se operacao OK ou negativo caso contrario.

	Comments:
        	-

***/
int
LBSC_Base::LoadSynonym( char *szFileName )
{
	PRINTLOG( _clLBSLog, ("LBSC_Base::LoadSynonym") );

	CLBAutoRegCrit	AutoRegCrit(&rcRegCrit);

	if( pltcSynonym ){
		int	iRet = pltcSynonym->LT_LoadSynonym( szFileName );
		SetError( pltcSynonym->GetError() );
		return( iRet );
	}
	ERETURN( LBSE_NOMEMORY );
}
Exemple #24
0
/***
	static PUBLIC
	Metodo WhatBases
	Verifica quais as bases disponiveis na rede.

	Parameters:
		- iFilterLevel -> um filtro indicando o que
					  nao deve ser retornado na lista.

	Return:
		Apontador para uma lista de quadruplas:
		[servidor, nome-da-base, tipo da base, nome da BU]
		indicando todas as bases disponiveis na rede.

	Comments:
		- Este metodo devera' ser implementado no stub servidor de rede.
		- Aqui, o LBS responde apenas por si' mesmo.

***/
LBSC_AllBasesList *        // $$$ lista com: servidor + nome-da-base + nome-longo-da-base + tipo + BU
LBSC_Session::WhatBases( int iFilterLevel )
{
	PRINTLOG( _clLBSLog, ("LBSC_Session::WhatBases") );
	LBSC_AllBasesList 	*plbscablAllBasesList;
	TAllBases		*palbAllBases;

	if( _bInvalidLicence ){
		// a licenca em uso foi invalidada por outra aplicacao.
		// devemos sair do ar e retornar para que o LBS revalide
		// a licenca.
		SetLastError( (DWORD) (LBSE_INVALIDLIC | 0x20000000) );
		return( NULL );
	}

	// Instanciar a lista
	plbscablAllBasesList = new LBSC_AllBasesList;
	if( !plbscablAllBasesList ){
		SetLastError( (DWORD) (LBSE_NOMEMORY | 0x20000000) );
		return( NULL );
	}

	palbAllBases = new TAllBases;
	if( !palbAllBases ){
		delete plbscablAllBasesList;
		SetLastError( (DWORD) (LBSE_NOMEMORY | 0x20000000) );
		return( NULL );
	}
	char	*szServer = WhatServers();
	palbAllBases->tmaServer = szServer;
	if( szServer ){
		delete szServer;
	}
	palbAllBases->plbscsblServerBasesList = WhatBasesOnServer( iFilterLevel, palbAllBases->tmaServer );
	if( !(palbAllBases->plbscsblServerBasesList) ){
		delete palbAllBases;
		palbAllBases = NULL;
	} else {
		plbscablAllBasesList->Add( palbAllBases, TAIL );
	}

	if( plbscablAllBasesList->NumElem() == 0 ){
		delete plbscablAllBasesList;
		plbscablAllBasesList = NULL;
	} else {
		plbscablAllBasesList->First();
	}
	SetLastError( LBS_OK | 0x20000000 );
	return( plbscablAllBasesList );
}
Exemple #25
0
/***
	PUBLIC
	Metodo Standardize
	Normaliza a string passada no primeiro parametro, devolvendo uma
	outra string com o resultado da operacao.

	Parameters:
		- szContent: Apontador para uma cadeia de caracteres, contendo
		  a string a ser normalizada;
		- szDestination: Apontador para um buffer para armazenar o
		  resultado da normalizacao;
		- iSize:Tamanho da cadeia apontada por szContent;
	
	Return:
		- 0 se operacao OK ou negativo caso contrario.

	Comments:
		- Este metodo nao realiza nenhuma operacao sobre o sistema de indices.
		  Ele eh simplesmente um servico oferecido pela API para normalizar
		  strings.


***/
int
LBSC_Base::Standardize( char *szContent, char *szDestination, int iSize )
{
	PRINTLOG( _clLBSLog, ("LBSC_Base::Standardize") );

	CLBAutoRegCrit	AutoRegCrit(&rcRegCrit);

	if( !plbscisIndexSystem ){
		ERETURN( LBSE_INVALIDINDEXSYSTEM );
	}

	int	iRet = plbscisIndexSystem->LT_Standardize( szContent, szDestination, iSize );
	SetError( plbscisIndexSystem->GetError() );
	return( iRet );
}
Exemple #26
0
/***
	PUBLIC
	Metodo FindSynonym
	Realiza a pesquisa dos sinonimos de um termo. Recebe um termo (ptctTerm)
	como parametro e devolve um conjunto de sinonimos para este termo.


	Parameters:
		- szTerm: termo.

	Return:
		Retorna um apontador para uma cadeia de caracteres terminada
		com '\0', que contem os sinonimos do termo passado como
		parametro, ou NULL em caso de erro.

	Comments:
		-

***/
char *
LBSC_Base::FindSynonym( char *szTerm )
{
	PRINTLOG( _clLBSLog, ("LBSC_Base::FindSynonym") );

	CLBAutoRegCrit	AutoRegCrit(&rcRegCrit);

	LTC_TERMLIST	*pOldSynonym;

	if( pltcSynonym ){
		pOldSynonym = pltcSynonym->LT_FindSynonym( szTerm );
		return( MakeLTString( pOldSynonym ) );
	}
	NRETURN( LBSE_NOMEMORY );
}
Exemple #27
0
/***
	PUBLIC
	Metodo StartSort
	Realiza o processo de ordenacao propriamente dito

	Parameters:
		- 

	Return:
		- FALSE indica que houve problemas.
		- TRUE em caso de sucesso.

	Comments:
		- A ordenacao eh feita pelo metodo StartSort do objeto SortObject.
		- A ordenacao eh feita sobre a propria lista de repeticoes do campo.		  

***/
BOOL
LBSC_RepSort::StartSort()
{
	PRINTLOG( _clLBSLog, ("LBSC_RepSort::StartSort") );

	if( !pSortField ){
		// este objeto nao esta' em condicoes de uso.
		return( NULL );
	}

	iIndAtual = 0;
	BOOL bSortRet = SortObject::StartSort();
	iIndAtual = 0;

	return( bSortRet );
}
Exemple #28
0
/***
	PUBLIC
	Metodo LoadMasks
	Carrega a lista de mascaras a partir de um arquivo.


	Parameters:
		- szFileName: nome do arquivo( inclusive path ).


	Return:
		- 0 se operacao OK ou negativo caso contrario.


	Comments:
        	-


***/
int
LBSC_Base::LoadMasks( char *szFileName )
{
	PRINTLOG( _clLBSLog, ("LBSC_Base::LoadMasks") );

	CLBAutoRegCrit	AutoRegCrit(&rcRegCrit);

	if( pltcMaskList ){
		pltcMaskList->LT_DelAllTerm();
		int	iRet = pltcMaskList->LT_LoadTermList( szFileName );
		if( iRet != OK ){
			pltcMaskList->LT_DelAllTerm();
			ERETURN( LBSE_ERROR );
		}
		ERETURN( LBS_OK );
	}
	ERETURN( LBSE_NOMEMORY );
}
Exemple #29
0
/***
	static PUBLIC
	Metodo WhatServers
	Verifica quais sao os servidores disponiveis na rede

	Parameters:

	Return:
		Apontador para uma string contendo os enderecos das maquinas
		servidoras separados por um espaco em branco.

	Comments:
		- Este metodo devera' ser implementado no stub servidor de rede.
		- Aqui, o LBS responde apenas por si' mesmo, retornando uma
		  copia do nome do servidor obtido atraves da funcao NetServerGetInfo ou
		  do LBS.INI ou "LOCALHOST".

***/
char *
LBSC_Session::WhatServers()
{
	PRINTLOG( _clLBSLog, ("LBSC_Session::WhatServers") );
	char			szServerName[ SERVERNAMESIZE ];
	const	char	*szMachine = GetMachineName();

	if( szMachine ){
		strcpy( szServerName, szMachine );
	} else {
		// deu pau na funcao NetServerGetInfo.
		// vamos pegar o nome no LBS.INI. Se houver erro, o nome retornado
		// sera' "LOCALHOST"
		strncpy( szServerName, LBSC_ServerConfig::ServerName(), SERVERNAMESIZE-1 );
	}
	SetLastError( (DWORD) (LBS_OK | 0x20000000) );
	return( Strdup( szServerName ) );
}
Exemple #30
0
/***
	PUBLIC
	Metodo AddSynonym
	Adiciona um conjunto de sinonimos (szSynonymArray) para o termo ptctTerm

	Parameters:
		- szTerm: String de caracteres, terminado com '\0', indicando
		qual e o termo que possui o conjunto de sinonimos;
		- szSynonymArray: String de caracteres, terminado com '\0',
		que contera as diversas palavras que sao sinonimos do termo
		passado como parametro. As palavras desta string deverao estar
		separadas por um caracter branco;
		- iFlag: Flag indicativo para a utilizacao, ou nao, de
		bidirecionamento ou associatividade.

	Return:
		- 0 se operacao OK ou negativo caso contrario.

	Comments:
		-

***/
int
LBSC_Base::AddSynonym( char *szTerm, char *szSynonymArray, int iFlag )
{
	PRINTLOG( _clLBSLog, ("LBSC_Base::AddSynonym") );

	CLBAutoRegCrit	AutoRegCrit(&rcRegCrit);

	LTC_TERMLIST	*pltcTermAux = new LTC_TERMLIST;
	if( !pltcTermAux ){
		ERETURN( LBSE_NOMEMORY );
	}

	if( !pltcSynonym ){
		delete pltcTermAux;
		ERETURN( LBSE_NOMEMORY );
	}

	if( !plbscisIndexSystem ){
		delete pltcTermAux;
		ERETURN( LBSE_INVALIDINDEXSYSTEM );
	}

	if( pltcTermAux->LT_BuildTermList( szSynonymArray ) != LBS_OK ){
		SetError( pltcTermAux->GetError() );
		delete pltcTermAux;
		return( LBSE_ERROR );
	}

	int iRet = pltcSynonym->LT_AddSynonym( szTerm, pltcTermAux, iFlag );

	if( iRet == 0 ){
		LTC_SYNONYM *pAux = plbscisIndexSystem->LT_SetSynonym( pltcSynonym );
		if( pAux ){
			delete pAux;
		}
		SetError( plbscisIndexSystem->GetError() );
	} else {
		SetError( pltcSynonym->GetError() );
	}
	delete pltcTermAux;
	return( iRet );
}