blob: c5b392dba89c56b0ef2d3461fb709a1b58a58e73 [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.
*/
#pragma once
#include "geode_defs.hpp"
//#include "IRegion.hpp"
#include "IPdxUnreadFields.hpp"
using namespace System;
using namespace System::Collections::Generic;
namespace Apache
{
namespace Geode
{
namespace Client
{
ref class Cache;
/// <summary>
/// A IPdxWriter will be passed to IPdxSerializable.toData
/// when it is serializing the domain class. The domain class needs to serialize member
/// fields using this interface. This interface is implemented
/// by Native Client.
/// </summary>
public interface class IPdxWriter
{
public:
/// <summary>
/// Write a byte to the <c>IPdxWriter</c>.
/// </summary>
/// <param name="fieldName">The name of the field associated with the value.</param>
/// <param name="value">The byte to write.</param>
IPdxWriter^ WriteByte( String^ fieldName, SByte value );
/// <summary>
/// Write a boolean value to the <c>IPdxWriter</c>.
/// </summary>
/// <param name="fieldName">The name of the field associated with the value.</param>
/// <param name="value">The boolean value to write.</param>
IPdxWriter^ WriteBoolean( String^ fieldName, Boolean value );
/// <summary>
/// Write a char value to the <c>IPdxWriter</c>.
/// </summary>
/// <param name="fieldName">The name of the field associated with the value.</param>
/// <param name="value">The char value to write.</param>
IPdxWriter^ WriteChar( String^ fieldName, Char value );
/// <summary>
/// Write a 16-bit integer to the <c>IPdxWriter</c>.
/// </summary>
/// <param name="fieldName">The name of the field associated with the value.</param>
/// <param name="value">The 16-bit integer to write.</param>
IPdxWriter^ WriteShort( String^ fieldName, Int16 value );
/// <summary>
/// Write a 32-bit integer to the <c>IPdxWriter</c>.
/// </summary>
/// <param name="fieldName">The name of the field associated with the value.</param>
/// <param name="value">The 32-bit integer to write.</param>
IPdxWriter^ WriteInt( String^ fieldName, Int32 value );
/// <summary>
/// Write a 64-bit integer to the <c>IPdxWriter</c>.
/// </summary>
/// <param name="fieldName">The name of the field associated with the value.</param>
/// <param name="value">The 64-bit integer to write.</param>
IPdxWriter^ WriteLong( String^ fieldName, Int64 value );
/// <summary>
/// Write a float to the <c>IPdxWriter</c>.
/// </summary>
/// <param name="fieldName">The name of the field associated with the value.</param>
/// <param name="value">The float value to write.</param>
IPdxWriter^ WriteFloat( String^ fieldName, float value );
/// <summary>
/// Write a double precision real number to the <c>IPdxWriter</c>.
/// </summary>
/// <param name="fieldName">The name of the field associated with the value.</param>
/// <param name="value">
/// The double precision real number to write.
/// </param>
IPdxWriter^ WriteDouble( String^ fieldName, double value );
/// <summary>
/// Write a string using java-modified UTF-8 encoding to
/// <c>IPdxWriter</c>.
/// </summary>
/// <param name="fieldName">The name of the field associated with the value.</param>
/// <param name="value">The UTF encoded string to write.</param>
IPdxWriter^ WriteString( String^ fieldName, String^ value );
/// <summary>
/// Write an <c>Object</c> object to the <c>IPdxWriter</c>.
/// </summary>
/// <param name="fieldName">The name of the field associated with the value.</param>
/// <param name="obj">The object to write.</param>
IPdxWriter^ WriteObject( String^ fieldName, Object^ obj );
//TODO:
//IPdxWriter^ WriteMap( String^ fieldName, System::Collections::IDictionary^ map );
/// <summary>
/// Write an collection to the <c>IPdxWriter</c>.
/// </summary>
/// <param name="fieldName">The name of the field associated with the value.</param>
/// <param name="date">The date to write.</param>
IPdxWriter^ WriteDate( String^ fieldName, System::DateTime date);
//TODO:
//IPdxWriter^ writeFile(String fieldName, File file) ;
/// <summary>
/// Write an collection to the <c>IPdxWriter</c>.
/// </summary>
/// <param name="fieldName">The name of the field associated with the value.</param>
/// <param name="boolArray">The boolArray to write.</param>
IPdxWriter^ WriteBooleanArray( String^ fieldName, array<bool>^ boolArray);
/// <summary>
/// Write an collection to the <c>IPdxWriter</c>.
/// </summary>
/// <param name="fieldName">The name of the field associated with the value.</param>
/// <param name="charArray">The charArray to write.</param>
IPdxWriter^ WriteCharArray(String^ fieldName, array<Char>^ charArray) ;
/// <summary>
/// Write an collection to the <c>IPdxWriter</c>.
/// </summary>
/// <param name="fieldName">The name of the field associated with the value.</param>
/// <param name="byteArray">The byteArray to write.</param>
IPdxWriter^ WriteByteArray(String^ fieldName, array<Byte>^ byteArray) ;
/// <summary>
/// Write an collection to the <c>IPdxWriter</c>.
/// </summary>
/// <param name="fieldName">The name of the field associated with the value.</param>
/// <param name="shortArray">The shortArray to write.</param>
IPdxWriter^ WriteShortArray(String^ fieldName, array<System::Int16>^ shortArray);
/// <summary>
/// Write an collection to the <c>IPdxWriter</c>.
/// </summary>
/// <param name="fieldName">The name of the field associated with the value.</param>
/// <param name="intArray">The intArray to write.</param>
IPdxWriter^ WriteIntArray(String^ fieldName, array<System::Int32>^ intArray);
/// <summary>
/// Write an collection to the <c>IPdxWriter</c>.
/// </summary>
/// <param name="fieldName">The name of the field associated with the value.</param>
/// <param name="longArray">The longArray to write.</param>
IPdxWriter^ WriteLongArray(String^ fieldName, array<Int64>^ longArray);
/// <summary>
/// Write an collection to the <c>IPdxWriter</c>.
/// </summary>
/// <param name="fieldName">The name of the field associated with the value.</param>
/// <param name="floatArray">The floatArray to write.</param>
IPdxWriter^ WriteFloatArray(String^ fieldName, array<float>^ floatArray);
/// <summary>
/// Write an collection to the <c>IPdxWriter</c>.
/// </summary>
/// <param name="fieldName">The name of the field associated with the value.</param>
/// <param name="doubleArray">The doubleArray to write.</param>
IPdxWriter^ WriteDoubleArray(String^ fieldName, array<double>^ doubleArray);
/// <summary>
/// Write an collection to the <c>IPdxWriter</c>.
/// </summary>
/// <param name="fieldName">The name of the field associated with the value.</param>
/// <param name="stringArray">The stringArray to write.</param>
IPdxWriter^ WriteStringArray(String^ fieldName, array<String^>^ stringArray);
/// <summary>
/// Write an collection to the <c>IPdxWriter</c>.
/// </summary>
/// <param name="fieldName">The name of the field associated with the value.</param>
/// <param name="objectArray">The objectArray to write.</param>
IPdxWriter^ WriteObjectArray(String^ fieldName, List<Object^>^ objectArray);
/// <summary>
/// Write an collection to the <c>IPdxWriter</c>.
/// </summary>
/// <param name="fieldName">The name of the field associated with the value.</param>
/// <param name="byteArrays">The byteArrays to write.</param>
IPdxWriter^ WriteArrayOfByteArrays(String^ fieldName, array<array<Byte>^>^ byteArrays);
//TODO:
//IPdxWriter^ WriteEnum(String^ fieldName, Enum e) ;
//IPdxWriter^ WriteInetAddress(String^ fieldName, InetAddress address);
/// <summary>
/// Indicate that the given field name should be included in hashCode and equals checks
/// of this object on a server that is using {@link CacheFactory#setPdxReadSerialized(boolean)}
/// or when a client executes a query on a server.
///
/// The fields that are marked as identity fields are used to generate the hashCode and
/// equals methods of {@link PdxInstance}. Because of this, the identity fields should themselves
/// either be primatives, or implement hashCode and equals.
///
/// If no fields are set as identity fields, then all fields will be used in hashCode and equals
/// checks.
///
/// The identity fields should make marked after they are written using a write* method.
/// </summary>
/// <param name="fieldName"> the name of the field that should be used in the as part of the identity.</param>
/// <returns>this PdxWriter</returns>
IPdxWriter^ MarkIdentityField(String^ fieldName);
/// <summary>
/// To append unread data with updated data.
///
/// </summary>
/// <returns>this PdxWriter</returns>
IPdxWriter^ WriteUnreadFields(IPdxUnreadFields^ unread);
/// <summary>
/// Writes the named field with the given value and type to the serialized form.
/// This method uses the <code>fieldType</code> to determine which WriteXXX method it should call.
/// If it can not find a specific match to a writeXXX method it will call <see cref="WriteObject(String^, Object^)">.
///
/// </summary>
/// <returns>this PdxWriter</returns>
IPdxWriter^ WriteField(String^ fieldName, Object^ fieldValue, Type^ type);
property Apache::Geode::Client::Cache^ Cache
{
Apache::Geode::Client::Cache^ get();
}
};
} // namespace Client
} // namespace Geode
} // namespace Apache