blob: fa5e0977cf56bda9b0761e5f0f0910a26bd5bdb2 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 org.apache.ignite.internal.network.direct.stream;
import java.nio.ByteBuffer;
import java.util.BitSet;
import java.util.Collection;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import org.apache.ignite.lang.IgniteUuid;
import org.apache.ignite.network.NetworkMessage;
import org.apache.ignite.network.serialization.MessageReader;
import org.apache.ignite.network.serialization.MessageWriter;
import org.apache.ignite.plugin.extensions.communication.MessageCollectionItemType;
import org.jetbrains.annotations.Nullable;
/**
* Direct marshalling I/O stream.
*/
public interface DirectByteBufferStream {
/**
* Sets buffer.
*
* @param buf Buffer.
*/
void setBuffer(ByteBuffer buf);
/**
* Returns number of remaining bytes.
*
* @return Number of remaining bytes.
*/
int remaining();
/**
* Returns whether last object was fully written or read.
*
* @return Whether last object was fully written or read.
*/
boolean lastFinished();
/**
* Writes {@code byte}.
*
* @param val Value.
*/
void writeByte(byte val);
/**
* Writes {@code short}.
*
* @param val Value.
*/
void writeShort(short val);
/**
* Writes {@code int}.
*
* @param val Value.
*/
void writeInt(int val);
/**
* Writes {@code Integer}.
*
* @param val Value.
*/
void writeBoxedInt(@Nullable Integer val);
/**
* Writes {@code long}.
*
* @param val Value.
*/
void writeLong(long val);
/**
* Writes {@code float}.
*
* @param val Value.
*/
void writeFloat(float val);
/**
* Writes {@code double}.
*
* @param val Value.
*/
void writeDouble(double val);
/**
* Writes {@code char}.
*
* @param val Value.
*/
void writeChar(char val);
/**
* Writes {@code boolean}.
*
* @param val Value.
*/
void writeBoolean(boolean val);
/**
* Writes {@code byte} array.
*
* @param val Value.
*/
void writeByteArray(byte[] val);
/**
* Writes {@code byte} array.
*
* @param val Value.
* @param off Offset.
* @param len Length.
*/
void writeByteArray(byte[] val, long off, int len);
/**
* Writes {@code short} array.
*
* @param val Value.
*/
void writeShortArray(short[] val);
/**
* Writes {@code int} array.
*
* @param val Value.
*/
void writeIntArray(int[] val);
/**
* Writes {@code long} array.
*
* @param val Value.
*/
void writeLongArray(long[] val);
/**
* Writes {@code long} array.
*
* @param val Value.
* @param len Length.
*/
void writeLongArray(long[] val, int len);
/**
* Writes {@code float} array.
*
* @param val Value.
*/
void writeFloatArray(float[] val);
/**
* Writes {@code double} array.
*
* @param val Value.
*/
void writeDoubleArray(double[] val);
/**
* Writes {@code char} array.
*
* @param val Value.
*/
void writeCharArray(char[] val);
/**
* Writes {@code boolean} array.
*
* @param val Value.
*/
void writeBooleanArray(boolean[] val);
/**
* Writes {@link String}.
*
* @param val Value.
*/
void writeString(String val);
/**
* Writes {@link BitSet}.
*
* @param val Value.
*/
void writeBitSet(BitSet val);
/**
* Writes {@link ByteBuffer}.
*
* @param val Value.
*/
void writeByteBuffer(ByteBuffer val);
/**
* Writes {@link UUID}.
*
* @param val Value.
*/
void writeUuid(UUID val);
/**
* Writes {@link IgniteUuid}.
*
* @param val Value.
*/
void writeIgniteUuid(IgniteUuid val);
/**
* Writes {@link NetworkMessage}.
*
* @param msg Message.
* @param writer Writer.
*/
void writeMessage(NetworkMessage msg, MessageWriter writer);
/**
* Writes {@link Object} array.
*
* @param <T> Type of the array.
* @param arr Array.
* @param itemType Component type.
* @param writer Writer.
*/
<T> void writeObjectArray(T[] arr, MessageCollectionItemType itemType, MessageWriter writer);
/**
* Writes {@link Collection}.
*
* @param <T> Type of the collection.
* @param col Collection.
* @param itemType Component type.
* @param writer Writer.
*/
<T> void writeCollection(Collection<T> col, MessageCollectionItemType itemType, MessageWriter writer);
/**
* Writes {@link Set}.
*
* @param <T> Type of the set.
* @param set Set.
* @param itemType Component type.
* @param writer Writer.
*/
<T> void writeSet(Set<T> set, MessageCollectionItemType itemType, MessageWriter writer);
/**
* Writes {@link Map}.
*
* @param <K> Type of the map's keys.
* @param <V> Type of the map's values.
* @param map Map.
* @param keyType Key type.
* @param valType Value type.
* @param writer Writer.
*/
<K, V> void writeMap(Map<K, V> map, MessageCollectionItemType keyType, MessageCollectionItemType valType,
MessageWriter writer);
/**
* Reads {@code byte}.
*
* @return Value.
*/
byte readByte();
/**
* Reads {@code short}.
*
* @return Value.
*/
short readShort();
/**
* Reads {@code int}.
*
* @return Value.
*/
int readInt();
/**
* Reads {@code Integer}.
*
* @return Value.
*/
@Nullable Integer readBoxedInt();
/**
* Reads {@code long}.
*
* @return Value.
*/
long readLong();
/**
* Reads {@code float}.
*
* @return Value.
*/
float readFloat();
/**
* Reads {@code double}.
*
* @return Value.
*/
double readDouble();
/**
* Reads {@code char}.
*
* @return Value.
*/
char readChar();
/**
* Reads {@code boolean}.
*
* @return Value.
*/
boolean readBoolean();
/**
* Reads {@code byte} array.
*
* @return Value.
*/
byte[] readByteArray();
/**
* Reads {@code short} array.
*
* @return Value.
*/
short[] readShortArray();
/**
* Reads {@code int} array.
*
* @return Value.
*/
int[] readIntArray();
/**
* Reads {@code long} array.
*
* @return Value.
*/
long[] readLongArray();
/**
* Reads {@code float} array.
*
* @return Value.
*/
float[] readFloatArray();
/**
* Reads {@code double} array.
*
* @return Value.
*/
double[] readDoubleArray();
/**
* Reads {@code char} array.
*
* @return Value.
*/
char[] readCharArray();
/**
* Reads {@code boolean} array.
*
* @return Value.
*/
boolean[] readBooleanArray();
/**
* Reads {@link String}.
*
* @return Value.
*/
String readString();
/**
* Reads {@link BitSet}.
*
* @return Value.
*/
BitSet readBitSet();
/**
* Reads {@link ByteBuffer}.
*
* @return Value.
*/
ByteBuffer readByteBuffer();
/**
* Reads {@link UUID}.
*
* @return Value.
*/
UUID readUuid();
/**
* Reads {@link IgniteUuid}.
*
* @return Value.
*/
IgniteUuid readIgniteUuid();
/**
* Reads {@link NetworkMessage}.
*
* @param <T> Type of message.
* @param reader Reader.
* @return Message.
*/
<T extends NetworkMessage> T readMessage(MessageReader reader);
/**
* Reads {@link Object} array.
*
* @param <T> Type of array.
* @param itemType Item type.
* @param itemCls Item class.
* @param reader Reader.
* @return Array.
*/
<T> T[] readObjectArray(MessageCollectionItemType itemType, Class<T> itemCls, MessageReader reader);
/**
* Reads {@link Collection}.
*
* @param <C> Type of collection.
* @param itemType Item type.
* @param reader Reader.
* @return Collection.
*/
<C extends Collection<?>> C readCollection(MessageCollectionItemType itemType, MessageReader reader);
/**
* Reads {@link Set}.
*
* @param <C> Type of set.
* @param itemType Item type.
* @param reader Reader.
* @return Set.
*/
<C extends Set<?>> C readSet(MessageCollectionItemType itemType, MessageReader reader);
/**
* Reads {@link Map}.
*
* @param <M> Type of map.
* @param keyType Key type.
* @param valType Value type.
* @param linked Whether linked map should be created.
* @param reader Reader.
* @return Map.
*/
<M extends Map<?, ?>> M readMap(MessageCollectionItemType keyType, MessageCollectionItemType valType,
boolean linked, MessageReader reader);
}