void generateIndexKeyForValue(ExecState& exec, const IDBIndexInfo& info, JSValue value, IndexKey& outKey) { auto keyDatas = createKeyPathArray(exec, value, info); if (keyDatas.isEmpty()) return; outKey = IndexKey(WTFMove(keyDatas)); }
/** * Send any messages still in memory for this object. */ void MessageToManager::sendMessagesForObject(const NetworkId &objectId, GameServerConnection &conn) const { for (MessagesByObjectType::const_iterator j=m_messagesByObject.lower_bound(IndexKey(objectId, NetworkId::cms_invalid)); (j != m_messagesByObject.end()) && (j->first.m_object == objectId); ++j) { MessageToMessage const message(*(j->second), DatabaseProcess::getInstance().getProcessId()); conn.send(message, true); } }
void MessageToManager::removeMessage(const MessageToId &messageId) { MessageToObjectMapType::iterator i=m_messageToObjectMap.find(messageId); if (i!=m_messageToObjectMap.end()) { MessagesByObjectType::iterator j=m_messagesByObject.find(IndexKey(i->second, messageId)); if (j!=m_messagesByObject.end()) { delete j->second; j->second=NULL; m_messagesByObject.erase(j); } m_messageToObjectMap.erase(i); } }
int jb() { JET_ERR err; eseInstance instance; if (instance.init(0) != JET_errSuccess) { return instance.getLastError(); } eseSession session; if (session.init(instance.id()) != JET_errSuccess) { return session.getLastError();; } eseDatabase db(session.id()); err = db.open("test2.edb"); if (err == JET_errDatabaseDuplicate ) { err = db.create("test2.edb"); } if (err != JET_errSuccess) { return err; } eseColumn* col0 = new eseColumn("PK", JET_coltypLong, JET_bitColumnAutoincrement); // will be destroyed by table's destructor eseColumn* col1 = new eseColumn("Value", JET_coltypText, 0, 1024, 1200); // will be destroyed by table's destructor eseIndex indexKey("PK_index", IndexKey("+PK"), JET_bitIndexPrimary); eseIndex indexValue("Value_index", IndexKey("+Value"), JET_bitIndexUnique); eseTable table(db.id(), session.id()); switch (err = table.open("TestTable")) { case JET_errSuccess: break; case JET_errObjectNotFound: // Table does not exists, open it err = table.create("TestTable", col0, col1, indexKey, indexValue); if (err != JET_errSuccess) return err; break; default: return err; } // Inserting Values wchar_t* stringsTolnsert[] = { L"FirstInsertedRow2", L"InSecondInsertedRow2", L"ThirdInsertedRow2", L"FourinsertedRow2", L"Fourinse" }; for (size_t n = 0; n != sizeof(stringsTolnsert) / sizeof(stringsTolnsert[0]); ++n) { err = table.insert(1, stringsTolnsert[n]); // insert to the second column (numbering starts from zero) } // List content of the table err = table.setCurrentIndex(indexValue); if (err != JET_errSuccess) return err; for (err = table.setCursor(JET_MoveFirst); JET_errSuccess == err; err = table.setCursor(JET_MoveNext)) { int nPK = 0; err = table.get_column(0, &nPK); if (JET_errSuccess != err) break; std::wcout << nPK; wchar_t buffer[1024] = { 0 }; err = table.get_column(1, buffer, 1024); std::wcout << L'\t' << buffer << std::endl; } if (JET_errNoCurrentRecord != err) return err; std::wcout << std::endl; // Search value in the table err = table.setCursor(JET_MoveFirst); // first movce to begining using the current index if (JET_errSuccess != err) return err; wchar_t bufferSearchCriteria[] = L"Fo"; // then set the search criteria err = ::JetMakeKey(session.id(), table.id(), &bufferSearchCriteria, sizeof(bufferSearchCriteria), JET_bitNewKey); if (JET_errSuccess != err) return err; for (err = ::JetSeek(session.id(), table.id(), JET_bitSeekGE); !(err < 0); err = table.setCursor(JET_MoveNext) ) { int nPK = 0; err = table.get_column(0, &nPK); if (JET_errSuccess != err) break; std::wcout << nPK; wchar_t buffer[1024] = { 0 }; err = table.get_column(1, buffer, 1024); std::wcout << L'\t' << buffer << std::endl; } if (JET_errNoCurrentRecord != err) return err; std::wcout << std::endl; // Another search in the table err = table.setCursor(JET_MoveFirst); if (JET_errSuccess != err) return err; err = ::JetMakeKey(session.id(), table.id(), &bufferSearchCriteria, sizeof(bufferSearchCriteria), JET_bitNewKey | JET_bitPartialColumnStartLimit); if (JET_errSuccess != err) return err; err = ::JetSeek(session.id(), table.id(), JET_bitSeekGE); if (err < 0) return err; err = ::JetMakeKey(session.id(), table.id(), &bufferSearchCriteria, sizeof(bufferSearchCriteria), JET_bitNewKey | JET_bitPartialColumnEndLimit); if (JET_errSuccess != err) return err; for (err = ::JetSetIndexRange(session.id(), table.id(), JET_bitRangeInclusive | JET_bitRangeUpperLimit); !(err < 0); table.setCursor(JET_MoveNext) ) { int nPK = 0; err = table.get_column(0, &nPK); if (JET_errSuccess != err) break; std::wcout << nPK; wchar_t buffer[1024] = { 0 }; err = table.get_column(1, buffer, 1024); std::wcout << L'\t' << buffer << std::endl; } return 0; }
int jb2() { JET_ERR err; eseInstance instance; if (instance.init(0) != JET_errSuccess) { return instance.getLastError(); } eseSession session; if (session.init(instance.id()) != JET_errSuccess) { return session.getLastError();; } eseDatabase db(session.id()); err = db.open("test2.edb"); if (err == JET_errDatabaseDuplicate) { err = db.create("test2.edb"); } if (err != JET_errSuccess) { return err; } // eseColumns will be destroyed by table's destructor eseColumn* col0 = new eseColumn("PK", JET_coltypLong, JET_bitColumnAutoincrement); eseColumn* col1 = new eseColumn("filename", JET_coltypText, 0, 1024); // include path eseColumn* col2 = new eseColumn("size", JET_coltypLongLong); eseColumn* col3 = new eseColumn("changedDate", JET_coltypDateTime); eseColumn* col4 = new eseColumn("status", JET_coltypLong); eseIndex indexKey("PK_index", IndexKey("+PK"), JET_bitIndexPrimary); eseIndex indexFileName("filename_index", IndexKey("+filename"), JET_bitIndexUnique); eseTable table(db.id(), session.id()); switch (err = table.open("FileSystemLog")) { case JET_errSuccess: break; case JET_errObjectNotFound: // Table does not exists, open it err = table.create("FileSystemLog", col0, col1, indexKey, indexFileName); table.create_column(col2); table.create_column(col3); table.create_column(col4); if (err != JET_errSuccess) return err; break; default: return err; } // Inserting Values wchar_t* stringsTolnsert[] = { L"FirstInsertedRow2", L"InSecondInsertedRow2", L"ThirdInsertedRow2", L"FourinsertedRow2", L"Fourinse" }; for (size_t n = 0; n != sizeof(stringsTolnsert) / sizeof(stringsTolnsert[0]); ++n) { err = table.insert(1, stringsTolnsert[n]); // insert to the second column (numbering starts from zero) } // List content of the table err = table.setCurrentIndex(indexFileName); if (err != JET_errSuccess) return err; for (err = table.setCursor(JET_MoveFirst); JET_errSuccess == err; err = table.setCursor(JET_MoveNext)) { int nPK = 0; err = table.get_column(0, &nPK); if (JET_errSuccess != err) break; std::wcout << nPK; wchar_t buffer[1024] = { 0 }; err = table.get_column(1, buffer, 1024); std::wcout << L'\t' << buffer << std::endl; } if (JET_errNoCurrentRecord != err) return err; std::wcout << std::endl; return 0; } /// jb2