libQuotient
A Qt library for building matrix clients
Quotient Namespace Reference

Namespaces

 EventContent
 
 EventStatus
 
 FileMetadataMap
 
 LoginFlows
 Predefined login flows.
 

Classes

class  AccountRegistry
 
struct  ThirdPartyLocation
 
struct  JsonObjectConverter< ThirdPartyLocation >
 
struct  FieldType
 Definition of valid values for a field. More...
 
struct  JsonObjectConverter< FieldType >
 
struct  ProtocolInstance
 
struct  JsonObjectConverter< ProtocolInstance >
 
struct  ThirdPartyProtocol
 
struct  JsonObjectConverter< ThirdPartyProtocol >
 
struct  ThirdPartyUser
 
struct  JsonObjectConverter< ThirdPartyUser >
 
class  Avatar
 
class  Connection
 
class  ConnectionData
 
struct  JsonObjectConverter
 
struct  JsonObjectUnpacker
 
struct  JsonConverter
 The switchboard for extra conversion algorithms behind from/toJson. More...
 
struct  JsonConverter< QUrl >
 
struct  JsonConverter< QVariant >
 
struct  JsonConverter< std::variant< QString, T > >
 
struct  JsonConverter< std::optional< T > >
 
struct  JsonArrayConverter
 
struct  JsonConverter< std::vector< T > >
 
struct  JsonConverter< std::array< T, N > >
 
struct  JsonConverter< QList< T > >
 
struct  JsonConverter< QStringList >
 
struct  JsonObjectConverter< QSet< QString > >
 
struct  HashMapFromJson
 
struct  JsonObjectConverter< std::unordered_map< QString, T, HashT > >
 
struct  JsonObjectConverter< QHash< QString, T > >
 
class  SetAccountDataJob
 Set some account data for the user. More...
 
class  GetAccountDataJob
 Get some account data for the user. More...
 
class  SetAccountDataPerRoomJob
 Set some account data for the user that is specific to a room. More...
 
class  GetAccountDataPerRoomJob
 Get some account data for the user that is specific to a room. More...
 
class  GetWhoIsJob
 Gets information about a particular user. More...
 
struct  JsonObjectConverter< GetWhoIsJob::ConnectionInfo >
 
struct  JsonObjectConverter< GetWhoIsJob::SessionInfo >
 
struct  JsonObjectConverter< GetWhoIsJob::DeviceInfo >
 
class  GetAccount3PIDsJob
 Gets a list of a user's third-party identifiers. More...
 
struct  JsonObjectConverter< GetAccount3PIDsJob::ThirdPartyIdentifier >
 
class  Post3PIDsJob
 Adds contact information to the user's account. More...
 
struct  JsonObjectConverter< Post3PIDsJob::ThreePidCredentials >
 
class  Add3PIDJob
 Adds contact information to the user's account. More...
 
class  Bind3PIDJob
 Binds a 3PID to the user's account through an Identity Service. More...
 
class  Delete3pidFromAccountJob
 Deletes a third-party identifier from the user's account. More...
 
class  Unbind3pidFromAccountJob
 Removes a user's third-party identifier from an identity server. More...
 
class  RequestTokenTo3PIDEmailJob
 Begins the validation process for an email address for association with the user's account. More...
 
class  RequestTokenTo3PIDMSISDNJob
 Begins the validation process for a phone number for association with the user's account. More...
 
class  UpdateAppserviceRoomDirectoryVisibilityJob
 Updates a room's visibility in the application service's room directory. More...
 
class  GetContentAuthedJob
 Download content from the content repository. More...
 
class  GetContentOverrideNameAuthedJob
 Download content from the content repository overriding the file name. More...
 
class  GetContentThumbnailAuthedJob
 Download a thumbnail of content from the content repository. More...
 
class  GetUrlPreviewAuthedJob
 Get information about a URL for a client. More...
 
class  GetConfigAuthedJob
 Get the configuration for the content repository. More...
 
class  BanJob
 Ban a user in the room. More...
 
class  UnbanJob
 Unban a user from the room. More...
 
class  GetCapabilitiesJob
 Gets information about the server's capabilities. More...
 
struct  JsonObjectConverter< GetCapabilitiesJob::ChangePasswordCapability >
 
struct  JsonObjectConverter< GetCapabilitiesJob::RoomVersionsCapability >
 
struct  JsonObjectConverter< GetCapabilitiesJob::Capabilities >
 
class  UploadContentJob
 Upload some content to the content repository. More...
 
class  UploadContentToMXCJob
 Upload content to an mxc:// URI that was created earlier. More...
 
class  CreateContentJob
 Create a new mxc:// URI without uploading the content. More...
 
class  GetContentJob
 Download content from the content repository. More...
 
class  GetContentOverrideNameJob
 Download content from the content repository overriding the file name. More...
 
class  GetContentThumbnailJob
 Download a thumbnail of content from the content repository. More...
 
class  GetUrlPreviewJob
 Get information about a URL for a client. More...
 
class  GetConfigJob
 Get the configuration for the content repository. More...
 
class  CreateRoomJob
 Create a new room. More...
 
struct  JsonObjectConverter< CreateRoomJob::Invite3pid >
 
struct  JsonObjectConverter< CreateRoomJob::StateEvent >
 
class  UploadCrossSigningKeysJob
 Upload cross-signing keys. More...
 
class  UploadCrossSigningSignaturesJob
 Upload cross-signing signatures. More...
 
struct  AuthenticationData
 Used by clients to submit authentication information to the interactive-authentication API. More...
 
struct  JsonObjectConverter< AuthenticationData >
 
struct  Device
 A client device. More...
 
struct  JsonObjectConverter< Device >
 
struct  CrossSigningKey
 Cross signing key. More...
 
struct  JsonObjectConverter< CrossSigningKey >
 
struct  DeviceKeys
 Device identity keys. More...
 
struct  JsonObjectConverter< DeviceKeys >
 
struct  EventFilter
 
struct  JsonObjectConverter< EventFilter >
 
struct  KeyBackupData
 The key data. More...
 
struct  JsonObjectConverter< KeyBackupData >
 
struct  OpenIdCredentials
 
struct  JsonObjectConverter< OpenIdCredentials >
 
struct  PublicRoomsChunk
 
struct  JsonObjectConverter< PublicRoomsChunk >
 
struct  PushCondition
 
struct  JsonObjectConverter< PushCondition >
 
struct  PushRule
 
struct  JsonObjectConverter< PushRule >
 
struct  PushRuleset
 
struct  JsonObjectConverter< PushRuleset >
 
struct  EmailValidationData
 
struct  JsonObjectConverter< EmailValidationData >
 
struct  MsisdnValidationData
 
struct  JsonObjectConverter< MsisdnValidationData >
 
struct  RequestTokenResponse
 
struct  JsonObjectConverter< RequestTokenResponse >
 
struct  RoomEventFilter
 
struct  JsonObjectConverter< RoomEventFilter >
 
struct  RoomKeyBackup
 The backed up keys for a room. More...
 
struct  JsonObjectConverter< RoomKeyBackup >
 
struct  RoomFilter
 Filters to be applied to room data. More...
 
struct  JsonObjectConverter< RoomFilter >
 
struct  Filter
 
struct  JsonObjectConverter< Filter >
 
struct  Tag
 
struct  JsonObjectConverter< Tag >
 
struct  ThirdPartySigned
 
struct  JsonObjectConverter< ThirdPartySigned >
 
struct  UserIdentifier
 Identification information for a user. More...
 
struct  JsonObjectConverter< UserIdentifier >
 
struct  DiscoveryInformation
 
struct  JsonObjectConverter< DiscoveryInformation >
 
struct  HomeserverInformation
 Used by clients to discover homeserver information. More...
 
struct  JsonObjectConverter< HomeserverInformation >
 
struct  IdentityServerInformation
 Used by clients to discover identity server information. More...
 
struct  JsonObjectConverter< IdentityServerInformation >
 
class  GetDevicesJob
 List registered devices for the current user. More...
 
class  GetDeviceJob
 Get a single device. More...
 
class  UpdateDeviceJob
 Update a device. More...
 
class  DeleteDeviceJob
 Delete a device. More...
 
class  DeleteDevicesJob
 Bulk deletion of devices. More...
 
class  SetRoomAliasJob
 Create a new mapping from room alias to room ID. More...
 
class  GetRoomIdByAliasJob
 Get the room ID corresponding to this room alias. More...
 
class  DeleteRoomAliasJob
 Remove a mapping of room alias to room ID. More...
 
class  GetLocalAliasesJob
 Get a list of local aliases on a given room. More...
 
class  GetEventContextJob
 Get events and state around the specified event. More...
 
class  DefineFilterJob
 Upload a new filter. More...
 
class  GetFilterJob
 Download a filter. More...
 
class  InviteUserJob
 Invite a user to participate in a particular room. More...
 
class  JoinRoomByIdJob
 Start the requesting user participating in a particular room. More...
 
class  JoinRoomJob
 Start the requesting user participating in a particular room. More...
 
class  PostRoomKeysVersionJob
 Create a new backup. More...
 
class  GetRoomKeysVersionCurrentJob
 Get information about the latest backup version. More...
 
class  GetRoomKeysVersionJob
 Get information about an existing backup. More...
 
class  PutRoomKeysVersionJob
 Update information about an existing backup. More...
 
class  DeleteRoomKeysVersionJob
 Delete an existing key backup. More...
 
class  PutRoomKeyBySessionIdJob
 Store a key in the backup. More...
 
class  GetRoomKeyBySessionIdJob
 Retrieve a key from the backup. More...
 
class  DeleteRoomKeyBySessionIdJob
 Delete a key from the backup. More...
 
class  PutRoomKeysByRoomIdJob
 Store several keys in the backup for a given room. More...
 
class  GetRoomKeysByRoomIdJob
 Retrieve the keys from the backup for a given room. More...
 
class  DeleteRoomKeysByRoomIdJob
 Delete the keys from the backup for a given room. More...
 
class  PutRoomKeysJob
 Store several keys in the backup. More...
 
class  GetRoomKeysJob
 Retrieve the keys from the backup. More...
 
class  DeleteRoomKeysJob
 Delete the keys from the backup. More...
 
class  UploadKeysJob
 Upload end-to-end encryption keys. More...
 
class  QueryKeysJob
 Download device identity keys. More...
 
struct  JsonObjectConverter< QueryKeysJob::UnsignedDeviceInfo >
 
struct  JsonObjectConverter< QueryKeysJob::DeviceInformation >
 
class  ClaimKeysJob
 Claim one-time encryption keys. More...
 
class  GetKeysChangesJob
 Query users with recent device key updates. More...
 
class  KickJob
 Kick a user from the room. More...
 
class  KnockRoomJob
 Knock on a room, requesting permission to join. More...
 
class  LeaveRoomJob
 Stop the requesting user participating in a particular room. More...
 
class  ForgetRoomJob
 Stop the requesting user remembering about a particular room. More...
 
class  GetJoinedRoomsJob
 Lists the user's current rooms. More...
 
class  GetRoomVisibilityOnDirectoryJob
 Gets the visibility of a room in the directory. More...
 
class  SetRoomVisibilityOnDirectoryJob
 Sets the visibility of a room in the room directory. More...
 
class  GetPublicRoomsJob
 Lists the public rooms on the server. More...
 
class  QueryPublicRoomsJob
 Lists the public rooms on the server with optional filter. More...
 
struct  JsonObjectConverter< QueryPublicRoomsJob::Filter >
 
class  GetLoginFlowsJob
 Get the supported login types to authenticate users. More...
 
struct  JsonObjectConverter< GetLoginFlowsJob::LoginFlow >
 
class  LoginJob
 Authenticates the user. More...
 
class  GenerateLoginTokenJob
 Optional endpoint to generate a single-use, time-limited, m.login.token token. More...
 
class  LogoutJob
 Invalidates a user access token. More...
 
class  LogoutAllJob
 Invalidates all access tokens for a user. More...
 
class  GetRoomEventsJob
 Get a list of events for this room. More...
 
class  GetNotificationsJob
 Gets a list of events that the user has been notified about. More...
 
struct  JsonObjectConverter< GetNotificationsJob::Notification >
 
class  RequestOpenIdTokenJob
 Get an OpenID token object to verify the requester's identity. More...
 
class  PeekEventsJob
 Listen on the event stream of a particular room. More...
 
class  SetPresenceJob
 Update this user's presence state. More...
 
class  GetPresenceJob
 Get this user's presence state. More...
 
class  SetDisplayNameJob
 Set the user's display name. More...
 
class  GetDisplayNameJob
 Get the user's display name. More...
 
class  SetAvatarUrlJob
 Set the user's avatar URL. More...
 
class  GetAvatarUrlJob
 Get the user's avatar URL. More...
 
class  GetUserProfileJob
 Get this user's profile information. More...
 
class  GetPushersJob
 Gets the current pushers for the authenticated user. More...
 
struct  JsonObjectConverter< GetPushersJob::PusherData >
 
struct  JsonObjectConverter< GetPushersJob::Pusher >
 
class  PostPusherJob
 Modify a pusher for this user on the homeserver. More...
 
struct  JsonObjectConverter< PostPusherJob::PusherData >
 
class  GetPushRulesJob
 Retrieve all push rulesets. More...
 
class  GetPushRuleJob
 Retrieve a push rule. More...
 
class  DeletePushRuleJob
 Delete a push rule. More...
 
class  SetPushRuleJob
 Add or change a push rule. More...
 
class  IsPushRuleEnabledJob
 Get whether a push rule is enabled. More...
 
class  SetPushRuleEnabledJob
 Enable or disable a push rule. More...
 
class  GetPushRuleActionsJob
 The actions for a push rule. More...
 
class  SetPushRuleActionsJob
 Set the actions for a push rule. More...
 
class  SetReadMarkerJob
 Set the position of the read marker for a room. More...
 
class  PostReceiptJob
 Send a receipt for the given event ID. More...
 
class  RedactEventJob
 Strips all non-integrity-critical information out of an event. More...
 
class  RefreshJob
 Refresh an access token. More...
 
class  RegisterJob
 Register for an account on this homeserver. More...
 
class  RequestTokenToRegisterEmailJob
 Begins the validation process for an email to be used during registration. More...
 
class  RequestTokenToRegisterMSISDNJob
 Requests a validation token be sent to the given phone number for the purpose of registering an account. More...
 
class  ChangePasswordJob
 Changes a user's password. More...
 
class  RequestTokenToResetPasswordEmailJob
 Requests a validation token be sent to the given email address for the purpose of resetting a user's password. More...
 
class  RequestTokenToResetPasswordMSISDNJob
 Requests a validation token be sent to the given phone number for the purpose of resetting a user's password. More...
 
class  DeactivateAccountJob
 Deactivate a user's account. More...
 
class  CheckUsernameAvailabilityJob
 Checks to see if a username is available on the server. More...
 
class  RegistrationTokenValidityJob
 Query if a given registration token is still valid. More...
 
class  GetRelatingEventsJob
 Get the child events for a given parent event. More...
 
class  GetRelatingEventsWithRelTypeJob
 Get the child events for a given parent event, with a given relType. More...
 
class  GetRelatingEventsWithRelTypeAndEventTypeJob
 Get the child events for a given parent event, with a given relType and eventType. More...
 
class  ReportContentJob
 Report an event in a joined room as inappropriate. More...
 
class  GetEventByTimestampJob
 Get the closest event ID to the given timestamp. More...
 
class  SendMessageJob
 Send a message event to the given room. More...
 
class  SetRoomStateWithKeyJob
 Send a state event to the given room. More...
 
class  UpgradeRoomJob
 Upgrades a room to a new room version. More...
 
class  GetOneRoomEventJob
 Get a single event by event ID. More...
 
class  GetRoomStateWithKeyJob
 Get the state identified by the type and key. More...
 
class  GetRoomStateJob
 Get all state events in the current state of a room. More...
 
class  GetMembersByRoomJob
 Get the m.room.member events for the room. More...
 
class  GetJoinedMembersByRoomJob
 Gets the list of currently joined users and their profile data. More...
 
struct  JsonObjectConverter< GetJoinedMembersByRoomJob::RoomMember >
 
class  SearchJob
 Perform a server-side search. More...
 
struct  JsonObjectConverter< SearchJob::IncludeEventContext >
 
struct  JsonObjectConverter< SearchJob::Group >
 
struct  JsonObjectConverter< SearchJob::Groupings >
 
struct  JsonObjectConverter< SearchJob::RoomEventsCriteria >
 
struct  JsonObjectConverter< SearchJob::Categories >
 
struct  JsonObjectConverter< SearchJob::UserProfile >
 
struct  JsonObjectConverter< SearchJob::EventContext >
 
struct  JsonObjectConverter< SearchJob::Result >
 
struct  JsonObjectConverter< SearchJob::GroupValue >
 
struct  JsonObjectConverter< SearchJob::ResultRoomEvents >
 
struct  JsonObjectConverter< SearchJob::ResultCategories >
 
class  GetSpaceHierarchyJob
 Retrieve a portion of a space tree. More...
 
struct  JsonObjectConverter< GetSpaceHierarchyJob::SpaceHierarchyRoomsChunk >
 
class  RedirectToSSOJob
 Redirect the user's browser to the SSO interface. More...
 
class  RedirectToIdPJob
 Redirect the user's browser to the SSO interface for an IdP. More...
 
class  GetWellknownSupportJob
 Gets homeserver contacts and support details. More...
 
struct  JsonObjectConverter< GetWellknownSupportJob::Contact >
 
class  GetRoomTagsJob
 List the tags for a room. More...
 
class  SetRoomTagJob
 Add a tag to a room. More...
 
class  DeleteRoomTagJob
 Remove a tag from the room. More...
 
class  GetProtocolsJob
 Retrieve metadata about all protocols that a homeserver supports. More...
 
class  GetProtocolMetadataJob
 Retrieve metadata about a specific protocol that the homeserver supports. More...
 
class  QueryLocationByProtocolJob
 Retrieve Matrix-side portals rooms leading to a third-party location. More...
 
class  QueryUserByProtocolJob
 Retrieve the Matrix User ID of a corresponding third-party user. More...
 
class  QueryLocationByAliasJob
 Reverse-lookup third-party locations given a Matrix room alias. More...
 
class  QueryUserByIDJob
 Reverse-lookup third-party users given a Matrix User ID. More...
 
class  InviteBy3PIDJob
 Invite a user to participate in a particular room. More...
 
class  GetThreadRootsJob
 Fetches a list of the threads in a room. More...
 
class  SendToDeviceJob
 Send an event to a given set of devices. More...
 
class  SetTypingJob
 Informs the server that the user has started or stopped typing. More...
 
class  SearchUserDirectoryJob
 Searches the user directory. More...
 
struct  JsonObjectConverter< SearchUserDirectoryJob::User >
 
class  GetVersionsJob
 Gets the versions of the specification supported by the server. More...
 
class  GetTurnServerJob
 Obtain TURN server credentials. More...
 
class  GetWellknownJob
 Gets Matrix server discovery information about the domain. More...
 
class  GetTokenOwnerJob
 Gets information about the owner of an access token. More...
 
class  Database
 
struct  HkdfKeys
 
struct  Curve25519Encrypted
 
class  FixedBufferBase
 Non-template base for owning byte span classes. More...
 
class  FixedBuffer
 
class  PicklingKey
 
struct  IdentityKeys
 
struct  UnsignedOneTimeKeys
 Struct representing the one-time keys. More...
 
class  SignedOneTimeKey
 
class  QOlmAccount
 
class  QOlmInboundGroupSession
 
class  QOlmMessage
 A wrapper around an olm encrypted message. More...
 
class  QOlmOutboundGroupSession
 
class  QOlmSession
 Either an outbound or inbound session for secure communication. More...
 
class  QOlmUtility
 
class  SSSSHandler
 
class  EventItemBase
 
class  TimelineItem
 
class  PendingEventItem
 
class  CallEvent
 
class  EventTemplate< EventT, CallEvent >
 
class  EventTemplate< EventT, CallEvent, ContentT >
 
class  CallInviteEvent
 
class  CallHangupEvent
 
class  DirectChatEvent
 
class  EncryptedEvent
 
class  DummyEvent
 
class  EncryptionEventContent
 
class  EncryptionEvent
 
class  AbstractEventMetaType
 The base class for event metatypes. More...
 
class  EventMetaType
 A family of event meta-types to load and match events. More...
 
struct  JsonConverter< event_ptr_tt< EventT > >
 
class  Event
 
class  EventTemplate
 A template base class to derive your event type from. More...
 
struct  EventRelation
 
struct  JsonObjectConverter< EventRelation >
 
struct  JWK
 
struct  EncryptedFileMetadata
 
struct  JsonObjectConverter< EncryptedFileMetadata >
 
struct  JsonObjectConverter< JWK >
 
class  KeyVerificationEvent
 
class  KeyVerificationRequestEvent
 Requests a key verification with another user's devices. More...
 
class  KeyVerificationReadyEvent
 
class  KeyVerificationStartEvent
 Begins a key verification process. More...
 
class  KeyVerificationAcceptEvent
 Accepts a previously sent m.key.verification.start message. More...
 
class  KeyVerificationCancelEvent
 
class  KeyVerificationKeyEvent
 Sends the ephemeral public key for a device to the partner device. More...
 
class  KeyVerificationMacEvent
 Sends the MAC of a device's key to the partner device. More...
 
class  KeyVerificationDoneEvent
 
class  ReactionEvent
 
struct  UserTimestamp
 
struct  ReceiptsForEvent
 
class  ReceiptEvent
 
class  RedactionEvent
 
class  RoomAvatarEvent
 
class  RoomCanonicalAliasEvent
 
class  RoomCreateEvent
 
class  RoomEvent
 
class  RoomKeyEvent
 
class  MemberEventContent
 
class  RoomMemberEvent
 
class  RoomMessageEvent
 
struct  PowerLevelsEventContent
 
class  RoomPowerLevelsEvent
 
class  RoomTombstoneEvent
 
class  RoomServerAclEvent
 
struct  JsonConverter< EventContent::SingleKeyValue< ValueT, KeyStr > >
 
class  StateEvent
 
class  EventTemplate< EventT, StateEvent, ContentT >
 
class  KeyedStateEventBase
 
class  KeylessStateEventBase
 
class  StickerEvent
 
struct  EventStats
 Counters of unread events and highlights with a precision flag. More...
 
struct  function_traits
 Determine traits of an arbitrary function/lambda/functor. More...
 
struct  function_traits< ReturnT(ArgTs...)>
 
class  BaseJob
 
class  Mocked
 
class  DownloadFileJob
 
class  JobHandle
 A job pointer and a QFuture in a single package. More...
 
class  MediaThumbnailJob
 
class  RequestData
 
class  SyncJob
 
class  KeyImport
 
struct  EmojiEntry
 
class  KeyVerificationSession
 
class  MxcReply
 
class  NetworkAccessManager
 
class  NetworkSettings
 
class  ConnectionsGuard
 A guard pointer that disconnects an interested object upon destruction. More...
 
class  FileTransferInfo
 
class  ReadReceipt
 Data structure for a room member's read receipt. More...
 
struct  Notification
 
class  Room
 
class  RoomMember
 
struct  MemberSorter
 
class  RoomStateView
 
class  Settings
 
class  SettingsGroup
 
class  AccountSettings
 
class  SsoSession
 
struct  RoomSummary
 Room summary, as defined in MSC688. More...
 
struct  JsonObjectConverter< RoomSummary >
 
struct  DevicesList
 
struct  JsonObjectConverter< DevicesList >
 
class  SyncRoomData
 
class  SyncData
 
class  Uri
 A wrapper around a Matrix URI or identifier. More...
 
class  UriResolverBase
 Abstract class to resolve the resource and act on it. More...
 
class  UriDispatcher
 Resolve the resource and invoke an action on it, via Qt signals. More...
 
class  User
 
struct  HashQ
 This is only to make UnorderedMap alias work until we get rid of it. More...
 
class  Range
 
class  asKeyValueRange
 An adaptor for Qt (hash-)maps to make them iterable in STL style. More...
 
struct  CStructDeleter
 
struct  Overloads
 Multiplex several functors in one. More...
 
struct  HomeserverData
 

Typedefs

using LoginFlow = GetLoginFlowsJob::LoginFlow
 
using room_factory_t = std::function< Room *(Connection *, const QString &, JoinState)>
 
using user_factory_t = std::function< User *(Connection *, const QString &)>
 
using DirectChatsMap = QMultiHash< const User *, QString >
 
using IgnoredUsersList = IgnoredUsersEvent::value_type
 
using SslErrorCode = unsigned long
 
template<size_t Size = DefaultPbkdf2KeyLength>
using key_material_t = std::array< byte_t, Size >
 
using key_view_t = byte_view_t< DefaultPbkdf2KeyLength >
 
template<typename T >
using SslExpected = Expected< T, SslErrorCode >
 Same as QOlmExpected but for wrapping OpenSSL instead of Olm calls. More...
 
template<typename T >
using QOlmExpected = Expected< T, OlmErrorCode >
 
using byte_t = uint8_t
 
template<size_t N = std::dynamic_extent>
using byte_view_t = std::span< const byte_t, N >
 
template<size_t N = std::dynamic_extent>
using byte_span_t = std::span< byte_t, N >
 
using OneTimeKeys = QHash< QString, std::variant< QString, SignedOneTimeKey > >
 
using QOlmInboundGroupSessionPtr = std::unique_ptr< QOlmInboundGroupSession >
 
using TagRecord = Tag
 
using TagsMap = QHash< QString, Tag >
 
template<typename EventT >
using event_ptr_tt = std::unique_ptr< EventT >
 
using event_type_t = QLatin1String
 
using EventPtr = event_ptr_tt< Event >
 
template<EventClass EventT>
using EventsArray = std::vector< event_ptr_tt< EventT > >
 
using Events = EventsArray< Event >
 
using FileSourceInfo = std::variant< QUrl, EncryptedFileMetadata >
 
using EventsWithReceipts = QVector< ReceiptsForEvent >
 
using RoomEventPtr = event_ptr_tt< RoomEvent >
 
using RoomEvents = EventsArray< RoomEvent >
 
using RoomEventsRange = std::ranges::subrange< RoomEvents::iterator >
 
using MessageEventType = RoomMessageEvent::MsgType
 
using StateEventPtr = event_ptr_tt< StateEvent >
 
using StateEvents = EventsArray< StateEvent >
 
using StateEventKey = std::pair< QString, QString >
 
template<typename FnT , int ArgN = 0>
using fn_arg_t = std::tuple_element_t< ArgN, typename function_traits< FnT >::arg_types >
 
template<typename T >
using Omittable = std::optional< T >
 
template<std::indirectly_readable IterT, std::indirectly_regular_unary_invocable< std::iter_reference_t< IterT >> Proj>
using IndirectlyProjected = std::projected< std::iter_reference_t< IterT >, Proj >
 Same as std::projected but Proj is checked against the reference under the iterator. More...
 
using SyncDataList = std::vector< SyncRoomData >
 
template<typename KeyT , typename ValT >
using UnorderedMap = std::unordered_map< KeyT, ValT, HashQ< KeyT > >
 A wrapper around std::unordered_map compatible with types that have qHash. More...
 
template<typename ImplType , typename TypeToDelete = ImplType>
using ImplPtr = std::unique_ptr< ImplType, void(*)(TypeToDelete *)>
 An owning implementation pointer. More...
 
template<typename T >
using CStructPtr = std::unique_ptr< T, CStructDeleter< T > >
 An owning pointer to a C structure. More...
 
using UserId = QString
 
using RoomId = QString
 
using EventId = QString
 

Enumerations

enum  SslErrorCodes : SslErrorCode { SslErrorUserOffset = 128 , WrongDerivedKeyLength = SslErrorUserOffset + 1 , SslPayloadTooLong = SslErrorUserOffset + 2 }
 
enum class  HttpVerb { Get , Put , Post , Delete }
 
enum class  Membership : uint16_t {
  Invalid = 0x0 , Join = 0x1 , Leave = 0x2 , Invite = 0x4 ,
  Knock = 0x8 , Ban = 0x10 , Undefined = Invalid
}
 Membership states. More...
 
enum class  JoinState : std::underlying_type_t< Membership > {
  Invalid = std::underlying_type_t<Membership>(Membership::Invalid) , Join = std::underlying_type_t<Membership>(Membership::Join) , Leave = std::underlying_type_t<Membership>(Membership::Leave) , Invite = std::underlying_type_t<Membership>(Membership::Invite) ,
  Knock = std::underlying_type_t<Membership>(Membership::Knock)
}
 Local user join-state names. More...
 
enum  RunningPolicy { ForegroundRequest = 0x0 , BackgroundRequest = 0x1 }
 Network job running policy flags. More...
 
enum  UriResolveResult : int8_t {
  StillResolving = -1 , UriResolved = 0 , CouldNotResolve , IncorrectAction ,
  InvalidUri , NoAccount
}
 The result of URI resolution using UriResolver. More...
 
enum class  RoomType : uint8_t { Space = 0 , Undefined = 0xFF }
 
enum class  EncryptionType : uint8_t { MegolmV1AesSha2 = 0 , Undefined = 0xFF }
 

Functions

bool operator== (const LoginFlow &lhs, const LoginFlow &rhs)
 
bool operator!= (const LoginFlow &lhs, const LoginFlow &rhs)
 
template<typename T = Room>
auto defaultRoomFactory (Connection *c, const QString &id, JoinState js)
 The default factory to create room objects. More...
 
template<typename T = User>
auto defaultUserFactory (Connection *c, const QString &id)
 The default factory to create user objects. More...
 
void editSubobject (QJsonObject &json, auto key, std::invocable< QJsonObject & > auto visitor)
 
void replaceSubvalue (QJsonObject &json, auto topLevelKey, auto subKey, QJsonValue subValue)
 
template<typename PodT , typename JsonT >
PodT fromJson (const JsonT &)
 
template<typename T >
auto toJson (const T &pod)
 
template<typename T >
void fillJson (QJsonObject &json, const T &data)
 
template<typename JsonT , typename PodT >
void fromJson (const JsonT &json, PodT &pod)
 
template<typename T >
void fillFromJson (const QJsonValue &jv, T &pod)
 
template<typename EnumT , typename EnumStringValuesT >
EnumT enumFromJsonString (const QString &s, const EnumStringValuesT &enumValues, EnumT defaultValue)
 Facility string-to-enum converter. More...
 
template<typename EnumT , typename EnumStringValuesT >
QString enumToJsonString (EnumT v, const EnumStringValuesT &enumValues)
 Facility enum-to-string converter. More...
 
template<typename FlagT , typename FlagStringValuesT >
FlagT flagFromJsonString (const QString &s, const FlagStringValuesT &flagValues, FlagT defaultValue=FlagT(0U))
 Facility converter for flags. More...
 
template<typename FlagT , typename FlagStringValuesT >
QString flagToJsonString (FlagT v, const FlagStringValuesT &flagValues)
 
template<>
bool fromJson (const QJsonValue &jv)
 
template<>
QJsonArray fromJson (const QJsonDocument &jd)
 
QJsonValue toJson (const QDateTime &val)
 
QJsonValue toJson (const QDate &val)
 
template<typename... Ts>
QJsonValue toJson (const std::variant< Ts... > &v)
 
QJsonObject QUOTIENT_API toJson (const QVariantHash &vh)
 
template<bool Force = true, typename ContT , typename ValT >
void addParam (ContT &container, const QString &key, ValT &&value)
 
auto toSnakeCase (QLatin1String s)
 
auto collectResponse (const GetAccountDataJob *job)
 
auto collectResponse (const GetAccountDataPerRoomJob *job)
 
auto collectResponse (const GetAccount3PIDsJob *job)
 
QT_WARNING_PUSH QT_WARNING_DISABLE_DEPRECATED auto collectResponse (const Post3PIDsJob *job)
 
auto collectResponse (const Delete3pidFromAccountJob *job)
 
auto collectResponse (const Unbind3pidFromAccountJob *job)
 
auto collectResponse (const RequestTokenTo3PIDEmailJob *job)
 
auto collectResponse (const RequestTokenTo3PIDMSISDNJob *job)
 
auto collectResponse (const GetConfigAuthedJob *job)
 
auto collectResponse (const GetCapabilitiesJob *job)
 
auto collectResponse (const UploadContentJob *job)
 
QT_WARNING_PUSH QT_WARNING_DISABLE_DEPRECATED auto collectResponse (const GetConfigJob *job)
 
auto collectResponse (const CreateRoomJob *job)
 
auto collectResponse (const UploadCrossSigningSignaturesJob *job)
 
auto collectResponse (const GetDevicesJob *job)
 
auto collectResponse (const GetDeviceJob *job)
 
auto collectResponse (const GetLocalAliasesJob *job)
 
auto collectResponse (const DefineFilterJob *job)
 
auto collectResponse (const GetFilterJob *job)
 
auto collectResponse (const JoinRoomByIdJob *job)
 
auto collectResponse (const JoinRoomJob *job)
 
auto collectResponse (const PostRoomKeysVersionJob *job)
 
auto collectResponse (const GetRoomKeyBySessionIdJob *job)
 
auto collectResponse (const GetRoomKeysByRoomIdJob *job)
 
auto collectResponse (const GetRoomKeysJob *job)
 
auto collectResponse (const UploadKeysJob *job)
 
auto collectResponse (const KnockRoomJob *job)
 
auto collectResponse (const GetJoinedRoomsJob *job)
 
auto collectResponse (const GetRoomVisibilityOnDirectoryJob *job)
 
auto collectResponse (const GetLoginFlowsJob *job)
 
auto collectResponse (const RequestOpenIdTokenJob *job)
 
auto collectResponse (const GetDisplayNameJob *job)
 
auto collectResponse (const GetAvatarUrlJob *job)
 
auto collectResponse (const GetPushersJob *job)
 
auto collectResponse (const GetPushRulesJob *job)
 
auto collectResponse (const GetPushRuleJob *job)
 
auto collectResponse (const IsPushRuleEnabledJob *job)
 
auto collectResponse (const GetPushRuleActionsJob *job)
 
auto collectResponse (const RedactEventJob *job)
 
auto collectResponse (const RequestTokenToRegisterEmailJob *job)
 
auto collectResponse (const RequestTokenToRegisterMSISDNJob *job)
 
auto collectResponse (const RequestTokenToResetPasswordEmailJob *job)
 
auto collectResponse (const RequestTokenToResetPasswordMSISDNJob *job)
 
auto collectResponse (const DeactivateAccountJob *job)
 
auto collectResponse (const CheckUsernameAvailabilityJob *job)
 
auto collectResponse (const RegistrationTokenValidityJob *job)
 
auto collectResponse (const SendMessageJob *job)
 
auto collectResponse (const SetRoomStateWithKeyJob *job)
 
auto collectResponse (const UpgradeRoomJob *job)
 
auto collectResponse (GetOneRoomEventJob *job)
 
auto collectResponse (const GetRoomStateWithKeyJob *job)
 
auto collectResponse (GetRoomStateJob *job)
 
auto collectResponse (GetMembersByRoomJob *job)
 
auto collectResponse (const GetJoinedMembersByRoomJob *job)
 
auto collectResponse (const SearchJob *job)
 
auto collectResponse (const GetRoomTagsJob *job)
 
auto collectResponse (const GetProtocolsJob *job)
 
auto collectResponse (const GetProtocolMetadataJob *job)
 
auto collectResponse (const QueryLocationByProtocolJob *job)
 
auto collectResponse (const QueryUserByProtocolJob *job)
 
auto collectResponse (const QueryLocationByAliasJob *job)
 
auto collectResponse (const QueryUserByIDJob *job)
 
auto collectResponse (const GetTurnServerJob *job)
 
auto collectResponse (const GetWellknownJob *job)
 
QByteArray zeroedByteArray (QByteArray::size_type n=32)
 
template<size_t N, typename T = uint8_t>
consteval std::array< T, N > zeroes ()
 
template<size_t Size = DefaultPbkdf2KeyLength>
QUOTIENT_API SslExpected< key_material_t< Size > > pbkdf2HmacSha512 (const QByteArray &passphrase, const QByteArray &salt, int iterations)
 Generate a key out of the given passphrase. More...
 
QUOTIENT_API SslExpected< HkdfKeyshkdfSha256 (key_view_t key, byte_view_t< 32 > salt, byte_view_t<> info)
 Derive a key from the input data using HKDF-SHA256. More...
 
QUOTIENT_API SslExpected< QByteArray > hmacSha256 (byte_view_t< HmacKeySize > hmacKey, const QByteArray &data)
 Calculate a MAC from the given key and data. More...
 
QUOTIENT_API QOlmExpected< QByteArray > curve25519AesSha2Decrypt (QByteArray ciphertext, const QByteArray &privateKey, const QByteArray &ephemeral, const QByteArray &mac)
 Decrypt the data using Curve25519-AES-Sha256. More...
 
QUOTIENT_API QOlmExpected< Curve25519Encryptedcurve25519AesSha2Encrypt (const QByteArray &plaintext, const QByteArray &publicKey)
 Encrypt the data using Curve25519-AES-Sha256. More...
 
QUOTIENT_API SslExpected< QByteArray > aesCtr256Encrypt (const QByteArray &plaintext, byte_view_t< Aes256KeySize > key, byte_view_t< AesBlockSize > iv)
 Encrypt data using AES-CTR-256. More...
 
QUOTIENT_API SslExpected< QByteArray > aesCtr256Decrypt (const QByteArray &ciphertext, byte_view_t< Aes256KeySize > key, byte_view_t< AesBlockSize > iv)
 Decrypt data using AES-CTR-256. More...
 
QUOTIENT_API std::vector< byte_tbase58Decode (const QByteArray &encoded)
 
QUOTIENT_API QByteArray sign (const QByteArray &key, const QByteArray &data)
 
bool isSupportedAlgorithm (const QString &algorithm)
 
QUOTIENT_API QByteArray byteArrayForOlm (size_t bufferSize)
 Initialise a buffer object for use with Olm calls. More...
 
size_t unsignedSize (const auto &buffer) requires(sizeof(std
 Get a size of a container coerced to size_t. More...
 
template<size_t N = std::dynamic_extent>
auto asCBytes (const auto &buf)
 Obtain a std::span<const byte_t, N> looking into the passed buffer. More...
 
template<size_t N = std::dynamic_extent>
auto asWritableCBytes (auto &buf)
 Obtain a std::span<byte_t, N> looking into the passed buffer. More...
 
auto viewAsByteArray (const auto &aRange) -> auto requires(sizeof(*aRange.data())==sizeof(char))
 
auto getRandom (size_t bytes)
 
template<size_t SizeN>
auto getRandom ()
 
QUOTIENT_API void fillFromSecureRng (std::span< byte_t > bytes)
 Fill the buffer with the securely generated random bytes. More...
 
QUOTIENT_API bool verifyIdentitySignature (const DeviceKeys &deviceKeys, const QString &deviceId, const QString &userId)
 
QUOTIENT_API bool ed25519VerifySignature (const QString &signingKey, const QJsonObject &obj, const QString &signature)
 checks if the signature is signed by the signing_key More...
 
QDebug & operator<< (QDebug &d, const TimelineItem &ti)
 
std::partial_ordering operator<=> (const Tag &lhs, const Tag &rhs)
 
 DEFINE_SIMPLE_EVENT (ReadMarkerEvent, Event, "m.fully_read", QString, eventId, "event_id") DEFINE_SIMPLE_EVENT(IgnoredUsersEvent
 
template<EventClass EventT>
bool is (const Event &e)
 
bool operator== (const AbstractEventMetaType &lhs, const AbstractEventMetaType &rhs)
 
template<EventClass EventT, typename... ArgTs>
event_ptr_tt< EventT > makeEvent (ArgTs &&... args)
 Create an event of arbitrary type from its arguments. More...
 
template<EventClass EventT>
constexpr const auto & mostSpecificMetaType ()
 
template<EventClass EventT>
event_ptr_tt< EventT > loadEvent (const QJsonObject &fullJson)
 Create an event with proper type from a JSON object. More...
 
template<EventClass EventT>
event_ptr_tt< EventT > loadEvent (const QString &matrixType, const auto &... otherBasicJsonParams)
 Create an event from a type string and content JSON. More...
 
template<EventClass EventT, typename BasePtrT >
auto eventCast (const BasePtrT &eptr) -> decltype(static_cast< EventT * >(std::to_address(eptr)))
 Cast the event pointer down in a type-safe way. More...
 
template<EventClass EventT, typename BaseEventT >
auto eventCast (event_ptr_tt< BaseEventT > &&eptr)
 Cast the event pointer down in a type-safe way, with moving. More...
 
template<EventClass BaseT, typename TailT >
auto switchOnType (const BaseT &event, TailT &&tail)
 
template<typename FnT1 , typename... FnTs>
auto switchOnType (const EventClass auto &event, FnT1 &&fn1, FnTs &&... fns)
 
QUOTIENT_API std::pair< EncryptedFileMetadata, QByteArray > encryptFile (const QByteArray &plainText)
 
QUOTIENT_API QByteArray decryptFile (const QByteArray &ciphertext, const EncryptedFileMetadata &metadata)
 
QUOTIENT_API QUrl getUrlFromSourceInfo (const FileSourceInfo &fsi)
 
QUOTIENT_API void setUrlInSourceInfo (FileSourceInfo &fsi, const QUrl &newUrl)
 
template<>
void fillJson (QJsonObject &, const FileSourceInfo &)=delete
 
QUOTIENT_API void fillJson (QJsonObject &jo, const std::array< QLatin1String, 2 > &jsonKeys, const FileSourceInfo &fsi)
 Export FileSourceInfo to a JSON object. More...
 
template<>
QUOTIENT_API EventsWithReceipts fromJson (const QJsonObject &json)
 
QUOTIENT_API QJsonObject toJson (const EventsWithReceipts &ewrs)
 
template<>
auto toJson (const EventContent::AliasesEventContent &c)
 
 DEFINE_SIMPLE_STATE_EVENT (RoomTopicEvent, "m.room.topic", QString, topic, "topic") DEFINE_SIMPLE_STATE_EVENT(RoomPinnedEventsEvent
 
QUOTIENT_API QDebug operator<< (QDebug dbg, const EventStats &es)
 
template<typename T , typename E >
 requires (!std::is_same_v< T, E >) class Expected
 A minimal subset of std::expected from C++23. More...
 
bool QUOTIENT_API isJobPending (BaseJob *job)
 
template<std::derived_from< BaseJob > JobT>
auto collectResponse (JobT *job) requires requires
 Get a job response in a single structure. More...
 
template<std::derived_from< BaseJob > JobT>
 JobHandle (JobT *) -> JobHandle< JobT >
 
auto collectResponse (const MediaThumbnailJob *j)
 
template<typename SmartSlotT >
auto connectUntil (auto *sender, auto signal, QObject *context, SmartSlotT &&smartSlot, Qt::ConnectionType connType=Qt::AutoConnection)
 Create a connection that self-disconnects when its slot returns true. More...
 
template<typename ContextT , typename SlotT >
auto connectSingleShot (auto *sender, auto signal, ContextT *context, SlotT slot, Qt::ConnectionType connType=Qt::AutoConnection)
 Create a connection that self-disconnects after triggering on the signal. More...
 
template<std::input_iterator IterT, typename ValT , typename Proj = std::identity>
requires constexpr std::indirect_binary_predicate< std::ranges::equal_to, IndirectlyProjected< IterT, Proj >, const ValT * > auto findIndirect (IterT from, IterT to, const ValT &value, Proj proj={})
 Find a value in a container of (smart) pointers. More...
 
template<typename RangeT , typename ValT , typename Proj = std::identity>
requires constexpr std::indirect_binary_predicate< std::ranges::equal_to, IndirectlyProjected< std::ranges::iterator_t< RangeT >, Proj >, const ValT * > auto findIndirect (RangeT &&range, const ValT &value, Proj proj={})
 The overload of findIndirect for ranges. More...
 
void swap (ReadReceipt &lhs, ReadReceipt &rhs)
 
template<template< class > class ContT>
ContT< RoomMember >::size_type lowerBoundMemberIndex (const ContT< RoomMember > &c, const auto &v, MemberSorter ms={})
 
template<template< class > class ContT>
ContT< QString >::size_type lowerBoundMemberIndex (const ContT< QString > &c, const auto &v, const Room *r, MemberSorter ms={})
 
auto memberMatcher (auto substr, Qt::CaseSensitivity cs=Qt::CaseSensitive)
 A factory to get a functional object matching room members against a substring. More...
 
QUOTIENT_API QDebug operator<< (QDebug dbg, const RoomSummary &rs)
 
QDebug operator<< (QDebug dhg, const DevicesList &devicesList)
 
QUOTIENT_API UriResolveResult visitResource (Connection *account, const Uri &uri, std::function< UriResolveResult(User *, QString)> userHandler, std::function< void(Room *, QString)> roomEventHandler, std::function< void(Connection *, QString, QStringList)> joinHandler, std::function< bool(const QUrl &)> nonMatrixHandler)
 Resolve the resource and invoke an action on it, via function objects. More...
 
UriResolveResult checkResource (Connection *account, const Uri &uri)
 Check that the resource is resolvable with no action on it. More...
 
bool alarmX (bool alarmCondition, const auto &msg, [[maybe_unused]] std::source_location loc=std::source_location::current())
 
constexpr auto operator""_ls (const char *s, std::size_t size)
 
 QT_IGNORE_DEPRECATIONS (template< typename U > asKeyValueRange(U &) -> asKeyValueRange< U & >;template< typename U > asKeyValueRange(U &&) -> asKeyValueRange< U >;) template< typename InputIt
 
Pred std::pair< InputIt, ForwardItfindFirstOf (InputIt first, InputIt last, ForwardIt sFirst, ForwardIt sLast, Pred pred)
 
template<typename ImplType , typename TypeToDelete = ImplType, typename... ArgTs>
ImplPtr< ImplType, TypeToDelete > makeImpl (ArgTs &&... args)
 make_unique for ImplPtr More...
 
template<typename ImplType , typename TypeToDelete = ImplType>
ImplPtr< ImplType, TypeToDelete > acquireImpl (ImplType *from)
 
template<typename ImplType , typename TypeToDelete = ImplType>
constexpr ImplPtr< ImplType, TypeToDelete > ZeroImpl ()
 
template<typename T >
auto makeCStruct (T *(*constructor)(void *), size_t(*sizeFn)(), auto destructor)
 Create a C structure with pre-programmed deletion logic. More...
 
template<typename... FunctorTs>
 Overloads (FunctorTs &&...) -> Overloads< FunctorTs... >
 
QUOTIENT_API void linkifyUrls (QString &htmlEscapedText)
 
QUOTIENT_API QString sanitized (const QString &plainText)
 
QUOTIENT_API QString prettyPrint (const QString &plainText)
 
QUOTIENT_API QString cacheLocation (const QString &dirName)
 
QUOTIENT_API qreal stringToHueF (const QString &s)
 
QUOTIENT_API QString serverPart (const QString &mxId)
 
QUOTIENT_API QString versionString ()
 
QUOTIENT_API int majorVersion ()
 
QUOTIENT_API int minorVersion ()
 
QUOTIENT_API int patchVersion ()
 
QDebug formatJson (QDebug dbg)
 QDebug manipulator to setup the stream for JSON output. More...
 
QDebug terse (QDebug dbg)
 Suppress full qualification of enums/QFlags when logging. More...
 
template<typename FnT >
auto lift (FnT &&fn, auto &&... args)
 Lift an operation into dereferenceable types (std::optional or pointers) More...
 
template<typename T1 , typename T2 >
requires constexpr std::is_assignable_v< T1 &, const T2 & > bool merge (T1 &lhs, const std::optional< T2 > &rhs)
 Merge the value from an optional. More...
 
template<typename StructT >
constexpr size_t mergeStruct (StructT &lhs, const StructT &rhs, const auto... fields)
 Merge structure-like types. More...
 
QUOTIENT_API bool isGuestUserId (const UserId &uId)
 

Variables

constexpr bool IfNotEmpty = false
 
template<std::derived_from< GetWhoIsJob > JobT>
constexpr auto doCollectResponse< JobT >
 
constexpr auto DefaultPbkdf2KeyLength = 32u
 
constexpr auto Aes256KeySize = 32u
 
constexpr auto AesBlockSize = 16u
 
constexpr auto HmacKeySize = 32u
 
constexpr auto AlgorithmKeyL = "algorithm"_ls
 
constexpr auto RotationPeriodMsKeyL = "rotation_period_ms"_ls
 
constexpr auto RotationPeriodMsgsKeyL = "rotation_period_msgs"_ls
 
constexpr auto AlgorithmKey = "algorithm"_ls
 
constexpr auto RotationPeriodMsKey = "rotation_period_ms"_ls
 
constexpr auto RotationPeriodMsgsKey = "rotation_period_msgs"_ls
 
constexpr auto Ed25519Key = "ed25519"_ls
 
constexpr auto Curve25519Key = "curve25519"_ls
 
constexpr auto SignedCurve25519Key = "signed_curve25519"_ls
 
constexpr auto OlmV1Curve25519AesSha2AlgoKey = "m.olm.v1.curve25519-aes-sha2"_ls
 
constexpr auto MegolmV1AesSha2AlgoKey = "m.megolm.v1.aes-sha2"_ls
 
constexpr std::array SupportedAlgorithms
 
constexpr auto FavouriteTag = "m.favourite"_ls
 
constexpr auto LowPriorityTag = "m.lowpriority"_ls
 
constexpr auto ServerNoticeTag = "m.server_notice"_ls
 
 Event
 
ignored_user_list
 
QSet< QString >
 
ignoredUsers
 
constexpr auto CiphertextKey = "ciphertext"_ls
 
constexpr auto SenderKeyKey = "sender_key"_ls
 
constexpr auto DeviceIdKey = "device_id"_ls
 
constexpr auto SessionIdKey = "session_id"_ls
 
constexpr auto TypeKey = "type"_ls
 
constexpr auto BodyKey = "body"_ls
 
constexpr auto ContentKey = "content"_ls
 
constexpr auto SenderKey = "sender"_ls
 
template<typename EventT , typename BaseEventT = Event>
concept EventClass = std::derived_from<EventT, BaseEventT>
 
constexpr auto RelTypeKey = "rel_type"_ls
 
constexpr auto SasV1Method = "m.sas.v1"_ls
 
constexpr auto HmacSha256Code = "hkdf-hmac-sha256"_ls
 
constexpr auto HmacSha256V2Code = "hkdf-hmac-sha256.v2"_ls
 
constexpr std::array SupportedMacs { HmacSha256Code, HmacSha256V2Code }
 
constexpr auto EventIdKey = "event_id"_ls
 
constexpr auto RoomIdKey = "room_id"_ls
 
constexpr auto StateKeyKey = "state_key"_ls
 
constexpr auto RedactedCauseKey = "redacted_because"_ls
 
constexpr auto RelatesToKey = "m.relates_to"_ls
 
constexpr auto UnsignedKey = "unsigned"_ls
 
m room pinned_events
 
m room QStringList
 
m room pinnedEvents
 
constexpr auto PrevContentKey = "prev_content"_ls
 
template<typename EvT >
concept Keyed_State_Event = EvT::needsStateKey
 
template<typename EvT >
concept Keyless_State_Event = !EvT::needsStateKey
 
template<typename FnT >
constexpr auto fn_arg_count_v
 
template<typename JobT >
constexpr auto doCollectResponse = nullptr
 
template<typename FnT , typename JobT >
concept BoundResultHandler
 
template<typename FnT , typename JobT >
concept ResultHandler = BoundResultHandler<FnT, JobT> || std::is_member_function_pointer_v<FnT>
 
constexpr auto none = std::nullopt
 
constexpr std::array MembershipStrings
 
constexpr std::array JoinStateStrings
 
constexpr std::array RoomTypeStrings { "m.space"_ls }
 
template<typename FnT , class EvT = std::decay_t<fn_arg_t<FnT>>>
concept Keyed_State_Fn = EvT::needsStateKey
 
template<typename FnT , class EvT = std::decay_t<fn_arg_t<FnT>>>
concept Keyless_State_Fn = !EvT::needsStateKey
 
constexpr auto UnreadNotificationsKey = "unread_notifications"_ls
 
constexpr auto PartiallyReadCountKey = "x-quotient.since_fully_read_count"_ls
 
constexpr auto NewUnreadCountKey = "org.matrix.msc2654.unread_count"_ls
 
constexpr auto HighlightCountKey = "highlight_count"_ls
 
 ForwardIt
 
constexpr qint64 ProfilerMinNsecs
 

Typedef Documentation

◆ byte_span_t

template<size_t N = std::dynamic_extent>
using Quotient::byte_span_t = typedef std::span<byte_t, N>

Definition at line 95 of file e2ee_common.h.

◆ byte_t

using Quotient::byte_t = typedef uint8_t

Definition at line 89 of file e2ee_common.h.

◆ byte_view_t

template<size_t N = std::dynamic_extent>
using Quotient::byte_view_t = typedef std::span<const byte_t, N>

Definition at line 92 of file e2ee_common.h.

◆ CStructPtr

template<typename T >
using Quotient::CStructPtr = typedef std::unique_ptr<T, CStructDeleter<T> >

An owning pointer to a C structure.

This is intented to ease lifecycle management of Olm structures.

See also
makeCStruct

Definition at line 270 of file util.h.

◆ DirectChatsMap

using Quotient::DirectChatsMap = typedef QMultiHash<const User*, QString>

Definition at line 111 of file connection.h.

◆ event_ptr_tt

template<typename EventT >
using Quotient::event_ptr_tt = typedef std::unique_ptr<EventT>

Definition at line 14 of file event.h.

◆ event_type_t

using Quotient::event_type_t = typedef QLatin1String

Definition at line 23 of file event.h.

◆ EventId

using Quotient::EventId = typedef QString

Definition at line 443 of file util.h.

◆ EventPtr

Definition at line 347 of file event.h.

◆ Events

Definition at line 351 of file event.h.

◆ EventsArray

template<EventClass EventT>
using Quotient::EventsArray = typedef std::vector<event_ptr_tt<EventT> >

Definition at line 350 of file event.h.

◆ EventsWithReceipts

Definition at line 20 of file receiptevent.h.

◆ FileSourceInfo

using Quotient::FileSourceInfo = typedef std::variant<QUrl, EncryptedFileMetadata>

Definition at line 70 of file filesourceinfo.h.

◆ fn_arg_t

template<typename FnT , int ArgN = 0>
using Quotient::fn_arg_t = typedef std::tuple_element_t<ArgN, typename function_traits<FnT>::arg_types>

Definition at line 86 of file function_traits.h.

◆ IgnoredUsersList

using Quotient::IgnoredUsersList = typedef IgnoredUsersEvent::value_type

Definition at line 112 of file connection.h.

◆ ImplPtr

template<typename ImplType , typename TypeToDelete = ImplType>
using Quotient::ImplPtr = typedef std::unique_ptr<ImplType, void (*)(TypeToDelete*)>

An owning implementation pointer.

This is basically std::unique_ptr<> to hold your pimpl's but without having to define default constructors/operator=() out of line. Thanks to https://oliora.github.io/2015/12/29/pimpl-and-rule-of-zero.html for inspiration

Definition at line 211 of file util.h.

◆ IndirectlyProjected

template<std::indirectly_readable IterT, std::indirectly_regular_unary_invocable< std::iter_reference_t< IterT >> Proj>
using Quotient::IndirectlyProjected = typedef std::projected<std::iter_reference_t<IterT>, Proj>

Same as std::projected but Proj is checked against the reference under the iterator.

Definition at line 10 of file ranges_extras.h.

◆ key_material_t

template<size_t Size = DefaultPbkdf2KeyLength>
using Quotient::key_material_t = typedef std::array<byte_t, Size>

Definition at line 44 of file cryptoutils.h.

◆ key_view_t

Definition at line 45 of file cryptoutils.h.

◆ LoginFlow

Definition at line 60 of file connection.h.

◆ MessageEventType

Definition at line 101 of file roommessageevent.h.

◆ Omittable

template<typename T >
using Quotient::Omittable = typedef std::optional<T>

Definition at line 13 of file omittable.h.

◆ OneTimeKeys

using Quotient::OneTimeKeys = typedef QHash<QString, std::variant<QString, SignedOneTimeKey> >

Definition at line 363 of file e2ee_common.h.

◆ QOlmExpected

template<typename T >
using Quotient::QOlmExpected = typedef Expected<T, OlmErrorCode>

Definition at line 64 of file e2ee_common.h.

◆ QOlmInboundGroupSessionPtr

Definition at line 60 of file qolminboundsession.h.

◆ room_factory_t

using Quotient::room_factory_t = typedef std::function<Room*(Connection*, const QString&, JoinState)>

Definition at line 83 of file connection.h.

◆ RoomEventPtr

Definition at line 77 of file roomevent.h.

◆ RoomEvents

Definition at line 78 of file roomevent.h.

◆ RoomEventsRange

using Quotient::RoomEventsRange = typedef std::ranges::subrange<RoomEvents::iterator>

Definition at line 79 of file roomevent.h.

◆ RoomId

using Quotient::RoomId = typedef QString

Definition at line 442 of file util.h.

◆ SslErrorCode

using Quotient::SslErrorCode = typedef unsigned long

Definition at line 41 of file cryptoutils.h.

◆ SslExpected

template<typename T >
using Quotient::SslExpected = typedef Expected<T, SslErrorCode>

Same as QOlmExpected but for wrapping OpenSSL instead of Olm calls.

Definition at line 55 of file cryptoutils.h.

◆ StateEventKey

using Quotient::StateEventKey = typedef std::pair<QString, QString>

A combination of event type and state key uniquely identifies a piece of state in Matrix.

See also
https://matrix.org/docs/spec/client_server/unstable.html#types-of-room-events

Definition at line 58 of file stateevent.h.

◆ StateEventPtr

Definition at line 49 of file stateevent.h.

◆ StateEvents

Definition at line 50 of file stateevent.h.

◆ SyncDataList

using Quotient::SyncDataList = typedef std::vector<SyncRoomData>

Definition at line 81 of file syncdata.h.

◆ TagRecord

using Quotient::TagRecord = typedef Tag

Definition at line 15 of file accountdataevents.h.

◆ TagsMap

using Quotient::TagsMap = typedef QHash<QString, Tag>

Definition at line 27 of file accountdataevents.h.

◆ UnorderedMap

template<typename KeyT , typename ValT >
using Quotient::UnorderedMap = typedef std::unordered_map<KeyT, ValT, HashQ<KeyT> >

A wrapper around std::unordered_map compatible with types that have qHash.

Definition at line 98 of file util.h.

◆ user_factory_t

using Quotient::user_factory_t = typedef std::function<User*(Connection*, const QString&)>

Definition at line 85 of file connection.h.

◆ UserId

using Quotient::UserId = typedef QString

Definition at line 441 of file util.h.

Enumeration Type Documentation

◆ EncryptionType

enum Quotient::EncryptionType : uint8_t
strong
Enumerator
MegolmV1AesSha2 
Undefined 

Definition at line 119 of file quotient_common.h.

◆ HttpVerb

enum Quotient::HttpVerb
strong
Enumerator
Get 
Put 
Post 
Delete 

Definition at line 24 of file basejob.h.

◆ JoinState

enum Quotient::JoinState : std::underlying_type_t< Membership >
strong

Local user join-state names.

This represents a subset of Membership values that may arrive as the local user's state grouping for the sync response.

See also
SyncData
Enumerator
Invalid 
Join 
Leave 
Invite 
Knock 

Definition at line 78 of file quotient_common.h.

◆ Membership

enum Quotient::Membership : uint16_t
strong

Membership states.

These are used for member events. The names here are case-insensitively equal to state names used on the wire.

See also
MemberEventContent, RoomMemberEvent
Enumerator
Invalid 
Join 
Leave 
Invite 
Knock 
Ban 
Undefined 

Definition at line 55 of file quotient_common.h.

◆ RoomType

enum Quotient::RoomType : uint8_t
strong
Enumerator
Space 
Undefined 

Definition at line 111 of file quotient_common.h.

◆ RunningPolicy

Network job running policy flags.

So far only background/foreground flags are available.

See also
Connection::callApi, Connection::run
Enumerator
ForegroundRequest 
BackgroundRequest 

Definition at line 96 of file quotient_common.h.

◆ SslErrorCodes

Enumerator
SslErrorUserOffset 
WrongDerivedKeyLength 
SslPayloadTooLong 

Definition at line 47 of file cryptoutils.h.

◆ UriResolveResult

The result of URI resolution using UriResolver.

See also
UriResolver
Enumerator
StillResolving 
UriResolved 
CouldNotResolve 
IncorrectAction 
InvalidUri 
NoAccount 

Definition at line 101 of file quotient_common.h.

Function Documentation

◆ acquireImpl()

template<typename ImplType , typename TypeToDelete = ImplType>
ImplPtr<ImplType, TypeToDelete> Quotient::acquireImpl ( ImplType *  from)
inline

Definition at line 241 of file util.h.

◆ addParam()

template<bool Force = true, typename ContT , typename ValT >
void Quotient::addParam ( ContT &  container,
const QString &  key,
ValT &&  value 
)
inline

Add a key-value pair to QJsonObject or QUrlQuery

Adds a key-value pair(s) specified by key and value to container, optionally (in case IfNotEmpty is passed for the first template parameter) taking into account the value "emptiness". With IfNotEmpty, value is NOT added to the container if and only if:

  • it has a method isEmpty() and value.isEmpty() == true, or
  • it's an optional that has no value (nullopt).

If container is a QUrlQuery, an attempt to fit value into it is made as follows:

  • if value is a QJsonObject, key is ignored and pairs from value are copied to container, assuming that the value in each pair is a string;
  • if value is a QStringList, it is "exploded" into a list of key-value pairs with key equal to key and value taken from each list item;
  • if value is a bool, its OpenAPI (i.e. JSON) representation is added to the query (true or false, respectively).
Template Parameters
Forceadd the pair even if the value is empty. This is true by default; passing IfNotEmpty or false for this parameter enables emptiness checks as described above

Definition at line 554 of file converters.h.

◆ aesCtr256Decrypt()

QUOTIENT_API SslExpected<QByteArray> Quotient::aesCtr256Decrypt ( const QByteArray &  ciphertext,
byte_view_t< Aes256KeySize key,
byte_view_t< AesBlockSize iv 
)

Decrypt data using AES-CTR-256.

key and iv have a length of 32 bytes

◆ aesCtr256Encrypt()

QUOTIENT_API SslExpected<QByteArray> Quotient::aesCtr256Encrypt ( const QByteArray &  plaintext,
byte_view_t< Aes256KeySize key,
byte_view_t< AesBlockSize iv 
)

Encrypt data using AES-CTR-256.

key and iv have a length of 32 bytes

◆ alarmX()

bool Quotient::alarmX ( bool  alarmCondition,
const auto &  msg,
[[maybe_unused] ] std::source_location  loc = std::source_location::current() 
)
inline

Definition at line 63 of file util.h.

◆ asCBytes()

template<size_t N = std::dynamic_extent>
auto Quotient::asCBytes ( const auto &  buf)
inline

Obtain a std::span<const byte_t, N> looking into the passed buffer.

This function returns an adaptor object that is suitable for OpenSSL/Olm invocations (via std::span<>::data() accessor) so that you don't have to wrap your containers into reinterpret/bit_casts on every OpenSSL call.

Note
The caller is responsible for making sure that bytes.size() is small enough to fit into an int (OpenSSL only handles int sizes atm) but also large enough to have at least N bytes if N is not std::dynamic_extent
See also
asWritableCBytes for the case when you need to pass a buffer for writing

Definition at line 124 of file e2ee_common.h.

◆ asWritableCBytes()

template<size_t N = std::dynamic_extent>
auto Quotient::asWritableCBytes ( auto &  buf)
inline

Obtain a std::span<byte_t, N> looking into the passed buffer.

Definition at line 131 of file e2ee_common.h.

◆ base58Decode()

QUOTIENT_API std::vector<byte_t> Quotient::base58Decode ( const QByteArray &  encoded)

◆ byteArrayForOlm()

QUOTIENT_API QByteArray Quotient::byteArrayForOlm ( size_t  bufferSize)

Initialise a buffer object for use with Olm calls.

Qt and Olm use different size types; this causes the warning noise

◆ cacheLocation()

QUOTIENT_API QString Quotient::cacheLocation ( const QString &  dirName)

Return a path to cache directory after making sure that it exists

The returned path has a trailing slash, clients don't need to append it.

Parameters
dirNamepath to cache directory relative to the standard cache path

◆ checkResource()

UriResolveResult Quotient::checkResource ( Connection account,
const Uri uri 
)
inline

Check that the resource is resolvable with no action on it.

Definition at line 116 of file uriresolver.h.

◆ collectResponse() [1/66]

auto Quotient::collectResponse ( const CheckUsernameAvailabilityJob job)
inline

Definition at line 425 of file registration.h.

◆ collectResponse() [2/66]

auto Quotient::collectResponse ( const CreateRoomJob job)
inline

Definition at line 183 of file create_room.h.

◆ collectResponse() [3/66]

auto Quotient::collectResponse ( const DeactivateAccountJob job)
inline

Definition at line 387 of file registration.h.

◆ collectResponse() [4/66]

auto Quotient::collectResponse ( const DefineFilterJob job)
inline

Definition at line 35 of file filter.h.

◆ collectResponse() [5/66]

auto Quotient::collectResponse ( const Delete3pidFromAccountJob job)
inline

Definition at line 240 of file administrative_contact.h.

◆ collectResponse() [6/66]

auto Quotient::collectResponse ( const GetAccount3PIDsJob job)
inline

Definition at line 62 of file administrative_contact.h.

◆ collectResponse() [7/66]

auto Quotient::collectResponse ( const GetAccountDataJob job)
inline

Definition at line 59 of file account-data.h.

◆ collectResponse() [8/66]

auto Quotient::collectResponse ( const GetAccountDataPerRoomJob job)
inline

Definition at line 117 of file account-data.h.

◆ collectResponse() [9/66]

auto Quotient::collectResponse ( const GetAvatarUrlJob job)
inline

Definition at line 85 of file profile.h.

◆ collectResponse() [10/66]

auto Quotient::collectResponse ( const GetCapabilitiesJob job)
inline

Definition at line 61 of file capabilities.h.

◆ collectResponse() [11/66]

auto Quotient::collectResponse ( const GetConfigAuthedJob job)
inline

Definition at line 286 of file authed-content-repo.h.

◆ collectResponse() [12/66]

QT_WARNING_PUSH QT_WARNING_DISABLE_DEPRECATED auto Quotient::collectResponse ( const GetConfigJob job)
inline

Definition at line 452 of file content-repo.h.

◆ collectResponse() [13/66]

auto Quotient::collectResponse ( const GetDeviceJob job)
inline

Definition at line 54 of file device_management.h.

◆ collectResponse() [14/66]

auto Quotient::collectResponse ( const GetDevicesJob job)
inline

Definition at line 31 of file device_management.h.

◆ collectResponse() [15/66]

auto Quotient::collectResponse ( const GetDisplayNameJob job)
inline

Definition at line 46 of file profile.h.

◆ collectResponse() [16/66]

auto Quotient::collectResponse ( const GetFilterJob job)
inline

Definition at line 60 of file filter.h.

◆ collectResponse() [17/66]

auto Quotient::collectResponse ( const GetJoinedMembersByRoomJob job)
inline

Definition at line 178 of file rooms.h.

◆ collectResponse() [18/66]

auto Quotient::collectResponse ( const GetJoinedRoomsJob job)
inline

Definition at line 28 of file list_joined_rooms.h.

◆ collectResponse() [19/66]

auto Quotient::collectResponse ( const GetLocalAliasesJob job)
inline

Definition at line 125 of file directory.h.

◆ collectResponse() [20/66]

auto Quotient::collectResponse ( const GetLoginFlowsJob job)
inline

Definition at line 50 of file login.h.

◆ collectResponse() [21/66]

auto Quotient::collectResponse ( const GetProtocolMetadataJob job)
inline

Definition at line 60 of file third_party_lookup.h.

◆ collectResponse() [22/66]

auto Quotient::collectResponse ( const GetProtocolsJob job)
inline

Definition at line 37 of file third_party_lookup.h.

◆ collectResponse() [23/66]

auto Quotient::collectResponse ( const GetPushersJob job)
inline

Definition at line 79 of file pusher.h.

◆ collectResponse() [24/66]

auto Quotient::collectResponse ( const GetPushRuleActionsJob job)
inline

Definition at line 228 of file pushrules.h.

◆ collectResponse() [25/66]

auto Quotient::collectResponse ( const GetPushRuleJob job)
inline

Definition at line 66 of file pushrules.h.

◆ collectResponse() [26/66]

auto Quotient::collectResponse ( const GetPushRulesJob job)
inline

Definition at line 35 of file pushrules.h.

◆ collectResponse() [27/66]

auto Quotient::collectResponse ( const GetRoomKeyBySessionIdJob job)
inline

Definition at line 285 of file key_backup.h.

◆ collectResponse() [28/66]

auto Quotient::collectResponse ( const GetRoomKeysByRoomIdJob job)
inline

Definition at line 398 of file key_backup.h.

◆ collectResponse() [29/66]

auto Quotient::collectResponse ( const GetRoomKeysJob job)
inline

Definition at line 501 of file key_backup.h.

◆ collectResponse() [30/66]

auto Quotient::collectResponse ( const GetRoomStateWithKeyJob job)
inline

Definition at line 72 of file rooms.h.

◆ collectResponse() [31/66]

auto Quotient::collectResponse ( const GetRoomTagsJob job)
inline

Definition at line 36 of file tags.h.

◆ collectResponse() [32/66]

auto Quotient::collectResponse ( const GetRoomVisibilityOnDirectoryJob job)
inline

Definition at line 32 of file list_public_rooms.h.

◆ collectResponse() [33/66]

auto Quotient::collectResponse ( const GetTurnServerJob job)
inline

Definition at line 29 of file voip.h.

◆ collectResponse() [34/66]

auto Quotient::collectResponse ( const GetWellknownJob job)
inline

Definition at line 37 of file wellknown.h.

◆ collectResponse() [35/66]

auto Quotient::collectResponse ( const IsPushRuleEnabledJob job)
inline

Definition at line 177 of file pushrules.h.

◆ collectResponse() [36/66]

auto Quotient::collectResponse ( const JoinRoomByIdJob job)
inline

Definition at line 47 of file joining.h.

◆ collectResponse() [37/66]

auto Quotient::collectResponse ( const JoinRoomJob job)
inline

Definition at line 88 of file joining.h.

◆ collectResponse() [38/66]

auto Quotient::collectResponse ( const KnockRoomJob job)
inline

Definition at line 47 of file knocking.h.

◆ collectResponse() [39/66]

auto Quotient::collectResponse ( const MediaThumbnailJob j)
inline

Definition at line 39 of file mediathumbnailjob.h.

◆ collectResponse() [40/66]

QT_WARNING_PUSH QT_WARNING_DISABLE_DEPRECATED auto Quotient::collectResponse ( const Post3PIDsJob job)
inline

Definition at line 134 of file administrative_contact.h.

◆ collectResponse() [41/66]

auto Quotient::collectResponse ( const PostRoomKeysVersionJob job)
inline

Definition at line 32 of file key_backup.h.

◆ collectResponse() [42/66]

auto Quotient::collectResponse ( const QueryLocationByAliasJob job)
inline

Definition at line 154 of file third_party_lookup.h.

◆ collectResponse() [43/66]

auto Quotient::collectResponse ( const QueryLocationByProtocolJob job)
inline

Definition at line 98 of file third_party_lookup.h.

◆ collectResponse() [44/66]

auto Quotient::collectResponse ( const QueryUserByIDJob job)
inline

Definition at line 177 of file third_party_lookup.h.

◆ collectResponse() [45/66]

auto Quotient::collectResponse ( const QueryUserByProtocolJob job)
inline

Definition at line 127 of file third_party_lookup.h.

◆ collectResponse() [46/66]

auto Quotient::collectResponse ( const RedactEventJob job)
inline

Definition at line 46 of file redaction.h.

◆ collectResponse() [47/66]

auto Quotient::collectResponse ( const RegistrationTokenValidityJob job)
inline

Definition at line 37 of file registration_tokens.h.

◆ collectResponse() [48/66]

auto Quotient::collectResponse ( const RequestOpenIdTokenJob job)
inline

Definition at line 42 of file openid.h.

◆ collectResponse() [49/66]

auto Quotient::collectResponse ( const RequestTokenTo3PIDEmailJob job)
inline

Definition at line 311 of file administrative_contact.h.

◆ collectResponse() [50/66]

auto Quotient::collectResponse ( const RequestTokenTo3PIDMSISDNJob job)
inline

Definition at line 334 of file administrative_contact.h.

◆ collectResponse() [51/66]

auto Quotient::collectResponse ( const RequestTokenToRegisterEmailJob job)
inline

Definition at line 197 of file registration.h.

◆ collectResponse() [52/66]

auto Quotient::collectResponse ( const RequestTokenToRegisterMSISDNJob job)
inline

Definition at line 218 of file registration.h.

◆ collectResponse() [53/66]

auto Quotient::collectResponse ( const RequestTokenToResetPasswordEmailJob job)
inline

Definition at line 281 of file registration.h.

◆ collectResponse() [54/66]

auto Quotient::collectResponse ( const RequestTokenToResetPasswordMSISDNJob job)
inline

Definition at line 314 of file registration.h.

◆ collectResponse() [55/66]

auto Quotient::collectResponse ( const SearchJob job)
inline

Definition at line 201 of file search.h.

◆ collectResponse() [56/66]

auto Quotient::collectResponse ( const SendMessageJob job)
inline

Definition at line 40 of file room_send.h.

◆ collectResponse() [57/66]

auto Quotient::collectResponse ( const SetRoomStateWithKeyJob job)
inline

Definition at line 49 of file room_state.h.

◆ collectResponse() [58/66]

auto Quotient::collectResponse ( const Unbind3pidFromAccountJob job)
inline

Definition at line 282 of file administrative_contact.h.

◆ collectResponse() [59/66]

auto Quotient::collectResponse ( const UpgradeRoomJob job)
inline

Definition at line 27 of file room_upgrades.h.

◆ collectResponse() [60/66]

auto Quotient::collectResponse ( const UploadContentJob job)
inline

Definition at line 30 of file content-repo.h.

◆ collectResponse() [61/66]

auto Quotient::collectResponse ( const UploadCrossSigningSignaturesJob job)
inline

Definition at line 84 of file cross_signing.h.

◆ collectResponse() [62/66]

auto Quotient::collectResponse ( const UploadKeysJob job)
inline

Definition at line 61 of file keys.h.

◆ collectResponse() [63/66]

auto Quotient::collectResponse ( GetMembersByRoomJob job)
inline

Definition at line 136 of file rooms.h.

◆ collectResponse() [64/66]

auto Quotient::collectResponse ( GetOneRoomEventJob job)
inline

Definition at line 37 of file rooms.h.

◆ collectResponse() [65/66]

auto Quotient::collectResponse ( GetRoomStateJob job)
inline

Definition at line 95 of file rooms.h.

◆ collectResponse() [66/66]

template<std::derived_from< BaseJob > JobT>
auto Quotient::collectResponse ( JobT *  job)
inline

Get a job response in a single structure.

Use this to get all parts of the job response in a single C++ type, defined by the job class. It can be either an aggregate of individual response parts returned by job accessors, or, if the response is already singular, a type of this response. The default implementation caters to generated jobs, where the code has to be generic enough to work with copyable and movable-only responses. For manually written code, simply overload collectResponse() for the respective job type, with appropriate constness.

Definition at line 500 of file basejob.h.

◆ connectSingleShot()

template<typename ContextT , typename SlotT >
auto Quotient::connectSingleShot ( auto *  sender,
auto  signal,
ContextT *  context,
SlotT  slot,
Qt::ConnectionType  connType = Qt::AutoConnection 
)
inline

Create a connection that self-disconnects after triggering on the signal.

Definition at line 43 of file qt_connection_util.h.

◆ connectUntil()

template<typename SmartSlotT >
auto Quotient::connectUntil ( auto *  sender,
auto  signal,
QObject *  context,
SmartSlotT &&  smartSlot,
Qt::ConnectionType  connType = Qt::AutoConnection 
)
inline

Create a connection that self-disconnects when its slot returns true.

The "slot" signature accepted by connectUntil() is different from normal Qt slots in that its return value must be bool, not void. Also, as of this writing, connectUntil() doesn't accept member function pointers for slots as QObject::connect or Quotient::connectSingleShot do; if you want to use a member function of the context object you should pass a lambda or bind the context to the member function with std::bind_front before passing it to connectUntil().

Returns
whether the connection should be dropped; false means that the connection remains; upon returning true, the slot is disconnected from the signal.

Definition at line 22 of file qt_connection_util.h.

◆ curve25519AesSha2Decrypt()

QUOTIENT_API QOlmExpected<QByteArray> Quotient::curve25519AesSha2Decrypt ( QByteArray  ciphertext,
const QByteArray &  privateKey,
const QByteArray &  ephemeral,
const QByteArray &  mac 
)

Decrypt the data using Curve25519-AES-Sha256.

Note
ciphertext must be given as base64

◆ curve25519AesSha2Encrypt()

QUOTIENT_API QOlmExpected<Curve25519Encrypted> Quotient::curve25519AesSha2Encrypt ( const QByteArray &  plaintext,
const QByteArray &  publicKey 
)

Encrypt the data using Curve25519-AES-Sha256.

Note
publicKey must be given as base64

◆ decryptFile()

QUOTIENT_API QByteArray Quotient::decryptFile ( const QByteArray &  ciphertext,
const EncryptedFileMetadata metadata 
)

◆ defaultRoomFactory()

template<typename T = Room>
auto Quotient::defaultRoomFactory ( Connection c,
const QString &  id,
JoinState  js 
)

The default factory to create room objects.

Just a wrapper around operator new.

See also
Connection::setRoomFactory, Connection::setRoomType

Definition at line 92 of file connection.h.

◆ defaultUserFactory()

template<typename T = User>
auto Quotient::defaultUserFactory ( Connection c,
const QString &  id 
)

The default factory to create user objects.

Just a wrapper around operator new.

See also
Connection::setUserFactory, Connection::setUserType

Definition at line 102 of file connection.h.

◆ DEFINE_SIMPLE_EVENT()

Quotient::DEFINE_SIMPLE_EVENT ( ReadMarkerEvent  ,
Event  ,
"m.fully_read"  ,
QString  ,
eventId  ,
"event_id"   
)

◆ DEFINE_SIMPLE_STATE_EVENT()

Quotient::DEFINE_SIMPLE_STATE_EVENT ( RoomTopicEvent  ,
"m.room.topic"  ,
QString  ,
topic  ,
"topic"   
)

◆ ed25519VerifySignature()

QUOTIENT_API bool Quotient::ed25519VerifySignature ( const QString &  signingKey,
const QJsonObject &  obj,
const QString &  signature 
)

checks if the signature is signed by the signing_key

◆ editSubobject()

void Quotient::editSubobject ( QJsonObject &  json,
auto  key,
std::invocable< QJsonObject & > auto  visitor 
)
inline

Definition at line 26 of file converters.h.

◆ encryptFile()

QUOTIENT_API std::pair<EncryptedFileMetadata, QByteArray> Quotient::encryptFile ( const QByteArray &  plainText)

◆ enumFromJsonString()

template<typename EnumT , typename EnumStringValuesT >
EnumT Quotient::enumFromJsonString ( const QString &  s,
const EnumStringValuesT &  enumValues,
EnumT  defaultValue 
)
inline

Facility string-to-enum converter.

This is to simplify enum loading from JSON - just specialise Quotient::fromJson() and call this function from it, passing (aside from the JSON value for the enum - that must be a string, not an int) any iterable container of string'y values (const char*, QLatin1String, etc.) matching respective enum values, 0-based.

See also
enumToJsonString

Definition at line 163 of file converters.h.

◆ enumToJsonString()

template<typename EnumT , typename EnumStringValuesT >
QString Quotient::enumToJsonString ( EnumT  v,
const EnumStringValuesT &  enumValues 
)
inline

Facility enum-to-string converter.

This does the same as enumFromJsonString, the other way around.

Note
The source enumeration must not have gaps in values, or enumValues has to match those gaps (i.e., if the source enumeration is defined as { Value1 = 1, Value2 = 3, Value3 = 5 } then enumValues should be defined as { "", "Value1", "", "Value2", "", "Value3" } (mind the gap at value 0, in particular).
See also
enumFromJsonString

Definition at line 185 of file converters.h.

◆ eventCast() [1/2]

template<EventClass EventT, typename BasePtrT >
auto Quotient::eventCast ( const BasePtrT &  eptr) -> decltype(static_cast<EventT*>(std::to_address(eptr)))
inline

Cast the event pointer down in a type-safe way.

Checks that the event eptr points to actually is of the requested type and returns a (plain) pointer to the event downcast to that type. eptr can be either "dumb" (BaseEventT*) or "smart" (event_ptr_tt<>). This overload doesn't affect the event ownership - if the original pointer owns the event it must outlive the downcast pointer to keep it from dangling.

Definition at line 517 of file event.h.

◆ eventCast() [2/2]

template<EventClass EventT, typename BaseEventT >
auto Quotient::eventCast ( event_ptr_tt< BaseEventT > &&  eptr)
inline

Cast the event pointer down in a type-safe way, with moving.

Checks that the event eptr points to actually is of the requested type; if (and only if) it is, releases the pointer, downcasts it to the requested event type and returns a new smart pointer wrapping the downcast one. Unlike the non-moving eventCast() overload, this one only accepts a smart pointer, and that smart pointer should be an rvalue (either a temporary, or as a result of std::move()). The ownership, respectively, is transferred to the new pointer; the original smart pointer is reset to nullptr, as is normal for unique_ptr<>::release().

Note
If eptr's event type does not match EventT it retains ownership after calling this overload; if it is a temporary, this normally leads to the event getting deleted along with the end of the temporary's lifetime.

Definition at line 540 of file event.h.

◆ fillFromJson()

template<typename T >
void Quotient::fillFromJson ( const QJsonValue &  jv,
T &  pod 
)
inline

Definition at line 140 of file converters.h.

◆ fillFromSecureRng()

QUOTIENT_API void Quotient::fillFromSecureRng ( std::span< byte_t bytes)

Fill the buffer with the securely generated random bytes.

You should use this throughout Quotient where pseudo-random generators are not enough (i.e. in crypto cases). Don't use it when proper randomness is not critical; it tries to rely on system entropy that is in (somewhat) limited supply. There's no fancy stuff internally, it's just a way to unify secure RNG usage in Quotient. See the function definition for details if you want/need.

◆ fillJson() [1/3]

template<>
void Quotient::fillJson ( QJsonObject &  ,
const FileSourceInfo  
)
delete

◆ fillJson() [2/3]

QUOTIENT_API void Quotient::fillJson ( QJsonObject &  jo,
const std::array< QLatin1String, 2 > &  jsonKeys,
const FileSourceInfo fsi 
)

Export FileSourceInfo to a JSON object.

Depending on what is stored inside FileSourceInfo, this function will insert

  • a key-to-string pair where key is taken from jsonKeys[0] and the string is the URL, if FileSourceInfo stores a QUrl;
  • a key-to-object mapping where key is taken from jsonKeys[1] and the object is the result of converting EncryptedFileMetadata to JSON, if FileSourceInfo stores EncryptedFileMetadata

◆ fillJson() [3/3]

template<typename T >
void Quotient::fillJson ( QJsonObject &  json,
const T &  data 
)
inline

Definition at line 116 of file converters.h.

◆ findFirstOf()

Pred std::pair<InputIt, ForwardIt> Quotient::findFirstOf ( InputIt  first,
InputIt  last,
ForwardIt  sFirst,
ForwardIt  sLast,
Pred  pred 
)
inline

Definition at line 192 of file util.h.

◆ findIndirect() [1/2]

template<std::input_iterator IterT, typename ValT , typename Proj = std::identity>
requires constexpr std::indirect_binary_predicate<std::ranges::equal_to, IndirectlyProjected<IterT, Proj>, const ValT*> auto Quotient::findIndirect ( IterT  from,
IterT  to,
const ValT &  value,
Proj  proj = {} 
)
inlineconstexpr

Find a value in a container of (smart) pointers.

This is a replica of std::ranges::find that automatically applies dereferencing projection before applying the provided projection. Quotient has a few containers with pointers or wrappers for other types - think of timeline items or event_ptr_tt<>s. This is meant to streamline searching for events that match a specific simple criterion; e.g., to find an event with a given id in a container you can now write findIndirect(events, eventId, &RoomEvent::id); instead of having to supply your own lambda to dereference the timeline item and check the event id.

Definition at line 25 of file ranges_extras.h.

◆ findIndirect() [2/2]

template<typename RangeT , typename ValT , typename Proj = std::identity>
requires constexpr std::indirect_binary_predicate< std::ranges::equal_to, IndirectlyProjected<std::ranges::iterator_t<RangeT>, Proj>, const ValT*> auto Quotient::findIndirect ( RangeT &&  range,
const ValT &  value,
Proj  proj = {} 
)
inlineconstexpr

The overload of findIndirect for ranges.

Definition at line 37 of file ranges_extras.h.

◆ flagFromJsonString()

template<typename FlagT , typename FlagStringValuesT >
FlagT Quotient::flagFromJsonString ( const QString &  s,
const FlagStringValuesT &  flagValues,
FlagT  defaultValue = FlagT(0U) 
)
inline

Facility converter for flags.

This is very similar to enumFromJsonString, except that the target enumeration is assumed to be of a 'flag' kind - i.e. its values must be a power-of-two sequence starting from 1, without gaps, so exactly 1,2,4,8,16 and so on.

Note
Unlike enumFromJsonString, the values start from 1 and not from 0, with 0 being used for an invalid value by default.
This function does not support flag combinations.
See also
QUO_DECLARE_FLAGS, QUO_DECLARE_FLAGS_NS

Definition at line 208 of file converters.h.

◆ flagToJsonString()

template<typename FlagT , typename FlagStringValuesT >
QString Quotient::flagToJsonString ( FlagT  v,
const FlagStringValuesT &  flagValues 
)
inline

Definition at line 222 of file converters.h.

◆ formatJson()

QDebug Quotient::formatJson ( QDebug  dbg)
inline

QDebug manipulator to setup the stream for JSON output.

Originally made to encapsulate the change in QDebug behavior in Qt 5.4 and the respective addition of QDebug::noquote(). Together with the operator<<() helper, the proposed usage is (similar to std:: I/O manipulators): qCDebug(MAIN) << formatJson << json_object; // (QJsonObject etc.)

Definition at line 350 of file util.h.

◆ fromJson() [1/5]

template<typename PodT , typename JsonT >
PodT Quotient::fromJson ( const JsonT &  json)
inline

Definition at line 122 of file converters.h.

◆ fromJson() [2/5]

template<typename JsonT , typename PodT >
void Quotient::fromJson ( const JsonT &  json,
PodT &  pod 
)
inline

Definition at line 134 of file converters.h.

◆ fromJson() [3/5]

template<>
QJsonArray Quotient::fromJson ( const QJsonDocument &  jd)
inline

Definition at line 265 of file converters.h.

◆ fromJson() [4/5]

template<>
EventContent::AliasesEventContent Quotient::fromJson ( const QJsonObject &  json)
inline

Definition at line 18 of file roomcanonicalaliasevent.h.

◆ fromJson() [5/5]

template<>
QVariantHash QUOTIENT_API Quotient::fromJson ( const QJsonValue &  jv)
inlinedelete

Use fromJson<QString> and then toLatin1()/toUtf8()/... to make QByteArray

QJsonValue can only convert to QString and there's ambiguity whether conversion to QByteArray should use (fast but very limited) toLatin1() or (all encompassing and conforming to the JSON spec but slow) toUtf8().

Definition at line 236 of file converters.h.

◆ getRandom() [1/2]

template<size_t SizeN>
auto Quotient::getRandom ( )
inline

Definition at line 259 of file e2ee_common.h.

◆ getRandom() [2/2]

auto Quotient::getRandom ( size_t  bytes)
inline

Definition at line 253 of file e2ee_common.h.

◆ getUrlFromSourceInfo()

QUOTIENT_API QUrl Quotient::getUrlFromSourceInfo ( const FileSourceInfo fsi)

◆ hkdfSha256()

QUOTIENT_API SslExpected<HkdfKeys> Quotient::hkdfSha256 ( key_view_t  key,
byte_view_t< 32 >  salt,
byte_view_t<>  info 
)

Derive a key from the input data using HKDF-SHA256.

The info parameter should be either 0 or 32 bytes long

◆ hmacSha256()

QUOTIENT_API SslExpected<QByteArray> Quotient::hmacSha256 ( byte_view_t< HmacKeySize hmacKey,
const QByteArray &  data 
)

Calculate a MAC from the given key and data.

◆ is()

template<EventClass EventT>
bool Quotient::is ( const Event e)
inline

Definition at line 491 of file event.h.

◆ isGuestUserId()

QUOTIENT_API bool Quotient::isGuestUserId ( const UserId uId)

◆ isJobPending()

bool QUOTIENT_API Quotient::isJobPending ( BaseJob job)
inline

Definition at line 483 of file basejob.h.

◆ isSupportedAlgorithm()

bool Quotient::isSupportedAlgorithm ( const QString &  algorithm)
inline

Definition at line 40 of file e2ee_common.h.

◆ JobHandle()

template<std::derived_from< BaseJob > JobT>
Quotient::JobHandle ( JobT *  ) -> JobHandle< JobT >

◆ lift()

template<typename FnT >
auto Quotient::lift ( FnT &&  fn,
auto &&...  args 
)
inline

Lift an operation into dereferenceable types (std::optional or pointers)

This is a more generic version of std::optional::and_then() that accepts an arbitrary number of arguments of any type that is dereferenceable (i.e. unary operator*() can be applied to it) and (explicitly or implicitly) convertible to bool. This allows to streamline checking for nullptr/nullopt before applying the operation on the underlying types. fn is only invoked if all args are "truthy" (i.e. (... && bool(args)) == true).

Parameters
fnA callable that should accept the types stored inside optionals/pointers passed in args (NOT optionals/pointers themselves; they are unwrapped)
Returns
Always an optional: if fn returns another type, lift() wraps it in std::optional; if fn returns std::optional, that return value (or std::nullopt) is returned as is.

Definition at line 398 of file util.h.

◆ linkifyUrls()

QUOTIENT_API void Quotient::linkifyUrls ( QString &  htmlEscapedText)

Convert what looks like a URL or a Matrix ID to an HTML hyperlink

◆ loadEvent() [1/2]

template<EventClass EventT>
event_ptr_tt<EventT> Quotient::loadEvent ( const QJsonObject &  fullJson)
inline

Create an event with proper type from a JSON object.

Use this factory template to detect the type from the JSON object contents (the detected event type should derive from the template parameter type) and create an event object of that type.

Definition at line 194 of file event.h.

◆ loadEvent() [2/2]

template<EventClass EventT>
event_ptr_tt<EventT> Quotient::loadEvent ( const QString &  matrixType,
const auto &...  otherBasicJsonParams 
)
inline

Create an event from a type string and content JSON.

Use this template to resolve the C++ type from the Matrix type string in matrixType and create an event of that type by passing all parameters to EventT::basicJson().

Definition at line 206 of file event.h.

◆ lowerBoundMemberIndex() [1/2]

template<template< class > class ContT>
ContT<QString>::size_type Quotient::lowerBoundMemberIndex ( const ContT< QString > &  c,
const auto &  v,
const Room r,
MemberSorter  ms = {} 
)
inline

Definition at line 981 of file room.h.

◆ lowerBoundMemberIndex() [2/2]

template<template< class > class ContT>
ContT<RoomMember>::size_type Quotient::lowerBoundMemberIndex ( const ContT< RoomMember > &  c,
const auto &  v,
MemberSorter  ms = {} 
)
inline

Definition at line 973 of file room.h.

◆ majorVersion()

QUOTIENT_API int Quotient::majorVersion ( )

◆ makeCStruct()

template<typename T >
auto Quotient::makeCStruct ( T *(*)(void *)  constructor,
size_t(*)()  sizeFn,
auto  destructor 
)
inline

Create a C structure with pre-programmed deletion logic.

This facility function creates a CStructPtr that owns the pointer returned by constructor. The memory passed to constructor is allocated as an array of bytes; the size of that array is determined by calling sizeFn. Finally, since the returned pointer is owning, it also stores the corresponding CStructDeleter instance; when called at destruction of the owning pointer, this deleter first calls destructor passing the original C pointer returned by constructor; and then deletes the allocated array of bytes.

Definition at line 283 of file util.h.

◆ makeEvent()

template<EventClass EventT, typename... ArgTs>
event_ptr_tt<EventT> Quotient::makeEvent ( ArgTs &&...  args)
inline

Create an event of arbitrary type from its arguments.

This should not be used to load events from JSON - use loadEvent() for that.

See also
loadEvent

Definition at line 174 of file event.h.

◆ makeImpl()

template<typename ImplType , typename TypeToDelete = ImplType, typename... ArgTs>
ImplPtr<ImplType, TypeToDelete> Quotient::makeImpl ( ArgTs &&...  args)
inline

make_unique for ImplPtr

Since std::make_unique is not compatible with ImplPtr, this should be used in constructors of frontend classes to create implementation instances.

Definition at line 232 of file util.h.

◆ memberMatcher()

auto Quotient::memberMatcher ( auto  substr,
Qt::CaseSensitivity  cs = Qt::CaseSensitive 
)
inline

A factory to get a functional object matching room members against a substring.

This is a convenience wrapper to use RoomMember::matches() in standard algorithms.

Definition at line 215 of file roommember.h.

◆ merge()

template<typename T1 , typename T2 >
requires constexpr std::is_assignable_v<T1&, const T2&> bool Quotient::merge ( T1 &  lhs,
const std::optional< T2 > &  rhs 
)
inlineconstexpr

Merge the value from an optional.

Assigns the value stored at rhs to lhs if, and only if, rhs is not omitted and lhs != *rhs. lhs can be either an optional or an ordinary variable.

Returns
true if rhs is not omitted and the lhs value was different, in other words, if lhs has changed; false otherwise

Definition at line 417 of file util.h.

◆ mergeStruct()

template<typename StructT >
constexpr size_t Quotient::mergeStruct ( StructT &  lhs,
const StructT &  rhs,
const auto...  fields 
)
inlineconstexpr

Merge structure-like types.

Merges fields in lhs from counterparts in rhs. The list of fields to merge is passed in additional parameters (fields). E.g.: \codeline mergeStruct(struct1, struct2, &Struct::field1, &Struct::field2, &Struct::field3)

Returns
the number of fields in lhs that were changed

Definition at line 432 of file util.h.

◆ minorVersion()

QUOTIENT_API int Quotient::minorVersion ( )

◆ mostSpecificMetaType()

template<EventClass EventT>
constexpr const auto& Quotient::mostSpecificMetaType ( )
constexpr

Definition at line 180 of file event.h.

◆ operator!=()

bool Quotient::operator!= ( const LoginFlow lhs,
const LoginFlow rhs 
)
inline

Definition at line 76 of file connection.h.

◆ operator""_ls()

constexpr auto Quotient::operator""_ls ( const char *  s,
std::size_t  size 
)
constexpr

Definition at line 101 of file util.h.

◆ operator<<() [1/4]

QDebug& Quotient::operator<< ( QDebug &  d,
const TimelineItem ti 
)
inline

Definition at line 156 of file eventitem.h.

◆ operator<<() [2/4]

QUOTIENT_API QDebug Quotient::operator<< ( QDebug  dbg,
const EventStats es 
)

◆ operator<<() [3/4]

QUOTIENT_API QDebug Quotient::operator<< ( QDebug  dbg,
const RoomSummary rs 
)

◆ operator<<() [4/4]

QDebug Quotient::operator<< ( QDebug  dhg,
const DevicesList devicesList 
)

◆ operator<=>()

std::partial_ordering Quotient::operator<=> ( const Tag lhs,
const Tag rhs 
)
inline

Definition at line 17 of file accountdataevents.h.

◆ operator==() [1/2]

bool Quotient::operator== ( const AbstractEventMetaType lhs,
const AbstractEventMetaType rhs 
)
inline

Definition at line 78 of file event.h.

◆ operator==() [2/2]

bool Quotient::operator== ( const LoginFlow lhs,
const LoginFlow rhs 
)
inline

Definition at line 71 of file connection.h.

◆ Overloads()

template<typename... FunctorTs>
Quotient::Overloads ( FunctorTs &&  ...) -> Overloads< FunctorTs... >

◆ patchVersion()

QUOTIENT_API int Quotient::patchVersion ( )

◆ pbkdf2HmacSha512()

template<size_t Size = DefaultPbkdf2KeyLength>
QUOTIENT_API SslExpected<key_material_t<Size> > Quotient::pbkdf2HmacSha512 ( const QByteArray &  passphrase,
const QByteArray &  salt,
int  iterations 
)
inline

Generate a key out of the given passphrase.

Definition at line 71 of file cryptoutils.h.

◆ prettyPrint()

QUOTIENT_API QString Quotient::prettyPrint ( const QString &  plainText)

Pretty-print plain text into HTML

This includes HTML escaping of <,>,",& and calling linkifyUrls()

◆ QT_IGNORE_DEPRECATIONS()

Quotient::QT_IGNORE_DEPRECATIONS ( template< typename U > asKeyValueRange(U &) -> asKeyValueRange< U & >;template< typename U > asKeyValueRange(U &&) -> asKeyValueRange< U >;  )

A replica of std::find_first_of that returns a pair of iterators

Convenient for cases when you need to know which particular "first of" [sFirst, sLast) has been found in [first, last).

◆ replaceSubvalue()

void Quotient::replaceSubvalue ( QJsonObject &  json,
auto  topLevelKey,
auto  subKey,
QJsonValue  subValue 
)
inline

Definition at line 33 of file converters.h.

◆ requires()

template<typename T , typename E >
Quotient::requires ( !std::is_same_v< T, E >  )

A minimal subset of std::expected from C++23.

Definition at line 13 of file expected.h.

◆ sanitized()

QUOTIENT_API QString Quotient::sanitized ( const QString &  plainText)

Sanitize the text before showing in HTML

This does toHtmlEscaped() and removes Unicode BiDi marks.

◆ serverPart()

QUOTIENT_API QString Quotient::serverPart ( const QString &  mxId)

Extract the serverpart from MXID

◆ setUrlInSourceInfo()

QUOTIENT_API void Quotient::setUrlInSourceInfo ( FileSourceInfo fsi,
const QUrl &  newUrl 
)

◆ sign()

QUOTIENT_API QByteArray Quotient::sign ( const QByteArray &  key,
const QByteArray &  data 
)

◆ stringToHueF()

QUOTIENT_API qreal Quotient::stringToHueF ( const QString &  s)

Hue color component of based of the hash of the string.

The implementation is based on XEP-0392: https://xmpp.org/extensions/xep-0392.html Naming and range are the same as QColor's hueF method: https://doc.qt.io/qt-5/qcolor.html#integer-vs-floating-point-precision

◆ swap()

void Quotient::swap ( ReadReceipt lhs,
ReadReceipt rhs 
)
inline

Definition at line 96 of file room.h.

◆ switchOnType() [1/2]

template<EventClass BaseT, typename TailT >
auto Quotient::switchOnType ( const BaseT &  event,
TailT &&  tail 
)
inline

Definition at line 557 of file event.h.

◆ switchOnType() [2/2]

template<typename FnT1 , typename... FnTs>
auto Quotient::switchOnType ( const EventClass auto &  event,
FnT1 &&  fn1,
FnTs &&...  fns 
)
inline

Definition at line 572 of file event.h.

◆ terse()

QDebug Quotient::terse ( QDebug  dbg)
inline

Suppress full qualification of enums/QFlags when logging.

Definition at line 353 of file util.h.

◆ toJson() [1/7]

template<>
auto Quotient::toJson ( const EventContent::AliasesEventContent c)
inline

Definition at line 26 of file roomcanonicalaliasevent.h.

◆ toJson() [2/7]

QUOTIENT_API QJsonObject Quotient::toJson ( const EventsWithReceipts ewrs)

◆ toJson() [3/7]

QJsonValue Quotient::toJson ( const QDate &  val)
inline

Definition at line 277 of file converters.h.

◆ toJson() [4/7]

QJsonValue Quotient::toJson ( const QDateTime &  val)
inline

Definition at line 267 of file converters.h.

◆ toJson() [5/7]

QJsonObject QUOTIENT_API Quotient::toJson ( const QVariantHash &  vh)

◆ toJson() [6/7]

template<typename... Ts>
QJsonValue Quotient::toJson ( const std::variant< Ts... > &  v)
inline

Definition at line 307 of file converters.h.

◆ toJson() [7/7]

template<typename T >
auto Quotient::toJson ( const T &  pod)
inline

Definition at line 105 of file converters.h.

◆ toSnakeCase()

auto Quotient::toSnakeCase ( QLatin1String  s)
inline

Definition at line 563 of file converters.h.

◆ unsignedSize()

size_t Quotient::unsignedSize ( const auto &  buffer)
inline

Get a size of a container coerced to size_t.

This is mainly aimed at Qt containers because they have signed size; but it can also be called on other containers or even C arrays, e.g. - to spare generic code from special-casing. For Qt containers, it's a safe cast since size_t can always accommodate the range between 0 and SIZE_MAX / 2 - 1 that they support; yet compilers complain...

Definition at line 77 of file e2ee_common.h.

◆ verifyIdentitySignature()

QUOTIENT_API bool Quotient::verifyIdentitySignature ( const DeviceKeys deviceKeys,
const QString &  deviceId,
const QString &  userId 
)

◆ versionString()

QUOTIENT_API QString Quotient::versionString ( )

◆ viewAsByteArray()

auto Quotient::viewAsByteArray ( const auto &  aRange) -> auto requires (sizeof(*aRange.data()) == sizeof(char))
inline

Definition at line 136 of file e2ee_common.h.

◆ visitResource()

QUOTIENT_API UriResolveResult Quotient::visitResource ( Connection account,
const Uri uri,
std::function< UriResolveResult(User *, QString)>  userHandler,
std::function< void(Room *, QString)>  roomEventHandler,
std::function< void(Connection *, QString, QStringList)>  joinHandler,
std::function< bool(const QUrl &)>  nonMatrixHandler 
)

Resolve the resource and invoke an action on it, via function objects.

This function encapsulates the logic of resolving a Matrix identifier or URI into a Quotient object (or objects) and calling an appropriate handler on it. Unlike UriResolverBase it accepts the list of handlers from the caller; internally it's uses a minimal UriResolverBase class

Parameters
accountThe connection used as a context to resolve the identifier
uriA URI that can represent a Matrix entity
userHandlerCalled when the passed URI identifies a Matrix user
roomEventHandlerCalled when the passed URI identifies a room or an event in a room
joinHandlerCalled when the passed URI has action() == "join" and identifies a room that the user defined by the Connection argument is not a member of
nonMatrixHandlerCalled when the passed URI has type() == NonMatrix; should return true if the URI is considered resolved, false otherwise
See also
UriResolverBase, UriDispatcher

◆ zeroedByteArray()

QByteArray Quotient::zeroedByteArray ( QByteArray::size_type  n = 32)
inline

Definition at line 60 of file cryptoutils.h.

◆ zeroes()

template<size_t N, typename T = uint8_t>
consteval std::array<T, N> Quotient::zeroes ( )

Definition at line 62 of file cryptoutils.h.

◆ ZeroImpl()

template<typename ImplType , typename TypeToDelete = ImplType>
constexpr ImplPtr<ImplType, TypeToDelete> Quotient::ZeroImpl ( )
constexpr

Definition at line 249 of file util.h.

Variable Documentation

◆ Aes256KeySize

constexpr auto Quotient::Aes256KeySize = 32u
constexpr

Definition at line 22 of file cryptoutils.h.

◆ AesBlockSize

constexpr auto Quotient::AesBlockSize = 16u
constexpr

Definition at line 23 of file cryptoutils.h.

◆ AlgorithmKey

constexpr auto Quotient::AlgorithmKey = "algorithm"_ls
inlineconstexpr

Definition at line 26 of file e2ee_common.h.

◆ AlgorithmKeyL

constexpr auto Quotient::AlgorithmKeyL = "algorithm"_ls
inlineconstexpr

Definition at line 22 of file e2ee_common.h.

◆ BodyKey

constexpr auto Quotient::BodyKey = "body"_ls
inlineconstexpr

Definition at line 19 of file event.h.

◆ BoundResultHandler

template<typename FnT , typename JobT >
concept Quotient::BoundResultHandler
Initial value:
= std::invocable<FnT, JobT*> || std::invocable<FnT>
|| requires(FnT f, JobT j) { f(collectResponse(&j)); }
auto collectResponse(const GetAccountDataJob *job)
Definition: account-data.h:59

Definition at line 10 of file jobhandle.h.

◆ CiphertextKey

constexpr auto Quotient::CiphertextKey = "ciphertext"_ls
inlineconstexpr

Definition at line 10 of file encryptedevent.h.

◆ ContentKey

constexpr auto Quotient::ContentKey = "content"_ls
inlineconstexpr

Definition at line 20 of file event.h.

◆ Curve25519Key

constexpr auto Quotient::Curve25519Key = "curve25519"_ls
inlineconstexpr

Definition at line 31 of file e2ee_common.h.

◆ DefaultPbkdf2KeyLength

constexpr auto Quotient::DefaultPbkdf2KeyLength = 32u
constexpr

Definition at line 21 of file cryptoutils.h.

◆ DeviceIdKey

constexpr auto Quotient::DeviceIdKey = "device_id"_ls
inlineconstexpr

Definition at line 12 of file encryptedevent.h.

◆ doCollectResponse

template<typename JobT >
constexpr auto Quotient::doCollectResponse = nullptr
inlineconstexpr

Definition at line 489 of file basejob.h.

◆ doCollectResponse< JobT >

template<std::derived_from< GetWhoIsJob > JobT>
constexpr auto Quotient::doCollectResponse< JobT >
inlineconstexpr
Initial value:
=
[](JobT* j) -> GetWhoIsJob::Response { return { j->userId(), j->devices() }; }

Definition at line 74 of file admin.h.

◆ Ed25519Key

constexpr auto Quotient::Ed25519Key = "ed25519"_ls
inlineconstexpr

Definition at line 30 of file e2ee_common.h.

◆ Event

Definition at line 32 of file accountdataevents.h.

◆ EventClass

template<typename EventT , typename BaseEventT = Event>
concept Quotient::EventClass = std::derived_from<EventT, BaseEventT>

Definition at line 30 of file event.h.

◆ EventIdKey

constexpr auto Quotient::EventIdKey = "event_id"_ls
inlineconstexpr

Definition at line 12 of file roomevent.h.

◆ FavouriteTag

constexpr auto Quotient::FavouriteTag = "m.favourite"_ls
inlineconstexpr

Definition at line 11 of file accountdataevents.h.

◆ fn_arg_count_v

template<typename FnT >
constexpr auto Quotient::fn_arg_count_v
constexpr
Initial value:
=
std::tuple_size_v<typename function_traits<FnT>::arg_types>

Definition at line 90 of file function_traits.h.

◆ ForwardIt

Quotient::ForwardIt

Definition at line 191 of file util.h.

◆ HighlightCountKey

constexpr auto Quotient::HighlightCountKey = "highlight_count"_ls
inlineconstexpr

Definition at line 15 of file syncdata.h.

◆ HmacKeySize

constexpr auto Quotient::HmacKeySize = 32u
constexpr

Definition at line 24 of file cryptoutils.h.

◆ HmacSha256Code

constexpr auto Quotient::HmacSha256Code = "hkdf-hmac-sha256"_ls
inlineconstexpr

Definition at line 78 of file keyverificationevent.h.

◆ HmacSha256V2Code

constexpr auto Quotient::HmacSha256V2Code = "hkdf-hmac-sha256.v2"_ls
inlineconstexpr

Definition at line 79 of file keyverificationevent.h.

◆ IfNotEmpty

constexpr bool Quotient::IfNotEmpty = false
constexpr

Definition at line 456 of file converters.h.

◆ ignored_user_list

m Quotient::ignored_user_list

Definition at line 32 of file accountdataevents.h.

◆ ignoredUsers

m Quotient::ignoredUsers

Definition at line 33 of file accountdataevents.h.

◆ JoinStateStrings

constexpr std::array Quotient::JoinStateStrings
constexpr
Initial value:

Definition at line 87 of file quotient_common.h.

◆ Keyed_State_Event

template<typename EvT >
concept Quotient::Keyed_State_Event = EvT::needsStateKey

Definition at line 117 of file stateevent.h.

◆ Keyed_State_Fn

template<typename FnT , class EvT = std::decay_t<fn_arg_t<FnT>>>
concept Quotient::Keyed_State_Fn = EvT::needsStateKey

Definition at line 19 of file roomstateview.h.

◆ Keyless_State_Event

template<typename EvT >
concept Quotient::Keyless_State_Event = !EvT::needsStateKey

Definition at line 138 of file stateevent.h.

◆ Keyless_State_Fn

template<typename FnT , class EvT = std::decay_t<fn_arg_t<FnT>>>
concept Quotient::Keyless_State_Fn = !EvT::needsStateKey

Definition at line 22 of file roomstateview.h.

◆ LowPriorityTag

constexpr auto Quotient::LowPriorityTag = "m.lowpriority"_ls
inlineconstexpr

Definition at line 12 of file accountdataevents.h.

◆ MegolmV1AesSha2AlgoKey

constexpr auto Quotient::MegolmV1AesSha2AlgoKey = "m.megolm.v1.aes-sha2"_ls
inlineconstexpr

Definition at line 35 of file e2ee_common.h.

◆ MembershipStrings

constexpr std::array Quotient::MembershipStrings
constexpr
Initial value:
{
"join"_ls, "leave"_ls, "invite"_ls, "knock"_ls, "ban"_ls
}

Definition at line 68 of file quotient_common.h.

◆ NewUnreadCountKey

constexpr auto Quotient::NewUnreadCountKey = "org.matrix.msc2654.unread_count"_ls
inlineconstexpr

Definition at line 14 of file syncdata.h.

◆ none

constexpr auto Quotient::none = std::nullopt
constexpr

Definition at line 16 of file omittable.h.

◆ OlmV1Curve25519AesSha2AlgoKey

constexpr auto Quotient::OlmV1Curve25519AesSha2AlgoKey = "m.olm.v1.curve25519-aes-sha2"_ls
inlineconstexpr

Definition at line 34 of file e2ee_common.h.

◆ PartiallyReadCountKey

constexpr auto Quotient::PartiallyReadCountKey = "x-quotient.since_fully_read_count"_ls
inlineconstexpr

Definition at line 13 of file syncdata.h.

◆ pinned_events

m room Quotient::pinned_events

Definition at line 29 of file simplestateevents.h.

◆ pinnedEvents

m room Quotient::pinnedEvents

Definition at line 30 of file simplestateevents.h.

◆ PrevContentKey

constexpr auto Quotient::PrevContentKey = "prev_content"_ls
inlineconstexpr

Definition at line 10 of file stateevent.h.

◆ ProfilerMinNsecs

constexpr qint64 Quotient::ProfilerMinNsecs
constexpr
Initial value:
=
200
* 1000

Definition at line 358 of file util.h.

◆ QSet< QString >

m Quotient::QSet< QString >

Definition at line 32 of file accountdataevents.h.

◆ QStringList

m room Quotient::QStringList

Definition at line 30 of file simplestateevents.h.

◆ RedactedCauseKey

constexpr auto Quotient::RedactedCauseKey = "redacted_because"_ls
inlineconstexpr

Definition at line 15 of file roomevent.h.

◆ RelatesToKey

constexpr auto Quotient::RelatesToKey = "m.relates_to"_ls
inlineconstexpr

Definition at line 16 of file roomevent.h.

◆ RelTypeKey

constexpr auto Quotient::RelTypeKey = "rel_type"_ls
inlineconstexpr

Definition at line 10 of file eventrelation.h.

◆ ResultHandler

template<typename FnT , typename JobT >
concept Quotient::ResultHandler = BoundResultHandler<FnT, JobT> || std::is_member_function_pointer_v<FnT>

Definition at line 14 of file jobhandle.h.

◆ RoomIdKey

constexpr auto Quotient::RoomIdKey = "room_id"_ls
inlineconstexpr

Definition at line 13 of file roomevent.h.

◆ RoomTypeStrings

constexpr std::array Quotient::RoomTypeStrings { "m.space"_ls }
constexpr

Definition at line 117 of file quotient_common.h.

◆ RotationPeriodMsgsKey

constexpr auto Quotient::RotationPeriodMsgsKey = "rotation_period_msgs"_ls
inlineconstexpr

Definition at line 28 of file e2ee_common.h.

◆ RotationPeriodMsgsKeyL

constexpr auto Quotient::RotationPeriodMsgsKeyL = "rotation_period_msgs"_ls
inlineconstexpr

Definition at line 24 of file e2ee_common.h.

◆ RotationPeriodMsKey

constexpr auto Quotient::RotationPeriodMsKey = "rotation_period_ms"_ls
inlineconstexpr

Definition at line 27 of file e2ee_common.h.

◆ RotationPeriodMsKeyL

constexpr auto Quotient::RotationPeriodMsKeyL = "rotation_period_ms"_ls
inlineconstexpr

Definition at line 23 of file e2ee_common.h.

◆ SasV1Method

constexpr auto Quotient::SasV1Method = "m.sas.v1"_ls
inlineconstexpr

Definition at line 10 of file keyverificationevent.h.

◆ SenderKey

constexpr auto Quotient::SenderKey = "sender"_ls
inlineconstexpr

Definition at line 21 of file event.h.

◆ SenderKeyKey

constexpr auto Quotient::SenderKeyKey = "sender_key"_ls
inlineconstexpr

Definition at line 11 of file encryptedevent.h.

◆ ServerNoticeTag

constexpr auto Quotient::ServerNoticeTag = "m.server_notice"_ls
inlineconstexpr

Definition at line 13 of file accountdataevents.h.

◆ SessionIdKey

constexpr auto Quotient::SessionIdKey = "session_id"_ls
inlineconstexpr

Definition at line 13 of file encryptedevent.h.

◆ SignedCurve25519Key

constexpr auto Quotient::SignedCurve25519Key = "signed_curve25519"_ls
inlineconstexpr

Definition at line 32 of file e2ee_common.h.

◆ StateKeyKey

constexpr auto Quotient::StateKeyKey = "state_key"_ls
inlineconstexpr

Definition at line 14 of file roomevent.h.

◆ SupportedAlgorithms

constexpr std::array Quotient::SupportedAlgorithms
constexpr
Initial value:
constexpr auto OlmV1Curve25519AesSha2AlgoKey
Definition: e2ee_common.h:34
constexpr auto MegolmV1AesSha2AlgoKey
Definition: e2ee_common.h:35

Definition at line 37 of file e2ee_common.h.

◆ SupportedMacs

constexpr std::array Quotient::SupportedMacs { HmacSha256Code, HmacSha256V2Code }
constexpr

Definition at line 80 of file keyverificationevent.h.

◆ TypeKey

constexpr auto Quotient::TypeKey = "type"_ls
inlineconstexpr

Definition at line 18 of file event.h.

◆ UnreadNotificationsKey

constexpr auto Quotient::UnreadNotificationsKey = "unread_notifications"_ls
inlineconstexpr

Definition at line 12 of file syncdata.h.

◆ UnsignedKey

constexpr auto Quotient::UnsignedKey = "unsigned"_ls
inlineconstexpr

Definition at line 17 of file roomevent.h.