aboutsummaryrefslogtreecommitdiff
path: root/lib/events/event.h
AgeCommit message (Collapse)Author
2018-11-19Improvements in commentsKitsune Ral
- registerEventType(): comment the cryptic _ variable - Room::postEvent: document the return value - Room::Private: upgrade comments to doc-comments - even though in Private, they still are helpful to show hints in IDEs. - General cleanup
2018-10-04events.h: #ifndef DISABLE_EVENTTYPE -> #ifdef ENABLE_EVENTTYPE_ALIASKitsune Ral
This turns off the legacy EventType namespace with event type aliases (EventType::RoomMessageEvent etc.). To still use it, pass - DENABLE_EVENTTYPE_ALIAS to the compiler.
2018-10-04Modernise and fix code dealing with call eventsKitsune Ral
Call events no more store deserialised values; instead they deserialise values on the fly, same as all other events. They are no more treated as state events (The Spec doesn't define them as state events in the first place). A common base class, CallEventBase, is introduced that defines data pieces common to all call events (call id and version).
2018-08-05eventCast: add an assertionKitsune Ral
2018-08-01Event: use Q_DISABLE_COPYKitsune Ral
2018-07-31RoomEvent: don't store transactionId separatelyKitsune Ral
It's present on the vast minority of events so better be embedded into JSON instead.
2018-07-27makeEvent<>: Add a doc commentKitsune Ral
[ci skip]
2018-07-27event.h: drop eventCast for references; other cleanupKitsune Ral
Omittable<> doesn't work with reference types and returning an unknown event spoils the experience. It's much simpler to just deal with event pointers instead.
2018-07-11Introduce DISABLE_EVENTTYPE flagKitsune Ral
If defined (value doesn't matter), it will suppress generation of deprecated EventType constants. Not defined by default, as of 0.4.
2018-07-11EventFactory::make() should return nullptr in case of failureKitsune Ral
Otherwise factory chaining doesn't work right (an unknown event returned by a chained factory is treated as successful parsing).
2018-07-11event.h: protect from readding factory methodsKitsune Ral
2018-07-11EventTypeRegistry::getMatrixType(): move implementation to .cppKitsune Ral
2018-07-09Add a missing #includeKitsune Ral
2018-07-09Fix legacy EventType values being incorrectly initialisedKitsune Ral
Static storage initialisation fiasco, as it is...
2018-07-08Use constexpr functions instead of variablesKitsune Ral
MSVC struggles with template variables...
2018-07-08visit<>(): drop the overload for pointer-like objectsKitsune Ral
It confuses compilers and adds a mostly unneeded null check; it's dead easy to just dereference a pointer before passing it to visit<>().
2018-07-08visit<>(): support catch-all visitors on the tailKitsune Ral
2018-07-08eventCast(): generalize to smart pointersKitsune Ral
2018-07-08eventCast<>()Kitsune Ral
2018-07-08Generalize weakPtrCast<>()Kitsune Ral
2018-07-07visit<>(): Add an overload accepting a default valueKitsune Ral
2018-07-07Reinstate EventTypeRegistry, keeping EventTypeTraits<> aroundKitsune Ral
You can now get a (much more readable) Matrix type (event_mtype_t) for the internal event type code (event_type_t) using EventTypeRegistry::getMatrixType().
2018-07-04Break down event.* into smaller filesKitsune Ral
We now have event.*, roomevent.*, stateevent.* and eventloader.h. If you only use event leaf-classes (such as RoomMemberEvent) you shouldn't notice anything.
2018-07-04Events: use a template structure instead of template variables; rearrange ↵Kitsune Ral
code into blocks A template member variable in it seemed to cause internal compiler error in MSVC 2017, let alone MSVC 2015...
2018-07-04Event types system remade to be extensibleKitsune Ral
There were two common points that had to be updated every time a new event is introduced: the EventType enumeration and one of 3 doMakeEvent<> specialisations. The new code has a template class, EventFactory<>, that uses a list of static factory methods to create events instead of typelists used in doMakeEvent<>(); the EventType enumeration is replaced with a namespace populated with constants as necessary. In general, EventType is considered a deprecated mechanism altogether; instead, a set of facilities is provided: is<>() to check if an event has a certain type (to replace comparison against an EventType value) and visit<>() to execute actions based on the event type (replacing switch statements over EventType values). Closes #129.
2018-07-01weakPtr -> weakPtrCastKitsune Ral
2018-06-11Event::toJson(): Return an empty object instead of UBKitsune Ral
2018-06-08csapi: Fix boolean query parameters incorrectly passedKitsune Ral
2018-05-03GetRoomEventsJob (replaces RoomMessagesJob) + refactoringKitsune Ral
1. Updates in this commit (see further) allow to generate and build GetRoomEventsJob from message_pagination.yaml; this job completely preempts RoomMessagesJob. 2. EventsBatch<> is no more a thing; there's EventsArray<> to replace it but it's loaded from a JSON array rather than an event batch (a JSON array inside another JSON object). SyncJob that used it extensively has been moved to "conventional" containers (Events, RoomEvents and the newly introduced StateEvents). RoomMessagesJob that also used EventsBatch<> is decommissioned (see above). 3. RoomEventsRange is now an alias for Range<RoomEvents>, defined in util.h (otherwise almost the same). 4. Connection::getMessages() is no more. Use Room::getPreviousContent() and Connection::callApi<GetRooMEventsJob>() instead. 5. Moving things around in Room, since SyncJob now supplies state events in more specific StateEvents, rather than RoomEvents.
2018-05-01Event and Room: further abstract event pointersKitsune Ral
So that eventual switch from std::unique_ptr to some other pointer (as a case - QSharedPointer) would be as painless as possible.
2018-05-01Event: cleanupKitsune Ral
2018-05-01Integrate converters with EventPtr partiallyKitsune Ral
So that events can be created from JSON in the same way as all other types.
2018-04-03More fixes from static analysisKitsune Ral
2018-03-31Move source files to a separate folderKitsune Ral
It's been long overdue to separate them from the rest of the stuff (docs etc.). Also, this allows installing to a directory within the checked out git tree (say, ./install/, similar to ./build/).