blob: 87454a91683452a5ee65448304cdb787306c3683 [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.
*/
namespace Apache.Ignite.Core.Binary
{
using System;
using System.Collections;
/// <summary>
/// Writer for binary objects.
/// </summary>
public interface IBinaryWriter
{
/// <summary>
/// Write named byte value.
/// </summary>
/// <param name="fieldName">Field name.</param>
/// <param name="val">Byte value.</param>
void WriteByte(string fieldName, byte val);
/// <summary>
/// Write named byte array.
/// </summary>
/// <param name="fieldName">Field name.</param>
/// <param name="val">Byte array.</param>
void WriteByteArray(string fieldName, byte[] val);
/// <summary>
/// Write named char value.
/// </summary>
/// <param name="fieldName">Field name.</param>
/// <param name="val">Char value.</param>
void WriteChar(string fieldName, char val);
/// <summary>
/// Write named char array.
/// </summary>
/// <param name="fieldName">Field name.</param>
/// <param name="val">Char array.</param>
void WriteCharArray(string fieldName, char[] val);
/// <summary>
/// Write named short value.
/// </summary>
/// <param name="fieldName">Field name.</param>
/// <param name="val">Short value.</param>
void WriteShort(string fieldName, short val);
/// <summary>
/// Write named short array.
/// </summary>
/// <param name="fieldName">Field name.</param>
/// <param name="val">Short array.</param>
void WriteShortArray(string fieldName, short[] val);
/// <summary>
/// Write named int value.
/// </summary>
/// <param name="fieldName">Field name.</param>
/// <param name="val">Int value.</param>
void WriteInt(string fieldName, int val);
/// <summary>
/// Write named int array.
/// </summary>
/// <param name="fieldName">Field name.</param>
/// <param name="val">Int array.</param>
void WriteIntArray(string fieldName, int[] val);
/// <summary>
/// Write named long value.
/// </summary>
/// <param name="fieldName">Field name.</param>
/// <param name="val">Long value.</param>
void WriteLong(string fieldName, long val);
/// <summary>
/// Write named long array.
/// </summary>
/// <param name="fieldName">Field name.</param>
/// <param name="val">Long array.</param>
void WriteLongArray(string fieldName, long[] val);
/// <summary>
/// Write named boolean value.
/// </summary>
/// <param name="fieldName">Field name.</param>
/// <param name="val">Boolean value.</param>
void WriteBoolean(string fieldName, bool val);
/// <summary>
/// Write named boolean array.
/// </summary>
/// <param name="fieldName">Field name.</param>
/// <param name="val">Boolean array.</param>
void WriteBooleanArray(string fieldName, bool[] val);
/// <summary>
/// Write named float value.
/// </summary>
/// <param name="fieldName">Field name.</param>
/// <param name="val">Float value.</param>
void WriteFloat(string fieldName, float val);
/// <summary>
/// Write named float array.
/// </summary>
/// <param name="fieldName">Field name.</param>
/// <param name="val">Float array.</param>
void WriteFloatArray(string fieldName, float[] val);
/// <summary>
/// Write named double value.
/// </summary>
/// <param name="fieldName">Field name.</param>
/// <param name="val">Double value.</param>
void WriteDouble(string fieldName, double val);
/// <summary>
/// Write named double array.
/// </summary>
/// <param name="fieldName">Field name.</param>
/// <param name="val">Double array.</param>
void WriteDoubleArray(string fieldName, double[] val);
/// <summary>
/// Write named decimal value.
/// </summary>
/// <param name="fieldName">Field name.</param>
/// <param name="val">Decimal value.</param>
void WriteDecimal(string fieldName, decimal? val);
/// <summary>
/// Write named decimal array.
/// </summary>
/// <param name="fieldName">Field name.</param>
/// <param name="val">Decimal array.</param>
void WriteDecimalArray(string fieldName, decimal?[] val);
/// <summary>
/// Write named date value.
/// </summary>
/// <param name="fieldName">Field name.</param>
/// <param name="val">Date value.</param>
void WriteTimestamp(string fieldName, DateTime? val);
/// <summary>
/// Write named date array.
/// </summary>
/// <param name="fieldName">Field name.</param>
/// <param name="val">Date array.</param>
void WriteTimestampArray(string fieldName, DateTime?[] val);
/// <summary>
/// Write named string value.
/// </summary>
/// <param name="fieldName">Field name.</param>
/// <param name="val">String value.</param>
void WriteString(string fieldName, string val);
/// <summary>
/// Write named string array.
/// </summary>
/// <param name="fieldName">Field name.</param>
/// <param name="val">String array.</param>
void WriteStringArray(string fieldName, string[] val);
/// <summary>
/// Write named GUID value.
/// </summary>
/// <param name="fieldName">Field name.</param>
/// <param name="val">GUID value.</param>
void WriteGuid(string fieldName, Guid? val);
/// <summary>
/// Write named GUID array.
/// </summary>
/// <param name="fieldName">Field name.</param>
/// <param name="val">GUID array.</param>
void WriteGuidArray(string fieldName, Guid?[] val);
/// <summary>
/// Write named enum value.
/// </summary>
/// <param name="fieldName">Field name.</param>
/// <param name="val">Enum value.</param>
void WriteEnum<T>(string fieldName, T val);
/// <summary>
/// Write named enum array.
/// </summary>
/// <param name="fieldName">Field name.</param>
/// <param name="val">Enum array.</param>
void WriteEnumArray<T>(string fieldName, T[] val);
/// <summary>
/// Write named object value.
/// </summary>
/// <param name="fieldName">Field name.</param>
/// <param name="val">Object value.</param>
void WriteObject<T>(string fieldName, T val);
/// <summary>
/// Write named object array.
/// </summary>
/// <param name="fieldName">Field name.</param>
/// <param name="val">Object array.</param>
void WriteArray<T>(string fieldName, T[] val);
/// <summary>
/// Writes a named collection in interoperable form.
///
/// Use this method to communicate with other platforms
/// or with nodes that need to read collection elements in binary form.
///
/// When there is no need for binarization or interoperability, please use <see cref="WriteObject{T}" />,
/// which will properly preserve generic collection type.
/// </summary>
/// <param name="fieldName">Field name.</param>
/// <param name="val">Collection.</param>
void WriteCollection(string fieldName, ICollection val);
/// <summary>
/// Writes a named dictionary in interoperable form.
///
/// Use this method to communicate with other platforms
/// or with nodes that need to read dictionary elements in binary form.
///
/// When there is no need for binarization or interoperability, please use <see cref="WriteObject{T}" />,
/// which will properly preserve generic dictionary type.
/// </summary>
/// <param name="fieldName">Field name.</param>
/// <param name="val">Dictionary.</param>
void WriteDictionary(string fieldName, IDictionary val);
/// <summary>
/// Get raw writer.
/// </summary>
/// <returns>Raw writer.</returns>
IBinaryRawWriter GetRawWriter();
}
}