com.signalfx.shaded.jetty.io.ClientConnectionFactory Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of signalfx-java Show documentation
Show all versions of signalfx-java Show documentation
Bare minimum core library needed to sending metrics to SignalFx from Java clients
The newest version!
//
// ========================================================================
// Copyright (c) 1995-2022 Mort Bay Consulting Pty Ltd and others.
// ------------------------------------------------------------------------
// All rights reserved. This program and the accompanying materials
// are made available under the terms of the Eclipse Public License v1.0
// and Apache License v2.0 which accompanies this distribution.
//
// The Eclipse Public License is available at
// http://www.eclipse.org/legal/epl-v10.html
//
// The Apache License v2.0 is available at
// http://www.opensource.org/licenses/apache2.0.php
//
// You may elect to redistribute this code under either of these licenses.
// ========================================================================
//
package com.signalfx.shaded.jetty.io;
import java.io.IOException;
import java.util.Map;
import com.signalfx.shaded.jetty.util.component.ContainerLifeCycle;
/**
* Factory for client-side {@link Connection} instances.
*/
public interface ClientConnectionFactory
{
String CONNECTOR_CONTEXT_KEY = "client.connector";
/**
* @param endPoint the {@link com.signalfx.shaded.jetty.io.EndPoint} to link the newly created connection to
* @param context the context data to create the connection
* @return a new {@link Connection}
* @throws IOException if the connection cannot be created
*/
Connection newConnection(EndPoint endPoint, Map context) throws IOException;
default Connection customize(Connection connection, Map context)
{
ContainerLifeCycle connector = (ContainerLifeCycle)context.get(CONNECTOR_CONTEXT_KEY);
connector.getBeans(Connection.Listener.class).forEach(connection::addListener);
return connection;
}
/**
* Wraps another ClientConnectionFactory.
* This is typically done by protocols that send "preface" bytes with some metadata
* before other protocols. The metadata could be, for example, proxying information
* or authentication information.
*/
interface Decorator
{
/**
* Wraps the given {@code factory}.
*
* @param factory the ClientConnectionFactory to wrap
* @return the wrapping ClientConnectionFactory
*/
ClientConnectionFactory apply(ClientConnectionFactory factory);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy