6#include <initializer_list>
12#include "ArduinoJson.h"
54 std::map<NostrString, NostrRelaySubscriptionState> relayStates;
102 this->transport = transport;
103 this->eventStatusTimeoutSeconds = eventStatusTimeoutSeconds;
104 this->limits = limits;
123 std::initializer_list<NostrString>
urls,
124 std::initializer_list<
125 std::map<
NostrString, std::initializer_list<NostrString>>>
133 const std::vector<NostrString> &
urls,
134 std::initializer_list<
135 std::map<
NostrString, std::initializer_list<NostrString>>>
164 bool publish(std::initializer_list<NostrString>
rs,
243 class DispatchGuard {
245 explicit DispatchGuard(
NostrPool *pool) : pool(pool) { ++pool->dispatchDepth; }
247 if (--pool->dispatchDepth == 0) pool->flushDeferredMutations();
256 std::map<NostrString, NostrSubscription> subscriptions;
257 std::vector<NostrRelay *> relays;
258 void onEvent(NostrRelay *relay,
NostrString message);
259 void recomputeSubscriptionEose(
const NostrString &subId);
260 int eventStatusTimeoutSeconds = 60 * 10;
261 std::vector<EventStatusCallbackEntry> eventStatusCallbackEntries;
262 Transport *transport;
264 bool verifyIncomingEvents =
false;
266 std::mutex seenMutex;
267 unsigned int dispatchDepth = 0;
268 bool deferredClose =
false;
269 std::vector<NostrString> deferredRelayDisconnects;
272 void flushDeferredMutations();
#define NostrString
Definition NostrString.h:10
Definition NostrTransport.h:10
Definition NostrPool.h:92
NostrPool(Transport *transport, int eventStatusTimeoutSeconds=60 *10, const NostrLimits &limits=NostrLimits())
Definition NostrPool.h:101
void setVerifyIncomingEvents(bool verify)
Definition NostrPool.h:179
bool publish(std::initializer_list< NostrString > rs, SignedNostrEvent *event, NostrEventStatusCallback statusCallback=nullptr)
Definition NostrPool.cpp:467
const std::vector< NostrRelay * > * getConnectedRelays() const
Definition NostrPool.cpp:527
NostrString subscribeMany(std::initializer_list< NostrString > urls, std::initializer_list< std::map< NostrString, std::initializer_list< NostrString > > > filters, NostrEventCallback eventCallback=nullptr, NostrCloseCallback closeCallback=nullptr, NostrEOSECallback eoseCallback=nullptr)
Definition NostrPool.cpp:171
NostrPool & operator=(NostrPool &&)=delete
void disconnectRelay(NostrString url)
Definition NostrPool.cpp:402
std::vector< NostrString > getRelays()
Definition NostrPool.cpp:519
bool getVerifyIncomingEvents() const
Definition NostrPool.h:182
void setSeenTracker(NostrSeenCallback callback)
Definition NostrPool.cpp:142
void close()
Definition NostrPool.cpp:436
NostrPool(const NostrPool &)=delete
NostrRelay * ensureRelay(NostrString url)
Definition NostrPool.cpp:348
void loop()
Definition NostrPool.cpp:495
void closeSubscription(NostrString subId)
Definition NostrPool.cpp:320
NostrPool(NostrPool &&)=delete
NostrPool & operator=(const NostrPool &)=delete
~NostrPool()
Definition NostrPool.cpp:7
bool hasSubscription(const NostrString &subId) const
Definition NostrPool.cpp:344
const NostrSubscription * getSubscription(const NostrString &subId) const
Definition NostrPool.cpp:339
Definition NostrPool.h:63
bool send(NostrString message)
Definition NostrPool.cpp:11
std::vector< NostrString > messageQueue
Definition NostrPool.h:80
NostrLimits limits
Definition NostrPool.h:82
NostrRelay(Connection *conn, NostrString url, const NostrLimits &limits)
Definition NostrPool.h:71
NostrString url
Definition NostrPool.h:79
bool restoreSubscriptions
Definition NostrPool.h:84
size_t queuedMessageBytes
Definition NostrPool.h:81
void processQueue()
Definition NostrPool.cpp:25
NostrString getUrl() const
Definition NostrPool.h:74
Connection * getConnection() const
Definition NostrPool.h:73
Connection * conn
Definition NostrPool.h:78
bool connectedOnce
Definition NostrPool.h:83
Definition NostrPool.h:43
NostrCloseCallback closeCallback
Definition NostrPool.h:46
NostrEOSECallback eoseCallback
Definition NostrPool.h:47
NostrEventStatusCallback statusCallback
Definition NostrPool.h:49
bool eose
Definition NostrPool.h:45
NostrEventCallback eventCallback
Definition NostrPool.h:48
Definition NostrEvent.h:130
Definition NostrTransport.h:21
Definition CryptoLock.h:6
std::function< bool(const SignedNostrEvent &)> NostrSeenCallback
Definition NostrPool.h:35
struct nostr::s_EventStatusCallbackEntry EventStatusCallbackEntry
std::function< void(const NostrString &, const NostrString &)> NostrCloseCallback
Definition NostrPool.h:21
std::function< void(const NostrString &)> NostrEOSECallback
Definition NostrPool.h:24
std::function< void(const NostrString &, bool, const NostrString &)> NostrEventStatusCallback
Definition NostrPool.h:34
std::function< void(NostrRelay *, const NostrString &)> NostrNoticeCallback
Definition NostrPool.h:23
std::function< void(const NostrString &, SignedNostrEvent *event)> NostrEventCallback
Definition NostrPool.h:32
Definition NostrLimits.h:9
Definition NostrPool.h:36
bool closed
Definition NostrPool.h:39
bool active
Definition NostrPool.h:37
bool disconnected
Definition NostrPool.h:40
bool eose
Definition NostrPool.h:38
Definition NostrPool.h:57
long long timestampSeconds
Definition NostrPool.h:59
NostrEventStatusCallback statusCallback
Definition NostrPool.h:58
NostrString eventId
Definition NostrPool.h:60