*/
public static final int DEFAULT_BUFFER_SIZE = 4096;
- /**
- * Maximum allowed buffer size.
- */
- public static final int MAX_BUFFER_SIZE = 100 * 1000 * 1000;
-
/**
* ID to use if this KryoNamespace does not define registration id.
*/
private static final Logger LOGGER = LoggerFactory.getLogger(Namespace.class);
- /**
- * Default Kryo namespace.
- */
- public static final Namespace DEFAULT = builder().build();
-
- private final KryoPool kryoPool = new KryoPool.Builder(this)
- .softReferences()
- .build();
+ private final KryoPool kryoPool = new KryoPool.Builder(this).softReferences().build();
private final KryoOutputPool kryoOutputPool = new KryoOutputPool();
private final KryoInputPool kryoInputPool = new KryoInputPool();
private final ImmutableList<RegistrationBlock> registeredBlocks;
private final ClassLoader classLoader;
- private final boolean registrationRequired;
private final String friendlyName;
/**
private List<Entry<Class<?>[], Serializer<?>>> types = new ArrayList<>();
private List<RegistrationBlock> blocks = new ArrayList<>();
private ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
- private boolean registrationRequired = true;
/**
* Builds a {@link Namespace} instance.
if (!types.isEmpty()) {
blocks.add(new RegistrationBlock(this.blockHeadId, types));
}
- return new Namespace(blocks, classLoader, registrationRequired, friendlyName).populate(1);
+ return new Namespace(blocks, classLoader, friendlyName);
}
/**
this.classLoader = classLoader;
return this;
}
-
- /**
- * Sets the registrationRequired flag.
- *
- * @param registrationRequired Kryo's registrationRequired flag
- * @return this
- * @see Kryo#setRegistrationRequired(boolean)
- */
- public Builder setRegistrationRequired(boolean registrationRequired) {
- this.registrationRequired = registrationRequired;
- return this;
- }
}
/**
private Namespace(
final List<RegistrationBlock> registeredTypes,
ClassLoader classLoader,
- boolean registrationRequired,
String friendlyName) {
this.registeredBlocks = ImmutableList.copyOf(registeredTypes);
- this.registrationRequired = registrationRequired;
this.classLoader = classLoader;
this.friendlyName = requireNonNull(friendlyName);
- }
- /**
- * Populates the Kryo pool.
- *
- * @param instances to add to the pool
- * @return this
- */
- public Namespace populate(int instances) {
-
- for (int i = 0; i < instances; ++i) {
- release(create());
- }
- return this;
+ // Pre-populate with a single instance
+ release(create());
}
/**
}
}
- private String friendlyName() {
- return friendlyName;
- }
-
- /**
- * Gets the number of classes registered in this Kryo namespace.
- *
- * @return size of namespace
- */
- public int size() {
- return (int) registeredBlocks.stream()
- .flatMap(block -> block.types().stream())
- .count();
- }
-
/**
* Creates a Kryo instance.
*
LOGGER.trace("Creating Kryo instance for {}", this);
Kryo kryo = new Kryo();
kryo.setClassLoader(classLoader);
- kryo.setRegistrationRequired(registrationRequired);
+ kryo.setRegistrationRequired(true);
// TODO rethink whether we want to use StdInstantiatorStrategy
kryo.setInstantiatorStrategy(
if (!matches) {
LOGGER.error("{}: Failed to register {} as {}, {} was already registered.",
- friendlyName(), types, id, existing.getType());
+ friendlyName, types, id, existing.getType());
throw new IllegalStateException(String.format(
"Failed to register %s as %s, %s was already registered.",
if (r != null) {
if (r.getId() != id) {
LOGGER.debug("{}: {} already registered as {}. Skipping {}.",
- friendlyName(), r.getType(), r.getId(), id);
+ friendlyName, r.getType(), r.getId(), id);
}
LOGGER.trace("{} registered as {}", r.getType(), r.getId());
}