Skip to content

Commit f963f97

Browse files
authored
feat: update config options (#28)
1 parent 9860a12 commit f963f97

File tree

6 files changed

+151
-33
lines changed

6 files changed

+151
-33
lines changed

examples/kademlia.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ int main(int argc, char *argv[])
1616
auto res = nodeA.syncPeerInfo();
1717
PeerInfo nodeAPeerInfo = res.data.value<PeerInfo>();
1818

19-
Libp2pModulePlugin nodeB({ nodeAPeerInfo });
19+
Libp2pModulePlugin nodeB({}, { nodeAPeerInfo });
2020

2121
if (!nodeB.syncLibp2pStart().ok) {
2222
qFatal("Node B failed to start");

examples/ping.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ int main(int argc, char *argv[])
1616
auto res = nodeA.syncPeerInfo();
1717
PeerInfo infoA = res.data.value<PeerInfo>();
1818

19-
Libp2pModulePlugin nodeB({ infoA });
19+
Libp2pModulePlugin nodeB({}, { infoA });
2020

2121
qDebug() << "Starting node B...";
2222
if (!nodeB.syncLibp2pStart().ok) {

flake.lock

Lines changed: 109 additions & 15 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/plugin.cpp

Lines changed: 31 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,10 @@
88
#include <QEventLoop>
99
#include <QThread>
1010

11-
Libp2pModulePlugin::Libp2pModulePlugin(const QList<PeerInfo> &bootstrapNodes)
11+
Libp2pModulePlugin::Libp2pModulePlugin(const QList<QString> addrs, const QList<PeerInfo> &bootstrapNodes, int transport)
1212
: ctx(nullptr),
13-
m_bootstrapNodes(bootstrapNodes)
13+
m_bootstrapNodes(bootstrapNodes),
14+
m_addrs(addrs)
1415
{
1516
qRegisterMetaType<PeerInfo>("PeerInfo");
1617
qRegisterMetaType<QList<PeerInfo>>("QList<PeerInfo>");
@@ -25,12 +26,37 @@ Libp2pModulePlugin::Libp2pModulePlugin(const QList<PeerInfo> &bootstrapNodes)
2526

2627
std::memset(&config, 0, sizeof(config));
2728

28-
config.flags |= LIBP2P_CFG_GOSSIPSUB;
2929
config.mount_gossipsub = 1;
30-
31-
config.flags |= LIBP2P_CFG_GOSSIPSUB_TRIGGER_SELF;
3230
config.gossipsub_trigger_self = 1;
3331

32+
config.max_connections = 50;
33+
config.max_in = 25;
34+
config.max_out = 25;
35+
config.max_conns_per_peer = 1;
36+
37+
config.transport = transport;
38+
39+
/* -------------------------
40+
* Save local listen addrs
41+
* ------------------------- */
42+
43+
if (!m_addrs.isEmpty()) {
44+
m_addrsUtf8.reserve(m_addrs.size());
45+
m_addrsPtr.reserve(m_addrs.size());
46+
47+
for (const QString &addr : m_addrs) {
48+
m_addrsUtf8.push_back(addr.toUtf8());
49+
m_addrsPtr.push_back(m_addrsUtf8.back().data());
50+
}
51+
52+
config.addrs = const_cast<const char **>(m_addrsPtr.data());
53+
config.addrsLen = m_addrsPtr.size();
54+
}
55+
56+
/* -------------------------
57+
* Bootstrap nodes
58+
* ------------------------- */
59+
3460
if (!m_bootstrapNodes.isEmpty()) {
3561
m_bootstrapCNodes.reserve(m_bootstrapNodes.size());
3662
m_addrUtf8Storage.reserve(m_bootstrapNodes.size());
@@ -63,19 +89,14 @@ Libp2pModulePlugin::Libp2pModulePlugin(const QList<PeerInfo> &bootstrapNodes)
6389
m_bootstrapCNodes.push_back(node);
6490
}
6591

66-
config.flags |= LIBP2P_CFG_KAD_BOOTSTRAP_NODES;
6792
config.kad_bootstrap_nodes = m_bootstrapCNodes.data();
6893
config.kad_bootstrap_nodes_len = m_bootstrapCNodes.size();
6994
}
7095

71-
config.flags |= LIBP2P_CFG_KAD;
7296
config.mount_kad = 1;
7397

74-
config.flags |= LIBP2P_CFG_KAD_DISCOVERY;
7598
config.mount_kad_discovery = 1;
7699

77-
config.flags |= LIBP2P_CFG_MIX;
78-
config.flags |= LIBP2P_CFG_PRIVATE_KEY;
79100
config.mount_mix = 1;
80101

81102
/* -------------------------

src/plugin.h

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ class Libp2pModulePlugin : public QObject, public Libp2pModuleInterface
4444
*
4545
* bootstrapNodes are used to initially connect to the network.
4646
*/
47-
explicit Libp2pModulePlugin(const QList<PeerInfo> &bootstrapNodes = {});
47+
explicit Libp2pModulePlugin(const QList<QString> addrs = {}, const QList<PeerInfo> &bootstrapNodes = {}, int transport = LIBP2P_TRANSPORT_TCP);
4848
~Libp2pModulePlugin() override;
4949

5050
/// Plugin name exposed to Logos.
@@ -260,19 +260,22 @@ private slots:
260260
private:
261261
/// Bootstrap peers used during node startup.
262262
QList<PeerInfo> m_bootstrapNodes;
263-
264263
/// C-compatible bootstrap node structures.
265264
QVector<libp2p_bootstrap_node_t> m_bootstrapCNodes;
266-
267265
/// Keeps UTF-8 address buffers alive.
268266
QVector<QVector<QByteArray>> m_addrUtf8Storage;
269-
270267
/// Keeps char** arrays alive.
271268
QVector<QVector<char*>> m_addrPtrStorage;
272-
273269
/// Storage for peer IDs.
274270
QVector<QByteArray> m_peerIdStorage;
275271

272+
/// List of addrs
273+
QList<QString> m_addrs;
274+
/// Keeps UTF-8 address buffers alive.
275+
QVector<QByteArray> m_addrsUtf8;
276+
/// Keeps char* arrays alive.
277+
QVector<char*> m_addrsPtr;
278+
276279
/// libp2p context.
277280
libp2p_ctx_t *ctx = nullptr;
278281

tests/integration.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ private slots:
4242
PeerInfo nodeAPeerInfo = nodeA.syncPeerInfo().data.value<PeerInfo>();
4343

4444
// setup node B
45-
Libp2pModulePlugin nodeB({ nodeAPeerInfo });
45+
Libp2pModulePlugin nodeB({}, { nodeAPeerInfo });
4646
QVERIFY(nodeB.syncLibp2pStart().ok);
4747

4848
QByteArray key = "integration-key";

0 commit comments

Comments
 (0)