Status EventSubscriberPlugin::add(Row& r, EventTime event_time) { std::shared_ptr<DBHandle> db = nullptr; try { db = DBHandle::getInstance(); } catch (const std::runtime_error& e) { return Status(1, e.what()); } // Get and increment the EID for this module. EventID eid = getEventID(); // Without encouraging a missing event time, do not support a 0-time. r["time"] = std::to_string((event_time == 0) ? getUnixTime() : event_time); // Serialize and store the row data, for query-time retrieval. std::string data; auto status = serializeRowJSON(r, data); if (!status.ok()) { return status; } // Store the event data. std::string event_key = "data." + dbNamespace() + "." + eid; status = db->Put(kEvents, event_key, data); // Record the event in the indexing bins, using the index time. recordEvent(eid, event_time); return status; }
Status EventSubscriberPlugin::add(Row& r, EventTime event_time) { // Get and increment the EID for this module. EventID eid = getEventID(); // Without encouraging a missing event time, do not support a 0-time. r["time"] = std::to_string((event_time == 0) ? getUnixTime() : event_time); // Serialize and store the row data, for query-time retrieval. std::string data; auto status = serializeRowJSON(r, data); if (!status.ok()) { return status; } // Then remove the newline. if (data.size() > 0 && data.back() == '\n') { data.pop_back(); } // Use the last EventID and a checkpoint bucket size to periodically apply // buffer eviction. Eviction occurs if the total count exceeds events_max. if (last_eid_ % EVENTS_CHECKPOINT == 0) { expireCheck(); } // Store the event data. std::string event_key = "data." + dbNamespace() + "." + eid; status = setDatabaseValue(kEvents, event_key, data); // Record the event in the indexing bins, using the index time. recordEvent(eid, event_time); return status; }
Status EventSubscriberPlugin::add(Row& r, EventTime event_time) { std::shared_ptr<DBHandle> db = nullptr; try { db = DBHandle::getInstance(); } catch (const std::runtime_error& e) { return Status(1, e.what()); } // Get and increment the EID for this module. EventID eid = getEventID(); // Without encouraging a missing event time, do not support a 0-time. r["time"] = std::to_string((event_time == 0) ? getUnixTime() : event_time); // Serialize and store the row data, for query-time retrieval. std::string data; auto status = serializeRowJSON(r, data); if (!status.ok()) { return status; } // Use the last EventID and a checkpoint bucket size to periodically apply // buffer eviction. Eviction occurs if the total count exceeds events_max. if (last_eid_ % EVENTS_CHECKPOINT == 0) { expireCheck(); } // Store the event data. std::string event_key = "data." + dbNamespace() + "." + eid; status = db->Put(kEvents, event_key, data); // Record the event in the indexing bins, using the index time. recordEvent(eid, event_time); return status; }
Status EventSubscriberPlugin::add(const Row& r, EventTime time) { Status status; std::shared_ptr<DBHandle> db; try { db = DBHandle::getInstance(); } catch (const std::runtime_error& e) { return Status(1, e.what()); } // Get and increment the EID for this module. EventID eid = getEventID(); std::string event_key = "data." + dbNamespace() + "." + eid; std::string data; status = serializeRowJSON(r, data); if (!status.ok()) { return status; } // Store the event data. status = db->Put(kEvents, event_key, data); // Record the event in the indexing bins. recordEvent(eid, time); return status; }
void EventEmitter::emitEvent(EventName evn) { EventID id = getEventID(evn); if(id == 0) return; EventHandler evh; try { evh = getEventHandler(id); } catch (int err) { //std::cout << "[EventEmitter]Warning " << err // << ": Unknown handler id " << id << std::endl; return; } evh(); }
bool LLEventNotification::handleResponse(const LLSD& notification, const LLSD& response) { S32 option = LLNotification::getSelectedOption(notification, response); switch (option) { case 0: gAgent.teleportViaLocation(getEventPosGlobal()); gFloaterWorldMap->trackLocation(getEventPosGlobal()); break; case 1: gDisplayEventHack = TRUE; LLFloaterDirectory::showEvents(getEventID()); break; case 2: break; } // We could clean up the notification on the server now if we really wanted to. return false; }
bool LLEventNotification::handleResponse(const LLSD& notification, const LLSD& response) { S32 option = LLNotificationsUtil::getSelectedOption(notification, response); switch (option) { case 0: { gAgent.teleportViaLocation(getEventPosGlobal()); LLFloaterWorldMap* floater_world_map = LLFloaterWorldMap::getInstance(); if(floater_world_map) floater_world_map->trackLocation(getEventPosGlobal()); break; } case 1: LLFloaterReg::showInstance("search", LLSD().with("category", "events").with("id", S32(getEventID()))); break; case 2: break; } // We could clean up the notification on the server now if we really wanted to. return false; }