STDMETHODIMP CMmQvRequestColl::Add(BSTR Key, IMmQvRequestAtom* Value, IMmQvRequestAtom** pRetVal) { __CHECK_POINTER(pRetVal); _bstr_t bsKey(Key); try { if(m_coll.find(bsKey) != m_coll.end()) EgLib::CComErrorWrapper::ThrowError(E_INVALIDARG, _T("Quote Request component with the same key is already exists.")); if(!Value) *pRetVal = AddNew(bsKey).Detach(); else { _CHK(IMmQvRequestCollImpl::Add(bsKey, Value), _T("Fail to add Quote Request.")); Value->AddRef(); *pRetVal = Value; } } catch(const _com_error& e) { return Error((PTCHAR)EgLib::CComErrorWrapper::ErrorDescription(e), IID_IMmQvRequestColl, e.Error()); } return S_OK; }
void CMmTradeChannel::AddManualTradeToTradesByUndMan(CComObject<CMmTradeInfoAtom>* pTrd) { if(pTrd->m_enStatus == enTrsManual) { long lAssetID = 0L; pTrd->m_spUnd->get_ID(&lAssetID); _bstr_t bsKey(lAssetID); long lTraderID = 0L; pTrd->m_spTrader->get_ID(&lTraderID); bsKey+= L"_" + _bstr_t(lTraderID); IMmTradeInfoCollPtr aTrdFind; m_pTrdByUndMan->get_Item(bsKey, &aTrdFind); if(NULL == aTrdFind) m_pTrdByUndMan->Add(bsKey, NULL, &aTrdFind); IMmTradeInfoAtomPtr spTrade; IMmTradeInfoAtomPtr spNewTrade; spTrade.Attach(pTrd, TRUE); aTrdFind->Add(pTrd->m_nTradeID, pTrd->m_dtTradeDate, spTrade,&spNewTrade); } }
bool Table::Get(Transaction* tx, const char* key, ByteString &value) { int len; len = strlen(key); ByteString bsKey(len, len, (char*) key); return Table::Get(tx, bsKey, value); }
bool Table::Set(Transaction* tx, const char* key, const char* value) { int len; len = strlen(key); ByteString bsKey(len, len, (char*) key); len = strlen(value); ByteString bsValue(len, len, (char*) value); return Table::Set(tx, bsKey, bsValue); }
void CMmTradeChannel::AddTradeToTradesByFut(CComObject<CMmTradeInfoAtom>* pTrd) { long lFutID = pTrd->m_spFut != NULL ? pTrd->m_spFut->get_ID(&lFutID) : 0L; if(lFutID) { _bstr_t bsKey(lFutID); IMmTradeInfoCollPtr aTrdFind; m_pTrdByFut->get_Item(bsKey, &aTrdFind); if(aTrdFind == NULL) m_pTrdByFut->Add(bsKey, NULL, &aTrdFind); IMmTradeInfoAtomPtr spTrade; IMmTradeInfoAtomPtr spNewTrade; spTrade.Attach(pTrd, TRUE); aTrdFind->Add(pTrd->m_nTradeID, pTrd->m_dtTradeDate, spTrade,&spNewTrade); } }
STDMETHODIMP CMmRpUndColl::Add(BSTR Key, IMmRpUndAtom* Value, IMmRpUndAtom** pRetVal) { __CHECK_POINTER(pRetVal); try { _bstr_t bsKey(Key); if(m_coll.find(bsKey) != m_coll.end()) { CComErrorWrapper::ThrowError(E_INVALIDARG, _T("Value with the same key already exists.")); } CComObject<CMmRpUndAtom>* pUnd; if(!Value) { __CHECK_HRESULT(CComObject<CMmRpUndAtom>::CreateInstance(&pUnd), _T("Failed to add value.")); pUnd->AddRef(); if(FAILED(IMmRpUndCollImpl::Add(bsKey, pUnd))) { pUnd->Release(); CComErrorWrapper::ThrowError(E_INVALIDARG, _T("Failed to add value.")); } *pRetVal = pUnd; } else { __CHECK_HRESULT(IMmRpUndCollImpl::Add(bsKey, Value), _T("Failed to add value.")); Value->AddRef(); *pRetVal = Value; } } catch(const _com_error& e) { return Error((PTCHAR)CComErrorWrapper::ErrorDescription(e), IID_IMmRpUndColl, e.Error()); } return S_OK; }
STDMETHODIMP CMmOrderByReqColl::Add(BSTR Key, DATE SortKey, IMmOrderAtom* Value, IMmOrderAtom** pRetVal) { __CHECK_POINTER(pRetVal); try { _bstr_t bsKey(Key); if(m_collRef.find(bsKey) != m_collRef.end()) { EgLib::CComErrorWrapper::ThrowError(E_INVALIDARG, _T("Order with the same key already exists.")); } if(!Value) { CComObject<CMmOrderAtom>* pNewVal; __CHECK_HRESULT(CComObject<CMmOrderAtom>::CreateInstance(&pNewVal), _T("Failed to add order.")); pNewVal->AddRef(); if(FAILED(IMmOrderByReqCollImpl::Add(bsKey, SortKey, pNewVal))) { pNewVal->Release(); EgLib::CComErrorWrapper::ThrowError(E_INVALIDARG, _T("Failed to add order.")); } *pRetVal = pNewVal; } else { __CHECK_HRESULT(IMmOrderByReqCollImpl::Add(bsKey, SortKey, Value), _T("Failed to add order.")); Value->AddRef(); *pRetVal = Value; } } catch(const _com_error& e) { return Error((PTCHAR)EgLib::CComErrorWrapper::ErrorDescription(e), IID_IMmOrderByReqColl, e.Error()); } return S_OK; }
// CEtsMmFilterAtomColl STDMETHODIMP CEtsMmFilterAtomColl::Add(BSTR Key, IEtsMmFilterAtom* Value, IEtsMmFilterAtom** pRetVal) { __CHECK_POINTER(pRetVal); _bstr_t bsKey(Key); try { if(m_coll.find(bsKey) != m_coll.end()) EgLib::CComErrorWrapper::ThrowError(E_INVALIDARG, _T("Filter component with the same key is already exists.")); CComObject<CEtsMmFilterAtom>* pFilterComp; if(!Value) { _CHK(CComObject<CEtsMmFilterAtom>::CreateInstance(&pFilterComp), _T("Fail to add Filter component.")); IEtsMmFilterAtomPtr spFilterComp; spFilterComp.Attach(pFilterComp, TRUE); if(FAILED(IEtsMmFilterAtomCollImpl::Add(bsKey, pFilterComp))) EgLib::CComErrorWrapper::ThrowError(E_INVALIDARG, _T("Fail to add Filter component.")); *pRetVal = spFilterComp.Detach(); } else { _CHK(IEtsMmFilterAtomCollImpl::Add(bsKey, Value), _T("Fail to add Filter component.")); Value->AddRef(); *pRetVal = Value; } } catch(const _com_error& e) { return Error((PTCHAR)EgLib::CComErrorWrapper::ErrorDescription(e), IID_IEtsMmFilterAtomColl, e.Error()); } return S_OK; }
void CMmTradeChannel::AddTradeToTradesByUnd(CComObject<CMmTradeInfoAtom>* pTrd) { long lFutureID = 0L; if (pTrd->m_spFut) pTrd->m_spFut->get_ID(&lFutureID); if(pTrd->m_spFut == NULL || !lFutureID) { long lAssetID = 0L; pTrd->m_spUnd->get_ID(&lAssetID); _bstr_t bsKey(lAssetID); IMmTradeInfoCollPtr aTrdByUnd; m_pTrdByUnd->get_Item(bsKey, &aTrdByUnd); if(aTrdByUnd == NULL) m_pTrdByUnd->Add(bsKey, NULL, &aTrdByUnd); IMmTradeInfoAtomPtr spTrade; IMmTradeInfoAtomPtr spNewTrade; spTrade.Attach(pTrd, TRUE); aTrdByUnd->Add(pTrd->m_nTradeID, pTrd->m_dtTradeDate, spTrade,&spNewTrade); } }