com.arangodb.shaded.vertx.core.eventbus.impl.CodecManager Maven / Gradle / Ivy
/*
* Copyright (c) 2011-2022 Contributors to the Eclipse Foundation
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
* which is available at https://www.apache.org/licenses/LICENSE-2.0.
*
* SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
*/
package com.arangodb.shaded.vertx.core.eventbus.impl;
import com.arangodb.shaded.vertx.core.buffer.Buffer;
import com.arangodb.shaded.vertx.core.eventbus.EventBus;
import com.arangodb.shaded.vertx.core.eventbus.MessageCodec;
import com.arangodb.shaded.vertx.core.eventbus.ReplyException;
import com.arangodb.shaded.vertx.core.eventbus.impl.codecs.*;
import com.arangodb.shaded.vertx.core.json.JsonArray;
import com.arangodb.shaded.vertx.core.json.JsonObject;
import com.arangodb.shaded.vertx.core.shareddata.impl.ClusterSerializable;
import java.io.Serializable;
import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.function.Function;
/**
* @author Tim Fox
*/
public class CodecManager {
// The standard message codecs
public static final MessageCodec PING_MESSAGE_CODEC = new PingMessageCodec();
public static final MessageCodec NULL_MESSAGE_CODEC = new NullMessageCodec();
public static final MessageCodec STRING_MESSAGE_CODEC = new StringMessageCodec();
public static final MessageCodec BUFFER_MESSAGE_CODEC = new BufferMessageCodec();
public static final MessageCodec JSON_OBJECT_MESSAGE_CODEC = new JsonObjectMessageCodec();
public static final MessageCodec JSON_ARRAY_MESSAGE_CODEC = new JsonArrayMessageCodec();
public static final MessageCodec BYTE_ARRAY_MESSAGE_CODEC = new ByteArrayMessageCodec();
public static final MessageCodec INT_MESSAGE_CODEC = new IntMessageCodec();
public static final MessageCodec LONG_MESSAGE_CODEC = new LongMessageCodec();
public static final MessageCodec FLOAT_MESSAGE_CODEC = new FloatMessageCodec();
public static final MessageCodec DOUBLE_MESSAGE_CODEC = new DoubleMessageCodec();
public static final MessageCodec BOOLEAN_MESSAGE_CODEC = new BooleanMessageCodec();
public static final MessageCodec SHORT_MESSAGE_CODEC = new ShortMessageCodec();
public static final MessageCodec CHAR_MESSAGE_CODEC = new CharMessageCodec();
public static final MessageCodec BYTE_MESSAGE_CODEC = new ByteMessageCodec();
public static final MessageCodec REPLY_EXCEPTION_MESSAGE_CODEC = new ReplyExceptionMessageCodec();
private final MessageCodec[] systemCodecs;
private final ConcurrentMap userCodecMap = new ConcurrentHashMap<>();
private final ConcurrentMap defaultCodecMap = new ConcurrentHashMap<>();
private final ClusterSerializableCodec clusterSerializableCodec = new ClusterSerializableCodec(this);
private final SerializableCodec serializableCodec = new SerializableCodec(this);
private volatile Function clusterSerializableCheck = s -> Boolean.FALSE;
private volatile Function serializableCheck = EventBus.DEFAULT_SERIALIZABLE_CHECKER;
private volatile Function