mirror of
https://github.com/ton-blockchain/ton
synced 2025-03-09 15:40:10 +00:00
rldp2 support in rldp-http-proxy (#608)
Co-authored-by: SpyCheese <mikle98@yandex.ru>
This commit is contained in:
parent
7a78ea33b7
commit
c369127ae0
8 changed files with 220 additions and 64 deletions
|
@ -92,6 +92,8 @@ class RldpIn : public RldpImpl {
|
|||
|
||||
void get_conn_ip_str(adnl::AdnlNodeIdShort l_id, adnl::AdnlNodeIdShort p_id, td::Promise<td::string> promise) override;
|
||||
|
||||
void set_default_mtu(td::uint64 mtu) override;
|
||||
|
||||
RldpIn(td::actor::ActorId<adnl::AdnlPeerTable> adnl) : adnl_(adnl) {
|
||||
}
|
||||
|
||||
|
@ -107,6 +109,8 @@ class RldpIn : public RldpImpl {
|
|||
|
||||
std::set<adnl::AdnlNodeIdShort> local_ids_;
|
||||
|
||||
td::optional<td::uint64> custom_default_mtu_;
|
||||
|
||||
td::actor::ActorId<RldpConnectionActor> create_connection(adnl::AdnlNodeIdShort src, adnl::AdnlNodeIdShort dst);
|
||||
};
|
||||
|
||||
|
|
|
@ -44,6 +44,9 @@ class RldpConnectionActor : public td::actor::Actor, private ConnectionCallback
|
|||
connection_.receive_raw(std::move(data));
|
||||
yield();
|
||||
}
|
||||
void set_default_mtu(td::uint64 mtu) {
|
||||
connection_.set_default_mtu(mtu);
|
||||
}
|
||||
|
||||
private:
|
||||
td::actor::ActorId<RldpIn> rldp_;
|
||||
|
@ -129,6 +132,9 @@ td::actor::ActorId<RldpConnectionActor> RldpIn::create_connection(adnl::AdnlNode
|
|||
return it->second.get();
|
||||
}
|
||||
auto connection = td::actor::create_actor<RldpConnectionActor>("RldpConnection", actor_id(this), src, dst, adnl_);
|
||||
if (custom_default_mtu_) {
|
||||
td::actor::send_closure(connection, &RldpConnectionActor::set_default_mtu, custom_default_mtu_.value());
|
||||
}
|
||||
auto res = connection.get();
|
||||
connections_[std::make_pair(src, dst)] = std::move(connection);
|
||||
return res;
|
||||
|
@ -221,6 +227,13 @@ void RldpIn::get_conn_ip_str(adnl::AdnlNodeIdShort l_id, adnl::AdnlNodeIdShort p
|
|||
td::actor::send_closure(adnl_, &adnl::AdnlPeerTable::get_conn_ip_str, l_id, p_id, std::move(promise));
|
||||
}
|
||||
|
||||
void RldpIn::set_default_mtu(td::uint64 mtu) {
|
||||
custom_default_mtu_ = mtu;
|
||||
for (auto &connection : connections_) {
|
||||
td::actor::send_closure(connection.second, &RldpConnectionActor::set_default_mtu, mtu);
|
||||
}
|
||||
}
|
||||
|
||||
std::unique_ptr<adnl::Adnl::Callback> RldpIn::make_adnl_callback() {
|
||||
class Callback : public adnl::Adnl::Callback {
|
||||
private:
|
||||
|
|
|
@ -37,6 +37,8 @@ class Rldp : public adnl::AdnlSenderInterface {
|
|||
virtual void send_message_ex(adnl::AdnlNodeIdShort src, adnl::AdnlNodeIdShort dst, td::Timestamp timeout,
|
||||
td::BufferSlice data) = 0;
|
||||
|
||||
virtual void set_default_mtu(td::uint64 mtu) = 0;
|
||||
|
||||
static td::actor::ActorOwn<Rldp> create(td::actor::ActorId<adnl::Adnl> adnl);
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue