Types
DropConn = proc (peer: PubSubPeer) {....gcsafe, raises: [].}
- Source Edit
GetConn = proc (): Future[Connection] {....gcsafe, raises: [].}
- Source Edit
OnEvent = proc (peer: PubSubPeer; event: PubSubPeerEvent) {....gcsafe, raises: [].}
- Source Edit
PeerRateLimitError = object of CatchableError
- Source Edit
PubSubObserver = ref object onRecv*: proc (peer: PubSubPeer; msgs: var RPCMsg) {....gcsafe, raises: [].} onSend*: proc (peer: PubSubPeer; msgs: var RPCMsg) {....gcsafe, raises: [].} onValidated*: proc (peer: PubSubPeer; msg: Message; msgId: MessageId) {. ...gcsafe, raises: [].}
- Source Edit
PubSubPeer = ref object of RootObj getConn*: GetConn onEvent*: OnEvent codec*: string sendConn*: Connection connectedFut: Future[void] address*: Option[MultiAddress] peerId*: PeerId handler*: RPCHandler observers*: ref seq[PubSubObserver] score*: float64 sentIHaves*: Deque[HashSet[MessageId]] iDontWants*: Deque[HashSet[SaltedId]] ## IDONTWANT contains unvalidated message id:s which may be long and/or ## expensive to look up, so we apply the same salting to them as during ## unvalidated message processing iHaveBudget*: int pingBudget*: int maxMessageSize: int appScore*: float64 behaviourPenalty*: float64 overheadRateLimitOpt*: Opt[TokenBucket] rpcmessagequeue: RpcMessageQueue maxNumElementsInNonPriorityQueue*: int disconnected: bool
- Source Edit
PubSubPeerEvent = object kind*: PubSubPeerEventKind
- Source Edit
PubSubPeerEventKind {.pure.} = enum StreamOpened, StreamClosed, DisconnectionRequested
- Source Edit
RPCHandler = proc (peer: PubSubPeer; data: seq[byte]): Future[void] {....gcsafe, raises: [].}
- Source Edit
RpcMessageQueue = ref object sendPriorityQueue: Deque[Future[void]] nonPriorityQueue: AsyncQueue[seq[byte]] sendNonPriorityTask: Future[void]
- Source Edit
Procs
func `==`(a, b: PubSubPeer): bool {....raises: [], tags: [].}
- Source Edit
proc canAskIWant(p: PubSubPeer; msgId: MessageId): bool {....raises: [], tags: [].}
- Source Edit
proc connect(p: PubSubPeer) {....raises: [], tags: [RootEffect].}
- Source Edit
proc connected(p: PubSubPeer): bool {....raises: [], tags: [].}
- Source Edit
proc getAgent(peer: PubSubPeer): string {....raises: [], tags: [].}
- Source Edit
proc handle(p: PubSubPeer; conn: Connection): Future[void] {.stackTrace: false, ...raises: [], gcsafe, raises: [], raises: [], tags: [RootEffect].}
- Source Edit
func hash(p: PubSubPeer): Hash {....raises: [], tags: [].}
- Source Edit
proc hasObservers(p: PubSubPeer): bool {....raises: [], tags: [].}
- Source Edit
proc hasSendConn(p: PubSubPeer): bool {....raises: [], tags: [].}
- Source Edit
proc new(T: typedesc[PubSubPeer]; peerId: PeerId; getConn: GetConn; onEvent: OnEvent; codec: string; maxMessageSize: int; maxNumElementsInNonPriorityQueue: int = DefaultMaxNumElementsInNonPriorityQueue; overheadRateLimitOpt: Opt[TokenBucket] = Opt.none(TokenBucket)): T:type {. ...raises: [].}
- Source Edit
func outbound(p: PubSubPeer): bool {....raises: [], tags: [].}
- Source Edit
proc recvObservers(p: PubSubPeer; msg: var RPCMsg) {....raises: [], tags: [RootEffect].}
- Source Edit
proc send(p: PubSubPeer; msg: RPCMsg; anonymize: bool; isHighPriority: bool) {. ...raises: [], raises: [], tags: [RootEffect, WriteIOEffect, TimeEffect].}
-
Asynchronously sends an RPCMsg to a specified PubSubPeer with an option for anonymization.
Parameters:
- p: The PubSubPeer instance to which the message is to be sent.
- msg: The RPCMsg instance representing the message to be sent.
- anonymize: A boolean flag indicating whether the message should be sent with anonymization.
- isHighPriority: A boolean flag indicating whether the message should be treated as high priority.
High priority messages are sent immediately, while low priority messages are queued and sent only after all high priority messages have been sent.
Source Edit proc sendEncoded(p: PubSubPeer; msg: seq[byte]; isHighPriority: bool): Future[ void] {....raises: [], tags: [WriteIOEffect, TimeEffect, RootEffect].}
-
Asynchronously sends an encoded message to a specified PubSubPeer.
Parameters:
- p: The PubSubPeer instance to which the message is to be sent.
- msg: The message to be sent, encoded as a sequence of bytes (seq[byte]).
- isHighPriority: A boolean indicating whether the message should be treated as high priority.
High priority messages are sent immediately, while low priority messages are queued and sent only after all high priority messages have been sent.
Source Edit func shortLog(p: PubSubPeer): string {....raises: [], tags: [].}
- Source Edit
proc stopSendNonPriorityTask(p: PubSubPeer) {....raises: [], tags: [WriteIOEffect, TimeEffect, RootEffect].}
- Source Edit
proc validatedObservers(p: PubSubPeer; msg: Message; msgId: MessageId) {. ...raises: [], tags: [RootEffect].}
- Source Edit
Templates
template formatItIMPL(it: PubSubPeer): auto
- Source Edit
Exports
-
formatItIMPL, exclIfIt, hash, shortLog, random, $, write, PeerId, ==, getField, <=, capLen, init, validate, init, match, <, getBytes, maxInlineKeyLength, write, withValue, safeConvert, shortLog, >=, withValue, public, shortLog, compilesOr, toBytes, match, valueOr, init, init, init, toOpt, init, withValue, hasPublicKey, >, hex, len, exceptionToAssert, cmp, extractPublicKey, DNS_OR_IP, shortLog, init, decode, random, UDP_DNS, $, <=, MaError, ephemeral, MaPatternOp, ==, WS_DNS, initVBuffer, getProtoHeader, decode, MaxSizeError, ProtoHeader, ProtoFlags, getLen, ECDHEScheme, shortLog, init, closed, [], macOpenArray, random, init, VBuffer, Secret, peekVarint, random, $, validate, init, bytes, maxInlineKeyLength, TranscoderDNS, QUIC, [], init, ephemeral, withValue, getRequiredField, getField, supported, WS_IP, safeConvert, public, MAKind, write, write, init, getField, checkFieldNumber, valueOr, init, getRepeatedField, matchPartial, libp2p_pki_schemes, getBytes, len, init, readLp, HTTP, initVBuffer, atEof, LPStreamTrackerName, peekSeq, toOpt, fullAddrs, payloadType, getProtoHeader, LPStreamError, init, IP, protoAddress, QUIC_V1_IP, newRng, DefaultConnectionTimeout, ==, withValue, checkValid, mac, getPublicKey, exceptionToAssert, WebSockets, CircuitRelay, extractPublicKey, mapAnd, new, maErr, UDP_IP, new, newLPStreamEOFError, init, DNSADDR, AddressMapper, init, write, PeerId, WSS, LPStream, QUIC_V1, TCP_IP, writePacked, init, init, closeImpl, readSeq, toBytes, TCP_DNS, shortLog, encode, capLen, protoName, ==, toRawBytes, mapOr, MaPattern, $, initProtoBuffer, init, ProtoBuffer, WSS_DNS, match, writeLPVarint, CryptoResult, parseFullAddress, ProtoResult, WebRTCDirect, init, UDP, TranscoderOnion, StreamTracker, write, init, LPStreamResetError, isEmpty, writeArray, decode, LPStreamIncompleteError, [], LPStreamEOFError, IP6, shortLog, initVBuffer, PKScheme, finish, toString, payload, init, Connection, write, init, TCP, PrivateKey, getBytes, write, init, &=, PeerInfoError, newLPStreamClosedError, random, write, compilesOr, close, TranscoderIP4, init, initProtoBuffer, toException, DNS, finish, stretchKeys, UTP, goffset, readVarint, >, KeyPair, QUIC_V1_DNS, high, init, cmp, init, SupportedWireTypes, formatItIMPL, formatItIMPL, formatItIMPL, Signature, contains, exclIfIt, hash, formatItIMPL, toBytes, DigestSheme, IPFS, getField, readOnce, isEmpty, ProtoScalar, shortLog, data, hex, protocols, init, HTTPS, len, LPError, getPtr, write, TLS_WS, sign, encode, update, MaResult, init, ProtoField, init, toBytes, writeSeq, init, &, DNS6, IpTransportProtocol, toOpenArray, init, IP4, TranscoderPort, isEnough, getBytes, getField, >=, payloadDomain, $, withValue, getRawBytes, LPStreamLimitError, TranscoderOnion3, SignedPayload, toBytes, protoArgument, newLPStreamLimitError, write, keyOpenArray, init, match, WebSockets_DNS, $, isEmpty, writeLp, getRequiredRepeatedField, newLPStreamIncompleteError, initProtoBuffer, MAProtocol, newLPStreamResetError, getPackedRepeatedField, initStream, init, getField, shortLog, DNS4, MultiAddress, getWrapped, readArray, selectBest, write, P2PPattern, Envelope, hasPublicKey, toException, init, isEnough, DNSANY, Reliable, addrs, hex, closeImpl, WS, encode, TimeoutHandler, getField, match, <, iv, readLine, Eof, CryptoError, getField, verify, append, vsizeof, parseFullAddress, WSS_IP, LPStreamConnDownError, peekArray, UNIX, PeerRecord, init, SupportedSchemes, getRepeatedField, getField, hash, Unreliable, SupportedSchemesInt, random, checkFutures, shuffle, init, validate, $, protoCode, mapEq, Onion3, write, TcpOnion3, hash, concat, TranscoderP2P, PeerInfo, AddressInfo, ConnectionTrackerName, TranscoderIP6, write, EnvelopeError, encode, len, newLPStreamRemoteClosedError, TranscoderIP6Zone, MaPatResult, Direction, init, InvalidVarintError, shortLog, items, ==, init, write, getBytes, write, readVarint, QUIC_DNS, key, QUIC_IP, init, PublicKey, WebSockets_IP, writeLp, writePBVarint, ProtoFieldKind, readExactly, protoArgument, getRepeatedField, ProtoError, newLPStreamConnDownError, init, initStream, getField, ivOpenArray, closeWithEOF, orError, getField, LPStreamRemoteClosedError, MaInvalidAddress, LPStreamClosedError, RsaDefaultKeySize, write, getOrder, TranscoderUnix, SignedPeerRecord, join, writeVarint