libp2p/protocols/pubsub/pubsubpeer

    Dark Mode
Search:
Group by:
  Source   Edit

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
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