コード例 #1
0
ファイル: QoreSQLStatement.cpp プロジェクト: temnoregg/qore
int QoreSQLStatement::prepare(const QoreString& n_str, const QoreListNode* args, ExceptionSink* xsink) {
   DBActionHelper dba(*this, xsink);
   if (!dba)
      return -1;   

   if (checkStatus(xsink, dba, STMT_IDLE, "prepare"))
      return -1;

   if (prepareArgs(false, n_str, args, xsink))
      return -1;

   return 0;
}
コード例 #2
0
ファイル: securityprofile.cpp プロジェクト: AlexS2172/IVRM
long CSecurityProfile::GetMultiple(MULTIGE_FILTER* pFilrer, DBA_MAXKEY* pKey)
{
	EgStd::CEgTracingClass::TraceStatic(enlogSubs, __FUNCTION__ , _T("SecurityProfile GetMultiple Enter %s"), _T(pKey->dbaKey.symbol));
	long lRet = 0;
	try
	{
		INT nRecLen = sizeof(MULTIGE_FILTER);
		INT nKeyLen = sizeof(DBA_MAXKEY);
		lRet =  dba(&m_blk, DBA_MULTI_GET_EQUAL,	pKey, &nKeyLen,	pFilrer, &nRecLen, 0);
		if(lRet)
		{
			//return lRet;
			EgStd::CEgTracingClass::TraceStatic(enlogSubs, __FUNCTION__ , _T("SecurityProfile GetMultiple Return %d"), lRet);
		}
		else
		{
			EgStd::CEgTracingClass::TraceStatic(enlogSubs, __FUNCTION__ , _T("SecurityProfile GetMultiple Infinite Wait %s"), _T(pKey->dbaKey.symbol));
			dba(&m_blk,	DBA_WAIT_FOR_STREAM_TERMINATE,	NULL, 0, NULL, 0, DBAX_INFINITE_WAIT);	
		}
	}
	_CATCH_UNHANDLED_EXCEPTION;
	EgStd::CEgTracingClass::TraceStatic(enlogSubs, __FUNCTION__ , _T("SecurityProfile GetMultiple Exit %s"), _T(pKey->dbaKey.symbol));
	return lRet;
}
コード例 #3
0
ファイル: stream.cpp プロジェクト: AlexS2172/IVRM
long CStream::CreateStream(short nKeyNum)
{
	m_streamFilter.pUser = this; // object pointer
	m_streamFilter.nUserStatus = FALSE; // Initialize my status flags
	m_streamFilter.nCreateFlags = 0; // Thread Creation Flags
	m_streamFilter.nCount = -1;
	m_streamFilter.nProcStatus = 0;

	TerminateStream();

	ResetEvent(m_hCompleteEvent);
	m_bTerminate = false;
	int nKeyLen = sizeof (DBA_KEYS);
	int nRecLen = sizeof (DB_STREAM_FILTER);
	return dba(m_pBlk, m_nFunc, m_pDbaKey, &nKeyLen, &m_streamFilter, &nRecLen, nKeyNum);
}
コード例 #4
0
ファイル: stream.cpp プロジェクト: AlexS2172/IVRM
void CStream::TerminateStream()
{
	if (m_streamFilter.hThread != 0)
	{
		m_bTerminate = true;
		dba(m_pBlk, DBA_TERMINATE_STREAM_FUNCTION, 0, 0, 0, 0, 0);
		if (::WaitForSingleObject(m_streamFilter.hThread, HFC_TIMEOUT) == WAIT_TIMEOUT)
		{
			_ASSERTE(FALSE);
			SetEvent(m_hCompleteEvent);
			::TerminateThread(m_streamFilter.hThread, -1);
		}
		::CloseHandle(m_streamFilter.hThread);
		m_streamFilter.hThread = 0;
	}
	m_nMissCount = 0;
}
コード例 #5
0
ファイル: QoreSQLStatement.cpp プロジェクト: temnoregg/qore
void QoreSQLStatement::deref(ExceptionSink* xsink) {
   if (ROdereference()) {
      char cmd = DAH_NOCHANGE;
      //printd(5, "QoreSQLStatement::deref() deleting this=%p cmd=%s\n", this, DAH_TEXT(cmd));
      {
         DBActionHelper dba(*this, xsink, cmd);
         if (dba)
            closeIntern(xsink);
      }

      dsh->helperDestructor(this, xsink);

      if (prepare_args)
         prepare_args->deref(xsink);

      delete this;
   }
}
コード例 #6
0
/////////////////////////////////////////////////////////////////////////////
// Länge eines Textmerkmales bestimmen
HRESULT GetTextMerkmalLen (HPROJECT hPr, long madr, long *plLen) 
{
DB_ADDR	dba(hPr);
struct kdbt dbt_satz;	// Satz der Datei '.dbt'
int RC;

// Kein Text da (Textlänge gleich 0)
	if (0 == madr) {
		*plLen = 0;
		return S_OK;
	}

	dba.file_no = FDBT;
	dba.rec_no = madr;
	*plLen = 0;

	__ReadHR (dba, dbt_satz);
	*plLen = dbt_satz.llen;
	if (*plLen != -1L)
		*plLen *= sizeof(INT);	// wirkliche Textlänge
	
	return S_OKAY;
}
コード例 #7
0
ファイル: groupprice.cpp プロジェクト: AlexS2172/IVRM
long CGroupPrice::_GetOptions(const _QuoteUpdateParams& Params, GroupRequestType enRequest)
{
	EgLib::CEgLibTraceManager::Trace(LogDebug, __FUNCTION__ , _T("CGroupPrice::_GetOptions Enter %s"), _T(m_dbaKey.dbaKey.symbol) );
	long nStatus = 0;
	char szKey[MAX_TICKER*2+1]={0};

	try
	{
		ATLTRACE(_T("_GetOptions Enter\n"));
		
		_CancelOptions();

		char szSymbol[MAX_LENGTH + 1];
		ZeroMemory(szSymbol,sizeof(szSymbol));
		CUtilities::KeyToString(&m_dbaKey.dbaKey, szSymbol, MAX_LENGTH);
		m_bsUndSymbol = szSymbol;

		m_bIsGotOptions = false;
		m_bIsGotError = false;
		m_bTerminate = false;
		m_enRequestType = enRequest;
		const_cast<_QuoteUpdateParams&>(Params).CopyTo(m_vtRequest);

		int nRecLen = sizeof(OPTIONS_FILTER);
		int nKeyLen = sizeof(DBA_KEY);

		m_optionsFilter.flags.mask = 0;
		if (m_bComposites)
			m_optionsFilter.flags.mask += DBA_OFM_COMPOSITES;
		if (m_bRegionals)
			m_optionsFilter.flags.mask += DBA_OFM_REGIONALS;
		m_optionsFilter.flags.mask += DBA_OFM_CALLS;
		m_optionsFilter.flags.mask += DBA_OFM_PUTS;

		m_optionsFilter.months = -1;
		m_optionsFilter.count = -1;
		m_optionsFilter.nRecLen = sizeof(DBA_OPTIONS_FILTER_RECORD);
		ResetEvent(m_hTerminateGroupOption);

		CUtilities::KeyToString(&m_dbaKey.dbaKey, szKey, MAX_TICKER*2);

		bool bSubscribe = (m_enRequestType != enGroupRequestLastQuote);
		long nFunc = bSubscribe ? DBA_GET_OPTIONS | DBAX_INTEREST : DBA_GET_OPTIONS;
		nStatus = dba(&m_blk, nFunc, &m_dbaKey.dbaKey, &nKeyLen, &m_optionsFilter, &nRecLen, 0);
		if (nStatus == DBA_ERR_NO_ERROR)
		{
			EgLib::CEgLibTraceManager::Trace(LogDebug, __FUNCTION__, _T("[%s]\t CGroupPrice::_GetOptions dba returns NO_ERROR"), m_strUserName.c_str());

			HANDLE hEvents[] = {m_hTerminateGroupOption, m_optionsFilter.hThread};
			DWORD dw = EgLib::WaitWithEvents(2, hEvents);
			if(m_bTerminate)
			{
				EgLib::CEgLibTraceManager::Trace(LogInfo, __FUNCTION__ , _T("[%s]\t nStatus = DBA_TERMINATED"), m_strUserName.c_str());
				nStatus = DBA_TERMINATED;
			}
			m_bTerminate = true;
			if(dw == (WAIT_OBJECT_0+1))
				EgLib::CEgLibTraceManager::Trace(LogSubs, __FUNCTION__ , _T("[%s]\t CGroupPrice::_GetOptions Succeeded for %s"), m_strUserName.c_str(), szKey );
			else
				EgLib::CEgLibTraceManager::Trace(LogSubs, __FUNCTION__ , _T("[%s]\t CGroupPrice::_GetOptions Terminate for %s"), m_strUserName.c_str(), szKey );
		}
		else
			EgLib::CEgLibTraceManager::Trace(LogSystem, __FUNCTION__ , _T("[%s]\t Failed to get options for %s"), m_strUserName.c_str(), szKey );

		if(m_optionsFilter.hThread)
		{
			//::CloseHandle(m_optionsFilter.hThread);
			m_optionsFilter.hThread = 0;
		}
		ATLTRACE(_T("_GetOptions Exit\n"));
	}
	catch (...)
	{
		EgLib::CEgLibTraceManager::Trace(LogFaults, __FUNCTION__ , _T("[%s]\t Unknown exception while %s processing"), m_strUserName.c_str(), szKey );
	}

	EgLib::CEgLibTraceManager::Trace(LogDebug, __FUNCTION__ , _T("CGroupPrice::_GetOptions Exit %s"), _T(m_dbaKey.dbaKey.symbol) );
	return nStatus;
}
コード例 #8
0
ファイル: wb_session.cpp プロジェクト: siamect/proview
wb_object wb_session::copyObject(wb_object o, wb_destination d, wb_name name)
{
  wb_orep* orep = 0;

  if (isReadonly())
    throw wb_error_str("ReadOnlySession");

  validateDestination(d, o.cid());
  if (evenSts())
    throw wb_error(sts());

  wb_object parent;
  switch (d.code()) {
  case ldh_eDest_IntoFirst:
  case ldh_eDest_IntoLast:
    parent = object(d.oid());
    break;
  case ldh_eDest_After:
  case ldh_eDest_Before:
    parent = object(d.oid()).parent();
    break;
  default:
    throw wb_error(LDH__NODEST);
  }

  m_sts = triggAnteCreate(parent, o.cid());
  if (evenSts())
    throw wb_error(sts());
  m_sts = triggAnteAdopt(parent, o.cid());
  if (evenSts())
    throw wb_error(sts());

  if (m_vrep->vid() == o.vid()) {
    orep = m_vrep->copyObject(&m_sts, (wb_orep*)o, d, name);
    if (evenSts())
      throw wb_error(sts());

    orep->ref();
  } else {
    wb_cdef c = cdef(o.cid());

    orep = m_vrep->createObject(&m_sts, c, d, name);
    orep->ref();
    wb_attribute rba(o.sts(), (wb_orep*)o, "RtBody");
    if (rba) {
      void* p = rba.value();
      wb_attribute rban(m_sts, orep, "RtBody");
      writeAttribute(rban, p);
    }
    wb_attribute dba(o.sts(), (wb_orep*)o, "DevBody");
    if (dba) {
      void* p = dba.value();
      wb_attribute dban(m_sts, orep, "DevBody");
      writeAttribute(dban, p);
    }
    wb_attribute sba(o.sts(), (wb_orep*)o, "SysBody");
    if (sba) {
      void* p = sba.value();
      wb_attribute sban(m_sts, orep, "SysBody");
      writeAttribute(sban, p);
    }
  }
  m_srep->update();

  wb_object onew = wb_object(m_sts, orep);
  orep->unref();
  ldh_sEvent* ep = m_srep->eventStart(onew.oid(), ldh_eEvent_ObjectCreated);
  m_srep->eventNewFamily(ep, onew);
  triggPostCreate(onew);
  triggPostAdopt(parent, onew);
  m_srep->eventSend(ep);

  return onew;
}
コード例 #9
0
ファイル: groupprice.cpp プロジェクト: AlexS2172/IVRM
long CGroupPrice::_GetOptions(const _QuoteUpdateParams& Params, GroupRequestType enRequest)
{
	EgStd::CEgTracingClass::TraceStatic(enlogSubs, __FUNCTION__ , _T("CGroupPrice::_GetOptions Enter %s"), _T(m_dbaKey.dbaKey.symbol) );
	long nStatus = 0;
	try
	{

		ATLTRACE(_T("_GetOptions Enter\n"));
		
		_CancelOptions();

		char szSymbol[MAX_LENGTH + 1];
		ZeroMemory(szSymbol,sizeof(szSymbol));
		KeyToString(&m_dbaKey.dbaKey, szSymbol, MAX_LENGTH);
		m_szUndSymbol = szSymbol;

		m_bIsGotOptions = false;
		m_bIsGotError = false;
		m_bTerminate = false;
		m_enRequestType = enRequest;
		const_cast<_QuoteUpdateParams&>(Params).CopyTo(m_vtRequest);

		int nRecLen = sizeof(OPTIONS_FILTER);
		int nKeyLen = sizeof(DBA_KEY);

		m_optionsFilter.flags.mask = 0;
		if (m_bComposites)
			m_optionsFilter.flags.mask += DBA_OFM_COMPOSITES;
		if (m_bRegionals)
			m_optionsFilter.flags.mask += DBA_OFM_REGIONALS;
		m_optionsFilter.flags.mask += DBA_OFM_CALLS;
		m_optionsFilter.flags.mask += DBA_OFM_PUTS;

		m_optionsFilter.months = -1;
		m_optionsFilter.count = -1;
		m_optionsFilter.nRecLen = sizeof(DBA_OPTIONS_FILTER_RECORD);

		bool bSubscribe = (m_enRequestType != enGroupRequestLastQuote);
		long nFunc = bSubscribe ? DBA_GET_OPTIONS | DBAX_INTEREST : DBA_GET_OPTIONS;
		nStatus = dba(&m_blk, nFunc, &m_dbaKey.dbaKey, &nKeyLen, &m_optionsFilter, &nRecLen, 0);
		if (nStatus == DBA_ERR_NO_ERROR)
		{
			EgStd::CEgTracingClass::TraceStatic(enlogSubs, __FUNCTION__ , _T("CGroupPrice::_GetOptions dba returns NO_ERROR"));
			EgLib::WaitWithEvents(1, &m_optionsFilter.hThread);
			if(m_bTerminate)
			{
				EgStd::CEgTracingClass::TraceStatic(enlogSubs, __FUNCTION__ , _T("CGroupPrice::_GetOptions nStatus = DBA_TERMINATED"));
				nStatus = DBA_TERMINATED;
			}
				
		}
		if(m_optionsFilter.hThread)
		{
			//::CloseHandle(m_optionsFilter.hThread);
			m_optionsFilter.hThread = 0;
		}
		ATLTRACE(_T("_GetOptions Exit\n"));
	}
	_CATCH_UNHANDLED_EXCEPTION;

	EgStd::CEgTracingClass::TraceStatic(enlogSubs, __FUNCTION__ , _T("CGroupPrice::_GetOptions Exit %s"), _T(m_dbaKey.dbaKey.symbol) );
	return nStatus;
}
コード例 #10
0
static void dbaCallFunc(const iocshArgBuf *args) { dba(args[0].sval);}