Package jenkins

Class AgentProtocol

java.lang.Object
jenkins.AgentProtocol
All Implemented Interfaces:
ExtensionPoint
Direct Known Subclasses:
JnlpSlaveAgentProtocol4, TcpSlaveAgentListener.PingAgentProtocol

public abstract class AgentProtocol extends Object implements ExtensionPoint
Pluggable Jenkins TCP agent protocol handler called from TcpSlaveAgentListener.

To register your extension, put Extension annotation on your subtype. Implementations of this extension point is singleton, and its handle(Socket) method gets invoked concurrently whenever a new connection comes in.

Extending UI

description.jelly
Optional protocol description
deprecationCause.jelly
Optional. If the protocol is marked as isDeprecated(), clarifies the deprecation reason and provides extra documentation links
Since:
1.467
Author:
Kohsuke Kawaguchi
See Also:
  • Constructor Details

    • AgentProtocol

      public AgentProtocol()
  • Method Details

    • isOptIn

      public boolean isOptIn()
      Allow experimental AgentProtocol implementations to declare being opt-in. Note that Jenkins.setAgentProtocols(Set) only records the protocols where the admin has made a conscious decision thus:
      • if a protocol is opt-in, it records the admin enabling it
      • if a protocol is opt-out, it records the admin disabling it
      Implementations should not transition rapidly from opt-in -> opt-out -> opt-in. Implementations should never flip-flop: opt-in -> opt-out -> opt-in -> opt-out as that will basically clear any preference that an admin has set. This latter restriction should be ok as we only ever will be adding new protocols and retiring old ones.
      Returns:
      true if the protocol requires explicit opt-in.
      Since:
      2.16
      See Also:
    • isRequired

      public boolean isRequired()
      Allow essential AgentProtocol implementations (basically TcpSlaveAgentListener.PingAgentProtocol) to be always enabled.
      Returns:
      true if the protocol can never be disabled.
      Since:
      2.16
    • isDeprecated

      public boolean isDeprecated()
      Checks if the protocol is deprecated.
      Since:
      2.75
    • getName

      public abstract String getName()
      Protocol name. This is a short string that consists of printable ASCII chars. Sent by the client to select the protocol.
      Returns:
      null to be disabled. This is useful for avoiding getting used until the protocol is properly configured.
    • getDisplayName

      public String getDisplayName()
      Returns the human readable protocol display name.
      Returns:
      the human readable protocol display name.
      Since:
      2.16
    • handle

      public abstract void handle(Socket socket) throws IOException, InterruptedException
      Called by the connection handling thread to execute the protocol.
      Throws:
      IOException
      InterruptedException
    • all

      public static ExtensionList<AgentProtocol> all()
      Returns all the registered AgentProtocols.
    • of

      @CheckForNull public static AgentProtocol of(String protocolName)