package jenkins.security;
import hudson.ExtensionList;
import hudson.ExtensionPoint;
import hudson.remoting.Channel;
import hudson.remoting.ChannelBuilder;
import hudson.slaves.SlaveComputer;
import jenkins.model.Jenkins;
import javax.annotation.Nullable;
/**
* Intercepts the new creation of {@link Channel} and tweak its configuration.
*
* @author Kohsuke Kawaguchi
* @since 1.THU
*/
public abstract class ChannelConfigurator implements ExtensionPoint {
/**
* Called whenever a new channel is being built.
*
* @param builder
* Configures the newly built channel. The callee
* can call its methods to modify its settings.
* @param context
* The parameter that helps the callee determines what this channel is for.
* Legacy callers do not always provide this information, in which case this value might be null.
*
* Possible known values include:
*
* <dl>
* <dt>{@link SlaveComputer}
* <dd>When a channel is being established to talk to a agent.
* </dl>
*/
public void onChannelBuilding(ChannelBuilder builder, @Nullable Object context) {}
/**
* All the registered {@link ChannelConfigurator}s.
*/
public static ExtensionList<ChannelConfigurator> all() {
return Jenkins.getInstance().getExtensionList(ChannelConfigurator.class);
}
}