Class NostrRelay

java.lang.Object
org.ngengine.nostr4j.NostrRelay

public final class NostrRelay extends Object
  • Field Details

    • connector

      protected final org.ngengine.platform.transport.WebsocketTransport connector
    • url

      protected final String url
    • listeners

      protected final List<NostrRelayComponent> listeners
    • waitingEventsAck

      protected final Map<String, NostrMessageAck> waitingEventsAck
    • executor

      protected final org.ngengine.platform.AsyncExecutor executor
    • excQueue

      protected final org.ngengine.platform.ExecutionQueue excQueue
    • reconnectionBackoff

      protected final ExponentialBackoff reconnectionBackoff
    • ackTimeoutS

      protected volatile long ackTimeoutS
    • enableAutoReconnect

      protected volatile boolean enableAutoReconnect
    • maxSendFailures

      protected volatile int maxSendFailures
    • verifyEvents

      protected volatile boolean verifyEvents
    • parallelEvents

      protected volatile boolean parallelEvents
    • connectAttemptGeneration

      protected final AtomicLong connectAttemptGeneration
    • statusTimeoutGeneration

      protected final AtomicLong statusTimeoutGeneration
    • ackCleanupGeneration

      protected final AtomicLong ackCleanupGeneration
    • currentStatus

      protected NostrRelay.Status currentStatus
    • statusSince

      protected Instant statusSince
    • statusTimeout

      protected Duration statusTimeout
    • reconnect

      protected boolean reconnect
    • markForDisconnection

      protected String markForDisconnection
    • messageQueue

      protected final Queue<org.ngengine.nostr4j.NostrRelay.QueuedMessage> messageQueue
    • connectCallbacks

      protected final Queue<org.ngengine.nostr4j.NostrRelay.ConnectionCallback> connectCallbacks
    • disconnectCallbacks

      protected final Queue<org.ngengine.nostr4j.NostrRelay.ConnectionCallback> disconnectCallbacks
    • relayInfo

      protected transient NostrRelayInfo relayInfo
  • Constructor Details

    • NostrRelay

      public NostrRelay(String url)
    • NostrRelay

      public NostrRelay(String url, org.ngengine.platform.AsyncExecutor executor)
  • Method Details

    • setStatus

      protected void setStatus(NostrRelay.Status s)
    • updateStatus

      protected void updateStatus(NostrRelay.Status s)
    • getStatus

      public NostrRelay.Status getStatus()
    • isStatusTimeout

      protected boolean isStatusTimeout()
    • cleanupExpiredAcks

      protected void cleanupExpiredAcks()
    • scheduleAckCleanupIfNeeded

      protected void scheduleAckCleanupIfNeeded()
    • scheduleStatusTimeoutCheck

      protected void scheduleStatusTimeoutCheck()
    • scheduleConnectAttempt

      protected void scheduleConnectAttempt(Duration delay)
    • runInRelayExecutor

      protected <T> void runInRelayExecutor(BiConsumer<Consumer<T>, Consumer<Throwable>> runnable, boolean enqueue)
    • resetConnection

      public void resetConnection()
    • getInfo

      public NostrRelayInfo getInfo() throws IOException
      Throws:
      IOException
    • setVerifyEvents

      public void setVerifyEvents(boolean verify)
    • isVerifyEvents

      public boolean isVerifyEvents()
    • setAsyncEventsVerification

      public void setAsyncEventsVerification(boolean v)
    • isAsyncEventsVerification

      public boolean isAsyncEventsVerification()
    • setAutoReconnect

      public void setAutoReconnect(boolean reconnect)
    • isAutoReconnect

      public boolean isAutoReconnect()
    • setAckTimeout

      public void setAckTimeout(long time, TimeUnit unit)
    • getAckTimeout

      public long getAckTimeout(TimeUnit outputUnit)
    • addComponent

      public NostrRelay addComponent(NostrRelayComponent listener)
    • removeComponent

      public NostrRelay removeComponent(NostrRelayComponent listener)
    • getComponent

      public <T extends NostrRelayComponent> T getComponent(Class<T> clazz)
    • isConnected

      public boolean isConnected()
      Returns true only when the websocket transport is ready for immediate sends.
    • isActive

      public boolean isActive()
      Returns true while the relay is active in its lifecycle, including connection setup/retry states.
    • beforeSendMessage

      public void beforeSendMessage(NostrMessage message)
    • afterSendMessage

      public void afterSendMessage(NostrMessage message)
    • sendMessage

      public org.ngengine.platform.AsyncTask<NostrMessageAck> sendMessage(NostrMessage message)
    • sendMessage

      protected org.ngengine.platform.AsyncTask<NostrMessageAck> sendMessage(NostrMessage message, int failures)
    • getUrl

      public String getUrl()
    • connect

      public org.ngengine.platform.AsyncTask<NostrRelay> connect()
    • isMarkedForDisconnection

      protected boolean isMarkedForDisconnection()
    • disconnect

      public org.ngengine.platform.AsyncTask<NostrRelay> disconnect(String reason)
    • disconnect

      public org.ngengine.platform.AsyncTask<NostrRelay> disconnect(String reason, boolean reconnect)
    • loop

      protected void loop()
    • processState

      protected void processState()
    • toString

      public String toString()
      Overrides:
      toString in class Object