You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by jb...@apache.org on 2017/08/11 23:52:33 UTC
[17/52] [partial] geode-native git commit: GEODE-3165: Reogranized
sources relative to the root for better CMake IDE integration.
http://git-wip-us.apache.org/repos/asf/geode-native/blob/6cbd424f/clicache/src/IPdxReader.hpp
----------------------------------------------------------------------
diff --git a/clicache/src/IPdxReader.hpp b/clicache/src/IPdxReader.hpp
new file mode 100644
index 0000000..cccb840
--- /dev/null
+++ b/clicache/src/IPdxReader.hpp
@@ -0,0 +1,211 @@
+/*
+ * 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"
+namespace Apache
+{
+ namespace Geode
+ {
+ namespace Client
+ {
+
+ /// <summary>
+ /// A IPdxReader will be passed to IPdxSerializable.fromData or
+ /// during deserialization of a PDX. The domain class needs to deserialize field members
+ /// using this interface. This interface is implemented by Native Client.
+ /// Each readXXX call will return the field's value. If the serialized
+ /// PDX does not contain the named field then a default value will
+ /// be returned. Standard Java defaults are used. For Objects this is
+ /// null and for primitives it is 0 or 0.0.
+ /// </summary>
+ public interface class IPdxReader
+ {
+ public:
+
+ /// <summary>
+ /// Read a signed byte from the stream.
+ /// </summary>
+ /// <param name="fieldName">The name of a member field whose value to read.</param>
+ SByte ReadByte( String^ fieldName );
+
+ /// <summary>
+ /// Read a boolean value from the stream.
+ /// </summary>
+ /// <param name="fieldName">The name of a member field whose value to read.</param>
+ Boolean ReadBoolean( String^ fieldName );
+
+ /// <summary>
+ /// Read a char value from the stream.
+ /// </summary>
+ /// <param name="fieldName">The name of a member field whose value to read.</param>
+ Char ReadChar( String^ fieldName );
+
+ /// <summary>
+ /// Read a 16-bit integer from the stream.
+ /// </summary>
+ /// <param name="fieldName">The name of a member field whose value to read.</param>
+ short ReadShort( String^ fieldName );
+
+ /// <summary>
+ /// Read a 32-bit integer from the stream.
+ /// </summary>
+ /// <param name="fieldName">The name of a member field whose value to read.</param>
+ Int32 ReadInt( String^ fieldName );
+
+ /// <summary>
+ /// Read a 64-bit integer from the stream.
+ /// </summary>
+ /// <param name="fieldName">The name of a member field whose value to read.</param>
+ Int64 ReadLong( String^ fieldName );
+
+ /// <summary>
+ /// Read a floating point number from the stream.
+ /// </summary>
+ /// <param name="fieldName">The name of a member field whose value to read.</param>
+ float ReadFloat( String^ fieldName );
+
+ /// <summary>
+ /// Read a double precision number from the stream.
+ /// </summary>
+ /// <param name="fieldName">The name of a member field whose value to read.</param>
+ double ReadDouble( String^ fieldName );
+
+ /// <summary>
+ /// Read a string after java-modified UTF-8 decoding from the stream.
+ /// </summary>
+ /// <param name="fieldName">The name of a member field whose value to read.</param>
+ String^ ReadString( String^ fieldName );
+
+ /// <summary>
+ /// Read a serializable object from the data. Null objects are handled.
+ /// </summary>
+ /// <param name="fieldName">The name of a member field whose value to read.</param>
+ Object^ ReadObject( String^ fieldName );
+
+ //TODO:
+ //void WriteMap( String^ fieldName, System::Collections::IDictionary^ map );
+
+ /// <summary>
+ /// Read a Date from the data.
+ /// </summary>
+ /// <param name="fieldName">The name of a member field whose value to read.</param>
+ System::DateTime ReadDate( String^ fieldName) ;
+ //void writeFile(String fieldName, File file) ;
+
+ /// <summary>
+ /// Read a boolean array from the data.
+ /// </summary>
+ /// <param name="fieldName">The name of a member field whose value to read.</param>
+ array<Boolean>^ ReadBooleanArray( String^ fieldName );
+
+ /// <summary>
+ /// Read a char array from the data.
+ /// </summary>
+ /// <param name="fieldName">The name of a member field whose value to read.</param>
+ array<Char>^ ReadCharArray(String^ fieldName );
+
+ /// <summary>
+ /// Read a signed byte array from the data.
+ /// </summary>
+ /// <param name="fieldName">The name of a member field whose value to read.</param>
+ array<Byte>^ ReadByteArray(String^ fieldName);
+
+ /// <summary>
+ /// Read a short from the data.
+ /// </summary>
+ /// <param name="fieldName">The name of a member field whose value to read.</param>
+ array<short>^ ReadShortArray(String^ fieldName);
+
+ /// <summary>
+ /// Read a int array from the data.
+ /// </summary>
+ /// <param name="fieldName">The name of a member field whose value to read.</param>
+ array<System::Int32>^ ReadIntArray(String^ fieldName);
+
+ /// <summary>
+ /// Read a long array from the data.
+ /// </summary>
+ /// <param name="fieldName">The name of a member field whose value to read.</param>
+ array<Int64>^ ReadLongArray(String^ fieldName);
+
+ /// <summary>
+ /// Read a float from the data.
+ /// </summary>
+ /// <param name="fieldName">The name of a member field whose value to read.</param>
+ array<float>^ ReadFloatArray(String^ fieldName);
+
+ /// <summary>
+ /// Read a double array from the data.
+ /// </summary>
+ /// <param name="fieldName">The name of a member field whose value to read.</param>
+ array<double>^ ReadDoubleArray(String^ fieldName);
+
+ /// <summary>
+ /// Read a string array from the data.
+ /// </summary>
+ /// <param name="fieldName">The name of a member field whose value to read.</param>
+ array<String^>^ ReadStringArray(String^ fieldName);
+
+ /// <summary>
+ /// Read a object array from the data.
+ /// </summary>
+ /// <param name="fieldName">The name of a member field whose value to read.</param>
+ List<Object^>^ ReadObjectArray(String^ fieldName);
+
+ /// <summary>
+ /// Read a two-dimenesional signed byte array from the data.
+ /// </summary>
+ /// <param name="fieldName">The name of a member field whose value to read.</param>
+ array<array<Byte>^>^ ReadArrayOfByteArrays(String^ fieldName );
+
+ //TODO:
+ //void WriteEnum(String^ fieldName, Enum e) ;
+ //void WriteInetAddress(String^ fieldName, InetAddress address);
+
+ /// <summary>
+ /// Whether field is available or not.
+ /// </summary>
+ /// <param name="fieldName">The name of a member field.</param>
+ bool HasField(String^ fieldName);
+
+ /// <summary>
+ /// Whether field is used as identity field or not.
+ /// </summary>
+ /// <param name="fieldName">The name of a member field.</param>
+ bool IsIdentityField(String^ fieldName);
+
+ /// <summary>
+ /// To preserve unread data, which get added in new version of type.
+ /// </summary>
+ /// <return>Unread data.</return>
+ IPdxUnreadFields^ ReadUnreadFields();
+
+ /// <summary>
+ /// Reads the named field of Type "type" and returns its value.
+ /// </summary>
+ /// <param name="fieldName">The name of a member field.</param>
+ /// <param name="type">The type of a member field, which value needs to read.</param>
+ Object^ ReadField(String^ fieldName, Type^ type);
+ };
+ } // namespace Client
+ } // namespace Geode
+} // namespace Apache
+
http://git-wip-us.apache.org/repos/asf/geode-native/blob/6cbd424f/clicache/src/IPdxSerializable.hpp
----------------------------------------------------------------------
diff --git a/clicache/src/IPdxSerializable.hpp b/clicache/src/IPdxSerializable.hpp
new file mode 100644
index 0000000..9c8865a
--- /dev/null
+++ b/clicache/src/IPdxSerializable.hpp
@@ -0,0 +1,67 @@
+/*
+ * 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 "IPdxWriter.hpp"
+#include "IPdxReader.hpp"
+
+namespace Apache
+{
+ namespace Geode
+ {
+ namespace Client
+ {
+
+ /// <summary>
+ /// When a domain class implements PdxSerializable it marks
+ /// itself as a PDX.
+ /// The implementation of toData provides the serialization
+ /// code and fromData provides the deserialization code.
+ /// These methods also define each field name and field type
+ /// of the PDX. Domain classes should serialize and de-serialize
+ /// all its member fields in same order in toData and fromData
+ /// method.
+ /// A domain class which implements this interface should register delgate <see cref="Serializable.RegisterPdxType" /> to create new
+ /// instance of type for de-serilization.
+ /// </summary>
+ public interface class IPdxSerializable
+ {
+ public:
+
+ /// <summary>
+ /// Serializes this object in geode PDX format.
+ /// </summary>
+ /// <param name="writer">
+ /// the IPdxWriter object to use for serializing the object
+ /// </param>
+ void ToData(IPdxWriter^ writer);
+
+ /// <summary>
+ /// Deserialize this object.
+ /// </summary>
+ /// <param name="reader">
+ /// the IPdxReader stream to use for reading the object data
+ /// </param>
+ void FromData(IPdxReader^ reader);
+
+ };
+ } // namespace Client
+ } // namespace Geode
+} // namespace Apache
+
http://git-wip-us.apache.org/repos/asf/geode-native/blob/6cbd424f/clicache/src/IPdxSerializer.hpp
----------------------------------------------------------------------
diff --git a/clicache/src/IPdxSerializer.hpp b/clicache/src/IPdxSerializer.hpp
new file mode 100755
index 0000000..672c176
--- /dev/null
+++ b/clicache/src/IPdxSerializer.hpp
@@ -0,0 +1,68 @@
+/*
+ * 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 "IPdxWriter.hpp"
+#include "IPdxReader.hpp"
+
+namespace Apache
+{
+ namespace Geode
+ {
+ namespace Client
+ {
+
+ /// <summary>
+ /// The IPdxSerializer interface allows domain classes to be
+ /// serialized and deserialized as PDXs without modification
+ /// of the domain class.
+ /// A domain class should register delgate <see cref="Serializable.RegisterPdxType" /> to create new
+ /// instance of type for de-serilization.
+ /// </summary>
+ public interface class IPdxSerializer
+ {
+ public:
+
+ /// <summary>
+ /// Serializes this object in geode PDX format.
+ /// </summary>
+ /// <param name="o">
+ /// the object which need to serialize
+ /// </param>
+ /// <param name="writer">
+ /// the IPdxWriter object to use for serializing the object
+ /// </param>
+ bool ToData(Object^ o, IPdxWriter^ writer);
+
+ /// <summary>
+ /// Deserialize this object.
+ /// </summary>
+ /// <param name="classname">
+ /// the classname whose object need to de-serialize
+ /// </param>
+ /// <param name="reader">
+ /// the IPdxReader stream to use for reading the object data
+ /// </param>
+ Object^ FromData(String^ classname, IPdxReader^ reader);
+
+ };
+ } // namespace Client
+ } // namespace Geode
+} // namespace Apache
+
http://git-wip-us.apache.org/repos/asf/geode-native/blob/6cbd424f/clicache/src/IPdxTypeMapper.hpp
----------------------------------------------------------------------
diff --git a/clicache/src/IPdxTypeMapper.hpp b/clicache/src/IPdxTypeMapper.hpp
new file mode 100755
index 0000000..f2b5fd6
--- /dev/null
+++ b/clicache/src/IPdxTypeMapper.hpp
@@ -0,0 +1,52 @@
+/*
+ * 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
+using namespace System;
+using namespace System::Collections::Generic;
+namespace Apache
+{
+ namespace Geode
+ {
+ namespace Client
+ {
+
+ /// <summary>
+ /// Application can implement this interface to map pdx type name to local type name.
+ /// Need to set this using <see cref="Serializable.SetPdxTypeMapper" />
+ /// </summary>
+ public interface class IPdxTypeMapper
+ {
+ public:
+ /// <summary>
+ /// To map the local type name to pdx type
+ /// <param name="localTypeName"> local type name </param>
+ /// @return the pdx type name.
+ /// </summary>
+ String^ ToPdxTypeName(String^ localTypeName);
+
+ /// <summary>
+ /// To map the pdx type name to local type
+ /// <param name="pdxTypeName"> pdx type name </param>
+ /// @return the local type name.
+ /// </summary>
+ String^ FromPdxTypeName(String^ pdxTypeName);
+ };
+ } // namespace Client
+ } // namespace Geode
+} // namespace Apache
+
http://git-wip-us.apache.org/repos/asf/geode-native/blob/6cbd424f/clicache/src/IPdxUnreadFields.hpp
----------------------------------------------------------------------
diff --git a/clicache/src/IPdxUnreadFields.hpp b/clicache/src/IPdxUnreadFields.hpp
new file mode 100644
index 0000000..96c57aa
--- /dev/null
+++ b/clicache/src/IPdxUnreadFields.hpp
@@ -0,0 +1,40 @@
+/*
+ * 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
+
+
+namespace Apache
+{
+ namespace Geode
+ {
+ namespace Client
+ {
+
+ /// <summary>
+ /// Serialize the data in geode Portable Data eXchange(Pdx) Format.
+ /// This format provides class versioning(forward and backward compability of types) in cache.
+ /// This provides ability to query .NET domian objects.
+ /// </summary>
+ public interface class IPdxUnreadFields
+ {
+
+ };
+ } // namespace Client
+ } // namespace Geode
+} // namespace Apache
+
http://git-wip-us.apache.org/repos/asf/geode-native/blob/6cbd424f/clicache/src/IPdxWriter.hpp
----------------------------------------------------------------------
diff --git a/clicache/src/IPdxWriter.hpp b/clicache/src/IPdxWriter.hpp
new file mode 100644
index 0000000..3196efe
--- /dev/null
+++ b/clicache/src/IPdxWriter.hpp
@@ -0,0 +1,247 @@
+/*
+ * 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
+ {
+
+ /// <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);
+ };
+ } // namespace Client
+ } // namespace Geode
+} // namespace Apache
+
http://git-wip-us.apache.org/repos/asf/geode-native/blob/6cbd424f/clicache/src/IPersistenceManager.hpp
----------------------------------------------------------------------
diff --git a/clicache/src/IPersistenceManager.hpp b/clicache/src/IPersistenceManager.hpp
new file mode 100644
index 0000000..b901114
--- /dev/null
+++ b/clicache/src/IPersistenceManager.hpp
@@ -0,0 +1,106 @@
+/*
+ * 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 "Properties.hpp"
+using namespace System;
+namespace Apache
+{
+ namespace Geode
+ {
+ namespace Client
+ {
+
+ /// <summary>
+ /// IPersistenceManager interface for persistence and overflow.
+ /// This class abstracts the disk-related operations in case of persistence or overflow to disk.
+ /// A specific disk storage implementation will implement all the methods described here.
+ /// </summary>
+ generic<class TKey, class TValue>
+ public interface class IPersistenceManager
+ {
+ public:
+ /// <summary>
+ /// Called after an implementation object is created. Initializes all the implementation
+ /// specific environments needed.
+ /// </summary>
+ /// <param name="region">
+ /// Region for which this PersistenceManager is initialized.
+ /// </param>
+ /// <param name="diskProperties">
+ /// Configuration Properties used by PersistenceManager implementation.
+ /// </param>
+ void Init(IRegion<TKey, TValue>^ region, Properties<String^, String^>^ diskProperties);
+
+ /// <summary>
+ /// Writes a key, value pair of region to the disk. The actual file or database related write operations should be implemented
+ /// in this method by the class implementing this method.
+ /// </summary>
+ /// <param name="key">
+ /// the key to write.
+ /// </param>
+ /// <param name="value">
+ /// the value to write.
+ /// </param>
+ void Write(TKey key, TValue value);
+
+ /// <summary>
+ /// Writes all the entries for a region. Refer persistance requirement doc for the use case.
+ /// </summary>
+ /// <returns>
+ /// true if WriteAll is successful.
+ /// </returns>
+ bool WriteAll();
+
+ /// <summary>
+ /// Reads the value for the key from the disk.
+ /// </summary>
+ /// <param name="key">
+ /// key for which the value has to be read.
+ /// </param>
+ TValue Read(TKey key);
+
+ /// <summary>
+ /// Reads all the values from the region.
+ /// </summary>
+ /// <returns>
+ /// true if ReadAll is successful.
+ /// </returns>
+ bool ReadAll();
+
+ /// <summary>
+ /// Destroys the entry specified by the key in the argument.
+ /// </summary>
+ /// <param name="key">
+ /// key of the entry which is being destroyed.
+ /// </param>
+ void Destroy(TKey key);
+
+ /// <summary>
+ /// Closes the persistence manager instance.
+ /// </summary>
+ void Close();
+
+ };
+ } // namespace Client
+ } // namespace Geode
+} // namespace Apache
+