2018-12-31 20:04:05 +01:00
|
|
|
//
|
2021-01-01 13:57:46 +01:00
|
|
|
// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2021
|
2018-12-31 20:04:05 +01:00
|
|
|
//
|
|
|
|
// 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)
|
|
|
|
//
|
|
|
|
#include "td/telegram/td_c_client.h"
|
|
|
|
|
|
|
|
#include "td/telegram/Client.h"
|
|
|
|
#include "td/telegram/Log.h"
|
|
|
|
|
|
|
|
#include "td/telegram/td_tdc_api_inner.h"
|
|
|
|
|
|
|
|
#include <cstring>
|
|
|
|
|
|
|
|
void *TdCClientCreate() {
|
|
|
|
return new td::Client();
|
|
|
|
}
|
|
|
|
|
|
|
|
void TdCClientSend(void *instance, struct TdRequest request) {
|
|
|
|
auto client = static_cast<td::Client *>(instance);
|
|
|
|
td::Client::Request client_request;
|
|
|
|
client_request.id = request.id;
|
|
|
|
client_request.function = TdConvertToInternal(request.function);
|
|
|
|
TdDestroyObjectFunction(request.function);
|
|
|
|
client->send(std::move(client_request));
|
|
|
|
}
|
|
|
|
|
|
|
|
TdResponse TdCClientReceive(void *instance, double timeout) {
|
|
|
|
auto client = static_cast<td::Client *>(instance);
|
|
|
|
auto response = client->receive(timeout);
|
|
|
|
TdResponse c_response;
|
|
|
|
c_response.id = response.id;
|
2018-09-21 10:26:35 +02:00
|
|
|
c_response.object = response.object == nullptr ? nullptr : TdConvertFromInternal(*response.object);
|
2018-12-31 20:04:05 +01:00
|
|
|
return c_response;
|
|
|
|
}
|
|
|
|
|
|
|
|
void TdCClientDestroy(void *instance) {
|
|
|
|
auto client = static_cast<td::Client *>(instance);
|
|
|
|
delete client;
|
|
|
|
}
|
|
|
|
|
|
|
|
void TdCClientSetVerbosity(int new_verbosity_level) {
|
|
|
|
td::Log::set_verbosity_level(new_verbosity_level);
|
|
|
|
}
|
|
|
|
|
|
|
|
TdVectorInt *TdCreateObjectVectorInt(int size, int *data) {
|
|
|
|
auto res = new TdVectorInt();
|
|
|
|
res->len = size;
|
|
|
|
res->data = new int[size];
|
|
|
|
std::memcpy(res->data, data, sizeof(int) * size);
|
|
|
|
return res;
|
|
|
|
}
|
|
|
|
|
|
|
|
TdVectorLong *TdCreateObjectVectorLong(int size, long long *data) {
|
|
|
|
auto res = new TdVectorLong();
|
|
|
|
res->len = size;
|
|
|
|
res->data = new long long[size];
|
|
|
|
std::memcpy(res->data, data, sizeof(long long) * size);
|
|
|
|
return res;
|
|
|
|
}
|
|
|
|
|
|
|
|
TdVectorObject *TdCreateObjectVectorObject(int size, TdObject **data) {
|
|
|
|
auto res = new TdVectorObject();
|
|
|
|
res->len = size;
|
|
|
|
res->data = new TdObject *[size];
|
|
|
|
std::memcpy(res->data, data, sizeof(TdObject *) * size);
|
|
|
|
return res;
|
|
|
|
}
|
|
|
|
|
|
|
|
TdBytes TdCreateObjectBytes(unsigned char *data, int len) {
|
|
|
|
TdBytes res;
|
|
|
|
res.len = len;
|
|
|
|
res.data = new unsigned char[len];
|
|
|
|
std::memcpy(res.data, data, len);
|
|
|
|
return res;
|
|
|
|
}
|