void CResultSet::Action(const CDbapiEvent& e) { _TRACE(GetIdent() << " " << (void*)this << ": '" << e.GetName() << "' received from " << e.GetSource()->GetIdent()); if(dynamic_cast<const CDbapiClosedEvent*>(&e) != 0 ) { if( dynamic_cast<CStatement*>(e.GetSource()) != 0 || dynamic_cast<CCallableStatement*>(e.GetSource()) != 0 ) { if( m_rs != 0 ) { _TRACE("Discarding old CDB_Result " << (void*)m_rs); Invalidate(); } } } else if(dynamic_cast<const CDbapiDeletedEvent*>(&e) != 0 ) { RemoveListener(e.GetSource()); if(dynamic_cast<CStatement*>(e.GetSource()) != 0 || dynamic_cast<CCursor*>(e.GetSource()) != 0 || dynamic_cast<CCallableStatement*>(e.GetSource()) != 0 ) { _TRACE("Deleting " << GetIdent() << " " << (void*)this); delete this; } } }
void CStatement::Action(const CDbapiEvent& e) { _TRACE(GetIdent() << " " << (void*)this << ": '" << e.GetName() << "' received from " << e.GetSource()->GetIdent()); CResultSet *rs; if (dynamic_cast<const CDbapiFetchCompletedEvent*>(&e) != 0 ) { if( m_irs != 0 && (rs = dynamic_cast<CResultSet*>(e.GetSource())) != 0 ) { if( rs == m_irs ) { m_rowCount = rs->GetTotalRows(); _TRACE("Rowcount from the last resultset: " << m_rowCount); } } } if (dynamic_cast<const CDbapiDeletedEvent*>(&e) != 0 ) { RemoveListener(e.GetSource()); if(dynamic_cast<CConnection*>(e.GetSource()) != 0 ) { _TRACE("Deleting " << GetIdent() << " " << (void*)this); delete this; } else if( m_irs != 0 && (rs = dynamic_cast<CResultSet*>(e.GetSource())) != 0 ) { if( rs == m_irs ) { _TRACE("Clearing cached CResultSet " << (void*)m_irs); m_irs = 0; } } } }
void CConnection::Action(const CDbapiEvent& e) { _TRACE(GetIdent() << " " << (void*)this << ": '" << e.GetName() << "' received from " << e.GetSource()->GetIdent() << " " << (void*)e.GetSource()); if(dynamic_cast<const CDbapiClosedEvent*>(&e) != 0 ) { /* CStatement *stmt; CCallableStatement *cstmt; CCursor *cursor; CDBAPIBulkInsert *bulkInsert; if( (cstmt = dynamic_cast<CCallableStatement*>(e.GetSource())) != 0 ) { if( cstmt == m_cstmt ) { _TRACE("CConnection: Clearing cached callable statement " << (void*)m_cstmt); m_cstmt = 0; } } else if( (stmt = dynamic_cast<CStatement*>(e.GetSource())) != 0 ) { if( stmt == m_stmt ) { _TRACE("CConnection: Clearing cached statement " << (void*)m_stmt); m_stmt = 0; } } else if( (cursor = dynamic_cast<CCursor*>(e.GetSource())) != 0 ) { if( cursor == m_cursor ) { _TRACE("CConnection: Clearing cached cursor " << (void*)m_cursor); m_cursor = 0; } } else if( (bulkInsert = dynamic_cast<CDBAPIBulkInsert*>(e.GetSource())) != 0 ) { if( bulkInsert == m_bulkInsert ) { _TRACE("CConnection: Clearing cached bulkinsert " << (void*)m_bulkInsert); m_bulkInsert = 0; } } */ if( m_connCounter == 1 ) m_connUsed = false; } else if(dynamic_cast<const CDbapiAuxDeletedEvent*>(&e) != 0 ) { if( m_connCounter > 1 ) { --m_connCounter; _TRACE("Server: " << GetCDB_Connection()->ServerName() <<", connections left: " << m_connCounter); } else m_connUsed = false; } else if(dynamic_cast<const CDbapiDeletedEvent*>(&e) != 0 ) { RemoveListener(e.GetSource()); if(dynamic_cast<CDataSource*>(e.GetSource()) != 0 ) { if( m_ownership == eNoOwnership ) { delete this; } } } }
void CDBAPIBulkInsert::Action(const CDbapiEvent& e) { _TRACE(GetIdent() << " " << (void*)this << ": '" << e.GetName() << "' from " << e.GetSource()->GetIdent()); if(dynamic_cast<const CDbapiDeletedEvent*>(&e) != 0 ) { RemoveListener(e.GetSource()); if(dynamic_cast<CConnection*>(e.GetSource()) != 0 ) { _TRACE("Deleting " << GetIdent() << " " << (void*)this); delete this; } } }