This repository has been archived on 2020-05-25. You can view files and clone it, but cannot push or open issues or pull requests.
tdlib-fork/td/telegram/ClientActor.h

86 lines
2.2 KiB
C++

//
// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2018
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
#pragma once
///\file
#include "td/actor/actor.h"
#include "td/telegram/td_api.h"
#include "td/telegram/td_api.hpp"
#include "td/telegram/TdCallback.h"
#include "td/utils/common.h"
namespace td {
class Td;
/**
* This is a low-level Actor interface for interaction with TDLib. The interface is a lot more flexible than
* the Client interface, however, for most usages the Client interface should be sufficient.
*/
class ClientActor : public Actor {
public:
/**
* Creates a ClientActor using the specified callback.
* \param[in] callback Callback for outgoing notifications from TDLib.
*/
explicit ClientActor(unique_ptr<TdCallback> callback);
/**
* Sends one request to TDLib. The answer will be received via callback.
* \param[in] id Request identifier, must be positive.
* \param[in] request The request.
*/
void request(uint64 id, td_api::object_ptr<td_api::Function> request);
/**
* Synchronously executes a TDLib request. Only a few requests can be executed synchronously.
* May be called from any thread.
* \param[in] request Request to the TDLib.
* \return The request response.
*/
static td_api::object_ptr<td_api::Object> execute(td_api::object_ptr<td_api::Function> request);
/**
* Destroys the ClientActor and the TDLib instance.
*/
~ClientActor();
/**
* Move constructor.
*/
ClientActor(ClientActor &&other);
/**
* Move assignment operator.
*/
ClientActor &operator=(ClientActor &&other);
ClientActor(const ClientActor &other) = delete;
ClientActor &operator=(const ClientActor &other) = delete;
private:
ActorOwn<Td> td_;
};
/**
* Dumps information about all pending network queries to the internal TDLib log.
* This is useful for library debugging.
*/
void dump_pending_network_queries();
/**
* Returns the current number of pending network queries. Useful for library debugging.
* \return Number of currently pending network queries.
*/
uint64 get_pending_network_query_count();
} // namespace td