aboutsummaryrefslogtreecommitdiff
path: root/connection.h
diff options
context:
space:
mode:
authorKitsune Ral <Kitsune-Ral@users.sf.net>2017-03-08 20:22:44 +0900
committerKitsune Ral <Kitsune-Ral@users.sf.net>2017-03-08 20:30:27 +0900
commitde9448a65655451e1310947955dd6b341479dc23 (patch)
tree0879b1af22932751da48ef5b58d4e188a6a9f4ad /connection.h
parentba5ca3c88a20926f2be06872f530d9da12d5a062 (diff)
downloadlibquotient-de9448a65655451e1310947955dd6b341479dc23.tar.gz
libquotient-de9448a65655451e1310947955dd6b341479dc23.zip
Connection::callApi<>, a factory for all API call jobs
This call (intended to only be used within the lib) creates a job object of the passed type and passes a ConnectionData pointer to its constructor. This allows to avoid making a switchboard of methods on Connection for the whole API, leaving only those that naturally belong there - e.g. joinRoom() or sync() - and moving, e.g., postMessage() to where it belongs - Room. PostMessageJob and RoomMessagesJob were updated along the way, to unbind from the Room class (which they really don't and won't need).
Diffstat (limited to 'connection.h')
-rw-r--r--connection.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/connection.h b/connection.h
index 0e25d695..1ce3e0de 100644
--- a/connection.h
+++ b/connection.h
@@ -69,6 +69,14 @@ namespace QMatrixClient
Q_INVOKABLE QString token() const;
Q_INVOKABLE QString accessToken() const;
+ template <typename JobT, typename... JobArgTs>
+ JobT* callApi(JobArgTs... jobArgs)
+ {
+ auto job = new JobT(connectionData(), jobArgs...);
+ job->start();
+ return job;
+ }
+
signals:
void resolved();
void connected();