Class HostSession3270

java.lang.Object
com.iizix.term.tn3270e.HostSession3270
All Implemented Interfaces:
TelnetCommListener, HostSessionPeer

public class HostSession3270 extends Object implements HostSessionPeer, TelnetCommListener
The 3270 host session peer.
  • Field Details

    • display

      public final Display3270 display
      The 3270 display instance.
  • Constructor Details

    • HostSession3270

      public HostSession3270(HostSession owner, TerminalProps properties) throws IOException
      Constructor only from this package.
      Parameters:
      owner - Owner of session.
      properties - The terminal and communication properties.
      Throws:
      IOException - for errors.
  • Method Details

    • getHostSession

      public HostSession getHostSession()
      Gets the HostSession, i.e. the owner of the peer.
      Specified by:
      getHostSession in interface HostSessionPeer
    • is3270

      public boolean is3270()
      Checks if a session is 3270 or 5250.
      Specified by:
      is3270 in interface HostSessionPeer
      Returns:
      true is always 3270.
    • isProcessingDataStream

      public boolean isProcessingDataStream()
      Checks if the session is currently processing data stream commands to update the screen/cursor, state, etc.
      Specified by:
      isProcessingDataStream in interface HostSessionPeer
    • connect

      public boolean connect()
      Connects the session to host.
      Specified by:
      connect in interface HostSessionPeer
    • disconnect

      public boolean disconnect()
      Disconnects the session from host.
      Specified by:
      disconnect in interface HostSessionPeer
    • sendCharacterString

      public boolean sendCharacterString(String keys)
      Sends character keystrokes to host.
      Specified by:
      sendCharacterString in interface HostSessionPeer
    • sendKey

      public boolean sendKey(int key)
      Sends character keystrokes to host.
      Specified by:
      sendKey in interface HostSessionPeer
      See Also:
    • setHostString

      public boolean setHostString(int x, int y, int offset, int length, String string)
      Sets a string to a host field.
      Specified by:
      setHostString in interface HostSessionPeer
    • setHostStringAsKeys

      public boolean setHostStringAsKeys(int x, int y, int offset, int length, String string)
      Sets a string to a host field just as if the user typed the characters. The host field is first cleared with (3270) Clear EOF or (5250) Field Exit or Field Minus (for negative numbers in a numeric field). The string is then entered as a set of keystrokes, followed by a potential Field Exit or Field Minus (for negative numbers in a numeric field), but only for 5250.
      Specified by:
      setHostStringAsKeys in interface HostSessionPeer
    • doesHostNeedFieldExit

      public boolean doesHostNeedFieldExit(int x, int y, int offset, int length, String string)
      For 5250 only: checks if a field has the attributes that requires this particular string to enter the data followed by a "Field Exit" or "Field Minus" key. For 3270 it's always false.
      Specified by:
      doesHostNeedFieldExit in interface HostSessionPeer
      Returns:
      false=field doesn't require field exit, true=field requires field exit.
    • setCursor

      public boolean setCursor(int x, int y)
      Sets the host cursor position.
      Specified by:
      setCursor in interface HostSessionPeer
    • getLastError

      public String getLastError(boolean doClear)
      Gets the last error message of the session.
      Specified by:
      getLastError in interface HostSessionPeer
      Returns:
      null if the session doesn't support it (3270 doesn't).
    • setLastError

      public void setLastError(String errMsg)
      Sets the last error message of the session.
      Specified by:
      setLastError in interface HostSessionPeer
    • getCursor

      public Position getCursor()
      Gets the current host cursor position.
      Specified by:
      getCursor in interface HostSessionPeer
    • getScreenSize

      public Size getScreenSize()
      Gets the current screen size.
      Specified by:
      getScreenSize in interface HostSessionPeer
    • getScreenLength

      public int getScreenLength()
      Gets the current screen length (width * height).
      Specified by:
      getScreenLength in interface HostSessionPeer
    • getSessionState

      public int getSessionState()
      Gets the current session state.
      Specified by:
      getSessionState in interface HostSessionPeer
      Returns:
      A combination of HostSessionPeer.STATE_* flags is returned.
    • getCharactersAndAttributes

      public void getCharactersAndAttributes(char[] chars, int[] attrbs, int beginPos, int endPos)
      Gets the characters and attributes between two positions, including the end position.
      Specified by:
      getCharactersAndAttributes in interface HostSessionPeer
    • getCharactersAndAttributes

      public void getCharactersAndAttributes(char[] chars, int[] attrbs, int beginPos, int endPos, char fieldOrNullChar)
      Gets the characters and attributes between two positions, including the end position. The character "fieldOrNullChar" is the character that will be used instead of field attributes and null characters.
      Specified by:
      getCharactersAndAttributes in interface HostSessionPeer
    • refreshHostFields

      public void refreshHostFields(HostFields fields)
      Refreshes the host fields of the current session. The host session will add all available host fields sorted left to right, top to bottom.
      Specified by:
      refreshHostFields in interface HostSessionPeer
    • getDeviceName

      public String getDeviceName()
      Gets the device name of the session.
      Specified by:
      getDeviceName in interface HostSessionPeer
      Returns:
      null if no device name exists.
    • isPrinter

      public boolean isPrinter()
      Checks if this is a printer or not (always false).
      Specified by:
      isPrinter in interface HostSessionPeer
    • setInsertMode

      public boolean setInsertMode(boolean on)
      Sets the insert mode.
      Specified by:
      setInsertMode in interface HostSessionPeer
      Returns:
      true for success, false for failure.
    • doesFieldHaveExtendedAttributes

      public boolean doesFieldHaveExtendedAttributes(HostField hostField)
      Checks if a host field has extended attributes or not. 5250 never has, but 3270 could have, e.g. special highlighting.
      Specified by:
      doesFieldHaveExtendedAttributes in interface HostSessionPeer
    • getNewCharAttribute

      public int getNewCharAttribute(HostField hostField)
      Gets the attribute to use for new characters in a field that contains extended attributes (always zero for non-3270).
      Specified by:
      getNewCharAttribute in interface HostSessionPeer
    • getClientHostFieldFlags

      public int getClientHostFieldFlags(HostField hostField)
      Gets flags that are required for the client host fields for local editing, etc.
      Specified by:
      getClientHostFieldFlags in interface HostSessionPeer
    • isAutoReconnectSessionEnabled

      public boolean isAutoReconnectSessionEnabled()
      Checks if the use of auto reconnect session is handled or not.
      Specified by:
      isAutoReconnectSessionEnabled in interface HostSessionPeer
    • getHomeAddress

      public int getHomeAddress()
      Gets the host address index on the screen.
      Specified by:
      getHomeAddress in interface HostSessionPeer
      Returns:
      -1 if none is available.
    • setHostField

      public boolean setHostField(HostField hostField, String data, int[] attrs)
      Sets a host field fully with text data and perhaps attributes (if these are non-null).
      Specified by:
      setHostField in interface HostSessionPeer
      Returns:
      true for success, false for failure.
    • getAllowedCharacters

      public String getAllowedCharacters()
      Gets the string of characters that can be input by the user using the configured host code page for this session.

      If the return string is empty, for the EE package for example, all characters are "inputable".

      Specified by:
      getAllowedCharacters in interface HostSessionPeer
    • isFieldFormatted

      public boolean isFieldFormatted()
      Checks if this host screen is field formatted. This method is not like the one in HostScreen, this one checks directly to see if any fields are present.
      Specified by:
      isFieldFormatted in interface HostSessionPeer
    • getAssociated3270Printer

      public com.iizix.term.tn3270e.HostSession3270Printer getAssociated3270Printer()
      Gets the 3270 printer session "associated" with this terminal session, null if no printer is associated.
      Returns:
      The associated 3270 printer, null for none.
    • getOwnerHostSession

      public HostSession3270 getOwnerHostSession()
      Gets the owner (terminal) host session for the printer session.
      Returns:
      null for no printer session or printer is not yet associated with a session.
    • isDisplayInSystemRequestMode

      public boolean isDisplayInSystemRequestMode()
      Checks if the display is in System Request mode for 5250 only.
      Specified by:
      isDisplayInSystemRequestMode in interface HostSessionPeer
    • onCommOpen

      public void onCommOpen(TelnetComm comm)
      Description copied from interface: TelnetCommListener
      Called when the communication link is opened.
      Specified by:
      onCommOpen in interface TelnetCommListener
      Parameters:
      comm - The telnet communication instance.
    • onCommConnected

      public void onCommConnected(TelnetComm comm)
      Description copied from interface: TelnetCommListener
      Called when the communication link is connected.
      Specified by:
      onCommConnected in interface TelnetCommListener
      Parameters:
      comm - The telnet communication instance.
    • hostAcceptedDataStream

      public void hostAcceptedDataStream(TelnetComm comm, String terminalType)
      Description copied from interface: TelnetCommListener
      The host accepted the options for the terminal type and went into BINARY mode. This means that 3270/5250 data stream will follow. Inform the host session listener of a connect change.
      Specified by:
      hostAcceptedDataStream in interface TelnetCommListener
      Parameters:
      comm - The telnet communication instance.
      terminalType - The terminal type accepted by the host at Telnet terminal negotiation.
    • processInboundDataStream

      public void processInboundDataStream(TelnetComm comm, byte[] inputBuf, int pos, int inputBufLen) throws IOException
      Description copied from interface: TelnetCommListener
      Processes the inbound 3270 or 5250 data stream.
      Specified by:
      processInboundDataStream in interface TelnetCommListener
      Parameters:
      comm - The telnet communication instance.
      inputBuf - The input buffer.
      pos - Start position in buffer.
      inputBufLen - Length of input buffer.
      Throws:
      IOException - If an I/O error occurs.
    • processInboundSCSDataStream

      public void processInboundSCSDataStream(TelnetComm comm, byte[] inputBuf, int inputBufLen) throws IOException
      Description copied from interface: TelnetCommListener
      Processes the inbound 3270 printer data stream. Processing of the buffer always starts at position 0.
      Specified by:
      processInboundSCSDataStream in interface TelnetCommListener
      Parameters:
      comm - The telnet communication instance.
      inputBuf - The input buffer.
      inputBufLen - Length of input buffer.
      Throws:
      IOException - If an I/O error occurs.
    • processInboundSSCPLUDataStream

      public void processInboundSSCPLUDataStream(TelnetComm comm, byte[] inputBuf, int pos, int inputBufLen) throws IOException
      Description copied from interface: TelnetCommListener
      Processes the inbound 3270 SSCP-LU data stream.
      Specified by:
      processInboundSSCPLUDataStream in interface TelnetCommListener
      Parameters:
      comm - The telnet communication instance.
      inputBuf - The input buffer.
      pos - Start position in buffer.
      inputBufLen - Length of input buffer.
      Throws:
      IOException - If an I/O error occurs.
    • processPrintEOJ

      public void processPrintEOJ(TelnetComm comm) throws IOException
      Description copied from interface: TelnetCommListener
      Processes a Print End-of-Job for 3270 printers.
      Specified by:
      processPrintEOJ in interface TelnetCommListener
      Parameters:
      comm - The telnet communication instance.
      Throws:
      IOException - If an I/O error occurs.
    • onCommError

      public void onCommError(TelnetComm comm, IOException e)
      Description copied from interface: TelnetCommListener
      Called when the communication link is closed.
      Specified by:
      onCommError in interface TelnetCommListener
      Parameters:
      comm - The telnet communication instance.
      e - The exception.
    • getComm

      public SocketCommNIO getComm()
      Gets the communication engine.
      Specified by:
      getComm in interface HostSessionPeer
      Returns:
      The NIO instance.
    • onCommState

      public void onCommState(SocketCommNIO comm)
      Called when the state changes.
      Specified by:
      onCommState in interface TelnetCommListener
      Parameters:
      comm - Socket communication instance.
    • onCommClosed

      public void onCommClosed(TelnetComm comm)
      Description copied from interface: TelnetCommListener
      Called when the communication link is closed.
      Specified by:
      onCommClosed in interface TelnetCommListener
      Parameters:
      comm - The telnet communication instance.