Class ClientTransactionProcessor

java.lang.Object
com.iizix.server.client.ClientTransactionProcessor
All Implemented Interfaces:
IClientTransactionProcessor, ITransactionCreator, ITransactionProcessor, ITransactionSender, IRootPropTransactionSender

public class ClientTransactionProcessor extends Object implements IClientTransactionProcessor, IRootPropTransactionSender
The TransactionProcessor contains all the code required to process transactions with the application being run for a single client reconnectable connection. If parallel client sessions is enabled or allowed, a single AppSessionGyro is shared.
Author:
Christopher Mindus
  • Method Details

    • getClientParams

      public ClientParams getClientParams()
      Gets the client parameters.
    • onConnection

      public void onConnection(SessionTransMgr manager)
      Called when a connection is established.
      Specified by:
      onConnection in interface ITransactionProcessor
    • onPause

      public void onPause(SessionTransMgr manager)
      Called when a connection is paused.
      Specified by:
      onPause in interface ITransactionProcessor
    • onReconnected

      public void onReconnected(SessionTransMgr manager)
      Called when a connection is reconnected.
      Specified by:
      onReconnected in interface ITransactionProcessor
    • onDisposed

      public void onDisposed(SessionTransMgr manager)
      Called when a connection is disposed of.
      Specified by:
      onDisposed in interface ITransactionProcessor
    • processTransaction

      public void processTransaction(SessionTransMgr manager, ReadTransaction trans)
      Process incoming transaction that itself can consist of several sub-transactions.

      Management transaction are not present here, but GConstants.TRANS_NEXT_SERIAL that should call manager.onNextSerialTransaction();.

      Specified by:
      processTransaction in interface ITransactionProcessor
      Parameters:
      trans - The transaction to process.
    • getClientProps

      public ClientProps getClientProps()
      Gets the client properties.
    • createTransaction

      public SendTransaction createTransaction()
      Creates a transaction with the configured write cache.
      Specified by:
      createTransaction in interface ITransactionCreator
      Returns:
      The new Transaction instance.
    • sendTransaction

      public void sendTransaction(SendTransaction trans)
      Sends the transaction to the remote party.
      Specified by:
      sendTransaction in interface IRootPropTransactionSender
      Specified by:
      sendTransaction in interface ITransactionSender
      Parameters:
      trans - The transaction.
    • postClientUpdate

      public void postClientUpdate()
      Posts an update to the root property to potentially perform client transactions.
    • isConnected

      public boolean isConnected()
      Verifies that the connection is established and not paused, reconnecting, etc.
      Specified by:
      isConnected in interface IRootPropTransactionSender
      Returns:
      true if connected, false otherwise.
    • restartRemoteClient

      public void restartRemoteClient()
      Restarts the remote client. This is done without asking anything: it will just restart the iiziRun or browser by disconnecting from server and reloading the page directly. For iiziRun Developer/Custom sessions, this will bring up that interface.
    • showMessageInClient

      public void showMessageInClient(int severity, String heading, String msg)
      Sends an error message to be displayed on the client immediately.
      Parameters:
      severity - The message severity (-1 none, 0=info, 1=warning, 2=error).
      heading - The heading text.
      msg - The message text.
    • closeClient

      public void closeClient(String msg)
      Sends an HTML message to be displayed on the client that will immediately close the connection.
      Parameters:
      msg - The message text in HTML.
    • setBusy

      public void setBusy(boolean isBusy)
      Sets the client session busy state.
      Parameters:
      isBusy - The busy state.
    • setBusy

      public void setBusy(boolean isBusy, String msg, int delay, int progress)
      Sets the client session busy state.
      Parameters:
      isBusy - The busy state (must be true to display message or progress).
      msg - Message to display in HTML format, null for none, ignored when "ready" (busy=false).
      delay - Delay in milliseconds: -2=default, -1=disabled, 0=no delay, >0 to 20_000 delay in milliseconds.
      progress - The progress state: -1 for none, otherwise a value between 0 and 100.
    • getLockSerial

      public int getLockSerial()
      Returns the lock serial number.
      Returns:
      Serial between 0 and 0xFFFF.
    • getClientContextMenuReference

      public String getClientContextMenuReference(UIContextMenu contextMenu)
      Gets the reference to use for a context menu.
      Specified by:
      getClientContextMenuReference in interface IRootPropTransactionSender
      Parameters:
      contextMenu - The context menu.
      Returns:
      The reference to use, empty string for none (never null).
    • appendPublicKey

      public void appendPublicKey(SendTransaction trans)
      Appends the server public key for the Diffie-Hellman key exchange with the client.
      Specified by:
      appendPublicKey in interface IClientTransactionProcessor
      Parameters:
      trans - The transaction.
    • updateAuthentication

      public void updateAuthentication(ReadTransaction trans) throws Exception
      Updates the current user with a password that is encrypted in AES/CBC 256-bit.
      Specified by:
      updateAuthentication in interface IClientTransactionProcessor
      Parameters:
      trans - The transaction
      Throws:
      Exception - If there is any kind of problem with the authentication, transaction, encryption or alike.