Class ClajPinger

java.lang.Object
arc.net.Connection
arc.net.Client
com.xpdustry.claj.api.ClajPinger
All Implemented Interfaces:
arc.net.EndPoint, Runnable

public class ClajPinger extends arc.net.Client
Note that pingHost(String, int, Cons, Cons), requestRoomList(String, int, Cons, Cons) and joinRoom(String, int, long, Cons, Cons, Cons) are non-blocking operations.
But if one of them are called while another is running, the last one is canceled.
  • Field Details

    • NO_PASSWORD

      public static final short NO_PASSWORD
      See Also:
    • connectTimeout

      public static int connectTimeout
      In ms.
    • pingTimeout

      public static int pingTimeout
      In ms.
    • joinTimeout

      public static int joinTimeout
      In ms.
    • infoTimeout

      public static int infoTimeout
      In ms.
    • listTimeout

      public static int listTimeout
      In ms.
    • provider

      protected final ClajProvider provider
    • receiver

      protected final com.xpdustry.claj.common.net.ClientReceiver receiver
    • selector

      protected final Selector selector
    • connectHost

      protected String connectHost
    • connectPort

      protected int connectPort
    • shutdown

      protected volatile boolean shutdown
    • starting

      protected volatile boolean starting
    • connecting

      protected volatile boolean connecting
    • canceling

      public volatile boolean canceling
      If true, current and future operations will be canceled.
    • time

      protected volatile long time
    • timeout

      protected volatile long timeout
    • pingSuccess

      protected arc.func.Cons<com.xpdustry.claj.common.status.ServerState> pingSuccess
    • pingFailed

      protected arc.func.Cons<Exception> pingFailed
    • pinging

      protected volatile boolean pinging
    • listInfo

      protected arc.func.Cons<arc.struct.Seq<ClajRoom<?>>> listInfo
    • listFailed

      protected arc.func.Cons<Exception> listFailed
    • listing

      protected volatile boolean listing
    • joinSuccess

      protected arc.func.Cons<ByteBuffer> joinSuccess
    • joinDenied

      protected arc.func.Cons<com.xpdustry.claj.common.status.RejectReason> joinDenied
    • joinFailed

      protected arc.func.Cons<Exception> joinFailed
    • lastRequest

      protected com.xpdustry.claj.common.packets.RoomJoinRequestPacket lastRequest
    • requestedRoom

      protected volatile long requestedRoom
    • joining

      protected volatile boolean joining
    • infoSuccess

      protected arc.func.Cons<ClajRoom<?>> infoSuccess
    • infoNotFound

      protected Runnable infoNotFound
    • infoFailed

      protected arc.func.Cons<Exception> infoFailed
    • infoing

      protected volatile boolean infoing
  • Constructor Details

  • Method Details

    • update

      public void update(int t) throws IOException
      Specified by:
      update in interface arc.net.EndPoint
      Overrides:
      update in class arc.net.Client
      Throws:
      IOException
    • run

      public void run()
      Specified by:
      run in interface arc.net.EndPoint
      Specified by:
      run in interface Runnable
      Overrides:
      run in class arc.net.Client
    • start

      public void start()
      Specified by:
      start in interface arc.net.EndPoint
      Overrides:
      start in class arc.net.Client
    • stop

      public void stop()
      Specified by:
      stop in interface arc.net.EndPoint
      Overrides:
      stop in class arc.net.Client
    • close

      public void close()
      Specified by:
      close in interface arc.net.EndPoint
      Overrides:
      close in class arc.net.Client
    • close

      public void close(arc.net.DcReason reason)
      Overrides:
      close in class arc.net.Connection
    • timeout

      protected void timeout()
    • cancel

      public void cancel()
      Cancel running operation.
    • failed

      public void failed(Throwable error)
    • stopTask

      public void stopTask(String reason, Throwable error)
    • isRunning

      public boolean isRunning()
    • isConnecting

      public boolean isConnecting()
    • isWorking

      public boolean isWorking()
    • setCancelState

      public void setCancelState(boolean cancel)
    • postTask

      protected <T> void postTask(arc.func.Cons<T> consumer, T object)
    • postTask

      protected void postTask(Runnable run)
    • isRequestTimedOut

      public boolean isRequestTimedOut()
    • setRequestTimeout

      public void setRequestTimeout(int out)
    • makeRoom

      protected <T> ClajRoom<T> makeRoom(long roomId, boolean isProtected, com.xpdustry.claj.common.status.ClajType type, int clients, int maxClients, ByteBuffer state)
    • resetPingState

      protected void resetPingState(arc.func.Cons<com.xpdustry.claj.common.status.ServerState> success, arc.func.Cons<Exception> failed)
    • runPingSuccess

      protected void runPingSuccess(int version)
    • runPingFailed

      protected void runPingFailed(Exception e)
    • resetListState

      protected <T> void resetListState(arc.func.Cons<arc.struct.Seq<ClajRoom<T>>> rooms, arc.func.Cons<Exception> failed)
    • runListInfo

      protected void runListInfo(arc.struct.LongMap<ByteBuffer> states, arc.struct.ObjectSet<Long> protectedRooms)
    • runListFailed

      protected void runListFailed(Exception e)
    • resetJoinState

      protected void resetJoinState(arc.func.Cons<ByteBuffer> success, arc.func.Cons<com.xpdustry.claj.common.status.RejectReason> reject, arc.func.Cons<Exception> failed)
    • runJoinSuccess

      protected void runJoinSuccess()
    • runJoinDenied

      protected void runJoinDenied(com.xpdustry.claj.common.status.RejectReason reason)
    • runJoinFailed

      protected void runJoinFailed(Exception e)
    • resetInfoState

      protected <T> void resetInfoState(arc.func.Cons<ClajRoom<T>> success, Runnable notFound, arc.func.Cons<Exception> failed)
    • runInfoSuccess

      protected void runInfoSuccess(long roomId, boolean isProtected, com.xpdustry.claj.common.status.ClajType type, int clients, int maxClients, ByteBuffer state)
    • runInfoFailed

      protected void runInfoFailed(Exception e)
    • runInfoNotFound

      protected void runInfoNotFound()
    • connect

      public void connect(String host, int port) throws IOException
      Connect using connectTimeout and same port for TCP and UDP.
      This also ensures that the client is running before connection, and can be canceled.
      Throws:
      IOException
    • pingHost

      public void pingHost(String host, int port, arc.func.Cons<com.xpdustry.claj.common.status.ServerState> success, arc.func.Cons<Exception> failed)
    • requestRoomList

      public <T> void requestRoomList(String host, int port, arc.func.Cons<arc.struct.Seq<ClajRoom<T>>> rooms, arc.func.Cons<Exception> failed)
    • joinRoom

      public void joinRoom(String host, int port, long roomId, arc.func.Cons<ByteBuffer> success, arc.func.Cons<com.xpdustry.claj.common.status.RejectReason> reject, arc.func.Cons<Exception> failed)
    • joinRoom

      public void joinRoom(String host, int port, long roomId, short password, arc.func.Cons<ByteBuffer> success, arc.func.Cons<com.xpdustry.claj.common.status.RejectReason> reject, arc.func.Cons<Exception> failed)
    • joinRoom

      protected void joinRoom(String host, int port, long roomId, boolean withPassword, short password, arc.func.Cons<ByteBuffer> success, arc.func.Cons<com.xpdustry.claj.common.status.RejectReason> reject, arc.func.Cons<Exception> failed)
    • requestRoomInfo

      public <T> void requestRoomInfo(String host, int port, long roomId, arc.func.Cons<ClajRoom<T>> info, Runnable notFound, arc.func.Cons<Exception> failed)
    • requestServerStatus

      protected void requestServerStatus()
    • requestRoomInfo

      protected void requestRoomInfo(long roomId)
    • requestRoomList

      protected void requestRoomList()
    • requestRoomJoin

      protected void requestRoomJoin(long roomId, boolean withPassword, short password)
    • makeJoinPacket

      protected ByteBuffer makeJoinPacket(com.xpdustry.claj.common.packets.RoomJoinRequestPacket request)