
com.hazelcast.client.impl.ClientExtension Maven / Gradle / Ivy
The newest version!
/*
* Copyright (c) 2008-2024, Hazelcast, Inc. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.hazelcast.client.impl;
import com.hazelcast.client.config.ClientConfig;
import com.hazelcast.client.config.SocketOptions;
import com.hazelcast.client.impl.clientside.HazelcastClientInstanceImpl;
import com.hazelcast.client.impl.spi.ClientClusterService;
import com.hazelcast.client.impl.spi.ClientContext;
import com.hazelcast.client.impl.spi.ClientProxyFactory;
import com.hazelcast.client.impl.spi.ProxyManager;
import com.hazelcast.client.impl.spi.impl.listener.ClientCPGroupViewService;
import com.hazelcast.config.InvalidConfigurationException;
import com.hazelcast.config.SSLConfig;
import com.hazelcast.config.SocketInterceptorConfig;
import com.hazelcast.cp.CPSubsystem;
import com.hazelcast.cp.internal.session.ProxySessionManager;
import com.hazelcast.internal.memory.MemoryStats;
import com.hazelcast.internal.nearcache.NearCacheManager;
import com.hazelcast.internal.networking.ChannelInitializer;
import com.hazelcast.internal.serialization.InternalSerializationService;
import com.hazelcast.nio.SocketInterceptor;
/**
* ClientExtension is a client extension mechanism to be able to plug different implementations of
* some modules, like; {@link InternalSerializationService} etc.
*/
public interface ClientExtension {
/**
* Called before client is started
*/
void beforeStart(HazelcastClientInstanceImpl client);
/**
* Called after node is started
*/
void afterStart(HazelcastClientInstanceImpl client);
/**
* Logs metadata about the instance to the configured instance tracking output.
*/
void logInstanceTrackingMetadata();
/**
* Creates a {@link InternalSerializationService} instance to be used by this client.
*
* @param version serialization version to be created. Values less than 1 will be ignored and max supported version
* will be used
* @return the created {@link InternalSerializationService} instance
*/
InternalSerializationService createSerializationService(byte version);
/**
* Creates a {@link SocketInterceptor} to be used by this client if available,
* otherwise returns null
*
* @return the created {@link SocketInterceptor} instance if available,
* + otherwise null
*/
SocketInterceptor createSocketInterceptor();
/**
* Create socket interceptor according to given config
*
* @param socketInterceptorConfig config for socket interceptor
* @return socket interceptor if it is able to created, null otherwise
*/
SocketInterceptor createSocketInterceptor(SocketInterceptorConfig socketInterceptorConfig);
ChannelInitializer createChannelInitializer();
/**
* @param sslConfig ssl config for channel initializer
* @param socketOptions socket options for channel initializer
* @return @return ChannelInitializer created from given configs
*/
ChannelInitializer createChannelInitializer(SSLConfig sslConfig, SocketOptions socketOptions);
/**
* Creates a {@link NearCacheManager} instance to be used by this client.
*
* @return the created {@link NearCacheManager} instance
*/
NearCacheManager createNearCacheManager();
/**
* Creates a {@code ClientProxyFactory} for the supplied service class.
* {@link ProxyManager#init(ClientConfig, ClientContext)}
*
* @param service service for the proxy to create.
* @return {@code ClientProxyFactory} for the service.
* @throws IllegalArgumentException if service is not known
*/
ClientProxyFactory createServiceProxyFactory(Class service);
/**
* Creates the relevant ClientClusterService implementation.
*
* @param clientInstance the client instance.
* @throws InvalidConfigurationException if the service cannot be created due to an invalid configuration.
* @return the ClientClusterService implementation.
*/
ClientClusterService createClientClusterService(HazelcastClientInstanceImpl clientInstance);
/**
* Returns MemoryStats of for the JVM and current HazelcastInstance.
*
* @return memory statistics
*/
MemoryStats getMemoryStats();
/**todo implement jet service
/**
* Returns a JetService.
*/
//JetService getJet();
/**
* Creates the relevant CP subsystem implementation.
*/
CPSubsystem createCPSubsystem(HazelcastClientInstanceImpl hazelcastClientInstance);
ProxySessionManager createProxySessionManager(HazelcastClientInstanceImpl hazelcastClientInstance);
/**
* Creates the correct implementation of {@link ClientCPGroupViewService}.
*
* @param hazelcastClientInstance the client instance
* @return the concrete {@link ClientCPGroupViewService} implementation.
*/
ClientCPGroupViewService createClientCPGroupViewService(HazelcastClientInstanceImpl hazelcastClientInstance,
boolean directToLeaderRoutingEnabled);
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy