You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by rv...@apache.org on 2016/05/19 15:14:08 UTC

[01/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Repository: incubator-geode
Updated Branches:
  refs/heads/native-client-software-grant [created] ac9670005


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/DataOutputMN.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/DataOutputMN.hpp b/geode-client-native/src/clicache/com/vmware/DataOutputMN.hpp
new file mode 100644
index 0000000..c3a195a
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/DataOutputMN.hpp
@@ -0,0 +1,598 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "../../gf_defs.hpp"
+#include <cppcache/DataOutput.hpp>
+//#include "impl/NativeWrapperN.hpp"
+#include "LogMN.hpp"
+#include "ExceptionTypesMN.hpp"
+#include "SerializableMN.hpp"
+
+#include "CacheableStringMN.hpp"
+#include "CacheableDateMN.hpp"
+#include "CacheableVectorMN.hpp"
+#include "CacheableArrayListMN.hpp"
+#include "CacheableStackMN.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      namespace Generic
+      {
+
+      interface class IGFSerializable;
+
+      /// <summary>
+      /// Provides operations for writing primitive data values, and
+      /// user-defined objects implementing IGFSerializable, to a byte stream.
+      /// This class is intentionally not thread safe.
+      /// </summary>
+      public ref class DataOutput sealed
+				: public Generic::Internal::UMWrap<gemfire::DataOutput>
+      {
+      private:
+        int32_t m_cursor;
+        bool m_isManagedObject;
+        uint8_t * m_bytes;
+        int32_t m_remainingBufferLength;
+        bool m_ispdxSerialization;
+      public:
+
+        /// <summary>
+        /// Default constructor.
+        /// </summary>
+        inline DataOutput( )
+          : UMWrap( new gemfire::DataOutput( ), true )
+        { 
+          m_isManagedObject = true;
+          m_cursor = 0;
+          m_bytes = const_cast<uint8_t *>(NativePtr->getCursor());
+          m_remainingBufferLength = (int32_t)NativePtr->getRemainingBufferLength();
+          m_ispdxSerialization = false;
+        }
+
+        /// <summary>
+        /// Write length of the array to the <c>DataOutput</c>.
+        /// </summary>
+        /// <param name="len">Array len to write.</param>
+        void WriteArrayLen( int32_t len );
+        
+        /// <summary>
+        /// Write a signed byte to the <c>DataOutput</c>.
+        /// </summary>
+        /// <param name="value">The signed byte to write.</param>
+        void WriteSByte( SByte value );
+
+        /// <summary>
+        /// Write a boolean value to the <c>DataOutput</c>.
+        /// </summary>
+        /// <param name="value">The boolean value to write.</param>
+        void WriteBoolean( bool value );
+
+				/// <summary>
+        /// Write a char value to the <c>DataOutput</c>.
+        /// </summary>
+        /// <param name="value">The char value to write.</param>
+        void WriteChar( Char value );
+
+        /// <summary>
+        /// Write a given length of bytes to the <c>DataOutput</c>.
+        /// </summary>
+        /// <param name="bytes">The array of bytes to write.</param>
+        /// <param name="len">
+        /// The number of bytes from the start of array to write.
+        /// </param>
+        void WriteBytes( array<Byte>^ bytes, int32_t len );
+
+        /// <summary>
+        /// Write an array of bytes to the <c>DataOutput</c>.
+        /// </summary>
+        /// <param name="bytes">The array of bytes to write.</param>
+        inline void WriteBytes( array<Byte>^ bytes )
+        {
+          WriteBytes( bytes, ( bytes == nullptr ? -1 : bytes->Length ) );
+        }
+
+        /// <summary>
+        /// Write a given length of signed bytes to the <c>DataOutput</c>.
+        /// </summary>
+        /// <param name="bytes">The array of signed bytes to write.</param>
+        /// <param name="len">
+        /// The number of bytes from the start of array to write.
+        /// </param>
+        void WriteSBytes( array<SByte>^ bytes, int32_t len );
+
+        /// <summary>
+        /// Write an array of signed bytes to the <c>DataOutput</c>.
+        /// </summary>
+        /// <param name="bytes">The array of signed bytes to write.</param>
+        inline void WriteSBytes( array<SByte>^ bytes )
+        {
+          WriteSBytes( bytes, ( bytes == nullptr ? -1 : bytes->Length )  );
+        }
+
+        /// <summary>
+        /// Write a given length of bytes without its length to the
+        /// <c>DataOutput</c>.
+        /// </summary>
+        /// <param name="bytes">The array of bytes to write.</param>
+        /// <param name="len">
+        /// The number of bytes from the start of array to write.
+        /// </param>
+        void WriteBytesOnly( array<Byte>^ bytes, uint32_t len );
+
+        void WriteBytesOnly( array<Byte>^ bytes, uint32_t len, uint32_t offset );
+
+        /// <summary>
+        /// Write an array of bytes without its length to the
+        /// <c>DataOutput</c>.
+        /// </summary>
+        /// <param name="bytes">The array of bytes to write.</param>
+        inline void WriteBytesOnly( array<Byte>^ bytes )
+        {
+          WriteBytesOnly( bytes, ( bytes == nullptr ? 0 : bytes->Length )  );
+        }
+
+        /// <summary>
+        /// Write a given length of signed bytes without its length
+        /// to the <c>DataOutput</c>.
+        /// </summary>
+        /// <param name="bytes">The array of signed bytes to write.</param>
+        /// <param name="len">
+        /// The number of bytes from the start of array to write.
+        /// </param>
+        void WriteSBytesOnly( array<SByte>^ bytes, uint32_t len );
+
+        /// <summary>
+        /// Write an array of signed bytes without its length
+        /// to the <c>DataOutput</c>.
+        /// </summary>
+        /// <param name="bytes">The array of signed bytes to write.</param>
+        inline void WriteSBytesOnly( array<SByte>^ bytes )
+        {
+          WriteSBytesOnly( bytes, ( bytes == nullptr ? 0 : bytes->Length )  );
+        }        
+
+        /// <summary>
+        /// Write a 16-bit integer to the <c>DataOutput</c>.
+        /// </summary>
+        /// <param name="value">The 16-bit integer to write.</param>
+        void WriteInt16( int16_t value );
+
+        /// <summary>
+        /// Write a 32-bit integer to the <c>DataOutput</c>.
+        /// </summary>
+        /// <param name="value">The 32-bit integer to write.</param>
+        void WriteInt32( int32_t value );
+
+        /// <summary>
+        /// Write a 64-bit integer to the <c>DataOutput</c>.
+        /// </summary>
+        /// <param name="value">The 64-bit integer to write.</param>
+        void WriteInt64( int64_t value );
+
+        /// <summary>
+        /// Write a float to the DataOutput.
+        /// </summary>
+        /// <param name="value">The float value to write.</param>
+        void WriteFloat( float value );
+
+        /// <summary>
+        /// Write a double precision real number to the <c>DataOutput</c>.
+        /// </summary>
+        /// <param name="value">
+        /// The double precision real number to write.
+        /// </param>
+        void WriteDouble( double value );
+
+        /// <summary>
+        /// Write a string using java-modified UTF-8 encoding to
+        /// <c>DataOutput</c>.
+        /// The maximum length supported is 2^16-1 beyond which the string
+        /// shall be truncated.
+        /// </summary>
+        /// <param name="value">The UTF encoded string to write.</param>
+        void WriteUTF( String^ value );
+
+        /// <summary>
+        /// Write a string using java-modified UTF-8 encoding to
+        /// <c>DataOutput</c>.
+        /// Length should be more than 2^16 -1. 
+        /// </summary>
+        /// <param name="value">The UTF encoded string to write.</param>
+        void WriteUTFHuge( String^ value );
+
+        /// <summary>
+        /// Write a string(only ASCII char) to
+        /// <c>DataOutput</c>.
+        /// Length should be more than 2^16 -1.
+        /// </summary>
+        /// <param name="value">The UTF encoded string to write.</param>
+        void WriteASCIIHuge( String^ value );
+
+        /// <summary>
+        /// Write an <c>IGFSerializable</c> object to the <c>DataOutput</c>.
+        /// </summary>
+        /// <param name="obj">The object to write.</param>
+       // void WriteObject( IGFSerializable^ obj );
+
+        /// <summary>
+        /// Write a <c>Serializable</c> object to the <c>DataOutput</c>.
+        /// This is provided to conveniently pass primitive types (like string)
+        /// that shall be implicitly converted to corresponding
+        /// <c>IGFSerializable</c> wrapper types.
+        /// </summary>
+        /// <param name="obj">The object to write.</param>
+        void WriteObject( Object^ obj );
+
+        /// <summary>
+        /// Advance the buffer cursor by the given offset.
+        /// </summary>
+        /// <param name="offset">
+        /// The offset by which to advance the cursor.
+        /// </param>
+        void AdvanceCursor( uint32_t offset );
+
+        /// <summary>
+        /// Rewind the buffer cursor by the given offset.
+        /// </summary>
+        /// <param name="offset">
+        /// The offset by which to rewind the cursor.
+        /// </param>
+        void RewindCursor( uint32_t offset );
+
+        /// <summary>
+        /// Get a copy of the current buffer.
+        /// </summary>
+        array<Byte>^ GetBuffer( );
+
+        /// <summary>
+        /// Get the length of current data in the buffer.
+        /// </summary>
+        property uint32_t BufferLength
+        {
+          uint32_t get( );
+        }
+
+        /// <summary>
+        /// Reset the cursor to the start of the buffer.
+        /// </summary>
+        void Reset( );
+
+        /// <summary>
+        /// Get the underlying native unmanaged pointer.
+        /// </summary>
+        property IntPtr NativeIntPtr
+        {
+          inline IntPtr get()
+          {
+            return IntPtr(_NativePtr);
+          }
+        }
+       
+        /// <summary>
+        /// Write a Dictionary to the DataOutput.
+        /// </summary>
+        /// <param name="value">The object which implements IDictionary to write.</param>
+ 			  void WriteDictionary(System::Collections::IDictionary^ value);              
+
+        /// <summary>
+        /// Write a date to the DataOutput.
+        /// </summary>
+        /// <param name="value">The date value to write.</param>
+        void WriteDate(System::DateTime value);
+
+        /// <summary>
+        /// Write a collection to the DataOutput.
+        /// </summary>
+        /// <param name="value">The object which implements IList to write.</param>
+        void WriteCollection(System::Collections::IList^ value);
+        
+        /// <summary>
+        /// Write a char array to the DataOutput.
+        /// </summary>
+        /// <param name="value">The char array to write.</param>
+        void WriteCharArray(array<Char>^ value);
+
+        /// <summary>
+        /// Write a bool array to the DataOutput.
+        /// </summary>
+        /// <param name="value">The bool array to write.</param>
+				void WriteBooleanArray(array<bool>^ value);
+
+        /// <summary>
+        /// Write a short array to the DataOutput.
+        /// </summary>
+        /// <param name="value">The short array to write.</param>
+				void WriteShortArray(array<Int16>^ value);
+
+        /// <summary>
+        /// Write a int array to the DataOutput.
+        /// </summary>
+        /// <param name="value">The int array to write.</param>
+				void WriteIntArray(array<Int32>^ value);
+
+        /// <summary>
+        /// Write a long array to the DataOutput.
+        /// </summary>
+        /// <param name="value">The long array to write.</param>
+				void WriteLongArray(array<Int64>^ value);
+
+        /// <summary>
+        /// Write a float array to the DataOutput.
+        /// </summary>
+        /// <param name="value">The float array to write.</param>
+				void WriteFloatArray(array<float>^ value);
+
+        /// <summary>
+        /// Write a double array to the DataOutput.
+        /// </summary>
+        /// <param name="value">The double array to write.</param>
+				void WriteDoubleArray(array<double>^ value);
+
+        /// <summary>
+        /// Write a object array to the DataOutput.
+        /// </summary>
+        /// <param name="value">The object array to write.</param>
+        void WriteObjectArray(List<Object^>^ value);
+
+        /// <summary>
+        /// Write a array of sign byte array to the DataOutput.
+        /// </summary>
+        /// <param name="value">The array of sign byte array to write.</param>
+        void WriteArrayOfByteArrays(array<array<Byte>^>^ value);
+               
+      internal:
+
+        void WriteDotNetObjectArray(Object^ objectArray);
+
+        /// <summary>
+        /// Write a byte to the <c>DataOutput</c>.
+        /// </summary>
+        /// <param name="value">The byte to write.</param>
+        void WriteByte( Byte value );
+
+        /// <summary>
+        /// Write an unsigned short integer (int16_t) to the <c>DataOutput</c>.
+        /// </summary>
+        /// <param name="value">The unsigned 16-bit integer to write.</param>
+        void WriteUInt16( uint16_t value );
+
+        /// <summary>
+        /// Write an unsigned 32-bit integer to the <c>DataOutput</c>.
+        /// </summary>
+        /// <param name="value">The unsigned 32-bit integer to write.</param>
+        void WriteUInt32( uint32_t value );
+
+        /// <summary>
+        /// Write an unsigned 64-bit integer to the <c>DataOutput</c>.
+        /// </summary>
+        /// <param name="value">The unsigned 64-bit integer to write.</param>
+        void WriteUInt64( uint64_t value );
+
+
+			  int32_t GetBufferLengthPdx()
+        {
+          return (int32_t)NativePtr->getBufferLength();
+        }
+
+        void WriteString(String^ value);
+
+        int32_t GetCursorPdx()
+        {
+          return m_cursor;
+        }
+
+        const char * GetPoolName()
+        {
+          return _NativePtr->getPoolName();
+        }
+
+        void WriteStringArray(array<String^>^ strArray);
+
+
+        int EncodeString( String^ input, int length )
+        {
+          int j = m_cursor;
+
+          for ( int i = 0; i < input->Length; i++ )
+          {
+            //EnsureCapacity(3);
+            unsigned short c = (unsigned short)input[i];
+
+            if( c == 0 )
+            {
+                m_bytes[m_cursor++] = 0xc0;
+                m_bytes[m_cursor++] = 0x80;
+            }
+            else if ( c < 0x80 )//ASCII character
+            {
+              // 7-bits done in one byte.
+              m_bytes[m_cursor++] = (uint8_t)c;
+            }
+            else if ( c < 0x800 )
+            {
+              // 8-11 bits done in 2 bytes
+              m_bytes[m_cursor++] = ( 0xC0 | c >> 6 );
+              m_bytes[m_cursor++] = ( 0x80 | c & 0x3F );
+            }
+            else 
+            {
+              // 12-16 bits done in 3 bytes
+              m_bytes[m_cursor++] = ( 0xE0 | c >> 12 );
+              m_bytes[m_cursor++] = ( 0x80 | c >> 6 & 0x3F );
+              m_bytes[m_cursor++] = ( 0x80 | c & 0x3F );
+            }            
+          }
+
+          if(length < (m_cursor - j))//extra byte after 0xffff
+            return length;
+          return m_cursor - j; //number of bytes
+        }
+       
+        static int getEncodedLength(String^ input)
+        {
+          int count = 0;
+          for ( int i = 0; i < input->Length; i++ )
+          {
+            unsigned short c = (unsigned short)input[i];
+
+            if( c == 0)
+            {
+              count += 2;
+            }
+            else if ( c < 0x80 )//ASCII character
+            {
+              count++;
+            }
+            else if ( c < 0x800 )
+            {
+              count += 2;
+            }
+            else
+            {
+               count += 3;
+            }
+          }// end for
+
+          return count;
+        }
+
+        void setPdxSerialization(bool val)
+        {
+          m_ispdxSerialization = val;
+        }
+
+        void WriteStringWithType( String^ value );
+
+        static int8_t GetTypeId(uint32_t classId );
+        
+        static int8_t DSFID(uint32_t classId);        
+  
+        void WriteObjectInternal( IGFSerializable^ obj );     
+
+        void WriteBytesToUMDataOutput();
+        
+        void WriteObject(bool% obj);        
+
+        void WriteObject(Byte% obj);        
+
+        void WriteObject(Char% obj);        
+
+        void WriteObject(Double% obj);
+        
+        void WriteObject(Single% obj);
+        
+        void WriteObject(int16_t% obj);
+        
+        void WriteObject(int32_t% obj);
+        
+        void WriteObject(int64_t% obj);
+        
+				void WriteObject(UInt16% obj);
+        
+        void WriteObject(UInt32% obj);       
+
+        void WriteObject(UInt64% obj);
+        
+       // void WriteObject(array<UInt16>^ objArray);
+        //void WriteObject(array<UInt32>^ objArray);
+        //void WriteObject(array<UInt64>^ objArray);
+
+        
+        template <typename mType>
+        void WriteObject(array<mType>^ %objArray)
+        {
+          if(objArray != nullptr) {
+            int arrayLen = objArray->Length;
+            WriteArrayLen(arrayLen);
+            if(arrayLen > 0) {
+              int i = 0;
+              for( i = 0; i < arrayLen; i++ ){
+                WriteObject(objArray[i]);
+              }
+            }
+          }
+          else {
+            WriteByte(0xff);
+          }
+        }
+
+        bool IsManagedObject()
+        {
+          //TODO::HItesh
+          return m_isManagedObject;
+        }
+
+        void SetBuffer()
+        {
+          m_cursor = 0;
+          m_bytes = const_cast<uint8_t *>(NativePtr->getCursor());
+          m_remainingBufferLength = (int32_t)NativePtr->getRemainingBufferLength();
+        }
+
+				uint8_t* GetStartBufferPosition()
+        {
+          return const_cast<uint8_t *>( NativePtr->getBuffer());;
+        }
+
+        inline void EnsureCapacity( int32_t size )
+        {
+          int32_t bytesLeft = m_remainingBufferLength - m_cursor;
+          if ( bytesLeft < size ) {
+            try
+            {
+              NativePtr->ensureCapacity(m_cursor + size);
+              m_bytes = const_cast<uint8_t *>( NativePtr->getCursor());
+              m_remainingBufferLength = (int32_t)NativePtr->getRemainingBufferLength();
+            }
+            catch(gemfire::OutOfMemoryException ex )
+            {
+              throw gcnew OutOfMemoryException(ex);
+            }            
+          }
+        }
+
+        //it expects list is not null
+        inline void WriteList(System::Collections::IList^ list)
+        {
+          this->WriteArrayLen(list->Count);
+          for each (Object^ obj in list) 
+						this->WriteObject(obj);
+        }
+
+        uint8_t* GetBytes(uint8_t* src, uint32_t size)
+        {
+          return NativePtr->getBufferCopyFrom(src, size);
+        }
+ 
+        /// <summary>
+        /// Internal constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline DataOutput( gemfire::DataOutput* nativeptr, bool managedObject )
+          : UMWrap( nativeptr, false )
+        {
+          m_isManagedObject = managedObject;
+          m_cursor = 0;
+          m_bytes = const_cast<uint8_t *>(nativeptr->getCursor());
+          m_remainingBufferLength = (int32_t)nativeptr->getRemainingBufferLength();
+          m_ispdxSerialization = false;
+        }
+      };
+      } // end namespace generic
+    }
+  }
+}


[03/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CacheableVectorMN.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CacheableVectorMN.hpp b/geode-client-native/src/clicache/com/vmware/CacheableVectorMN.hpp
new file mode 100644
index 0000000..c0d3cad
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CacheableVectorMN.hpp
@@ -0,0 +1,126 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "../../gf_defs.hpp"
+#include "IGFSerializableN.hpp"
+#include "GemFireClassIdsMN.hpp"
+
+
+using namespace System;
+using namespace System::Collections::Generic;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+      /// <summary>
+      /// A mutable <c>IGFSerializable</c> vector wrapper that can serve as
+      /// a distributable object for caching. This class extends .NET generic
+      /// <c>List</c> class.
+      /// </summary>
+      ref class CacheableVector
+        : public IGFSerializable
+      {
+      public:
+        /// <summary>
+        /// Allocates a new empty instance.
+        /// </summary>
+        inline CacheableVector(System::Collections::IList^ arrayList)          
+        { 
+          m_arrayList = arrayList;
+        }
+
+        
+        /// <summary>
+        /// Static function to create a new empty instance.
+        /// </summary>
+        inline static CacheableVector^ Create()
+        {
+          return gcnew CacheableVector(gcnew System::Collections::ArrayList());
+        }
+
+        /// <summary>
+        /// Static function to create a new empty instance.
+        /// </summary>
+        inline static CacheableVector^ Create(System::Collections::IList^ list)
+        {
+          return gcnew CacheableVector(list);
+        }
+
+        
+        // Region: IGFSerializable Members
+
+        /// <summary>
+        /// Serializes this object.
+        /// </summary>
+        /// <param name="output">
+        /// the DataOutput object to use for serializing the object
+        /// </param>
+        virtual void ToData(DataOutput^ output);
+
+        /// <summary>
+        /// Deserialize this object, typical implementation should return
+        /// the 'this' pointer.
+        /// </summary>
+        /// <param name="input">
+        /// the DataInput stream to use for reading the object data
+        /// </param>
+        /// <returns>the deserialized object</returns>
+        virtual IGFSerializable^ FromData(DataInput^ input);
+
+        /// <summary>
+        /// return the size of this object in bytes
+        /// </summary>
+        virtual property uint32_t ObjectSize
+        {
+          virtual uint32_t get();
+        }
+
+        /// <summary>
+        /// Returns the classId of the instance being serialized.
+        /// This is used by deserialization to determine what instance
+        /// type to create and deserialize into.
+        /// </summary>
+        /// <returns>the classId</returns>
+        virtual property uint32_t ClassId
+        {
+          virtual uint32_t get()
+          {
+            return GemFireClassIds::CacheableVector;
+          }
+        }
+
+        virtual property System::Collections::IList^ Value
+        {
+          virtual System::Collections::IList^ get()
+          {
+            return m_arrayList;
+          }
+        }
+
+        // End Region: IGFSerializable Members
+
+        /// <summary>
+        /// Factory function to register this class.
+        /// </summary>
+        static IGFSerializable^ CreateDeserializable()
+        {
+          return gcnew CacheableVector(gcnew System::Collections::ArrayList());
+        }
+
+        private:
+          System::Collections::IList^ m_arrayList; 
+      };
+    }
+  }
+}
+ } //namespace 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CqAttributesFactoryMN.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CqAttributesFactoryMN.cpp b/geode-client-native/src/clicache/com/vmware/CqAttributesFactoryMN.cpp
new file mode 100644
index 0000000..06f0cf0
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CqAttributesFactoryMN.cpp
@@ -0,0 +1,133 @@
+/*=========================================================================
+* Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+*=========================================================================
+*/
+
+//#include "gf_includesN.hpp"
+#include "CqAttributesFactoryMN.hpp"
+#include "impl/ManagedCqListenerN.hpp"
+#include "ICqListenerN.hpp"
+#include "impl/ManagedCqStatusListenerN.hpp"
+#include "ICqStatusListenerN.hpp"
+#include "CqAttributesMutatorMN.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+      generic<class TKey, class TResult>
+      void CqAttributesFactory<TKey, TResult>::AddCqListener(Generic::ICqListener<TKey, TResult>^ cqListener )
+      {
+        gemfire::CqListenerPtr listenerptr;
+        if ( cqListener != nullptr ) {
+          ICqStatusListener<TKey, TResult>^ cqStatusListener = 
+            dynamic_cast<ICqStatusListener<TKey, TResult>^>(cqListener);
+          if (cqStatusListener != nullptr) {
+            CqStatusListenerGeneric<TKey, TResult>^ sLstr = gcnew CqStatusListenerGeneric<TKey, TResult>();
+            sLstr->AddCqListener(cqListener);
+            listenerptr = new gemfire::ManagedCqStatusListenerGeneric(cqListener);
+            try {
+              CqListenerHelper<TKey, TResult>::g_readerWriterLock->AcquireWriterLock(-1);
+              if ( CqListenerHelper<TKey, TResult>::m_ManagedVsUnManagedCqLstrDict->ContainsKey( cqListener) ) {
+                CqListenerHelper<TKey, TResult>::m_ManagedVsUnManagedCqLstrDict[cqListener] = (IntPtr)listenerptr.ptr();
+              }
+              else {
+                CqListenerHelper<TKey, TResult>::m_ManagedVsUnManagedCqLstrDict->Add(cqListener, (IntPtr)listenerptr.ptr());
+              }
+            } finally {
+                CqListenerHelper<TKey, TResult>::g_readerWriterLock->ReleaseWriterLock();
+            }
+            ((gemfire::ManagedCqStatusListenerGeneric*)listenerptr.ptr())->setptr(sLstr);
+          }
+          else {
+            //TODO::split
+            CqListenerGeneric<TKey, TResult>^ cqlg = gcnew CqListenerGeneric<TKey, TResult>();
+            cqlg->AddCqListener(cqListener);
+            //listenerptr = new gemfire::ManagedCqListenerGeneric((ICqListener<Object^, Object^>^)cqListener );
+            listenerptr = new gemfire::ManagedCqListenerGeneric( /*clg,*/ cqListener );
+            try {
+              CqListenerHelper<TKey, TResult>::g_readerWriterLock->AcquireWriterLock(-1);
+              if ( CqListenerHelper<TKey, TResult>::m_ManagedVsUnManagedCqLstrDict->ContainsKey( cqListener) ) {
+                CqListenerHelper<TKey, TResult>::m_ManagedVsUnManagedCqLstrDict[cqListener] = (IntPtr)listenerptr.ptr();
+              }
+              else {
+                CqListenerHelper<TKey, TResult>::m_ManagedVsUnManagedCqLstrDict->Add(cqListener, (IntPtr)listenerptr.ptr());
+              }
+            } finally {
+                CqListenerHelper<TKey, TResult>::g_readerWriterLock->ReleaseWriterLock();
+            }
+            ((gemfire::ManagedCqListenerGeneric*)listenerptr.ptr())->setptr(cqlg);
+          }
+        }
+
+        NativePtr->addCqListener( listenerptr );
+      }
+
+      generic<class TKey, class TResult>
+      void CqAttributesFactory<TKey, TResult>::InitCqListeners(array<Generic::ICqListener<TKey, TResult>^>^ cqListeners)
+      {
+        gemfire::VectorOfCqListener vrr;
+        for( int i = 0; i < cqListeners->Length; i++ )
+        {
+          ICqStatusListener<TKey, TResult>^ lister = dynamic_cast<ICqStatusListener<TKey, TResult>^>(cqListeners[i]);
+          if (lister != nullptr) {
+            gemfire::CqStatusListenerPtr cptr(new gemfire::ManagedCqStatusListenerGeneric(
+              (ICqStatusListener<TKey, TResult>^)lister ));
+            vrr.push_back(cptr);
+            CqStatusListenerGeneric<TKey, TResult>^ cqlg = gcnew CqStatusListenerGeneric<TKey, TResult>();
+            cqlg->AddCqListener(cqListeners[i]);
+            try {
+              CqListenerHelper<TKey, TResult>::g_readerWriterLock->AcquireWriterLock(-1);
+              if ( CqListenerHelper<TKey, TResult>::m_ManagedVsUnManagedCqLstrDict->ContainsKey( cqListeners[i]) ) {
+                CqListenerHelper<TKey, TResult>::m_ManagedVsUnManagedCqLstrDict[cqListeners[i]] = (IntPtr)cptr.ptr();
+              }
+              else {
+                CqListenerHelper<TKey, TResult>::m_ManagedVsUnManagedCqLstrDict->Add(cqListeners[i], (IntPtr)cptr.ptr());
+              }
+            } finally {
+                CqListenerHelper<TKey, TResult>::g_readerWriterLock->ReleaseWriterLock();
+            }
+            ((gemfire::ManagedCqStatusListenerGeneric*)vrr[i].ptr())->setptr(cqlg);
+          }
+          else {
+            ICqListener<TKey, TResult>^ lister = cqListeners[i];
+            gemfire::CqListenerPtr cptr(new gemfire::ManagedCqListenerGeneric(
+              (ICqListener<TKey, TResult>^)lister ));
+            vrr.push_back(cptr);
+            CqListenerGeneric<TKey, TResult>^ cqlg = gcnew CqListenerGeneric<TKey, TResult>();
+            cqlg->AddCqListener(cqListeners[i]);
+            try {
+              CqListenerHelper<TKey, TResult>::g_readerWriterLock->AcquireWriterLock(-1);
+              if ( CqListenerHelper<TKey, TResult>::m_ManagedVsUnManagedCqLstrDict->ContainsKey( cqListeners[i]) ) {
+                CqListenerHelper<TKey, TResult>::m_ManagedVsUnManagedCqLstrDict[cqListeners[i]] = (IntPtr)cptr.ptr();
+              }
+              else {
+                CqListenerHelper<TKey, TResult>::m_ManagedVsUnManagedCqLstrDict->Add(cqListeners[i], (IntPtr)cptr.ptr());
+              }
+            } finally {
+                CqListenerHelper<TKey, TResult>::g_readerWriterLock->ReleaseWriterLock();
+            }
+            ((gemfire::ManagedCqListenerGeneric*)vrr[i].ptr())->setptr(cqlg);
+          }
+        }
+
+        NativePtr->initCqListeners( vrr );
+      }
+
+      generic<class TKey, class TResult>
+      Generic::CqAttributes<TKey, TResult>^ CqAttributesFactory<TKey, TResult>::Create( )
+      {
+        return Generic::CqAttributes<TKey, TResult>::Create(NativePtr->create().ptr());
+      }
+
+    }
+    }
+  }
+} //namespace 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CqAttributesFactoryMN.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CqAttributesFactoryMN.hpp b/geode-client-native/src/clicache/com/vmware/CqAttributesFactoryMN.hpp
new file mode 100644
index 0000000..0321ab9
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CqAttributesFactoryMN.hpp
@@ -0,0 +1,80 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "../../gf_defs.hpp"
+#include <cppcache/CqAttributesFactory.hpp>
+//#include "impl/NativeWrapperN.hpp"
+#include "impl/SafeConvertN.hpp"
+
+#include "CqAttributesMN.hpp"
+
+using namespace System;
+using namespace System::Collections::Generic;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+
+      /*
+      generic<class TKey, class TValue>
+      ref class CqAttributes;
+      */
+      generic<class TKey, class TResult>
+      interface class ICqListener;
+
+      /// <summary>
+      /// Creates instances of <c>CqAttributes</c>.
+      /// </summary>
+      /// <seealso cref="CqAttributes" />
+      generic<class TKey, class TResult>
+      public ref class CqAttributesFactory sealed
+        : public Internal::UMWrap<gemfire::CqAttributesFactory>
+      {
+      public:
+
+        /// <summary>
+        /// Creates a new instance of <c>CqAttributesFactory</c> ready
+        /// to create a <c>CqAttributes</c> with default settings.
+        /// </summary>
+        inline CqAttributesFactory( )
+          : UMWrap( new gemfire::CqAttributesFactory( ), true )
+        { }
+
+        inline CqAttributesFactory(Generic::CqAttributes<TKey, TResult>^ cqAttributes )
+          : UMWrap( new gemfire::CqAttributesFactory(gemfire::CqAttributesPtr(GetNativePtrFromSBWrapGeneric<gemfire::CqAttributes>(cqAttributes ))), true )
+        { }
+
+        // ATTRIBUTES
+
+        /// <summary>
+        /// add a cqListener 
+        /// </summary>
+        void AddCqListener(Generic::ICqListener<TKey, TResult>^ cqListener);
+
+        /// <summary>
+        /// Initialize with an array of listeners
+        /// </summary>
+        void InitCqListeners( array<Generic::ICqListener<TKey, TResult>^>^ cqListeners );
+
+        // FACTORY METHOD
+
+        /// <summary>
+        /// Creates a <c>CqAttributes</c> with the current settings.
+        /// </summary>
+        Generic::CqAttributes<TKey, TResult>^ Create( );
+      };
+
+    }
+  }
+}
+ } //namespace 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CqAttributesMN.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CqAttributesMN.cpp b/geode-client-native/src/clicache/com/vmware/CqAttributesMN.cpp
new file mode 100644
index 0000000..db8bd21
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CqAttributesMN.cpp
@@ -0,0 +1,57 @@
+/*=========================================================================
+* Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+*=========================================================================
+*/
+
+//#include "gf_includesN.hpp"
+#include "CqAttributesMN.hpp"
+#include "impl/ManagedCqListenerN.hpp"
+#include "ICqListenerN.hpp"
+#include "impl/ManagedCqStatusListenerN.hpp"
+#include "ICqStatusListenerN.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+      generic<class TKey, class TResult>
+      array<ICqListener<TKey, TResult>^>^ CqAttributes<TKey, TResult>::getCqListeners( )
+      {
+        gemfire::VectorOfCqListener vrr;
+        NativePtr->getCqListeners( vrr );
+        array<ICqListener<TKey, TResult>^>^ listners = gcnew array<ICqListener<TKey, TResult>^>( vrr.size( ) );
+
+        for( int32_t index = 0; index < vrr.size( ); index++ )
+        {
+          gemfire::CqListenerPtr& nativeptr( vrr[ index ] );
+          gemfire::ManagedCqListenerGeneric* mg_listener =
+            dynamic_cast<gemfire::ManagedCqListenerGeneric*>( nativeptr.ptr( ) );
+          if (mg_listener != nullptr)
+          {
+            listners[ index ] =  (ICqListener<TKey, TResult>^) mg_listener->userptr( );
+          }else 
+          {
+            gemfire::ManagedCqStatusListenerGeneric* mg_statuslistener =
+              dynamic_cast<gemfire::ManagedCqStatusListenerGeneric*>( nativeptr.ptr( ) );
+            if (mg_statuslistener != nullptr) {
+              listners[ index ] =  (ICqStatusListener<TKey, TResult>^) mg_statuslistener->userptr( );
+            }
+            else {
+              listners[ index ] =  nullptr;
+            }
+          }
+        }
+        return listners;
+      }
+
+    }
+    }
+  }
+} //namespace 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CqAttributesMN.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CqAttributesMN.hpp b/geode-client-native/src/clicache/com/vmware/CqAttributesMN.hpp
new file mode 100644
index 0000000..e121759
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CqAttributesMN.hpp
@@ -0,0 +1,74 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "../../gf_defs.hpp"
+#include <cppcache/CqAttributes.hpp>
+#include "../../impl/NativeWrapper.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+      generic<class TKey, class TResult>
+      interface class ICqListener;
+
+      /// <summary>
+      /// Defines attributes for configuring a cq.
+      /// </summary>
+      generic<class TKey, class TResult>
+      public ref class CqAttributes sealed
+        : public Internal::SBWrap<gemfire::CqAttributes>
+      {
+      public:
+
+        /// <summary>
+        /// get all listeners in this attributes
+        /// </summary>
+        virtual array<Generic::ICqListener<TKey, TResult>^>^ getCqListeners();
+
+      internal:
+
+        /// <summary>
+        /// Internal factory function to wrap a native object pointer inside
+        /// this managed class with null pointer check.
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        /// <returns>
+        /// The managed wrapper object; null if the native pointer is null.
+        /// </returns>
+        inline static CqAttributes<TKey, TResult>^ Create( gemfire::CqAttributes* nativeptr )
+        {
+          if (nativeptr == nullptr)
+          {
+            return nullptr;
+          }
+          return gcnew CqAttributes( nativeptr );
+        }
+
+
+      private:
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline CqAttributes( gemfire::CqAttributes* nativeptr )
+          : SBWrap( nativeptr ) { }
+      };
+
+    }
+  }
+}
+ } //namespace 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CqAttributesMutatorMN.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CqAttributesMutatorMN.cpp b/geode-client-native/src/clicache/com/vmware/CqAttributesMutatorMN.cpp
new file mode 100644
index 0000000..3247a09
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CqAttributesMutatorMN.cpp
@@ -0,0 +1,166 @@
+/*=========================================================================
+* Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+*=========================================================================
+*/
+
+//#include "gf_includesN.hpp"
+#include "CqAttributesMutatorMN.hpp"
+#include "impl/ManagedCqListenerN.hpp"
+#include "impl/ManagedCqStatusListenerN.hpp"
+
+using namespace System;
+
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+
+      generic<class TKey, class TResult>
+      void CqAttributesMutator<TKey, TResult>::AddCqListener( Generic::ICqListener<TKey, TResult>^ cqListener )
+      {
+        gemfire::CqListenerPtr listenerptr;
+        if ( cqListener != nullptr ) {
+          ICqStatusListener<TKey, TResult>^ cqStatusListener = 
+            dynamic_cast<ICqStatusListener<TKey, TResult>^>(cqListener);
+          if (cqStatusListener != nullptr) {
+            CqStatusListenerGeneric<TKey, TResult>^ sLstr = gcnew CqStatusListenerGeneric<TKey, TResult>();
+            sLstr->AddCqListener(cqListener);
+            listenerptr = new gemfire::ManagedCqStatusListenerGeneric(cqListener);
+            try {
+              CqListenerHelper<TKey, TResult>::g_readerWriterLock->AcquireWriterLock(-1);
+              if ( CqListenerHelper<TKey, TResult>::m_ManagedVsUnManagedCqLstrDict->ContainsKey(cqListener) ) {
+                CqListenerHelper<TKey, TResult>::m_ManagedVsUnManagedCqLstrDict[cqListener] = (IntPtr)listenerptr.ptr();
+              }
+              else {
+                CqListenerHelper<TKey, TResult>::m_ManagedVsUnManagedCqLstrDict->Add(cqListener, (IntPtr)listenerptr.ptr());
+              }
+            }
+            finally {
+              CqListenerHelper<TKey, TResult>::g_readerWriterLock->ReleaseWriterLock();
+            }
+            ((gemfire::ManagedCqStatusListenerGeneric*)listenerptr.ptr())->setptr(sLstr);
+          }
+          else {
+            //TODO::split
+            CqListenerGeneric<TKey, TResult>^ cqlg = gcnew CqListenerGeneric<TKey, TResult>();
+            cqlg->AddCqListener(cqListener);
+            //listenerptr = new gemfire::ManagedCqListenerGeneric((ICqListener<Object^, Object^>^)cqListener );
+            listenerptr = new gemfire::ManagedCqListenerGeneric( /*clg,*/ cqListener );
+            try {
+              CqListenerHelper<TKey, TResult>::g_readerWriterLock->AcquireWriterLock(-1);
+              if ( CqListenerHelper<TKey, TResult>::m_ManagedVsUnManagedCqLstrDict->ContainsKey(cqListener) ) {
+                CqListenerHelper<TKey, TResult>::m_ManagedVsUnManagedCqLstrDict[cqListener] = (IntPtr)listenerptr.ptr(); 
+              }
+              else {
+                CqListenerHelper<TKey, TResult>::m_ManagedVsUnManagedCqLstrDict->Add(cqListener, (IntPtr)listenerptr.ptr());
+              }
+            } finally {
+                CqListenerHelper<TKey, TResult>::g_readerWriterLock->ReleaseWriterLock();
+            }
+            ((gemfire::ManagedCqListenerGeneric*)listenerptr.ptr())->setptr(cqlg);            
+          }
+        }
+        NativePtr->addCqListener( listenerptr );
+      }
+
+      generic<class TKey, class TResult>
+      void CqAttributesMutator<TKey, TResult>::RemoveCqListener( Generic::ICqListener<TKey, TResult>^ cqListener )
+      {
+        Generic::ICqStatusListener<TKey, TResult>^ lister = dynamic_cast<Generic::ICqStatusListener<TKey, TResult>^>(cqListener);
+        if (lister != nullptr) {
+          CqStatusListenerGeneric<TKey, TResult>^ cqlg = gcnew CqStatusListenerGeneric<TKey, TResult>();
+          cqlg->AddCqListener(cqListener);
+          gemfire::CqStatusListenerPtr lptr(new gemfire::ManagedCqStatusListenerGeneric(
+          (Generic::ICqStatusListener<TKey, TResult>^) lister ));
+          ((gemfire::ManagedCqStatusListenerGeneric*)lptr.ptr())->setptr(cqlg);
+          try {
+            IntPtr value;
+            CqListenerHelper<TKey, TResult>::g_readerWriterLock->AcquireWriterLock(-1);
+            if ( CqListenerHelper<TKey, TResult>::m_ManagedVsUnManagedCqLstrDict->TryGetValue(cqListener, value) ) {
+              gemfire::CqStatusListenerPtr lptr((gemfire::CqStatusListener*)value.ToPointer());
+              NativePtr->removeCqListener(lptr);
+            }
+          } finally {
+              CqListenerHelper<TKey, TResult>::g_readerWriterLock->ReleaseWriterLock();
+          }
+        }
+        else {
+          CqListenerGeneric<TKey, TResult>^ cqlg = gcnew CqListenerGeneric<TKey, TResult>();
+          cqlg->AddCqListener(cqListener);
+          gemfire::CqListenerPtr lptr(new gemfire::ManagedCqListenerGeneric(
+            (Generic::ICqListener<TKey, TResult>^) cqListener ));
+          ((gemfire::ManagedCqListenerGeneric*)lptr.ptr())->setptr(cqlg);
+          try {
+            IntPtr value;
+            CqListenerHelper<TKey, TResult>::g_readerWriterLock->AcquireWriterLock(-1);
+            if ( CqListenerHelper<TKey, TResult>::m_ManagedVsUnManagedCqLstrDict->TryGetValue(cqListener, value) ) {
+              gemfire::CqListenerPtr lptr((gemfire::CqListener*)value.ToPointer());
+              NativePtr->removeCqListener(lptr);
+            } 
+          } finally {
+              CqListenerHelper<TKey, TResult>::g_readerWriterLock->ReleaseWriterLock();            
+          }
+        }
+      }
+
+      generic<class TKey, class TResult>
+      void CqAttributesMutator<TKey, TResult>::SetCqListeners(array<Generic::ICqListener<TKey, TResult>^>^ newListeners)
+      {
+        gemfire::VectorOfCqListener vrr;
+        for( int i = 0; i < newListeners->Length; i++ )
+        {
+          Generic::ICqStatusListener<TKey, TResult>^ lister = dynamic_cast<Generic::ICqStatusListener<TKey, TResult>^>(newListeners[i]);
+          if (lister != nullptr) {
+            gemfire::CqStatusListenerPtr cptr(new gemfire::ManagedCqStatusListenerGeneric(
+              (ICqStatusListener<TKey, TResult>^)lister ));
+            vrr.push_back(cptr);
+            CqStatusListenerGeneric<TKey, TResult>^ cqlg = gcnew CqStatusListenerGeneric<TKey, TResult>();
+            cqlg->AddCqListener(newListeners[i]);
+            try {
+              CqListenerHelper<TKey, TResult>::g_readerWriterLock->AcquireWriterLock(-1);
+              if ( CqListenerHelper<TKey, TResult>::m_ManagedVsUnManagedCqLstrDict->ContainsKey( newListeners[i]) ) {
+                CqListenerHelper<TKey, TResult>::m_ManagedVsUnManagedCqLstrDict[newListeners[i]] = (IntPtr)cptr.ptr();
+              }
+              else {
+                CqListenerHelper<TKey, TResult>::m_ManagedVsUnManagedCqLstrDict->Add(newListeners[i], (IntPtr)cptr.ptr());
+              }
+            } finally {
+                CqListenerHelper<TKey, TResult>::g_readerWriterLock->ReleaseWriterLock();
+            }
+            ((gemfire::ManagedCqStatusListenerGeneric*)vrr[i].ptr())->setptr(cqlg);
+          }
+          else {
+            Generic::ICqListener<TKey, TResult>^ lister = newListeners[i];
+            gemfire::CqListenerPtr cptr(new gemfire::ManagedCqListenerGeneric(
+              (ICqListener<TKey, TResult>^)lister ));
+            vrr.push_back(cptr);
+            CqListenerGeneric<TKey, TResult>^ cqlg = gcnew CqListenerGeneric<TKey, TResult>();
+            cqlg->AddCqListener(newListeners[i]);
+            try {
+              CqListenerHelper<TKey, TResult>::g_readerWriterLock->AcquireWriterLock(-1);
+              if ( CqListenerHelper<TKey, TResult>::m_ManagedVsUnManagedCqLstrDict->ContainsKey( newListeners[i]) ) {
+                CqListenerHelper<TKey, TResult>::m_ManagedVsUnManagedCqLstrDict[newListeners[i]] = (IntPtr)cptr.ptr();
+              }
+              else {
+                CqListenerHelper<TKey, TResult>::m_ManagedVsUnManagedCqLstrDict->Add(newListeners[i], (IntPtr)cptr.ptr());
+              }
+            } finally {
+                CqListenerHelper<TKey, TResult>::g_readerWriterLock->ReleaseWriterLock();
+            }
+            ((gemfire::ManagedCqListenerGeneric*)vrr[i].ptr())->setptr(cqlg);
+          }
+        }
+
+        NativePtr->setCqListeners( vrr );
+      }
+
+    }
+    }
+  }
+} //namespace 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CqAttributesMutatorMN.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CqAttributesMutatorMN.hpp b/geode-client-native/src/clicache/com/vmware/CqAttributesMutatorMN.hpp
new file mode 100644
index 0000000..0edeeea
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CqAttributesMutatorMN.hpp
@@ -0,0 +1,104 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "../../gf_defs.hpp"
+#include <cppcache/CqAttributesMutator.hpp>
+#include "impl/NativeWrapperN.hpp"
+
+
+using namespace System;
+using namespace System::Collections::Generic;
+using namespace System::Threading;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+
+      generic<class TKey, class TResult>
+	  interface class ICqListener;
+
+      generic<class TKey, class TResult>
+      private ref class CqListenerHelper sealed{
+        public:
+        static IDictionary<Generic::ICqListener<TKey, TResult>^, IntPtr>^
+          m_ManagedVsUnManagedCqLstrDict = gcnew 
+          Dictionary<Generic::ICqListener<TKey, TResult>^, IntPtr>();
+
+        static ReaderWriterLock^ g_readerWriterLock = gcnew ReaderWriterLock();
+      };
+
+      /// <summary>
+      /// Supports modification of certain cq attributes after the cq
+      /// has been created.
+      /// </summary>
+      generic<class TKey, class TResult>
+      public ref class CqAttributesMutator sealed
+        : public Internal::SBWrap<gemfire::CqAttributesMutator>
+      {
+      public:
+
+        /// <summary>
+        /// Adds the CqListener for the cq.
+        /// </summary>
+        /// <param name="cqListener">
+        /// user-defined cq listener, or null for no cache listener
+        /// </param>
+        void AddCqListener( Generic::ICqListener<TKey, TResult>^ cqListener );
+
+        /// <summary>
+        /// Remove a CqListener for the cq.
+        /// </summary>
+        
+        void RemoveCqListener(Generic::ICqListener<TKey, TResult>^ aListener);
+
+
+        /// <summary>
+	/// Initialize with an array of listeners
+        /// </summary>
+        
+        void SetCqListeners(array<Generic::ICqListener<TKey, TResult>^>^ newListeners);
+
+
+      internal:
+        /// <summary>
+        /// Internal factory function to wrap a native object pointer inside
+        /// this managed class with null pointer check.
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        /// <returns>
+        /// The managed wrapper object; null if the native pointer is null.
+        /// </returns>
+        inline static Generic::CqAttributesMutator<TKey, TResult>^ Create( gemfire::CqAttributesMutator* nativeptr )
+        {
+          if (nativeptr == nullptr)
+          {
+            return nullptr;
+          }
+          return gcnew Generic::CqAttributesMutator<TKey, TResult>( nativeptr );
+        }
+
+
+      private:
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline CqAttributesMutator<TKey, TResult>( gemfire::CqAttributesMutator* nativeptr )
+          : SBWrap( nativeptr ) { }
+      };
+
+    }
+  }
+}
+ } //namespace 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CqEventMN.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CqEventMN.cpp b/geode-client-native/src/clicache/com/vmware/CqEventMN.cpp
new file mode 100644
index 0000000..674415a
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CqEventMN.cpp
@@ -0,0 +1,68 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+//#include "gf_includesN.hpp"
+#include "CqEventMN.hpp"
+#include "LogMN.hpp"
+#include "impl/SafeConvertN.hpp"
+#include "CacheableBuiltinsMN.hpp"
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+
+      generic<class TKey, class TResult>
+      CqQuery<TKey, TResult>^ CqEvent<TKey, TResult>::getCq( )
+      {
+        gemfire::CqQueryPtr& cQueryptr( NativePtr->getCq( ) );
+        return CqQuery<TKey, TResult>::Create( cQueryptr.ptr( ) );
+      }
+
+      generic<class TKey, class TResult>
+      CqOperationType CqEvent<TKey, TResult>::getBaseOperation( )
+      {
+		  return CqOperation::ConvertFromNative(NativePtr->getBaseOperation());
+      }
+
+      generic<class TKey, class TResult>
+      CqOperationType CqEvent<TKey, TResult>::getQueryOperation( )
+      {
+        return CqOperation::ConvertFromNative(NativePtr->getQueryOperation());
+      }
+
+      generic<class TKey, class TResult>
+      TKey CqEvent<TKey, TResult>::getKey( )
+      {
+        gemfire::CacheableKeyPtr& keyptr( NativePtr->getKey( ) );
+        return Serializable::GetManagedValueGeneric<TKey>(keyptr);
+      }
+
+      generic<class TKey, class TResult>
+      TResult CqEvent<TKey, TResult>::getNewValue( )
+      {
+        gemfire::CacheablePtr& valptr( NativePtr->getNewValue( ) );
+        return Serializable::GetManagedValueGeneric<TResult>(valptr);
+      }
+
+      generic<class TKey, class TResult>
+      array< Byte >^ CqEvent<TKey, TResult>::getDeltaValue( )
+      {
+        gemfire::CacheableBytesPtr deltaBytes = NativePtr->getDeltaValue( );
+        CacheableBytes^ managedDeltaBytes = ( CacheableBytes^ ) CacheableBytes::Create( deltaBytes.ptr( ) );
+        return ( array< Byte >^ ) managedDeltaBytes;
+      }
+
+
+    }
+  }
+}
+ } //namespace 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CqEventMN.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CqEventMN.hpp b/geode-client-native/src/clicache/com/vmware/CqEventMN.hpp
new file mode 100644
index 0000000..c98e006
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CqEventMN.hpp
@@ -0,0 +1,86 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "../../gf_defs.hpp"
+#include <cppcache/CqEvent.hpp>
+#include "CqQueryMN.hpp"
+#include "CqOperationMN.hpp"
+//#include "impl/NativeWrapperN.hpp"
+
+#include "ICqEventN.hpp"
+#include "ICacheableKeyN.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache {      
+    namespace Generic
+    {
+			interface class IGFSerializable;
+      //interface class ICqEvent;
+      //interface class ICacheableKey;
+
+      /// <summary>
+      /// This class encapsulates events that occur for cq.
+      /// </summary>
+      generic<class TKey, class TResult>
+      public ref class CqEvent sealed
+        : public Internal::UMWrap<gemfire::CqEvent>
+      {
+      public:
+
+
+        /// <summary>
+        /// Return the cqquery this event occurred in.
+        /// </summary>
+	      CqQuery<TKey, TResult>^ getCq();
+
+        /// <summary>
+        /// Get the operation on the base operation that triggered this event.
+        /// </summary>
+       CqOperationType getBaseOperation();
+
+        /// <summary>
+        /// Get the operation on the query operation that triggered this event.
+        /// </summary>
+       CqOperationType getQueryOperation();
+
+        /// <summary>
+        /// Get the key relating to the event.
+        /// In case of REGION_CLEAR and REGION_INVALIDATE operation, the key will be null.
+        /// </summary>
+        TKey /*Generic::ICacheableKey^*/ getKey( );
+
+        /// <summary>
+        /// Get the new value of the modification.
+        /// If there is no new value returns null, this will happen during delete
+        /// operation.
+        /// </summary>
+        /*Object^*/ TResult getNewValue( );
+
+        array< Byte >^ getDeltaValue( );
+
+      internal:
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline CqEvent( const gemfire::CqEvent* nativeptr )
+          : UMWrap( const_cast<gemfire::CqEvent*>( nativeptr ), false ) { }
+      };
+
+    }
+  }
+}
+ } //namespace 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CqListenerMN.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CqListenerMN.hpp b/geode-client-native/src/clicache/com/vmware/CqListenerMN.hpp
new file mode 100644
index 0000000..2ef26c4
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CqListenerMN.hpp
@@ -0,0 +1,103 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "../../gf_defs.hpp"
+#include "ICqListenerN.hpp"
+//#include "impl/NativeWrapperN.hpp"
+
+
+using namespace System;
+using namespace System::Collections::Generic;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+  generic<class TKey, class TResult>
+	ref class CqEvent;
+	//interface class ICqListener;
+
+      /// <summary>
+      /// This class wraps the native C++ <c>gemfire::Serializable</c> objects
+      /// as managed <see cref="../../IGFSerializable" /> objects.
+      /// </summary>
+      generic<class TKey, class TResult>    
+      public ref class CqListener
+        : public Internal::SBWrap<gemfire::CqListener>, public ICqListener<TKey, TResult>
+      {
+      public:
+
+        /// <summary>
+        /// Invoke on an event
+        /// </summary>
+	virtual void OnEvent( CqEvent<TKey, TResult>^ ev) 
+	{
+	}
+
+        /// <summary>
+        /// Invoke on an error
+        /// </summary>
+	virtual void OnError( CqEvent<TKey, TResult>^ ev) 
+	{
+	}
+
+        /// <summary>
+        /// Invoke on close
+        /// </summary>
+	virtual void Close()
+	{
+	}
+
+      internal:
+
+        /// <summary>
+        /// Default constructor.
+        /// </summary>
+        inline CqListener<TKey, TResult>( )
+          : SBWrap( ) { }
+
+        /// <summary>
+        /// Internal constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline CqListener<TKey, TResult>( gemfire::CqListener* nativeptr )
+          : SBWrap( nativeptr ) { }
+
+        /// <summary>
+        /// Used to assign the native Serializable pointer to a new object.
+        /// </summary>
+        /// <remarks>
+        /// Note the order of preserveSB() and releaseSB(). This handles the
+        /// corner case when <c>m_nativeptr</c> is same as <c>nativeptr</c>.
+        /// </remarks>
+        inline void AssignSP( gemfire::CqListener* nativeptr )
+        {
+          AssignPtr( nativeptr );
+        }
+
+        /// <summary>
+        /// Used to assign the native CqListener pointer to a new object.
+        /// </summary>
+        inline void SetSP( gemfire::CqListener* nativeptr )
+        {
+          if ( nativeptr != nullptr ) {
+            nativeptr->preserveSB( );
+          }
+          _SetNativePtr( nativeptr );
+        }
+
+      };
+
+    }
+  }
+}
+ } //namespace 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CqOperationMN.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CqOperationMN.hpp b/geode-client-native/src/clicache/com/vmware/CqOperationMN.hpp
new file mode 100644
index 0000000..028ccf8
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CqOperationMN.hpp
@@ -0,0 +1,78 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+
+
+#pragma once
+
+#include "../../gf_defs.hpp"
+#include <cppcache/CqOperation.hpp>
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+
+      /// <summary>
+      /// Enumerated type for CqOperationType
+      /// </summary>
+      public enum class CqOperationType
+      {
+	OP_TYPE_INVALID = -1,
+        OP_TYPE_CREATE = 0,
+        OP_TYPE_UPDATE = 2,
+        OP_TYPE_INVALIDATE = 4,
+        OP_TYPE_REGION_CLEAR = 8,
+        OP_TYPE_DESTROY = 16,
+        OP_TYPE_MARKER = 32
+      };
+	public ref class CqOperation sealed
+        : public Internal::UMWrap<gemfire::CqOperation>
+      {
+      public:
+
+      /// <summary>
+      /// conenience function for convertin from c++ 
+      /// gemfire::CqOperation::CqOperationType to
+      /// CqOperationType here.
+      /// </summary>
+	  inline static CqOperationType ConvertFromNative(gemfire::CqOperation::CqOperationType tp)
+	  {
+		  if(tp==gemfire::CqOperation::OP_TYPE_CREATE)
+			  return CqOperationType::OP_TYPE_CREATE;
+  		  if(tp==gemfire::CqOperation::OP_TYPE_UPDATE)
+			  return CqOperationType::OP_TYPE_UPDATE;
+		  if(tp==gemfire::CqOperation::OP_TYPE_INVALIDATE)
+			  return CqOperationType::OP_TYPE_INVALIDATE;
+		  if(tp==gemfire::CqOperation::OP_TYPE_REGION_CLEAR)
+			  return CqOperationType::OP_TYPE_REGION_CLEAR;
+  		  if(tp==gemfire::CqOperation::OP_TYPE_DESTROY)
+			  return CqOperationType::OP_TYPE_DESTROY;
+  		  if(tp==gemfire::CqOperation::OP_TYPE_MARKER)
+			  return CqOperationType::OP_TYPE_MARKER;
+		  return CqOperationType::OP_TYPE_INVALID;
+	  }
+	        internal:
+
+        /// <summary>
+        /// Internal constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline CqOperation( gemfire::CqOperation* nativeptr )
+		            : UMWrap( nativeptr, false ) { }
+	  };
+    }
+  }
+}
+ } //namespace 
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CqQueryMN.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CqQueryMN.cpp b/geode-client-native/src/clicache/com/vmware/CqQueryMN.cpp
new file mode 100644
index 0000000..2c82d2a
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CqQueryMN.cpp
@@ -0,0 +1,196 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+//#include "gf_includesN.hpp"
+#include "CqQueryMN.hpp"
+#include "QueryMN.hpp"
+#include "CqAttributesMN.hpp"
+#include "CqAttributesMutatorMN.hpp"
+#include "CqStatisticsMN.hpp"
+#include "ISelectResultsN.hpp"
+#include "ResultSetMN.hpp"
+#include "StructSetMN.hpp"
+#include "ExceptionTypesMN.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+
+      generic<class TKey, class TResult>
+      ICqResults<TResult>^ CqQuery<TKey, TResult>::ExecuteWithInitialResults()
+      {
+        return ExecuteWithInitialResults(DEFAULT_QUERY_RESPONSE_TIMEOUT);
+      }
+
+      generic<class TKey, class TResult>
+      ICqResults<TResult>^ CqQuery<TKey, TResult>::ExecuteWithInitialResults(uint32_t timeout)
+      {
+        _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+
+          gemfire::CqResultsPtr& nativeptr =
+            NativePtr->executeWithInitialResults(timeout);
+          if (nativeptr.ptr() == NULL) return nullptr;
+
+          gemfire::ResultSet* resultptr = dynamic_cast<gemfire::ResultSet*>(
+            nativeptr.ptr( ) );
+          if ( resultptr == NULL )
+          {
+            gemfire::StructSet* structptr = dynamic_cast<gemfire::StructSet*>(
+              nativeptr.ptr( ) );
+            if ( structptr == NULL )
+            {
+              return nullptr;
+            }
+            return StructSet<TResult>::Create(structptr);
+          }
+          /*else
+          {
+            return ResultSet::Create(resultptr);
+          }*/
+
+          return nullptr;
+
+        _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+      }
+
+      generic<class TKey, class TResult>
+      void CqQuery<TKey, TResult>::Execute()
+      {
+        _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+
+          NativePtr->execute();
+
+        _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+      }
+
+      generic<class TKey, class TResult>
+      String^ CqQuery<TKey, TResult>::QueryString::get( )
+      {
+        return ManagedString::Get( NativePtr->getQueryString( ) );
+      }
+
+      generic<class TKey, class TResult>
+      String^ CqQuery<TKey, TResult>::Name::get( )
+      {
+        return ManagedString::Get( NativePtr->getName( ) );
+      }
+
+      generic<class TKey, class TResult>
+      Query<TResult>^ CqQuery<TKey, TResult>::GetQuery( )
+      {
+        return Query<TResult>::Create(NativePtr->getQuery().ptr());
+      }
+
+      generic<class TKey, class TResult>
+      CqAttributes<TKey, TResult>^ CqQuery<TKey, TResult>::GetCqAttributes( )
+      {
+        return CqAttributes<TKey, TResult>::Create(NativePtr->getCqAttributes( ).ptr());
+      }
+
+      generic<class TKey, class TResult>
+      CqAttributesMutator<TKey, TResult>^ CqQuery<TKey, TResult>::GetCqAttributesMutator( )
+      {
+        return CqAttributesMutator<TKey, TResult>::Create(NativePtr->getCqAttributesMutator().ptr());
+      }
+
+      generic<class TKey, class TResult>
+      CqStatistics^ CqQuery<TKey, TResult>::GetStatistics( )
+      {
+        return CqStatistics::Create(NativePtr->getStatistics().ptr());
+      }
+
+      generic<class TKey, class TResult>
+      CqStateType CqQuery<TKey, TResult>::GetState( )
+      {
+        gemfire::CqState::StateType st =  NativePtr->getState( );
+        CqStateType state;
+        switch (st)
+        {
+          case gemfire::CqState::STOPPED: {
+            state = CqStateType::STOPPED;
+            break;
+          }
+          case gemfire::CqState::RUNNING: {
+            state = CqStateType::RUNNING;
+            break;
+          }
+          case gemfire::CqState::CLOSED: {
+            state = CqStateType::CLOSED;
+            break;
+          }
+          case gemfire::CqState::CLOSING: {
+            state = CqStateType::CLOSING;
+            break;
+          }
+          default: {
+            state = CqStateType::INVALID;
+            break;
+          }
+        }
+        return state;
+      }
+
+      generic<class TKey, class TResult>
+      void CqQuery<TKey, TResult>::Stop( )
+      {
+        _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+
+          NativePtr->stop( );
+
+        _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+      }
+
+      generic<class TKey, class TResult>
+      void CqQuery<TKey, TResult>::Close( )
+      {
+        _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+
+          NativePtr->close( );
+
+        _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+      }
+
+      generic<class TKey, class TResult>
+      bool CqQuery<TKey, TResult>::IsRunning( )
+      {
+        _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+
+          return NativePtr->isRunning( );
+
+        _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+      }
+
+      generic<class TKey, class TResult>
+      bool CqQuery<TKey, TResult>::IsStopped( )
+      {
+        _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+
+          return NativePtr->isStopped( );
+
+        _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+      }
+
+      generic<class TKey, class TResult>
+      bool CqQuery<TKey, TResult>::IsClosed( )
+      {
+        _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+
+          return NativePtr->isClosed( );
+
+        _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+      }
+
+    }
+  }
+}
+ } //namespace 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CqQueryMN.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CqQueryMN.hpp b/geode-client-native/src/clicache/com/vmware/CqQueryMN.hpp
new file mode 100644
index 0000000..6382cf3
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CqQueryMN.hpp
@@ -0,0 +1,182 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "../../gf_defs.hpp"
+#include "CqStateMN.hpp"
+#include <cppcache/CqQuery.hpp>
+//#include "impl/NativeWrapperN.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+      generic<class TResult>
+      interface class ICqResults;
+
+      generic<class TKey, class TResult>
+      ref class CqAttributes;
+
+      ref class CqStatistics;
+
+      generic<class TKey, class TResult>
+      ref class CqAttributesMutator;
+
+      generic<class TResult>
+      ref class Query;
+
+      /// <summary>
+      /// Class to encapsulate a continuous query (CQ).
+      /// </summary>
+      /// <remarks>
+      /// A CqQuery is obtained from a QueryService which in turn is obtained
+      /// from the Cache.
+      /// This can be executed to return SelectResults which can be either
+      /// a ResultSet or a StructSet, or it can be just registered on the
+      /// java server without returning results immediately rather only
+      /// the incremental results.
+      ///
+      /// This class is intentionally not thread-safe. So multiple threads
+      /// should not operate on the same <c>CqQuery</c> object concurrently
+      /// rather should have their own <c>CqQuery</c> objects.
+      /// </remarks>
+      generic<class TKey, class TResult>
+      public ref class CqQuery sealed
+        : public Internal::SBWrap<gemfire::CqQuery>
+      {
+      public:
+
+        /// <summary>
+        /// Executes the Cq  Query on the cache server
+        /// </summary>
+        void Execute( );
+
+        /// <summary>
+        /// Executes the Cq Query on the cache server
+        /// and returns the Cqresults.
+        /// </summary>
+        ICqResults<TResult>^ ExecuteWithInitialResults();
+
+        /// <summary>
+        /// Executes the Cq Query on the cache server
+        /// with the specified timeout and returns the results.
+        /// </summary>
+        /// <param name="timeout">The time (in seconds) to wait for query response.
+        /// This should be less than or equal to 2^31/1000 i.e. 2147483.
+        /// </param>
+        /// <exception cref="IllegalArgumentException">
+        /// if timeout parameter is greater than 2^31/1000.
+        /// </exception>
+        ICqResults<TResult>^ ExecuteWithInitialResults(uint32_t timeout);
+
+        /// <summary>
+        /// Get the string for this cq query.
+        /// </summary>
+        property String^ QueryString
+        {
+          String^ get( );
+        }
+
+        /// <summary>
+        /// Get the name for this cq query.
+        /// </summary>
+        property String^ Name
+        {
+          String^ get( );
+        }
+
+        /// <summary>
+        /// Get the Attributes for this cq query.
+        /// </summary>
+        CqAttributes<TKey, TResult>^ GetCqAttributes();
+
+        /// <summary>
+        /// Get the Attributes Mutator for this cq query.
+        /// </summary>
+        CqAttributesMutator<TKey, TResult>^ GetCqAttributesMutator();
+
+        /// <summary>
+        /// Get the stats for this cq query.
+        /// </summary>
+        CqStatistics^ GetStatistics();
+
+        /// <summary>
+        /// Get the Query for this cq query.
+        /// </summary>
+        Query<TResult>^ GetQuery();
+
+        /// <summary>
+        /// stop the cq query
+        /// </summary>
+        void Stop( );
+
+        /// <summary>
+        /// stop the cq query
+        /// </summary>
+        void Close( );
+
+        /// <summary>
+        /// get the state of this cq query
+        /// </summary>
+        CqStateType GetState();
+
+        /// <summary>
+        /// Is this Cq in running state?
+        /// </summary>
+        bool IsRunning();
+
+        /// <summary>
+        /// Is this Cq in stopped state?
+        /// </summary>
+        bool IsStopped();
+
+        /// <summary>
+        /// Is this Cq in closed state?
+        /// </summary>
+        bool IsClosed();
+
+      internal:
+
+        /// <summary>
+        /// Internal factory function to wrap a native object pointer inside
+        /// this managed class with null pointer check.
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        /// <returns>
+        /// The managed wrapper object; null if the native pointer is null.
+        /// </returns>
+        inline static CqQuery<TKey, TResult>^ Create( gemfire::CqQuery* nativeptr )
+        {
+          if (nativeptr == nullptr)
+          {
+            return nullptr;
+          }
+          return gcnew CqQuery<TKey, TResult>( nativeptr );
+        }
+
+
+      private:
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline CqQuery( gemfire::CqQuery* nativeptr )
+          : SBWrap( nativeptr ) { }
+      };
+
+    }
+  }
+}
+ } //namespace 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CqServiceStatisticsMN.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CqServiceStatisticsMN.cpp b/geode-client-native/src/clicache/com/vmware/CqServiceStatisticsMN.cpp
new file mode 100644
index 0000000..5c0483d
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CqServiceStatisticsMN.cpp
@@ -0,0 +1,42 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+//#include "gf_includesN.hpp"
+#include "CqServiceStatisticsMN.hpp"
+
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+	uint32_t CqServiceStatistics::numCqsActive( )
+	{
+	  return NativePtr->numCqsActive( );
+	}
+    uint32_t CqServiceStatistics::numCqsCreated( )
+	{
+	  return NativePtr->numCqsCreated( );
+	}
+    uint32_t CqServiceStatistics::numCqsClosed( )
+	{
+	  return NativePtr->numCqsClosed( );
+	}
+    uint32_t CqServiceStatistics::numCqsStopped( )
+	{
+	  return NativePtr->numCqsStopped( );
+	}
+    uint32_t CqServiceStatistics::numCqsOnClient( )
+	{
+	  return NativePtr->numCqsOnClient( );
+	}
+    }
+  }
+}
+ } //namespace 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CqServiceStatisticsMN.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CqServiceStatisticsMN.hpp b/geode-client-native/src/clicache/com/vmware/CqServiceStatisticsMN.hpp
new file mode 100644
index 0000000..6f4ec38
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CqServiceStatisticsMN.hpp
@@ -0,0 +1,92 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "../../gf_defs.hpp"
+#include <cppcache/CqServiceStatistics.hpp>
+#include "impl/NativeWrapperN.hpp"
+
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+
+      /// <summary>
+      /// Defines common statistical information for cqservice 
+      /// </summary>
+      public ref class CqServiceStatistics sealed
+        : public Internal::SBWrap<gemfire::CqServiceStatistics>
+      {
+      public:
+
+        /// <summary>
+        ///Get the number of CQs currently active. 
+        ///Active CQs are those which are executing (in running state).
+        /// </summary>
+          uint32_t numCqsActive( );
+
+        /// <summary>
+        ///Get the total number of CQs created. This is a cumulative number.
+        /// </summary>
+          uint32_t numCqsCreated( );
+
+        /// <summary>
+        ///Get the total number of closed CQs. This is a cumulative number.
+        /// </summary>
+          uint32_t numCqsClosed( );
+
+        /// <summary>
+        ///Get the number of stopped CQs currently.
+        /// </summary>
+          uint32_t numCqsStopped( );
+
+        /// <summary>
+        ///Get number of CQs that are currently active or stopped. 
+        ///The CQs included in this number are either running or stopped (suspended).
+        ///Closed CQs are not included.
+        /// </summary>
+          uint32_t numCqsOnClient( );
+
+      internal:
+
+        /// <summary>
+        /// Internal factory function to wrap a native object pointer inside
+        /// this managed class with null pointer check.
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        /// <returns>
+        /// The managed wrapper object; null if the native pointer is null.
+        /// </returns>
+        inline static CqServiceStatistics^ Create( gemfire::CqServiceStatistics* nativeptr )
+        {
+          if (nativeptr == nullptr)
+          {
+            return nullptr;
+          }
+          return gcnew CqServiceStatistics( nativeptr );
+        }
+
+
+      private:
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline CqServiceStatistics( gemfire::CqServiceStatistics* nativeptr )
+          : SBWrap( nativeptr ) { }
+      };
+
+    }
+  }
+}
+ } //namespace 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CqStateMN.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CqStateMN.cpp b/geode-client-native/src/clicache/com/vmware/CqStateMN.cpp
new file mode 100644
index 0000000..617b8d9
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CqStateMN.cpp
@@ -0,0 +1,84 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+//#include "gf_includesN.hpp"
+#include "CqStateMN.hpp"
+#include <vcclr.h>
+
+#include "impl/ManagedStringN.hpp"
+using namespace System;
+using namespace System::Runtime::InteropServices;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+
+      String^ CqState::ToString()
+      {
+		  return ManagedString::Get(NativePtr->toString());
+      }
+
+      bool CqState::IsRunning()
+      {
+        return NativePtr->isRunning();
+      }
+
+      bool CqState::IsStopped()
+      {
+        return NativePtr->isStopped();
+      }
+
+      bool CqState::IsClosed()
+      {
+	return NativePtr->isClosed();
+      }
+
+      bool CqState::IsClosing()
+      {
+	return NativePtr->isClosing();
+      }
+
+      void CqState::SetState( CqStateType state )
+      {
+		  gemfire::CqState::StateType st =gemfire::CqState::INVALID;
+		  if(state == CqStateType::STOPPED)
+			  st = gemfire::CqState::STOPPED;
+		  else if(state == CqStateType::RUNNING)
+			  st = gemfire::CqState::RUNNING;
+		  else if(state == CqStateType::CLOSED)
+			  st = gemfire::CqState::CLOSED;
+		  else if(state == CqStateType::CLOSING)
+			  st = gemfire::CqState::CLOSING;
+
+		  NativePtr->setState( st );
+      }
+
+      CqStateType CqState::GetState( )
+      {
+		gemfire::CqState::StateType st =  NativePtr->getState( );
+        CqStateType state;
+		if(st==gemfire::CqState::STOPPED)
+			state = CqStateType::STOPPED;
+		else if(st==gemfire::CqState::RUNNING)
+			state = CqStateType::RUNNING;
+		else if(st==gemfire::CqState::CLOSED)
+			state = CqStateType::CLOSED;
+		else if(st==gemfire::CqState::CLOSING)
+			state = CqStateType::CLOSING;
+		else
+			state = CqStateType::INVALID;
+		return state;
+      }
+
+    }
+  }
+}
+ } //namespace 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CqStateMN.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CqStateMN.hpp b/geode-client-native/src/clicache/com/vmware/CqStateMN.hpp
new file mode 100644
index 0000000..06c5635
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CqStateMN.hpp
@@ -0,0 +1,89 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "../../gf_defs.hpp"
+#include <cppcache/CqState.hpp>
+#include "impl/NativeWrapperN.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+
+      /// <summary>
+      /// Enumerated type for cq state
+      /// @nativeclient
+      /// For Native Clients:
+      /// @endnativeclient      
+      /// </summary>
+      public enum class CqStateType
+      {
+        STOPPED = 0,
+        RUNNING,
+        CLOSED,
+        CLOSING,
+        INVALID
+      };
+
+
+      /// <summary>
+      /// Static class containing convenience methods for <c>CqState</c>.
+      /// </summary>
+      public ref class CqState sealed
+        : public Internal::UMWrap<gemfire::CqState>
+      {
+      public:
+
+        /// <summary>
+        /// Returns the state in string form.
+        /// </summary>
+        virtual String^ ToString( ) override;
+
+        /// <summary>
+        /// Returns true if the CQ is in Running state.
+        /// </summary>
+        bool IsRunning(); 
+
+        /// <summary>
+        /// Returns true if the CQ is in Stopped state.
+	/// </summary>
+        bool IsStopped();
+
+        /// <summary>
+        /// Returns true if the CQ is in Closed state.
+        /// </summary>
+        bool IsClosed(); 
+
+        /// <summary>
+        /// Returns true if the CQ is in Closing state.
+	/// </summary>
+        bool IsClosing();
+	void SetState(CqStateType state);
+	CqStateType GetState();
+
+        internal:
+
+        /// <summary>
+        /// Internal constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline CqState( gemfire::CqState* nativeptr )
+		            : UMWrap( nativeptr, false ) { }
+
+      };
+
+    }
+  }
+}
+ } //namespace 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CqStatisticsMN.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CqStatisticsMN.cpp b/geode-client-native/src/clicache/com/vmware/CqStatisticsMN.cpp
new file mode 100644
index 0000000..0a7f0d8
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CqStatisticsMN.cpp
@@ -0,0 +1,38 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+//#include "gf_includesN.hpp"
+#include "CqStatisticsMN.hpp"
+
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+		uint32_t CqStatistics::numInserts( )
+	{
+	  return NativePtr->numInserts( );
+	}
+    uint32_t CqStatistics::numDeletes( )
+	{
+	  return NativePtr->numDeletes( );
+	}
+    uint32_t CqStatistics::numUpdates( )
+	{
+	  return NativePtr->numUpdates( );
+	}
+    uint32_t CqStatistics::numEvents( )
+	{
+	  return NativePtr->numEvents( );
+	}
+    }
+  }
+}
+ } //namespace 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CqStatisticsMN.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CqStatisticsMN.hpp b/geode-client-native/src/clicache/com/vmware/CqStatisticsMN.hpp
new file mode 100644
index 0000000..c7664ac
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CqStatisticsMN.hpp
@@ -0,0 +1,84 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "../../gf_defs.hpp"
+#include <cppcache/CqStatistics.hpp>
+#include "impl/NativeWrapperN.hpp"
+
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+
+      /// <summary>
+      /// Defines common statistical information for a cq.
+      /// </summary>
+      public ref class CqStatistics sealed
+        : public Internal::SBWrap<gemfire::CqStatistics>
+      {
+      public:
+
+        /// <summary>
+        /// get number of inserts qualified by this Cq
+        /// </summary>
+          uint32_t numInserts( );
+
+        /// <summary>
+        /// get number of deletes qualified by this Cq
+        /// </summary>
+          uint32_t numDeletes( );
+
+        /// <summary>
+        /// get number of updates qualified by this Cq
+        /// </summary>
+          uint32_t numUpdates( );
+
+        /// <summary>
+        /// get number of events qualified by this Cq
+        /// </summary>
+          uint32_t numEvents( );
+
+      internal:
+
+        /// <summary>
+        /// Internal factory function to wrap a native object pointer inside
+        /// this managed class with null pointer check.
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        /// <returns>
+        /// The managed wrapper object; null if the native pointer is null.
+        /// </returns>
+        inline static CqStatistics^ Create( gemfire::CqStatistics* nativeptr )
+        {
+          if (nativeptr == nullptr)
+          {
+            return nullptr;
+          }
+          return gcnew CqStatistics( nativeptr );
+        }
+
+
+      private:
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline CqStatistics( gemfire::CqStatistics* nativeptr )
+          : SBWrap( nativeptr ) { }
+      };
+
+    }
+  }
+}
+ } //namespace 


[05/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CacheTransactionManagerMN.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CacheTransactionManagerMN.hpp b/geode-client-native/src/clicache/com/vmware/CacheTransactionManagerMN.hpp
new file mode 100644
index 0000000..175d4f8
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CacheTransactionManagerMN.hpp
@@ -0,0 +1,262 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "../../gf_defs.hpp"
+#include <cppcache/CacheTransactionManager.hpp>
+#include <cppcache/InternalCacheTransactionManager2PC.hpp>
+#include "TransactionIdMN.hpp"
+//#include "impl/NativeWrapperN.hpp"
+//#include "impl/TransactionWriterMN.hpp"
+//#include "impl/TransactionListenerMN.hpp"
+
+using namespace System;
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { 
+			namespace Generic
+    {
+      
+      /// <summary>
+      /// CacheTransactionManager encapsulates the transactions for a cache
+      /// </summary>
+      public ref class CacheTransactionManager sealed
+        : Internal::SBWrap<gemfire::InternalCacheTransactionManager2PC>
+      {
+      public:
+        /// <summary>
+        /// Creates a new transaction and associates it with the current thread.
+        /// </summary>
+        /// <exception cref="IllegalStateException">
+        /// Throws exception if the thread is already associated with a transaction
+        /// </exception>
+        void Begin();
+
+        /// <summary>
+        /// Prepare the first message of two-phase-commit transaction associated
+        /// with the current thread.
+        /// </summary>
+        /// <exception cref="IllegalStateException">
+        /// if the thread is not associated with a transaction
+        /// </exception>
+        /// <exception cref="CommitConflictException">
+        /// if the commit operation fails due to a write conflict.
+        /// </exception>
+        void Prepare();
+
+        /// <summary>
+        /// Commit the transaction associated with the current thread. If
+        /// the commit operation fails due to a conflict it will destroy
+        /// the transaction state and throw a <c>CommitConflictException</c>. 
+        /// If the commit operation succeeds,it returns after the transaction 
+        /// state has been merged with committed state.  When this method 
+        /// completes, the thread is no longer associated with a transaction.
+        /// </summary>
+        /// <exception cref="IllegalStateException">
+        /// if the thread is not associated with a transaction
+        /// </exception>
+        /// <exception cref="CommitConflictException">
+        /// if the commit operation fails due to a write conflict.
+        /// </exception>
+        void Commit();
+        
+        /// <summary>
+        /// Roll back the transaction associated with the current thread. When
+        /// this method completes, the thread is no longer associated with a
+        /// transaction and the transaction context is destroyed.
+        /// </summary>
+        /// <exception cref="IllegalStateException">
+        /// if the thread is not associated with a transaction
+        /// </exception>  
+        void Rollback();
+        
+        /// <summary>
+        /// Reports the existence of a Transaction for this thread
+        /// </summary>
+        /// <returns>true if a transaction exists, false otherwise</returns>
+        bool Exists();
+
+        /// <summary>
+        /// Suspends the transaction on the current thread. All subsequent operations
+        /// performed by this thread will be non-transactional. The suspended
+        /// transaction can be resumed by calling <see cref="TransactionId"/>
+        /// <para>
+        /// Since 3.6.2
+        /// </para>
+        /// </summary>
+        /// <returns>the transaction identifier of the suspended transaction or null if
+        /// the thread was not associated with a transaction</returns>
+        GemStone::GemFire::Cache::Generic::TransactionId^ Suspend();
+
+        /// <summary>
+        /// On the current thread, resumes a transaction that was previously suspended
+        /// using <see cref="suspend"/>
+        /// <para>
+        /// Since 3.6.2
+        /// </para>
+        /// </summary>
+        /// <param name="transactionId">the transaction to resume</param>
+        /// <exception cref="IllegalStateException">if the thread is associated with a transaction or if
+        /// would return false for the given transactionId</exception>
+        /// <see cref="TransactionId"/> 
+        void Resume(GemStone::GemFire::Cache::Generic::TransactionId^ transactionId);
+
+        /// <summary>
+        /// This method can be used to determine if a transaction with the given
+        /// transaction identifier is currently suspended locally. This method does not
+        ///  check other members for transaction status.
+        /// <para>
+        /// Since 3.6.2
+        /// </para>
+        /// </summary>
+        /// <param name="transactionId"></param>
+        /// <returns>true if the transaction is in suspended state, false otherwise</returns>
+        /// <see cref="TransactionId"/>
+        bool IsSuspended(GemStone::GemFire::Cache::Generic::TransactionId^ transactionId);
+
+
+        /// <summary>
+        /// On the current thread, resumes a transaction that was previously suspended
+        /// using <see cref="suspend"/>.
+        /// This method is equivalent to
+        /// <code>
+        /// if (isSuspended(txId)) {
+        ///   resume(txId);
+        /// }
+        /// </code>
+        /// except that this action is performed atomically
+        /// <para>
+        /// Since 3.6.2
+        /// </para>
+        /// </summary>
+        /// <param name="transactionId">the transaction to resume</param>
+        /// <returns>true if the transaction was resumed, false otherwise</returns>
+        bool TryResume(GemStone::GemFire::Cache::Generic::TransactionId^ transactionId);
+
+
+        /// <summary>
+        /// On the current thread, resumes a transaction that was previously suspended
+        /// using <see cref="suspend"/>, or waits for the specified timeout interval if
+        /// the transaction has not been suspended. This method will return if:
+        /// <para>
+        /// Another thread suspends the transaction
+        /// </para>
+        /// <para>
+        /// Another thread calls commit/rollback on the transaction
+        /// </para>
+        /// <para>
+        /// This thread has waited for the specified timeout
+        /// </para>
+        /// This method returns immediately if <see cref="TransactionId"/> returns false.
+        /// <para>
+        /// Since 3.6.2
+        /// </para>
+        /// </summary>
+        /// <param name="transactionId">the transaction to resume</param>
+        /// <param name="waitTimeInMilliSec">the maximum milliseconds to wait </param>
+        /// <returns>true if the transaction was resumed, false otherwise</returns>
+        bool TryResume(GemStone::GemFire::Cache::Generic::TransactionId^ transactionId, int32_t waitTimeInMilliSec);
+
+
+
+        /// <summary>
+        /// Reports the existence of a transaction for the given transactionId. This
+        /// method can be used to determine if a transaction with the given transaction
+        /// identifier is currently in progress locally.
+        /// <para>
+        /// Since 3.6.2
+        /// </para>
+        /// </summary>
+        /// <param name="transactionId">the given transaction identifier</param>
+        /// <returns>true if the transaction is in progress, false otherwise.</returns>
+        /// <see cref="isSuspended"/> 
+        bool Exists(GemStone::GemFire::Cache::Generic::TransactionId^ transactionId);
+
+
+        /// <summary>
+        /// Returns the transaction identifier for the current thread
+        /// <para>
+        /// Since 3.6.2
+        /// </para>
+        /// </summary>
+        /// <returns>the transaction identifier or null if no transaction exists</returns>
+        property GemStone::GemFire::Cache::Generic::TransactionId^ TransactionId
+        {
+        //TODO::split
+        GemStone::GemFire::Cache::Generic::TransactionId^ get( );
+        }        
+
+#ifdef CSTX_COMMENTED
+          
+ 		    /// <summary>
+        /// Returns the current transaction writer
+        /// </summary>
+        /// <returns>current transaction writer(<c>ITransactionWriter</c>)</returns>
+        generic<class TKey, class TValue>
+        ITransactionWriter<TKey, TValue>^ GetWriter ();
+        
+        /// <summary>
+        /// Set the <c>ITransactionWriter</c> for the cache
+        /// <param name="transactionWriter">transaction writer</param>
+        generic<class TKey, class TValue>
+        void SetWriter (ITransactionWriter<TKey, TValue>^ transactionWriter);
+
+        /// <summary>
+        /// Adds a transaction listener to the end of the list of transaction listeners 
+        /// on this cache.
+        /// </summary>
+        /// <param name="aListener"> 
+        /// the user defined transaction listener to add to the cache
+        /// </param>
+        /// <exception cref="IllegalArgumentException">
+        /// If the parameter is null.
+        /// </exception>
+        generic<class TKey, class TValue>
+        void AddListener(ITransactionListener<TKey, TValue>^ aListener);
+        
+        /// <summary>
+        /// Removes a transaction listener from the list of transaction listeners on this cache.
+        /// Does nothing if the specified listener has not been added.
+        /// If the specified listener has been added then the close method of the listener will
+        /// be called.
+        /// </summary>
+        /// <param name="aListener">the transaction listener to remove from the cache.</param>
+        /// <exception cref="IllegalArgumentException">
+        /// if the parameteris null
+        /// </exception>
+        generic<class TKey, class TValue>
+        void RemoveListener(ITransactionListener<TKey, TValue>^ aListener);
+        
+#endif
+
+      internal:
+
+        inline static CacheTransactionManager^ Create( gemfire::InternalCacheTransactionManager2PC* nativeptr )
+        {
+          return ( nativeptr != nullptr ?
+            gcnew CacheTransactionManager( nativeptr ) : nullptr );
+        }
+
+
+      private:
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline CacheTransactionManager( gemfire::InternalCacheTransactionManager2PC* nativeptr )
+          : SBWrap( nativeptr ) { }
+      };
+
+    }
+  }
+}
+ } //namespace 
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CacheWriterAdapterN.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CacheWriterAdapterN.hpp b/geode-client-native/src/clicache/com/vmware/CacheWriterAdapterN.hpp
new file mode 100644
index 0000000..dd871f3
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CacheWriterAdapterN.hpp
@@ -0,0 +1,65 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "../../gf_defs.hpp"
+#include "ICacheWriterN.hpp"
+
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+
+      /// <summary>
+      /// Utility class that implements all methods in <c>ICacheWriter</c>
+      /// with empty implementations. Applications can subclass this class
+      /// and only override the methods for the events of interest.
+      /// </summary>
+      generic<class TKey, class TValue>
+      public ref class CacheWriterAdapter
+        : public ICacheWriter<TKey, TValue>
+      {
+      public:
+        virtual bool BeforeUpdate(EntryEvent<TKey, TValue>^ ev)
+        {
+          return true;
+        }
+
+        virtual bool BeforeCreate(EntryEvent<TKey, TValue>^ ev)
+        {
+          return true;
+        }
+
+        virtual bool BeforeDestroy(EntryEvent<TKey, TValue>^ ev)
+        {
+          return true;
+        }
+
+        virtual bool BeforeRegionDestroy(RegionEvent<TKey, TValue>^ ev)
+        {
+          return true;
+        }
+
+        virtual bool BeforeRegionClear(RegionEvent<TKey, TValue>^ ev)
+        {
+          return true;
+        }
+
+        virtual void Close(IRegion<TKey, TValue>^ region)
+        {
+        }
+      };
+
+    }
+  }
+}
+ } //namespace 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CacheableArrayListMN.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CacheableArrayListMN.hpp b/geode-client-native/src/clicache/com/vmware/CacheableArrayListMN.hpp
new file mode 100644
index 0000000..736df78
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CacheableArrayListMN.hpp
@@ -0,0 +1,87 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "../../gf_defs.hpp"
+#include "CacheableVectorMN.hpp"
+
+
+using namespace System;
+using namespace System::Collections::Generic;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+      /// <summary>
+      /// A mutable <c>IGFSerializable</c> vector wrapper that can serve as
+      /// a distributable object for caching. This class extends .NET generic
+      /// <c>List</c> class.
+      /// </summary>
+      ref class CacheableArrayList
+        : public CacheableVector
+      {
+      public:
+        /// <summary>
+        /// Allocates a new empty instance.
+        /// </summary>
+        inline CacheableArrayList(System::Collections::IList^ list)
+          : CacheableVector(list)
+        { }
+
+        
+        /// <summary>
+        /// Static function to create a new empty instance.
+        /// </summary>
+        inline static CacheableArrayList^ Create()
+        {
+          return gcnew CacheableArrayList(gcnew System::Collections::Generic::List<Object^>());
+        }
+
+        /// <summary>
+        /// Static function to create a new empty instance.
+        /// </summary>
+        inline static CacheableArrayList^ Create(System::Collections::IList^ list)
+        {
+          return gcnew CacheableArrayList(list);
+        }
+
+        
+        // Region: IGFSerializable Members
+
+        /// <summary>
+        /// Returns the classId of the instance being serialized.
+        /// This is used by deserialization to determine what instance
+        /// type to create and deserialize into.
+        /// </summary>
+        /// <returns>the classId</returns>
+        virtual property uint32_t ClassId
+        {
+          virtual uint32_t get() override
+          {
+            return GemFireClassIds::CacheableArrayList;
+          }
+        }
+
+        // End Region: IGFSerializable Members
+
+        /// <summary>
+        /// Factory function to register this class.
+        /// </summary>
+        static IGFSerializable^ CreateDeserializable()
+        {
+          return gcnew CacheableArrayList(gcnew System::Collections::Generic::List<Object^>());
+        }
+      };
+    }
+  }
+}
+ } //namespace 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CacheableBuiltinsMN.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CacheableBuiltinsMN.hpp b/geode-client-native/src/clicache/com/vmware/CacheableBuiltinsMN.hpp
new file mode 100644
index 0000000..6ca8395
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CacheableBuiltinsMN.hpp
@@ -0,0 +1,569 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+
+
+#include "../../gf_defs.hpp"
+#include <cppcache/CacheableBuiltins.hpp>
+#include "CacheableKeyMN.hpp"
+#include "SerializableMN.hpp"
+#include "ExceptionTypesMN.hpp"
+#include "GemFireClassIdsMN.hpp"
+#include "DataOutputMN.hpp"
+#include "DataInputMN.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+      //namespace Internal
+      
+
+        /// <summary>
+        /// An immutable template wrapper for C++ <c>CacheableKey</c>s that can
+        /// serve as a distributable key object for caching.
+        /// </summary>
+        template <typename TNative, typename TManaged, uint32_t TYPEID>
+        ref class CacheableBuiltinKey
+          : public CacheableKey
+        {
+         public:
+          /// <summary>
+          /// Allocates a new instance 
+          /// </summary>
+          CacheableBuiltinKey()
+          {
+            gemfire::SharedPtr<TNative>& nativeptr = TNative::create();
+
+            SetSP(nativeptr.ptr());
+          }
+
+          /// <summary>
+          /// Allocates a new instance with the given value.
+          /// </summary>
+          /// <param name="value">the value of the new instance</param>
+          CacheableBuiltinKey(TManaged value)
+          {
+            gemfire::SharedPtr<TNative>& nativeptr = TNative::create(value);
+
+            SetSP(nativeptr.ptr());
+          }
+
+          /// <summary>
+          /// Returns the classId of the instance being serialized.
+          /// This is used by deserialization to determine what instance
+          /// type to create and deserialize into.
+          /// </summary>
+          /// <returns>the classId</returns>
+          virtual property uint32_t ClassId
+          {
+            virtual uint32_t get() override
+            {
+              return TYPEID;
+            }
+          }
+
+          /// <summary>
+          /// Return a string representation of the object.
+          /// This returns the string for the <c>Value</c> property.
+          /// </summary>
+          virtual String^ ToString() override
+          {
+            return static_cast<TNative*>(NativePtr())->value().ToString();
+          }
+
+          /// <summary>
+          /// Return true if this key matches other object.
+          /// It invokes the '==' operator of the underlying
+          /// native object.
+          /// </summary>
+          virtual bool Equals(ICacheableKey^ other) override
+          {
+            if (other == nullptr || other->ClassId != TYPEID)
+            {
+              return false;
+            }
+            return static_cast<TNative*>(NativePtr())->operator==(
+              *static_cast<TNative*>(((CacheableKey^)other)->NativePtr()));
+          }
+
+          /// <summary>
+          /// Return true if this key matches other object.
+          /// It invokes the '==' operator of the underlying
+          /// native object.
+          /// </summary>
+          virtual bool Equals(Object^ obj) override
+          {
+            CacheableBuiltinKey^ otherKey =
+              dynamic_cast<CacheableBuiltinKey^>(obj);
+
+            if (otherKey != nullptr) {
+              return static_cast<TNative*>(NativePtr())->operator==(
+                *static_cast<TNative*>(otherKey->NativePtr()));
+            }
+            return false;
+          }
+
+          /// <summary>
+          /// Comparison operator against another value.
+          /// </summary>
+          bool operator == (TManaged other)
+          {
+            return (static_cast<TNative*>(NativePtr())->value() == other);
+          }
+
+          /// <summary>
+          /// Gets the value.
+          /// </summary>
+          property TManaged Value
+          {
+            inline TManaged get()
+            {
+              return static_cast<TNative*>(NativePtr())->value();
+            }
+          }
+
+        protected:
+
+          /// <summary>
+          /// Protected constructor to wrap a native object pointer
+          /// </summary>
+          /// <param name="nativeptr">The native object pointer</param>
+          inline CacheableBuiltinKey(gemfire::Serializable* nativeptr)
+            : CacheableKey(nativeptr) { }
+        };
+
+
+        /// <summary>
+        /// An immutable template array wrapper that can serve as a
+        /// distributable object for caching.
+        /// </summary>
+        template <typename TNative, typename TNativePtr, typename TManaged,
+          uint32_t TYPEID>
+        ref class CacheableBuiltinArray
+          : public Serializable
+        {
+        public:
+
+          /// <summary>
+          /// Returns the classId of the instance being serialized.
+          /// This is used by deserialization to determine what instance
+          /// type to create and deserialize into.
+          /// </summary>
+          /// <returns>the classId</returns>
+          virtual property uint32_t ClassId
+          {
+            virtual uint32_t get() override
+            {
+              return TYPEID;
+            }
+          }
+
+          virtual void ToData(DataOutput^ output) override
+          {
+            output->WriteObject(m_value); 
+          }
+
+          virtual IGFSerializable^ FromData(DataInput^ input) override
+          {
+            input->ReadObject(m_value);
+            return this;
+          }
+
+          virtual property uint32_t ObjectSize 
+          {
+            virtual uint32_t get() override
+            {
+              return (uint32_t) (m_value->Length) * sizeof(TManaged);
+            }
+          }
+          /// <summary>
+          /// Returns a copy of the underlying array.
+          /// </summary>
+          property array<TManaged>^ Value
+          {
+            inline array<TManaged>^ get()
+            {              
+              return m_value;
+            }
+          }
+
+          /// <summary>
+          /// Returns the size of this array.
+          /// </summary>
+          property int32_t Length
+          {
+            inline int32_t get()
+            {
+              return m_value->Length;
+            }
+          }
+
+          virtual String^ ToString() override
+          {
+            return m_value->ToString();
+          }
+
+          /// <summary>
+          /// Returns the value at the given index.
+          /// </summary>
+          property TManaged GFINDEXER(int32_t)
+          {
+            inline TManaged get(int32_t index)
+            {
+              return m_value[index];
+            }
+          }
+
+
+        protected:
+
+          array<TManaged>^ m_value;
+          /// <summary>
+          /// Protected constructor 
+          /// </summary>
+          inline CacheableBuiltinArray()
+          {
+            //TODO:Hitesh
+            //gemfire::Serializable* sp = TNative::createDeserializable();
+            //SetSP(sp);
+          }
+
+          /// <summary>
+          /// Protected constructor to wrap a native object pointer
+          /// </summary>
+          /// <param name="nativeptr">The native object pointer</param>
+          inline CacheableBuiltinArray(gemfire::Serializable* nptr)
+            : Serializable(nptr)
+          { 
+            //TODO:Hitesh ??
+             // ManagedPtrWrap< gemfire::Serializable,
+               // Internal::SBWrap<gemfire::Serializable> > nptr = nativeptr;
+              TNative* nativeptr = static_cast<TNative*>(nptr);
+              int32_t len = nativeptr->length();
+              if (len > 0)
+              {
+                array<TManaged>^ buffer = gcnew array<TManaged>(len);
+                pin_ptr<TManaged> pin_buffer = &buffer[0];
+
+                memcpy((void*)pin_buffer, nativeptr->value(),
+                  len * sizeof(TManaged));
+                m_value = buffer;
+              }
+          }
+
+          /// <summary>
+          /// Allocates a new instance copying from the given array.
+          /// </summary>
+          /// <remarks>
+          /// This method performs no argument checking which is the
+          /// responsibility of the caller.
+          /// </remarks>
+          /// <param name="buffer">the array to copy from</param>
+          CacheableBuiltinArray(array<TManaged>^ buffer)
+          {
+            m_value = buffer;
+            //setting local value as well
+            //m_value = gcnew array<TManaged>(buffer->Length);
+            //System::Array::Copy(buffer, 0, m_value,0, buffer->Length);             
+          }
+
+          /// <summary>
+          /// Allocates a new instance copying given length from the
+          /// start of given array.
+          /// </summary>
+          /// <remarks>
+          /// This method performs no argument checking which is the
+          /// responsibility of the caller.
+          /// </remarks>
+          /// <param name="buffer">the array to copy from</param>
+          /// <param name="length">length of array from start to copy</param>
+          CacheableBuiltinArray(array<TManaged>^ buffer, int32_t length)
+          {
+            //TODO:Hitesh
+            if (length > buffer->Length) {
+              length = buffer->Length;
+            }
+            //setting local value as well
+            m_value = gcnew array<TManaged>(length);
+            System::Array::Copy(buffer, 0, m_value,0, length);
+          }
+        };
+
+      
+
+
+      //n = native type
+      //m = CacheableInt(managed cacheable)
+      //mt = managed type(bool, int)
+#define _GFCLI_CACHEABLE_KEY_DEF_NEW(n, m, mt)                                   \
+      ref class m : public CacheableBuiltinKey<n, mt,        \
+        GemFireClassIds::m>                                                   \
+      {                                                                       \
+      public:                                                                 \
+         /** <summary>
+         *  Allocates a new instance with the given value.
+         *  </summary>
+         *  <param name="value">the value of the new instance</param>
+         */                                                                   \
+        inline m()                                                            \
+          : CacheableBuiltinKey() { }                                         \
+        /** <summary>
+         *  Allocates a new instance with the given value.
+         *  </summary>
+         *  <param name="value">the value of the new instance</param>
+         */                                                                   \
+        inline m(mt value)                                                    \
+          : CacheableBuiltinKey(value) { }                                    \
+        /** <summary>
+         *  Static function to create a new instance given value.
+         *  </summary>
+         *  <param name="value">the value of the new instance</param>
+         */                                                                   \
+        inline static m^ Create(mt value)                                     \
+        {                                                                     \
+          return gcnew m(value);                                              \
+        }                                                                     \
+        /** <summary>
+         * Explicit conversion operator to contained value type.
+         * </summary>
+         */                                                                   \
+        inline static explicit operator mt (m^ value)                         \
+        {                                                                     \
+          return value->Value;                                                \
+        }                                                                     \
+                                                                              \
+        /** <summary>
+         * Factory function to register this class.
+         * </summary>
+         */                                                                   \
+        static IGFSerializable^ CreateDeserializable()                        \
+        {                                                                     \
+          return gcnew m();                                       \
+        }                                                                     \
+                                                                              \
+      internal:                                                               \
+        static IGFSerializable^ Create(gemfire::Serializable* obj)            \
+        {                                                                     \
+          return (obj != nullptr ? gcnew m(obj) : nullptr);                   \
+        }                                                                     \
+                                                                              \
+      private:                                                                \
+        inline m(gemfire::Serializable* nativeptr)                            \
+          : CacheableBuiltinKey(nativeptr) { }                                \
+      };
+
+
+#define _GFCLI_CACHEABLE_ARRAY_DEF_NEW(m, mt)                                    \
+      ref class m : public CacheableBuiltinArray<            \
+        gemfire::m, gemfire::m##Ptr, mt, GemFireClassIds::m>                  \
+      {                                                                       \
+      public:                                                                 \
+        /** <summary>
+         *  Static function to create a new instance copying
+         *  from the given array.
+         *  </summary>
+         *  <remarks>
+         *  Providing a null or zero size array will return a null object.
+         *  </remarks>
+         *  <param name="value">the array to create the new instance</param>
+         */                                                                   \
+        inline static m^ Create(array<mt>^ value)                             \
+        {                                                                     \
+          return (value != nullptr /*&& value->Length > 0*/ ?                     \
+            gcnew m(value) : nullptr);                                        \
+        }                                                                     \
+        /** <summary>
+         *  Static function to create a new instance copying
+         *  from the given array.
+         *  </summary>
+         *  <remarks>
+         *  Providing a null or zero size array will return a null object.
+         *  </remarks>
+         *  <param name="value">the array to create the new instance</param>
+         */                                                                   \
+        inline static m^ Create(array<mt>^ value, int32_t length)               \
+        {                                                                     \
+          return (value != nullptr && value->Length > 0 ?                     \
+            gcnew m(value, length) : nullptr);                                \
+        }                                                                     \
+        /** <summary>
+         * Explicit conversion operator to contained array type.
+         * </summary>
+         */                                                                   \
+        inline static explicit operator array<mt>^ (m^ value)                 \
+        {                                                                     \
+          return (value != nullptr ? value->Value : nullptr);                 \
+        }                                                                     \
+                                                                              \
+        /** <summary>
+         * Factory function to register this class.
+         * </summary>
+         */                                                                   \
+        static IGFSerializable^ CreateDeserializable()                        \
+        {                                                                     \
+          return gcnew m();                                                   \
+        }                                                                     \
+                                                                              \
+      internal:                                                               \
+        static IGFSerializable^ Create(gemfire::Serializable* obj)            \
+        {                                                                     \
+          return (obj != nullptr ? gcnew m(obj) : nullptr);                   \
+        }                                                                     \
+                                                                              \
+      private:                                                                \
+        /** <summary>
+         * Allocates a new instance
+         *  </summary>
+         */                                                                   \
+        inline m()                                                            \
+          : CacheableBuiltinArray() { }                                       \
+        /** <summary>
+         * Allocates a new instance copying from the given array.
+         *  </summary>
+         *  <remarks>
+         *  Providing a null or zero size array will return a null object.
+         *  </remarks>
+         *  <param name="value">the array to create the new instance</param>
+         */                                                                   \
+        inline m(array<mt>^ value)                                            \
+          : CacheableBuiltinArray(value) { }                                  \
+        /** <summary>
+         * Allocates a new instance copying given length from the
+         * start of given array.
+         *  </summary>
+         *  <remarks>
+         *  Providing a null or zero size array will return a null object.
+         *  </remarks>
+         *  <param name="value">the array to create the new instance</param>
+         */                                                                   \
+        inline m(array<mt>^ value, int32_t length)                              \
+          : CacheableBuiltinArray(value, length) { }                          \
+        inline m(gemfire::Serializable* nativeptr)                            \
+          : CacheableBuiltinArray(nativeptr) { }                              \
+      };
+
+
+      // Built-in CacheableKeys
+
+      /// <summary>
+      /// An immutable wrapper for booleans that can serve
+      /// as a distributable key object for caching.
+      /// </summary>
+      _GFCLI_CACHEABLE_KEY_DEF_NEW(gemfire::CacheableBoolean,
+        CacheableBoolean, bool);
+
+      /// <summary>
+      /// An immutable wrapper for bytes that can serve
+      /// as a distributable key object for caching.
+      /// </summary>
+      _GFCLI_CACHEABLE_KEY_DEF_NEW(gemfire::CacheableByte,
+        CacheableByte, Byte);
+
+      /// <summary>
+      /// An immutable wrapper for 16-bit characters that can serve
+      /// as a distributable key object for caching.
+      /// </summary>
+      _GFCLI_CACHEABLE_KEY_DEF_NEW(gemfire::CacheableWideChar,
+        CacheableCharacter, Char);
+
+      /// <summary>
+      /// An immutable wrapper for doubles that can serve
+      /// as a distributable key object for caching.
+      /// </summary>
+      _GFCLI_CACHEABLE_KEY_DEF_NEW(gemfire::CacheableDouble,
+        CacheableDouble, Double);
+
+      /// <summary>
+      /// An immutable wrapper for floats that can serve
+      /// as a distributable key object for caching.
+      /// </summary>
+      _GFCLI_CACHEABLE_KEY_DEF_NEW(gemfire::CacheableFloat,
+        CacheableFloat, Single);
+
+      /// <summary>
+      /// An immutable wrapper for 16-bit integers that can serve
+      /// as a distributable key object for caching.
+      /// </summary>
+      _GFCLI_CACHEABLE_KEY_DEF_NEW(gemfire::CacheableInt16,
+        CacheableInt16, int16_t);
+
+      /// <summary>
+      /// An immutable wrapper for 32-bit integers that can serve
+      /// as a distributable key object for caching.
+      /// </summary>
+      _GFCLI_CACHEABLE_KEY_DEF_NEW(gemfire::CacheableInt32,
+        CacheableInt32, int32_t);
+
+      /// <summary>
+      /// An immutable wrapper for 64-bit integers that can serve
+      /// as a distributable key object for caching.
+      /// </summary>
+      _GFCLI_CACHEABLE_KEY_DEF_NEW(gemfire::CacheableInt64,
+        CacheableInt64, int64_t);
+
+
+      // Built-in Cacheable array types
+
+      /// <summary>
+      /// An immutable wrapper for byte arrays that can serve
+      /// as a distributable object for caching.
+      /// </summary>
+      _GFCLI_CACHEABLE_ARRAY_DEF_NEW(CacheableBytes, Byte);
+
+      /// <summary>
+      /// An immutable wrapper for array of doubles that can serve
+      /// as a distributable object for caching.
+      /// </summary>
+      _GFCLI_CACHEABLE_ARRAY_DEF_NEW(CacheableDoubleArray, Double);
+
+      /// <summary>
+      /// An immutable wrapper for array of floats that can serve
+      /// as a distributable object for caching.
+      /// </summary>
+      _GFCLI_CACHEABLE_ARRAY_DEF_NEW(CacheableFloatArray, Single);
+
+      /// <summary>
+      /// An immutable wrapper for array of 16-bit integers that can serve
+      /// as a distributable object for caching.
+      /// </summary>
+      _GFCLI_CACHEABLE_ARRAY_DEF_NEW(CacheableInt16Array, int16_t);
+
+      /// <summary>
+      /// An immutable wrapper for array of 32-bit integers that can serve
+      /// as a distributable object for caching.
+      /// </summary>
+      _GFCLI_CACHEABLE_ARRAY_DEF_NEW(CacheableInt32Array, int32_t);
+
+      /// <summary>
+      /// An immutable wrapper for array of 64-bit integers that can serve
+      /// as a distributable object for caching.
+      /// </summary>
+      _GFCLI_CACHEABLE_ARRAY_DEF_NEW(CacheableInt64Array, int64_t);
+
+      /// <summary>
+      /// An immutable wrapper for array of booleans that can serve
+      /// as a distributable object for caching.
+      /// </summary>
+      _GFCLI_CACHEABLE_ARRAY_DEF_NEW(BooleanArray, bool);
+
+      /// <summary>
+      /// An immutable wrapper for array of 16-bit characters that can serve
+      /// as a distributable object for caching.
+      /// </summary>
+      _GFCLI_CACHEABLE_ARRAY_DEF_NEW(CharArray, Char);
+    }
+  }
+}
+ } //namespace 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CacheableDateMN.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CacheableDateMN.cpp b/geode-client-native/src/clicache/com/vmware/CacheableDateMN.cpp
new file mode 100644
index 0000000..a39de2e
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CacheableDateMN.cpp
@@ -0,0 +1,111 @@
+/*=========================================================================
+* Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+*=========================================================================
+*/
+
+
+
+//#include "gf_includesN.hpp"
+#include "CacheableDateMN.hpp"
+#include "DataInputMN.hpp"
+#include "DataOutputMN.hpp"
+#include "LogMN.hpp"
+#include "GemFireClassIdsMN.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+      CacheableDate::CacheableDate(DateTime dateTime)
+        : m_dateTime(dateTime),m_hashcode(0)
+      {
+
+        // Round off dateTime to the nearest millisecond.
+        int64_t ticksToAdd = m_dateTime.Ticks % TimeSpan::TicksPerMillisecond;
+        ticksToAdd = (ticksToAdd >= (TimeSpan::TicksPerMillisecond / 2) ?
+          (TimeSpan::TicksPerMillisecond - ticksToAdd) : -ticksToAdd);
+        m_dateTime = m_dateTime.AddTicks(ticksToAdd);
+        
+      }
+
+      void CacheableDate::ToData(DataOutput^ output)
+      {
+        //put as universal time
+        TimeSpan epochSpan = m_dateTime.ToUniversalTime() - EpochTime;
+        int64_t millisSinceEpoch =
+          epochSpan.Ticks / TimeSpan::TicksPerMillisecond;
+        output->WriteInt64(millisSinceEpoch);
+
+        //Log::Fine("CacheableDate::Todata time " + m_dateTime.Ticks);
+      }
+
+      IGFSerializable^ CacheableDate::FromData(DataInput^ input)
+      {
+        DateTime epochTime = EpochTime;
+        int64_t millisSinceEpoch = input->ReadInt64();
+        m_dateTime = epochTime.AddTicks(
+          millisSinceEpoch * TimeSpan::TicksPerMillisecond);
+        m_dateTime = m_dateTime.ToLocalTime();
+        //Log::Fine("CacheableDate::Fromadata time " + m_dateTime.Ticks);
+        return this;
+      }
+
+      uint32_t CacheableDate::ObjectSize::get()
+      { 
+        return (uint32_t)sizeof(DateTime); 
+      }
+
+      uint32_t CacheableDate::ClassId::get()
+      {
+        return GemFireClassIds::CacheableDate;
+      }
+
+      String^ CacheableDate::ToString()
+      {
+        return m_dateTime.ToString(
+          System::Globalization::CultureInfo::CurrentCulture);
+      }
+
+      int32_t CacheableDate::GetHashCode()
+      {
+        if (m_hashcode == 0) {
+          TimeSpan epochSpan = m_dateTime - EpochTime;
+          int64_t millitime =
+            epochSpan.Ticks / TimeSpan::TicksPerMillisecond;
+          m_hashcode =  (int) millitime ^ (int) ((int64)millitime >> 32);
+        }
+        return m_hashcode;
+      }
+
+      bool CacheableDate::Equals(ICacheableKey^ other)
+      {
+        if (other == nullptr ||
+          other->ClassId != GemFireClassIds::CacheableDate) {
+          return false;
+        }
+        return m_dateTime.Equals(static_cast<CacheableDate^>(
+          other)->m_dateTime);
+      }
+
+      bool CacheableDate::Equals(Object^ obj)
+      {
+        CacheableDate^ otherDate =
+          dynamic_cast<CacheableDate^>(obj);
+
+        if (otherDate != nullptr) {
+          return (m_dateTime == otherDate->m_dateTime);
+        }
+        return false;
+      }
+    }
+  }
+}
+ } //namespace 
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CacheableDateMN.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CacheableDateMN.hpp b/geode-client-native/src/clicache/com/vmware/CacheableDateMN.hpp
new file mode 100644
index 0000000..7c933eb
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CacheableDateMN.hpp
@@ -0,0 +1,167 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+
+
+#include "../../gf_defs.hpp"
+#include "ICacheableKeyN.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+      /// <summary>
+      /// An immutable date wrapper that can serve as a distributable
+      /// key object for caching as well as being a string value.
+      /// </summary>
+       ref class CacheableDate
+        : public ICacheableKey
+      {
+      public:
+        /// <summary>
+        /// Allocates a new default instance.
+        /// </summary>
+        inline CacheableDate()
+          { }
+
+        /// <summary>
+        /// Initializes a new instance of the <c>CacheableDate</c> to the
+        /// given <c>System.DateTime</c> value.
+        /// </summary>
+        /// <param name="dateTime">
+        /// A <c>System.DateTime</c> value to initialize this instance.
+        /// </param>
+        CacheableDate(DateTime dateTime);
+
+        /// <summary>
+        /// Static function that returns a new default instance.
+        /// </summary>
+        inline static CacheableDate^ Create()
+        {
+          return gcnew CacheableDate();
+        }
+
+        /// <summary>
+        /// Static function that returns a new instance initialized to the
+        /// given <c>System.DateTime</c> value.
+        /// </summary>
+        inline static CacheableDate^ Create(DateTime dateTime)
+        {
+          return gcnew CacheableDate(dateTime);
+        }
+
+        // Region: IGFSerializable Members
+
+        /// <summary>
+        /// Serializes this object.
+        /// </summary>
+        /// <param name="output">
+        /// the DataOutput object to use for serializing the object
+        /// </param>
+        virtual void ToData(DataOutput^ output);
+
+        /// <summary>
+        /// Deserialize this object, typical implementation should return
+        /// the 'this' pointer.
+        /// </summary>
+        /// <param name="input">
+        /// the DataInput stream to use for reading the object data
+        /// </param>
+        /// <returns>the deserialized object</returns>
+        virtual IGFSerializable^ FromData(DataInput^ input);
+
+        /// <summary>
+        /// return the size of this object in bytes
+        /// </summary>
+        /// <summary>
+        /// return the size of this object in bytes
+        /// </summary>
+        virtual property uint32_t ObjectSize
+        {
+          virtual uint32_t get();
+        }
+
+        /// <summary>
+        /// Returns the classId of the instance being serialized.
+        /// This is used by deserialization to determine what instance
+        /// type to create and deserialize into.
+        /// </summary>
+        /// <returns>the classId</returns>
+        virtual property uint32_t ClassId
+        {
+          virtual uint32_t get();
+        }
+
+        /// <summary>
+        /// Return a string representation of the object.
+        /// </summary>
+        virtual String^ ToString() override;
+
+        // End Region: IGFSerializable Members
+
+
+        // Region: ICacheableKey Members
+
+        /// <summary>
+        /// Return the hashcode for this key.
+        /// </summary>
+        virtual int32_t GetHashCode() override;
+
+        /// <summary>
+        /// Return true if this key matches other object.
+        /// </summary>
+        virtual bool Equals(ICacheableKey^ other);
+
+        /// <summary>
+        /// Return true if this key matches other object.
+        /// </summary>
+        virtual bool Equals(Object^ obj) override;
+
+        // End Region: ICacheableKey Members
+
+        /// <summary>
+        /// Gets the <c>System.DateTime</c> value.
+        /// </summary>
+        property DateTime Value
+        {
+          inline DateTime get()
+          {
+            return m_dateTime;
+          }
+        }
+
+        /// <summary>
+        /// <c>DataTime</c> value since 1/1/1970
+        /// </summary>
+        static initonly DateTime EpochTime = DateTime(1970, 1, 1,
+          0, 0, 0, DateTimeKind::Utc);
+
+        /// <summary>
+        /// Factory function to register this class.
+        /// </summary>
+        static IGFSerializable^ CreateDeserializable()
+        {
+          return gcnew CacheableDate();
+        }
+
+      private:
+        DateTime m_dateTime;
+        int m_hashcode;
+      };
+    }
+  }
+}
+ } //namespace 
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CacheableFileNameMN.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CacheableFileNameMN.cpp b/geode-client-native/src/clicache/com/vmware/CacheableFileNameMN.cpp
new file mode 100644
index 0000000..2ad65ab
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CacheableFileNameMN.cpp
@@ -0,0 +1,99 @@
+/*=========================================================================
+* Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+*=========================================================================
+*/
+
+
+
+//#include "gf_includesN.hpp"
+#include "CacheableFileNameMN.hpp"
+#include "DataOutputMN.hpp"
+#include "DataInputMN.hpp"
+#include "GemFireClassIdsMN.hpp"
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+      void CacheableFileName::ToData(DataOutput^ output)
+      {
+        if (m_str->Length <= 0xFFFF) {
+          output->WriteByte(gemfire::GemfireTypeIds::CacheableString);
+          output->WriteUTF(m_str);
+        }
+        else {
+          output->WriteByte(gemfire::GemfireTypeIds::CacheableStringHuge);
+          output->WriteUTFHuge(m_str);
+        }
+      }
+
+      IGFSerializable^ CacheableFileName::FromData(DataInput^ input)
+      {
+        unsigned char filetype = input->ReadByte();
+        if (filetype == gemfire::GemfireTypeIds::CacheableString) {
+          m_str = input->ReadUTF();
+        }
+        else {
+          m_str = input->ReadUTFHuge();
+        }
+        return this;
+      }
+
+      uint32_t CacheableFileName::ClassId::get()
+      {
+        return GemFireClassIds::CacheableFileName;
+      }
+
+      uint32_t CacheableFileName::ObjectSize::get()
+      {
+        return (uint32_t)(m_str->Length * sizeof(char));
+      }
+
+      int32_t CacheableFileName::GetHashCode()
+      {
+        if (m_str->IsNullOrEmpty(m_str)) {
+          return 0;
+        }
+        if (m_hashcode == 0) {
+          int localHashcode = 0;          
+          uint32_t prime = 31;
+
+          pin_ptr<const wchar_t> pin_value = PtrToStringChars( m_str );
+          for (int32_t i = 0; i < m_str->Length; i++) {
+            localHashcode = prime*localHashcode + Char::ToLower(pin_value[i]);
+          }    
+          m_hashcode  = localHashcode ^ 1234321;
+        }
+        return m_hashcode;
+      }
+
+      bool CacheableFileName::Equals(ICacheableKey^ other)
+      {
+        if (other == nullptr ||
+          other->ClassId != GemFireClassIds::CacheableFileName) {
+          return false;
+        }
+        return (m_str == static_cast<CacheableFileName^>(other)->m_str);
+      }
+
+      bool CacheableFileName::Equals(Object^ obj)
+      {
+        CacheableFileName^ otherFileName =
+          dynamic_cast<CacheableFileName^>(obj);
+
+        if (otherFileName != nullptr) {
+          return (m_str == otherFileName->m_str);
+        }
+        return false;
+      }
+    }
+  }
+}
+ } //namespace 
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CacheableFileNameMN.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CacheableFileNameMN.hpp b/geode-client-native/src/clicache/com/vmware/CacheableFileNameMN.hpp
new file mode 100644
index 0000000..a130b4d
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CacheableFileNameMN.hpp
@@ -0,0 +1,162 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+
+
+#include "../../gf_defs.hpp"
+#include "ICacheableKeyN.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+      /// <summary>
+      /// An immutable filename wrapper that can serve as a distributable
+      /// key object for caching as well as being a string value.
+      /// </summary>
+      public ref class CacheableFileName
+        : public ICacheableKey
+      {
+      public:
+        /// <summary>
+        /// Static function to create a new instance from the given string.
+        /// </summary>
+        inline static CacheableFileName^ Create(String^ value)
+        {
+          return (value != nullptr && value->Length > 0 ?
+            gcnew CacheableFileName(value) : nullptr);
+        }
+
+        /// <summary>
+        /// Static function to create a new instance from the
+        /// given character array.
+        /// </summary>
+        inline static CacheableFileName^ Create(array<Char>^ value)
+        {
+          return (value != nullptr && value->Length > 0 ?
+            gcnew CacheableFileName(value) : nullptr);
+        }
+
+        // Region: IGFSerializable Members
+
+        /// <summary>
+        /// Serializes this object.
+        /// </summary>
+        /// <param name="output">
+        /// the DataOutput object to use for serializing the object
+        /// </param>
+        virtual void ToData(DataOutput^ output);
+
+        /// <summary>
+        /// Deserialize this object, typical implementation should return
+        /// the 'this' pointer.
+        /// </summary>
+        /// <param name="input">
+        /// the DataInput stream to use for reading the object data
+        /// </param>
+        /// <returns>the deserialized object</returns>
+        virtual IGFSerializable^ FromData(DataInput^ input);
+
+        /// <summary>
+        /// return the size of this object in bytes
+        /// </summary>
+        virtual property uint32_t ObjectSize
+        {
+          virtual uint32_t get();
+        }
+
+        /// <summary>
+        /// Returns the classId of the instance being serialized.
+        /// This is used by deserialization to determine what instance
+        /// type to create and deserialize into.
+        /// </summary>
+        /// <returns>the classId</returns>
+        virtual property uint32_t ClassId
+        {
+          virtual uint32_t get();
+        }
+
+        /// <summary>
+        /// Return a string representation of the object.
+        /// This returns the same string as <c>Value</c> property.
+        /// </summary>
+        virtual String^ ToString() override
+        {
+          return m_str;
+        }
+
+        // End Region: IGFSerializable Members
+
+        // Region: ICacheableKey Members
+
+        /// <summary>
+        /// Return the hashcode for this key.
+        /// </summary>
+        virtual int32_t GetHashCode() override;
+
+        /// <summary>
+        /// Return true if this key matches other object.
+        /// </summary>
+        virtual bool Equals(ICacheableKey^ other);
+
+        /// <summary>
+        /// Return true if this key matches other object.
+        /// </summary>
+        virtual bool Equals(Object^ obj) override;
+
+        // End Region: ICacheableKey Members
+
+        /// <summary>
+        /// Gets the string value.
+        /// </summary>
+        property String^ Value
+        {
+          inline String^ get()
+          {
+            return m_str;
+          }
+        }
+
+      internal:
+        /// <summary>
+        /// Factory function to register this class.
+        /// </summary>
+        static IGFSerializable^ CreateDeserializable()
+        {
+          return gcnew CacheableFileName((String^)nullptr);
+        }
+
+      private:
+        /// <summary>
+        /// Allocates a new instance from the given string.
+        /// </summary>
+        inline CacheableFileName(String^ value)
+          : m_str(value == nullptr ? String::Empty : value),m_hashcode(0) { }
+
+        /// <summary>
+        /// Allocates a new instance copying from the given character array.
+        /// </summary>
+        inline CacheableFileName(array<Char>^ value)
+          : m_str(gcnew String(value)),m_hashcode(0) { }
+
+        String^ m_str;
+        int m_hashcode;
+      };
+    }
+  }
+}
+ } //namespace 
+
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CacheableHashMapMN.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CacheableHashMapMN.cpp b/geode-client-native/src/clicache/com/vmware/CacheableHashMapMN.cpp
new file mode 100644
index 0000000..61dd0ad
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CacheableHashMapMN.cpp
@@ -0,0 +1,45 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+//#include "gf_includesN.hpp"
+#include "CacheableHashMapMN.hpp"
+#include "DataOutputMN.hpp"
+#include "DataInputMN.hpp"
+#include "impl/SafeConvertN.hpp"
+
+using namespace System;
+using namespace System::Collections::Generic;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+      // Region: IGFSerializable Members
+
+      void Generic::CacheableHashMap::ToData(DataOutput^ output)
+      {
+        output->WriteDictionary((System::Collections::IDictionary^)m_dictionary);        
+      }
+
+      IGFSerializable^ Generic::CacheableHashMap::FromData(DataInput^ input)
+      {
+        m_dictionary = input->ReadDictionary();
+        return this;
+      }
+
+      uint32_t Generic::CacheableHashMap::ObjectSize::get()
+      {
+        return ((System::Collections::IDictionary^)m_dictionary)->Count;
+      }
+      // End Region: IGFSerializable Members
+    }
+  }
+}
+ } //namespace 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CacheableHashMapMN.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CacheableHashMapMN.hpp b/geode-client-native/src/clicache/com/vmware/CacheableHashMapMN.hpp
new file mode 100644
index 0000000..7e004af
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CacheableHashMapMN.hpp
@@ -0,0 +1,137 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "../../gf_defs.hpp"
+#include "IGFSerializableN.hpp"
+#include "ICacheableKeyN.hpp"
+#include "GemFireClassIdsMN.hpp"
+
+using namespace System;
+using namespace System::Collections::Generic;
+
+
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+      /// <summary>
+      /// A mutable <c>ICacheableKey</c> to <c>IGFSerializable</c> hash map
+      /// that can serve as a distributable object for caching. This class
+      /// extends .NET generic <c>Dictionary</c> class.
+      /// </summary>
+      ref class CacheableHashMap
+        : public IGFSerializable
+      {
+      protected:
+        Object^ m_dictionary;
+      public:
+        /// <summary>
+        /// Allocates a new empty instance.
+        /// </summary>
+        inline CacheableHashMap()          
+        { }
+
+        /// <summary>
+        /// Allocates a new instance copying from the given dictionary.
+        /// </summary>
+        /// <param name="dictionary">
+        /// The dictionary whose elements are copied to this HashMap.
+        /// </param>
+        inline CacheableHashMap(Object^ dictionary)
+        { 
+          m_dictionary = dictionary;
+        }
+
+        
+        /// <summary>
+        /// Static function to create a new empty instance.
+        /// </summary>
+        inline static CacheableHashMap^ Create()
+        {
+          return gcnew CacheableHashMap();
+        }
+
+        /// <summary>
+        /// Static function to create a new instance copying from the
+        /// given dictionary.
+        /// </summary>
+        inline static CacheableHashMap^ Create(Object^ dictionary)
+        {
+          return gcnew CacheableHashMap(dictionary);
+        }
+
+        
+        // Region: IGFSerializable Members
+
+        /// <summary>
+        /// Serializes this object.
+        /// </summary>
+        /// <param name="output">
+        /// the DataOutput object to use for serializing the object
+        /// </param>
+        virtual void ToData(DataOutput^ output);
+
+        /// <summary>
+        /// Deserialize this object, typical implementation should return
+        /// the 'this' pointer.
+        /// </summary>
+        /// <param name="input">
+        /// the DataInput stream to use for reading the object data
+        /// </param>
+        /// <returns>the deserialized object</returns>
+        virtual IGFSerializable^ FromData(DataInput^ input);
+
+        /// <summary>
+        /// return the size of this object in bytes
+        /// </summary>
+        virtual property uint32_t ObjectSize
+        {
+          virtual uint32_t get();
+        }
+
+        /// <summary>
+        /// Returns the classId of the instance being serialized.
+        /// This is used by deserialization to determine what instance
+        /// type to create and deserialize into.
+        /// </summary>
+        /// <returns>the classId</returns>
+        virtual property uint32_t ClassId
+        {
+          inline virtual uint32_t get()
+          {
+            return GemFireClassIds::CacheableHashMap;
+          }
+        }
+
+        property Object^ Value
+        {
+          Object^ get()
+          {
+            return m_dictionary;
+          }
+        }
+
+        // End Region: IGFSerializable Members
+
+        /// <summary>
+        /// Factory function to register this class.
+        /// </summary>
+        static IGFSerializable^ CreateDeserializable()
+        {
+          return gcnew CacheableHashMap();
+        }
+      };
+    }
+  }
+}
+ } //namespace 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CacheableHashSetMN.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CacheableHashSetMN.hpp b/geode-client-native/src/clicache/com/vmware/CacheableHashSetMN.hpp
new file mode 100644
index 0000000..c75863a
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CacheableHashSetMN.hpp
@@ -0,0 +1,594 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+
+
+#pragma once
+
+#include "../../gf_defs.hpp"
+#include <cppcache/CacheableBuiltins.hpp>
+#include "SerializableMN.hpp"
+#include "ExceptionTypesMN.hpp"
+#include "impl/PdxInstanceImpl.hpp"
+
+using namespace System;
+using namespace System::Collections::Generic;
+#pragma managed
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+      namespace Internal
+      {
+        /// <summary>
+        /// A mutable <c>ICacheableKey</c> hash set wrapper that can serve as
+        /// a distributable object for caching.
+        /// </summary>
+        template <uint32_t TYPEID, typename HSTYPE>
+        public ref class CacheableHashSetType
+          : public Serializable, public ICollection<Object^>
+        {
+        public:
+
+        virtual void ToData(DataOutput^ output) override
+        {
+          output->WriteArrayLen(this->Count);
+
+          Internal::ManagedPtrWrap< gemfire::Serializable,
+              Internal::SBWrap<gemfire::Serializable> > nptr = NativePtr;
+          HSTYPE* set = static_cast<HSTYPE*>(nptr());
+          for (typename HSTYPE::Iterator iter = set->begin();
+              iter != set->end(); ++iter) {
+                //Generic::ICacheableKey^ key = SafeGenericUMKeyConvert<ICacheableKey^>((*iter).ptr());
+                Object^ key = Serializable::GetManagedValueGeneric<Object^>((*iter));
+            output->WriteObject(key);
+          }
+        }
+
+        virtual IGFSerializable^ FromData(DataInput^ input) override
+        {
+          int len = input->ReadArrayLen();
+          if (len > 0)
+          {
+            for ( int i = 0; i < len; i++)
+            {
+              //Generic::ICacheableKey^ key = dynamic_cast<Generic::ICacheableKey^>(input->ReadObject());
+              Object^ key = (input->ReadObject());
+              this->Add(key);
+            }
+          }
+          return this;
+        }
+
+        virtual property uint32_t ObjectSize 
+        {
+          virtual uint32_t get() override
+          {
+            uint32_t size = 0;
+            for each (Object^ key in this) {
+              if ( key != nullptr)
+                //size += key->ObjectSize; 
+                //TODO:: how should we do this now
+                size += 1;
+            }
+            return size;
+          }
+        }  
+
+        virtual int GetHashCode() override
+        {
+          IEnumerator<Object^>^ ie = GetEnumerator();
+
+          int h = 0;
+          while(ie->MoveNext() == true)
+          {
+            h = h + PdxInstanceImpl::deepArrayHashCode(ie->Current);
+          }
+          return h;
+        }
+
+        virtual bool Equals(Object^ other)override
+        {
+          if(other == nullptr)
+            return false;
+
+          CacheableHashSetType^ otherCHST = dynamic_cast<CacheableHashSetType^>(other);
+          
+          if(otherCHST == nullptr)
+            return false;
+
+          if(Count != otherCHST->Count)
+            return false;
+
+          IEnumerator<Object^>^ ie = GetEnumerator();
+
+          while(ie->MoveNext() == true)
+          {
+            if(otherCHST->Contains(ie->Current))
+              return true;
+            else
+              return false;
+          }
+
+          return true;
+        }
+
+          /// <summary>
+          /// Enumerator for <c>CacheableHashSet</c> class.
+          /// </summary>
+          ref class Enumerator sealed
+            : public Internal::UMWrap<typename HSTYPE::Iterator>,
+            public IEnumerator<Object^>
+          {
+          public:
+            // Region: IEnumerator<ICacheableKey^> Members
+
+            /// <summary>
+            /// Gets the element in the collection at the current
+            /// position of the enumerator.
+            /// </summary>
+            /// <returns>
+            /// The element in the collection at the current position
+            /// of the enumerator.
+            /// </returns>
+            property Object^ Current
+            {
+              virtual Object^ get() =
+                IEnumerator<Object^>::Current::get
+              {
+                if (!m_started) {
+                  throw gcnew System::InvalidOperationException(
+                    "Call MoveNext first.");
+                }
+                //return SafeGenericUMKeyConvert<Generic::ICacheableKey^>((*(*NativePtr())).ptr());
+                return Serializable::GetManagedValueGeneric<Object^>((*(*NativePtr())));
+              }
+            }
+
+            // End Region: IEnumerator<ICacheableKey^> Members
+
+            // Region: IEnumerator Members
+
+            /// <summary>
+            /// Advances the enumerator to the next element of the collection.
+            /// </summary>
+            /// <returns>
+            /// true if the enumerator was successfully advanced to the next
+            /// element; false if the enumerator has passed the end of
+            /// the collection.
+            /// </returns>
+            virtual bool MoveNext()
+            {
+              Internal::ManagedPtrWrap< typename HSTYPE::Iterator,
+                Internal::UMWrap<typename HSTYPE::Iterator> > nptr = NativePtr;
+              bool isEnd = nptr->isEnd();
+              if (!m_started) {
+                m_started = true;
+              }
+              else {
+                if (!isEnd) {
+                  (*nptr())++;
+                  isEnd = nptr->isEnd();
+                }
+              }
+              GC::KeepAlive(this);
+              return !isEnd;
+            }
+
+            /// <summary>
+            /// Sets the enumerator to its initial position, which is before
+            /// the first element in the collection.
+            /// </summary>
+            virtual void Reset()
+            {
+              NativePtr->reset();
+              m_started = false;
+            }
+
+            // End Region: IEnumerator Members
+
+          internal:
+            /// <summary>
+            /// Internal constructor to wrap a native object pointer
+            /// </summary>
+            /// <param name="nativeptr">The native object pointer</param>
+            inline Enumerator(typename HSTYPE::Iterator* nativeptr,
+                CacheableHashSetType<TYPEID, HSTYPE>^ set)
+              : UMWrap(nativeptr, true), m_set(set) { }
+
+          private:
+            // Region: IEnumerator Members
+
+            /// <summary>
+            /// Gets the current element in the collection.
+            /// </summary>
+            /// <returns>
+            ///     The current element in the collection.
+            /// </returns>
+            /// <exception cref="System.InvalidOperationException">
+            /// The enumerator is positioned before the first element of
+            /// the collection or after the last element.
+            /// </exception>
+            property Object^ ICurrent
+            {
+              virtual Object^ get() sealed =
+                System::Collections::IEnumerator::Current::get
+              {
+                return Current;
+              }
+            }
+
+            // End Region: IEnumerator Members
+
+            bool m_started;
+
+            CacheableHashSetType<TYPEID, HSTYPE>^ m_set;
+          };
+
+          /// <summary>
+          /// Returns the classId of the instance being serialized.
+          /// This is used by deserialization to determine what instance
+          /// type to create and deserialize into.
+          /// </summary>
+          /// <returns>the classId</returns>
+          virtual property uint32_t ClassId
+          {
+            virtual uint32_t get() override
+            {
+              //return static_cast<HSTYPE*>(NativePtr())->classId() + 0x80000000;
+              return TYPEID;
+            }
+          }
+
+          /// <summary>
+          /// Get the largest possible size of the <c>CacheableHashSet</c>.
+          /// </summary>
+          property int32_t MaxSize
+          {
+            inline int32_t get()
+            {
+              return static_cast<HSTYPE*>(NativePtr())->max_size();
+            }
+          }
+
+          /// <summary>
+          /// True if the <c>CacheableHashSet</c>'s size is 0.
+          /// </summary>
+          property bool IsEmpty
+          {
+            inline bool get()
+            {
+              return static_cast<HSTYPE*>(NativePtr())->empty();
+            }
+          }
+
+          /// <summary>
+          /// Get the number of buckets used by the HashSet.
+          /// </summary>
+          property int32_t BucketCount
+          {
+            inline int32_t get()
+            {
+              return static_cast<HSTYPE*>(NativePtr())->bucket_count();
+            }
+          }
+
+          /// <summary>
+          /// Increases the bucket count to at least <c>size</c> elements.
+          /// </summary>
+          /// <param name="size">The new size of the HashSet.</param>
+          virtual void Resize(int32_t size) sealed
+          {
+            static_cast<HSTYPE*>(NativePtr())->resize(size);
+          }
+
+          /// <summary>
+          /// Swap the contents of this <c>CacheableHashSet</c>
+          /// with the given one.
+          /// </summary>
+          /// <param name="other">
+          /// The other CacheableHashSet to use for swapping.
+          /// </param>
+          virtual void Swap(CacheableHashSetType<TYPEID, HSTYPE>^ other) sealed
+          {
+            if (other != nullptr) {
+              static_cast<HSTYPE*>(NativePtr())->swap(
+                *static_cast<HSTYPE*>(other->NativePtr()));
+            }
+          }
+
+          // Region: ICollection<ICacheableKey^> Members
+
+          /// <summary>
+          /// Adds an item to the <c>CacheableHashSet</c>.
+          /// </summary>
+          /// <param name="item">
+          /// The object to add to the collection.
+          /// </param>
+          virtual void Add(Object^ item)
+          {
+            _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+
+              gemfire::CacheableKeyPtr nativeptr(Serializable::GetUnmanagedValueGeneric(item));
+            static_cast<HSTYPE*>(NativePtr())->insert(nativeptr);
+
+            _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+          }
+
+          /// <summary>
+          /// Removes all items from the <c>CacheableHashSet</c>.
+          /// </summary>
+          virtual void Clear()
+          {
+            static_cast<HSTYPE*>(NativePtr())->clear();
+          }
+
+          /// <summary>
+          /// Determines whether the <c>CacheableHashSet</c> contains
+          /// a specific value.
+          /// </summary>
+          /// <param name="item">
+          /// The object to locate in the <c>CacheableHashSet</c>.
+          /// </param>
+          /// <returns>
+          /// true if item is found in the <c>CacheableHashSet</c>;
+          /// otherwise false.
+          /// </returns>
+          virtual bool Contains(Object^ item)
+          {
+            return static_cast<HSTYPE*>(NativePtr())->contains(
+              gemfire::CacheableKeyPtr(Serializable::GetUnmanagedValueGeneric(item)));
+          }
+
+          /// <summary>
+          /// Copies the elements of the <c>CacheableHashSet</c> to an
+          /// <c>System.Array</c>, starting at a particular
+          /// <c>System.Array</c> index.
+          /// </summary>
+          /// <param name="array">
+          /// The one-dimensional System.Array that is the destination of the
+          /// elements copied from <c>CacheableHashSet</c>. The
+          /// <c>System.Array</c> must have zero-based indexing.
+          /// </param>
+          /// <param name="arrayIndex">
+          /// The zero-based index in array at which copying begins.
+          /// </param>
+          /// <exception cref="IllegalArgumentException">
+          /// arrayIndex is less than 0 or array is null.
+          /// </exception>
+          /// <exception cref="OutOfRangeException">
+          /// arrayIndex is equal to or greater than the length of array.
+          /// -or-The number of elements in the source <c>CacheableHashSet</c>
+          /// is greater than the available space from arrayIndex to the end
+          /// of the destination array.
+          /// </exception>
+          virtual void CopyTo(array<Object^>^ array, int32_t arrayIndex)
+          {
+            if (array == nullptr || arrayIndex < 0) {
+              throw gcnew IllegalArgumentException("CacheableHashSet.CopyTo():"
+                " array is null or array index is less than zero");
+            }
+            Internal::ManagedPtrWrap< gemfire::Serializable,
+              Internal::SBWrap<gemfire::Serializable> > nptr = NativePtr;
+            HSTYPE* set = static_cast<HSTYPE*>(nptr());
+            int32_t index = arrayIndex;
+
+            if (arrayIndex >= array->Length ||
+              array->Length < (arrayIndex + (int32_t)set->size())) {
+                throw gcnew OutOfRangeException("CacheableHashSet.CopyTo():"
+                  " array index is beyond the HashSet or length of given "
+                  "array is less than that required to copy all the "
+                  "elements from HashSet");
+            }
+            for (typename HSTYPE::Iterator iter = set->begin();
+              iter != set->end(); ++iter, ++index) {
+                array[index] = Serializable::GetManagedValueGeneric<Object^>((*iter));
+            }
+            GC::KeepAlive(this);
+          }
+
+          /// <summary>
+          /// Gets the number of elements contained in the
+          /// <c>CacheableHashSet</c>.
+          /// </summary>
+          virtual property int32_t Count
+          {
+            virtual int32_t get()
+            {
+              return static_cast<HSTYPE*>(NativePtr())->size();
+            }
+          }
+
+          /// <summary>
+          /// Removes the first occurrence of a specific object from the
+          /// <c>CacheableHashSet</c>.
+          /// </summary>
+          /// <param name="item">
+          /// The object to remove from the <c>CacheableHashSet</c>.
+          /// </param>
+          /// <returns>
+          /// true if item was successfully removed from the
+          /// <c>CacheableHashSet</c>; otherwise, false. This method also
+          /// returns false if item is not found in the original
+          /// <c>CacheableHashSet</c>.
+          /// </returns>
+          virtual bool Remove(Object^ item)
+          {
+            return (static_cast<HSTYPE*>(NativePtr())->erase(
+              gemfire::CacheableKeyPtr(Serializable::GetUnmanagedValueGeneric(item))) > 0);
+          }
+
+          /// <summary>
+          /// Gets a value indicating whether the collection is read-only.
+          /// </summary>
+          /// <returns>
+          /// always false for <c>CacheableHashSet</c>
+          /// </returns>
+          virtual property bool IsReadOnly
+          {
+            virtual bool get()
+            {
+              return false;
+            }
+          }
+
+          // End Region: ICollection<ICacheableKey^> Members
+
+          // Region: IEnumerable<ICacheableKey^> Members
+
+          /// <summary>
+          /// Returns an enumerator that iterates through the
+          /// <c>CacheableHashSet</c>.
+          /// </summary>
+          /// <returns>
+          /// A <c>System.Collections.Generic.IEnumerator</c> that
+          /// can be used to iterate through the <c>CacheableHashSet</c>.
+          /// </returns>
+          virtual IEnumerator<Object^>^ GetEnumerator()
+          {
+            typename HSTYPE::Iterator* iter = new typename HSTYPE::Iterator(
+              static_cast<HSTYPE*>(NativePtr())->begin());
+
+            return gcnew Enumerator(iter, this);
+          }
+
+          // End Region: IEnumerable<ICacheableKey^> Members
+
+        internal:
+          /// <summary>
+          /// Factory function to register wrapper
+          /// </summary>
+          static IGFSerializable^ Create(gemfire::Serializable* obj)
+          {
+            return (obj != NULL ?
+              gcnew CacheableHashSetType<TYPEID,HSTYPE>(obj) : nullptr);
+          }
+
+        private:
+          // Region: IEnumerable Members
+
+          /// <summary>
+          /// Returns an enumerator that iterates through a collection.
+          /// </summary>
+          /// <returns>
+          /// An <c>System.Collections.IEnumerator</c> object that can be used
+          /// to iterate through the collection.
+          /// </returns>
+          virtual System::Collections::IEnumerator^ GetIEnumerator() sealed =
+            System::Collections::IEnumerable::GetEnumerator
+          {
+            return GetEnumerator();
+          }
+
+          // End Region: IEnumerable Members
+
+        protected:
+          /// <summary>
+          /// Private constructor to wrap a native object pointer
+          /// </summary>
+          /// <param name="nativeptr">The native object pointer</param>
+          inline CacheableHashSetType<TYPEID, HSTYPE>(gemfire::Serializable* nativeptr)
+            : Serializable(nativeptr) { }
+
+          /// <summary>
+          /// Allocates a new empty instance.
+          /// </summary>
+          inline CacheableHashSetType<TYPEID, HSTYPE>()
+            : Serializable(HSTYPE::createDeserializable())
+          { }
+
+          /// <summary>
+          /// Allocates a new empty instance with given initial size.
+          /// </summary>
+          /// <param name="size">The initial size of the HashSet.</param>
+          inline CacheableHashSetType<TYPEID,HSTYPE>(int32_t size)
+            : Serializable(HSTYPE::create(size).ptr())
+          { }
+        };
+      }
+
+#define _GFCLI_CACHEABLEHASHSET_DEF_GENERIC(m, HSTYPE)                               \
+	public ref class m : public Internal::CacheableHashSetType<GemStone::GemFire::Cache::Generic::GemFireClassIds::m, HSTYPE>      \
+      {                                                                       \
+      public:                                                                 \
+        /** <summary>
+         *  Allocates a new empty instance.
+         *  </summary>
+         */                                                                   \
+        inline m()                                                            \
+        : Internal::CacheableHashSetType<GemStone::GemFire::Cache::Generic::GemFireClassIds::m, HSTYPE>() {}                      \
+                                                                              \
+        /** <summary>
+         *  Allocates a new instance with the given size.
+         *  </summary>
+         *  <param name="size">the intial size of the new instance</param>
+         */                                                                   \
+        inline m(int32_t size)                                                 \
+        : Internal::CacheableHashSetType<GemStone::GemFire::Cache::Generic::GemFireClassIds::m, HSTYPE>(size) {}                  \
+                                                                              \
+        /** <summary>
+         *  Static function to create a new empty instance.
+         *  </summary>
+         */                                                                   \
+        inline static m^ Create()                                             \
+        {                                                                     \
+          return gcnew m();                                                   \
+        }                                                                     \
+                                                                              \
+        /** <summary>
+         *  Static function to create a new instance with the given size.
+         *  </summary>
+         */                                                                   \
+        inline static m^ Create(int32_t size)                                  \
+        {                                                                     \
+          return gcnew m(size);                                               \
+        }                                                                     \
+                                                                              \
+        /* <summary>
+         * Factory function to register this class.
+         * </summary>
+         */                                                                   \
+        static IGFSerializable^ CreateDeserializable()                        \
+        {                                                                     \
+          return gcnew m();                                                   \
+        }                                                                     \
+                                                                              \
+      internal:                                                               \
+        static IGFSerializable^ Create(gemfire::Serializable* obj)            \
+        {                                                                     \
+          return gcnew m(obj);                                                \
+        }                                                                     \
+                                                                              \
+      private:                                                                \
+        inline m(gemfire::Serializable* nativeptr)                            \
+        : Internal::CacheableHashSetType<GemStone::GemFire::Cache::Generic::GemFireClassIds::m, HSTYPE>(nativeptr) { }             \
+      };
+
+      /// <summary>
+      /// A mutable <c>ICacheableKey</c> hash set wrapper that can serve as
+      /// a distributable object for caching.
+      /// </summary>
+      _GFCLI_CACHEABLEHASHSET_DEF_GENERIC(CacheableHashSet,
+        gemfire::CacheableHashSet);
+
+      /// <summary>
+      /// A mutable <c>ICacheableKey</c> hash set wrapper that can serve as
+      /// a distributable object for caching. This is provided for compability
+      /// with java side though is functionally identical to
+      /// <c>CacheableHashSet</c> i.e. does not provide the linked semantics of
+      /// java <c>LinkedHashSet</c>.
+      /// </summary>
+      _GFCLI_CACHEABLEHASHSET_DEF_GENERIC(CacheableLinkedHashSet,
+        gemfire::CacheableLinkedHashSet);
+    }
+  }
+}
+ } //namespace 



[39/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cacheRunner/ExampleObject.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cacheRunner/ExampleObject.hpp b/geode-client-native/examples/dist/cacheRunner/ExampleObject.hpp
new file mode 100644
index 0000000..b2a39f7
--- /dev/null
+++ b/geode-client-native/examples/dist/cacheRunner/ExampleObject.hpp
@@ -0,0 +1,194 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.  
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+/*
+ * @brief ExampleObject class for testing the put functionality for object. 
+ */
+
+
+#ifndef __EXAMPLE_OBJECT_HPP__
+#define __EXAMPLE_OBJECT_HPP__
+
+#ifdef _EXAMPLE
+#include <gfcpp/GemfireCppCache.hpp>
+#else
+#include <../GemfireCppCache.hpp>
+#endif
+#include <string>
+#include <vector>
+#include <stdlib.h>
+
+class ExampleObject
+: public CacheableKey
+// : public Serializable
+{
+  private:
+    double double_field;
+    float float_field;
+    long long_field;
+    int  int_field;
+    short short_field;
+    std::string string_field;
+    std::vector<std::string> string_vector;
+  public:
+    ExampleObject() {
+      double_field = 0.0;
+      float_field = 0.0;
+      long_field = 0;
+      int_field = 0;
+      short_field = 0;
+      string_field = "";
+      string_vector.clear();
+    }
+    ~ExampleObject() {
+    }
+    ExampleObject(int id) {
+      char buf[64];
+      sprintf(buf, "%d", id);
+      std::string sValue(buf);
+      int_field = id;
+      long_field = int_field;
+      short_field = int_field;
+      double_field = (double)int_field;
+      float_field = (float)int_field;
+      string_field = sValue;
+      string_vector.clear();
+      for (int i=0; i<3; i++) {
+        string_vector.push_back(sValue);
+      }
+    }
+    ExampleObject(std::string sValue) {
+      int_field = atoi(sValue.c_str());
+      long_field = int_field;
+      short_field = int_field;
+      double_field = (double)int_field;
+      float_field = (float)int_field;
+      string_field = sValue;
+      string_vector.clear();
+      for (int i=0; i<3; i++) {
+        string_vector.push_back(sValue);
+      }
+    }
+    CacheableStringPtr toString() const {
+      char buf[1024];
+      std::string sValue = "ExampleObject: ";
+      sprintf(buf,"%f(double),%f(double),%ld(long),%d(int),%d(short),", double_field,float_field,long_field,int_field,short_field);
+      sValue += std::string(buf) + string_field + "(string),";
+      if (string_vector.size() >0) {
+        sValue += "[";
+        for (unsigned int i=0; i<string_vector.size(); i++) {
+          sValue += string_vector[i];
+          if (i != string_vector.size()-1) {
+            sValue += ",";
+          }
+        }
+        sValue += "](string vector)";
+      }
+      return CacheableString::create( sValue.c_str() );
+    }
+    double getDouble_field() {
+      return double_field;
+    }
+    float getFloat_field() {
+      return float_field;
+    }
+    long getLong_field() {
+      return long_field;
+    }
+    int getInt_field() {
+      return int_field;
+    }
+    short getShort_field() {
+      return short_field;
+    }
+    std::string & getString_field() {
+      return string_field;
+    }
+    std::vector<std::string> & getString_vector( ) {
+      return string_vector;
+    }
+
+// Add the following for the Serializable interface
+// Our TypeFactoryMethod
+    
+    static Serializable* createInstance( ) {
+      return new ExampleObject();
+    } 
+    int32_t classId( ) const
+    { 
+      return 0x2e; // 46
+    }
+    bool operator == ( const CacheableKey& other ) const {
+      const ExampleObject& otherEO = static_cast<const ExampleObject&>( other );
+      return ( 0 == strcmp( otherEO.toString()->asChar(), toString()->asChar() ) ); 
+    }
+    uint32_t hashcode( ) const {
+      return int_field;
+    }
+
+    uint32_t objectSize( ) const
+    {
+      uint32_t objectSize = sizeof(ExampleObject);
+      objectSize += sizeof(char) * ( string_field.size() + 1 );
+      size_t itemCount = string_vector.size();
+      for( size_t idx = 0; idx < itemCount; idx++ ) {
+        // copy each string to the serialization buffer, including the null
+        // terminating character at the end of the string.
+        objectSize += sizeof(char) * ( string_vector[idx].size() + 1 );
+      }
+      return objectSize;
+    }
+    
+    void toData( DataOutput& output ) const {
+      output.writeDouble( double_field );
+      output.writeFloat( float_field );
+      output.writeInt( (int64_t)long_field );
+      output.writeInt( (int32_t)int_field );
+      output.writeInt( (int16_t)short_field );
+      output.writeASCII( string_field.c_str(), string_field.size());
+      size_t itemCount = string_vector.size();
+      output.writeInt( (int32_t) itemCount );
+      for( size_t idx = 0; idx < itemCount; idx++ ) {
+        // copy each string to the serialization buffer, including the null
+        // terminating character at the end of the string.
+        output.writeASCII( string_vector[idx].c_str(), string_vector[idx].size() );
+      }
+    }
+
+    Serializable* fromData( DataInput& input )
+    {
+      char *readbuf;
+      input.readDouble( &double_field );
+      input.readFloat( &float_field );
+      input.readInt( (int64_t *)(void *)&long_field );
+      input.readInt( (int32_t *)(void *)&int_field );
+      input.readInt( (int16_t *)(void *)&short_field );
+
+      int32_t itemCount = 0;
+      input.readASCII( &readbuf );
+      string_field = std::string(readbuf);
+      input.freeUTFMemory( readbuf );
+
+      string_vector.clear();
+      input.readInt( (int32_t*) &itemCount );
+      for( int32_t idx = 0; idx < itemCount; idx++ ) {
+        // read from serialization buffer into a character array
+        input.readASCII( &readbuf );
+        // and store in the history list of strings.
+        string_vector.push_back( readbuf );
+        input.freeUTFMemory( readbuf );
+      }
+      return this;
+    }
+
+};
+
+typedef SharedPtr<ExampleObject> ExampleObjectPtr;
+
+#endif
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cacheRunner/README.html
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cacheRunner/README.html b/geode-client-native/examples/dist/cacheRunner/README.html
new file mode 100755
index 0000000..6c85c9b
--- /dev/null
+++ b/geode-client-native/examples/dist/cacheRunner/README.html
@@ -0,0 +1,1739 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"><HTML>
+<HEAD>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+<meta name="generator" content="Bluefish 1.0.7">
+
+<TITLE>cacheRunner: Pivotal GemFire&#174; Native Client C++ Example</TITLE>
+</HEAD>
+<BODY>
+ <IMG SRC="../../../docs/PIVOTAL_GemFire_190x81.png" BORDER="0">
+ <DIV>
+   <h1 align="center"><a name="Top" id="Top"></a>cacheRunner</h1>
+   <h2 align="center">Pivotal GemFire<b><sup><font size=-0>&#174;</font></sup></b> Native Client</h2>
+   <h2 align="center">C++ Programming Example</h2>
+</DIV>
+
+<DIV>
+<P>The <code>cacheRunner</code> C++ example is an interactive program for modifying and viewing GemFire cache contents as a C++ native client interacts with a GemFire cache server. The <code>cacheRunner</code> program joins the distributed system, creates a cache, and then accepts command-line input for inspecting, modifying, and remotely querying the cache while working with a cache server. XML files are provided to configure <code>cacheRunner</code> for different functional operations or behavior.
+<blockquote>
+  <p><em>You can review the C++ source code for this example by opening the files in the <code>cacheRunner</code> directory that have <code>.cpp</code> and <code>.hpp</code> file extensions.  </em></p>
+</blockquote>
+<P>This example is divided into four parts, with each part requiring different sets of configuration files for both <code>cacheRunner</code> and the cache server.
+  The <code>cacheRunner</code> example can also be configured using a local <code>gfcpp.properties</code> file.
+<ul>
+  <li><em><a href="#part1">Part 1: Modifying the Cache</a></em> uses <code>cacheRunner</code> to work with GemFire regions, entries, directories, and files to get a feel for how the product works.<br><br></li>
+  
+  <li><em><a href="#part2">Part 2: Modifying the Cache with Security Configured</a> </em>  demonstrates server side  authentication of client credentials, as well as authorization for client operations.<br><br></li>
+  
+  <li><em><a href="#part3">Part 3: Remote Querying</a></em> demonstrates remote querying of cache entries stored on a cache server.<br>
+    <br></li>
+  
+  <li><em><a href="#part4">Part 4: High Availability</a> </em> configures redundant cache servers to ensure highly available data in case the primary cache server fails.</li>
+</ul>
+<P>The <code>cacheRunner</code> C++ example is located in the platform specific SampleCode zipfile. Throughout this example, if you're prompted to enter the NativeClient_InstallDir/SampleCode directory, replace the NativeClient_InstallDir/SampleCode with the actual path to unzipped location of the SampleCode.
+<P>The instructions in this example apply to the Windows operating system, so alter them as needed for your  system.
+<P><a name="part1" id="part1"></a>
+</DIV>
+
+<DIV>
+<hr size="3" noshade>
+<h1>Part 1: Modifying the Cache</h1>
+<hr size="3" noshade>
+</DIV>
+
+ <DIV>
+   <h2>Running cacheRunner</h2>
+   <P>
+The <code>cacheRunner</code> example uses a GemFire cache server configuration file, <code><a href="./cacherunner.xml" target="_blank">cacherunner.xml</a></code>. When the cache server starts, <code>cacherunner.xml</code> creates two regions <code>root</code> and <code>listenerWriterLoader</code>. This is a description of each cache server region and how each region is configured:</P>
+   <UL>
+  <LI CLASS="Bulleted">root &#151; The root region for the cache server, <code>distributed-no-ack</code> in scope and populated with an entry named <code>entry3</code> that has a value of <code>3.0</code></LI>
+  <LI CLASS="Bulleted"><code> listenerWriterLoader</code> &#151; A region with <code>distributed-ack</code> scope, populated with an entry named <code>entry1</code> that has a value of <code>1.0</code></LI>
+  </UL>
+<p>The <code>cacheRunner</code> application comes with a set of XML configuration files that configure its local cache and demonstrate various operations with the cache server. The following XML files are used with this example. The application is run separately for each of these XML files:</p>
+<UL>
+  <LI CLASS="Bulleted"><code> <a href="./tcr_cache.xml" target="_blank">tcr_cache.xml</a></code>
+ &#151; Establishes local and distributed cache operations. The listenerWriterLoader region establishes an endpoint connection with the server and performs distributed caching operations by receiving updates from the cache server.</LI>
+  <LI CLASS="Bulleted"><code><a href="./tcr_cacheless.xml" target="_blank">tcr_cacheless.xml</a></code> &#151; Retrieves data from the cache server, but the data is not retained in the local cache.</LI>
+  <LI CLASS="Bulleted"><code><a href="./csQueryPortfolios.xml" target="_blank">csQueryPortfolios.xml</a></code> &#151; Creates a bregion named <code>Portfolios</code> for querying, which is a region of stock portfolios whose keys are the portfolio ID.</LI>
+  <LI CLASS="Bulleted"><a href="./tcr_hacache.xml" target="_blank"><code>tcr_hacache.xml</code></a> &#151; Establishes cache server redundancy to demonstrate high availability if server failover occurs. </LI>
+</UL>
+<P>
+The procedures in this example introduce a few of the <code> cacheRunner</code>
+ commands. For information on the others, enter <strong>
+ <code>help</code></strong>
+ or <strong>
+ <code>?</code></strong>
+ at the session prompt. In the procedures, the lines you type are shown in a <code> <strong>boldface fixed</strong></code> font. System output is shown in a <code>regular fixed</code> font.</P>
+<br>
+ </DIV>
+
+<DIV>
+  <h2>
+    
+    <a name="configuring_environment" id="configuring_environment"></a>Configuring the Environment</h2>
+  <P>
+Examples that interact with a cache server require specific environment configurations so the cache server runs properly. Follow the configuration steps listed below that apply to your operating system. Throughout this example, if you're prompted to enter the NativeClient_InstallDir/SampleCode directory, replace the NativeClient_InstallDir/SampleCode with the actual path to unzipped location of the SampleCode.</P>
+</DIV>
+ <DIV>
+<ol>
+  <li>Start a terminal session from the Pivotal GemFire product installation directory, then configure your environment settings by following the steps in   <code>examples/EnvSetup.html</code>. Refer to the system configuration information in the <em>GemFire User's Guide</em> if you need help with this step.<br>
+      <br>
+  <li>Set the <code>JAVA_HOME</code> and <code>GF_JAVA_HOME</code>  environment variables to point to your installed Java JRE or JDK. See the installation information in the   <em>GemFire User's Guide</em> for the versions of Java that are compatible with GemFire. The <code>JAVA_HOME</code> setting is for your applications, and  <code>GF_JAVA_HOME</code> is for the GemFire scripts.  You must have a compatible Java JRE or JDK installed, and you must set <code>JAVA_HOME</code> and <code>GF_JAVA_HOME</code> to point to it.<br>
+      <br>
+  <li>Add <code>$JAVA_HOME/bin</code> to the start of your <code>PATH</code>.<br><br>
+    <li><em>For Solaris and Linux only</em>: Set the <code>LD_LIBRARY_PATH</code> environment variable to point to the <code>NativeClient_InstallDir/lib</code> directory.<br>
+    <br>
+</ol>
+<p>The following is a list of the environment configuration commands for the <code>cacheRunner</code> example. Choose the set of commands that are appropriate for your operating system.</p>
+<p><strong>Bourne and Korn shells (sh, ksh, bash)</strong></p>
+<blockquote>
+  <p>    <code>% cd GemFireInstallDirectory<br>
+    %
+         GEMFIRE=GemFireInstallDirectory; export GEMFIRE <br>
+	% CLASSPATH=$GEMFIRE/lib/gemfire.jar:$GEMFIRE/lib/antlr.jar:$CLASSPATH; export CLASSPATH <br>
+    % JAVA_HOME=&lt;installed JRE PATH&gt;; export JAVA_HOME<br>
+    % GF_JAVA_HOME=$JAVA_HOME; export GF_JAVA_HOME<br>
+    % PATH=$JAVA_HOME/bin:$GEMFIRE/bin:$PATH; export PATH<br>
+    % LD_LIBRARY_PATH=&lt;full path to NativeClient_InstallDir/lib&gt;:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH</code></p>
+</blockquote>
+<p><strong>Windows</strong></p>
+<blockquote>
+  <p><code>&gt; cd GemFireInstallDirectory<br>
+&gt; set GEMFIRE=GemFireInstallDirectory<br>
+&gt;  set CLASSPATH=%GEMFIRE%\lib\gemfire.jar;%GEMFIRE%\lib\antlr.jar;%CLASSPATH% <br>
+&gt; set JAVA_HOME=&lt;installed JRE PATH&gt;<br>
+&gt; set GF_JAVA_HOME=%JAVA_HOME%<br>
+&gt; set PATH=%JAVA_HOME%\bin;%GEMFIRE%\bin;%PATH%</code>
+</blockquote>
+<br>
+</DIV>
+ <DIV>
+   <h2>
+     <a name="starting_application_processes" id="starting_application_processes"></a>Starting the Cache Server</h2>
+   <P>
+Start the cache server by completing the following steps:</P>
+</DIV>
+<DIV>
+<OL>
+<LI CLASS="Numbered-1st">
+<p>Configure the session environment according to the steps listed in <a href="#configuring_environment">Configuring the Environment</a>.</p>
+</LI>
+<LI CLASS="Numbered">
+Go to the native client's <code>cacheRunner</code>
+ directory (replace the <code>xxxx</code> in <code>NativeClient_InstallDir</code> with the actual four-digit product version):
+ <blockquote>
+   <p><strong>
+     <code>cd NativeClient_InstallDir/SampleCode/examples/cacheRunner</code></strong></p>
+     </blockquote>
+ </LI>
+<LI CLASS="Numbered">
+Start the cache server:
+  <blockquote>
+    <p><strong><code>cacheserver start cache-xml-file=cacherunner.xml</code></strong></p>
+   </blockquote>
+ <P>The cache server is initialized using the region settings in the <code><a href="./cacherunner.xml" target="_blank">cacherunner.xml</a></code> file. A message similar to the following appears, indicating that the cache server is running:</P>
+</LI>
+ <blockquote>
+   <p>
+     <code>Cacheserver pid: 2120 status: running</code></p>
+   </blockquote>
+<br>
+  </OL>
+
+</DIV>
+
+ <DIV>
+  <h2>
+    <a name="starting_application_processes" id="starting_application_processes"></a>Starting the CacheRunner Example</h2>
+  <P>
+Follow these steps to start the <code>cacheRunner</code> example using the <code>tcr_cache.xml</code> initialization file:</P>
+</DIV>
+
+ <DIV>
+<OL>
+<LI CLASS="Numbered-1st">
+<p>Create two sessions from the GemFire installation directory.</p>
+</LI>
+ <LI CLASS="Numbered">
+ <p><em>For Solaris and Linux only</em>:<br>
+   Configure both session environments according to the steps listed in <a href="#configuring_environment">Configuring the Environment</a>.</p>
+ <LI CLASS="Numbered">
+   <p>Go to the <code> cacheRunner</code> directory in both sessions</p>
+ </LI>
+ <blockquote>
+   <p><strong>
+     <code>cd NativeClient_InstallDir/SampleCode/examples/cacheRunner</code></strong></p>
+   </blockquote>
+<LI CLASS="Numbered">
+Start the <code>cacheRunner</code>
+ application in both sessions, specifying <code>tcr_cache.xml</code>:
+ <blockquote>
+       <p><strong><code>cacheRunner tcr_cache.xml</code></strong></p>
+   </blockquote>
+ <P>The <code>cacheRunner</code> client is initialized using the region settings in the <code><a href="./tcr_cache.xml" target="_blank">tcr_cache.xml</a></code> file. The application creates <code>root</code> and <code>listenerWriterLoader</code> regions, then the<code> /root</code> region prompt appears. As you move from region to region, the  prompt includes a path to tell you where you are, such as  
+ <code>/listenerWriterLoader<EM CLASS="Code9">&gt;</EM></code>.</P>
+</LI>
+<LI CLASS="Numbered">
+  <p>Set one of the two <code>cacheRunner</code> sessions aside. You only need one client session for the next two Producing Data exercises.</p>
+<LI CLASS="Numbered">In the <code>cacheRunner</code> client, check the contents of the <code> root</code>
+  region:
+    <blockquote>
+    <p><strong><code>
+      ls<br>
+      </code></strong><code>Region Entries:<br>
+        </code>     <br>
+      /root&gt;</code></p>
+     </blockquote>
+<LI CLASS="Numbered">To check regions in client <code> cache</code>.
+  <blockquote>
+    <p><strong><code>
+      lsrgn<br>
+      </code></strong><code>Number of regions in Cache: 2</code></p>
+      </code></strong><code>Region Name 1: listenerWriterLoader</code></p><br>
+      </code></strong><code>Region Name 2: root</code></p>
+      </code>     <br>
+      root&gt;</code></p>
+     </blockquote>
+</OL>
+
+
+</DIV>
+
+ <DIV>
+  <h2>Producing Data in the root Region</h2>
+  <P>
+In this exercise you add an entry in the <code>root</code> region of the  <code>cacheRunner</code>  local client cache, then attempt to retrieve the entry from the cache server.</P>
+</DIV>
+<DIV>
+<P><strong>
+In the cacherunner client</strong>:</P>
+<OL><LI CLASS="Numbered">
+    Add an entry to the <code>root</code> region:
+    <blockquote>
+        <p><strong>
+          <code>put entry1 ball str</code></strong></p>
+      </blockquote>
+      <P>
+      This line creates an entry whose key is <code> entry1</code>
+      and whose value is the string <code>ball</code>.</P>
+  </LI>
+  <LI CLASS="Numbered">
+    Check the contents to see the new entry:
+      <blockquote>
+        <p><strong>
+          <code>ls<br>
+          </code></strong><code>Region Entries:<br>
+          </code><code>entry1 -&gt; String: ball</code></p>
+      </blockquote>
+  </LI>
+  <LI CLASS="Numbered">
+    Invalidate the new entry in the local cache, then check the contents:
+      <blockquote>
+        <p><strong><code>inv -l entry1</code><br>
+		  <code>ls<br>
+          </code></strong><code>Region Entries:<br>
+          </code><code>entry1 -&gt; No value in cache.</code></p>
+      </blockquote>
+      <p>The value for the entry has been removed from the local cache.</p>
+  </LI>
+    <LI CLASS="Numbered">
+    Now try to get the entry from the cache server:
+      <blockquote>
+        <p><strong><code>get entry1</code></strong><code><br>
+entry1 -&gt; No value in cache.</code></p>
+      </blockquote>
+      <p>The entry cannot be retrieved from the cache server because the client <code>root</code> cache does not have an endpoint established with the cache server, so it did not propagate the entry to the server.</p>
+    </LI>
+<br>
+</OL>
+
+</DIV>
+<DIV>
+  <h2>Producing Data in a Distributed Region</h2>
+  <P>
+In this exercise you produce data that is distributed to the cache server.</P>
+</DIV>
+<DIV>
+<P><strong>
+In the cacherunner client</strong>:</P>
+
+<OL>
+<LI CLASS="Numbered">
+Go to the <code> listenerWriterLoader</code> region, then check the  contents:</LI>
+<blockquote>
+  <p><code><strong>
+    chrgn listenerWriterLoader</strong></code><br>
+	<strong><code>ls<br>
+    </code></strong><code>Region Entries:<br>
+    </blockquote>
+  <p>There are no entries in the client cache for the <code>listenerWriterLoader</code> region. However,  the <code>listenerWriterLoader</code> region on the cache server was initialized with an <span class="Bulleted">entry named <code>entry1</code> that has a value of <code>1.0</code></span>.
+    </blockquote>
+</p>
+<li>
+  Retrieve <code>entry1</code> from the cache server:
+  <blockquote>
+      <p><strong>
+        <code>get entry1<br>
+        </code></strong><code>entry1 -&gt; String: 1.0</code></p>
+      </blockquote>
+</li>
+<li>Create a new entry in the client cache, then check the cache contents:
+  <blockquote>
+    <p><strong> <code>put entry2 bat str</code></strong><br>
+	<strong><code>ls<br>
+        </code></strong><code>Region Entries:<br>
+		</code><code>entry2 -&gt; String: bat<br>
+		</code><code>entry1 -&gt; String: 1.0</code></p>
+  </blockquote>
+  </li>
+<li>
+  Invalidate <code>entry2</code>, then check the contents:
+  <blockquote>
+      <p><strong><code>inv -l entry2</code><br>
+		<code>ls<br>
+        </code></strong><code>Region Entries:</code><code><br>
+		</code><code>entry2 -&gt; No value in cache.<br>
+		</code><code>entry1 -&gt; String: 1.0</code></p>
+      </blockquote>
+</li>
+<li>
+  Now get <code>entry2</code> from the cache server and check the contents:
+  <blockquote>
+      <p><strong><code>get entry2</code><br>
+		<code>ls<br>
+        </code></strong><code>Region Entries:</code><code><br>
+		</code><code>entry2 -&gt; String: bat<br>
+		</code><code>entry1 -&gt; String: 1.0</code></p>
+      </blockquote>
+<p>The entry in the client cache is updated with the value stored in the cache server.</p>
+</li>
+  <li>
+  Keep the <code>cacheRunner</code> application and the cache server running for the next exercise.</li>
+  </OL>
+
+</DIV>
+<br>
+<br>
+<DIV>
+  <h2>
+    Registering Interest Using Regular Expressions</h2>
+  <P>
+In this exercise you learn how client regions can register interest for cache server entry keys through the use of regular expressions. By registering interest, a client receives event notifications from the cache server for changes affecting the keys whose strings match the expression.</P>
+  <blockquote>
+    <p><em>Note that regular expressions only work with string keys.</em></p>
+  </blockquote>
+</DIV>
+<DIV>
+<P><strong>
+In the first cacherunner client</strong>:</P>
+
+<ol>
+  <li>
+    Make sure that the <code>cacheRunner</code> client session you used in the previous exercises is still set to the <code> listenerWriterLoader</code> region. If it isn't, then set it to that region:  </li>
+  <blockquote>
+    <p><code><strong>
+    chrgn listenerWriterLoader</strong></code></p>
+  </blockquote>
+    <li>Put some entries in the client region:
+      <blockquote>
+      <p><strong> <code><strong>put key-1 val1<br>
+      put key-2 val2<br>
+        put key-3 val3<br>
+        put key-4 val4
+</strong></code></strong></p>
+    </blockquote>
+    </li>
+</ol>
+
+<p><strong>
+  In the second cacherunner client</strong>:</p>
+<OL>
+  <li>
+    Display the second <code>cacheRunner</code> client session that you created at the start of this example, then go to its <code>listenerWriterLoader</code> region:
+    <blockquote>
+      <p><strong>
+        <code><strong>chrgn listenerWriterLoader</strong></code></strong></p>
+    </blockquote>
+  </li>
+  
+  <li>Get the four entries that were <code>put</code> in the first client:
+    <blockquote>
+      <p><strong>
+        <code>get key-1</code></strong><br>
+		<code>key-1 -> Bytes: val1</code><br>
+        <strong><code>get key-2</code></strong><br>
+		<code>key-2 -> Bytes: val2</code><br>
+        <strong><code>get key-3</code></strong><br>
+		<code>key-3 -> Bytes: val3</code><br>
+        <strong><code>get key-4</code></strong><br>
+		<code>key-4 -> Bytes: val4</code></p>
+    </blockquote>
+  </li>
+  <li>
+    Register interest using a regular expression:
+      <blockquote>
+      <p><strong>
+        <code>regex key-[2-3]</code></strong></p>
+    </blockquote>
+	<p> This registers interest in <code>key-2</code> and <code>key-3</code>.</p>
+  </li>
+  </OL>
+  <p><strong>
+  In the first client</strong>:</p>
+  <blockquote>
+    <p>
+      Change the values for <code>key-2</code> and <code>key-3</code>:
+    </p>
+  </blockquote>
+  <OL>
+    <blockquote>
+      <p><strong><code>put key-2 newVal2</code><br>
+      <code>put key-3 newVal3</code></strong></p>
+    </blockquote>
+  </OL>
+  <p><strong>
+  In the second client</strong>:  </p>
+  <ol>
+      <li>
+        Check the contents of the region:    </li>
+    <blockquote><p><strong><code>ls<br>
+      </code></strong><code>Region Entries:</code><code><br>
+        </code><code>key-3 -&gt; Bytes: newVal3<br>
+        </code><code>key-1 -&gt; Bytes: val1<br>
+        </code><code>key-4 -&gt; Bytes: val4<br>
+        </code><code>key-2 -&gt; Bytes: newVal2</code></p>
+    </blockquote>
+
+      <p>The updated values for <code>key-2</code> and <code>key-3</code> are listed.</p>
+
+      <li>Unregister interest for <code>key-2</code> and <code>key-3</code>:
+        <blockquote>
+          <p><strong> <code><strong>unregex key-[2-3] </strong></code></strong></p>
+        </blockquote>
+    </li>
+  </OL>
+    <p><strong>
+  In the first client</strong>:</p>
+    <blockquote>
+      <p>Change the values for <code>key-2</code> and <code>key-3</code>:    </p>
+    </blockquote>
+  <ol>
+    <blockquote>
+      <p><strong>
+      <code>put key-2 123<br>
+      put key-3 456 </code></strong></p>
+    </blockquote>
+  </OL>
+    <p><strong>
+  In the second client</strong>:  </p>
+    <blockquote>
+      <p>
+        Check the contents of the region:</p>
+      <blockquote>
+        <p><strong><code>ls<br>
+        </code></strong><code>Region Entries:</code><code><br>
+        </code><code>key-3 -&gt; Bytes: newVal3<br>
+        </code><code>key-1 -&gt; Bytes: val1<br>
+        </code><code>key-4 -&gt; Bytes: val4<br>
+        </code><code>key-2 -&gt; Bytes: newVal2</code></p>
+      </blockquote>
+      <p>The old values for <code>key-2</code> and <code>key-3</code> are listed because no interest is registered for them, so no update event notifications were received from the cache server.</p>
+    </blockquote>
+
+    <p>Keep both <code>cacheRunner</code> applications and the cache server running for the next exercise.</p>
+<br>
+</DIV>
+
+<DIV>
+  <h2>
+    <a name="cache_listener" id="cache_listener"></a>Adding a Cache Listener to an Existing Region</h2>
+  <P>
+In this exercise you add a cache listener to an existing region, then observe how the cache listener reports events that occur in the cache. A cache listener reports entry and region events both before and after they occur. Entry events are <code>create</code>, <code>update</code>, <code>invalidate</code>, and <code>destroy</code>. Region events are <code>clear</code>, <code>create</code>, <code>invalidate</code>, and <code>destroy</code>. A cache listener only receives callbacks for events occurring in the local cache. The local cache listener is not invoked when an entry is destroyed in a remote cache. However, if that destroy is distributed then the subsequent destroy in the local cache causes the cache listener's <code>afterDestroy</code> method to be called.</P>
+  <P>Some region attributes are immutable after they are established. Others, such as a cache listener, can be modified after the region is created. To see how a cache listener works, complete these steps:</P>
+
+</DIV>
+
+<DIV>
+<P><strong>
+In both cacherunner clients</strong>:</P>
+
+<blockquote>
+  <p>
+    Make sure that the two <code>cacheRunner</code> client sessions you used in the previous exercise are still set to the <code> listenerWriterLoader</code> region. If they aren't, then set both of them to that region:  </p>
+</blockquote>
+<ol>
+  <blockquote>
+    <p><code><strong>
+      chrgn listenerWriterLoader</strong></code></p>
+    </blockquote>
+</ol>
+<p><strong>In the first cacherunner client</strong></p>
+<blockquote>
+  <p>Put some entries in the cache:  </p>
+</blockquote>
+<ol>
+  <blockquote>
+      <p><strong> <code><strong>put key-1 val1<br>
+        put key-2 val2<br>
+        put key-3 val3<br>
+        put key-4 val4
+      </strong></code></strong></p>
+    </blockquote>
+</ol>
+<p><strong>
+  In the second cacherunner client</strong>:</p>
+<OL>
+  <li>Retrieve the four entries that were <code>put</code> in the first client:
+    <blockquote>
+      <p><strong>
+        <code>get key-1</code></strong><br>
+		<code>key-1 -> Bytes: val1</code><br>
+        <strong><code>get key-2</code></strong><br>
+		<code>key-2 -> Bytes: newVal2</code><br>
+        <strong><code>get key-3</code></strong><br>
+		<code>key-3 -> Bytes: newVal3</code><br>
+        <strong><code>get key-4</code></strong><br>
+		<code>key-4 -> Bytes: val4</code></p>
+    </blockquote>
+    </li>
+  
+  <li>Register interest for two of the keys:
+    <blockquote>
+      <p><strong> <code><strong>reg key-1 key-2</strong></code></strong></p>
+    </blockquote>
+    </li>
+  <li>Add a cache listener to the existing client region:
+    <blockquote>
+      <p><strong>
+        <code>set listener        </code></strong></p>
+    </blockquote>
+  </li>
+  <li>
+    Create a new entry in the local cache:
+      <blockquote>
+      <p><strong><code>put key-5 val-5 </code></strong></p>
+    </blockquote>
+	<p> The cache listener reports the events that occur:</p>
+  </li>
+  <blockquote>
+    <code>TestCacheListener.afterCreate :<br>
+    Print Event:<br>
+    Cache Event Origin Local<br>
+    Region is : /listenerWriterLoader<br>
+    Key is : key-5<br>
+    Old value is : NULL<br>
+    New value is : val-5</code></blockquote>
+</OL>
+  <p><strong>
+  In the first client</strong>:</p>
+  <blockquote>
+    <p>
+      Change the values for <code>key-1</code> and <code>key-2</code>:    </p>
+  </blockquote>
+  <OL>
+    <blockquote>
+      <p><strong><code>put key-1 newVal1</code><br>
+      <code>put key-2 newVal2</code></strong></p>
+    </blockquote>
+  </OL>
+  <blockquote>
+    <p>Look at the second client. The cache listener reports the events that occur:</p>
+    <blockquote><code>TestCacheListener.afterUpdate :<br>
+      Print Event:<br>
+      Cache Event Origin Local<br>
+      Region is : /listenerWriterLoader<br>
+      Key is : key-1<br>
+      Old value is : NULL<br>
+      New value is : newVal1<br>
+      TestCacheListener.afterUpdate :<br>
+      Print Event:<br>
+      Cache Event Origin Local<br>
+      Region is : /listenerWriterLoader<br>
+      Key is : key-2<br>
+      Old value is : NULL<br>
+    New value is : newVal2</code></blockquote>
+  </blockquote>
+  <p><strong>
+  In the second client</strong>:  </p>
+  <ol>
+      <li>
+        Remove the cache listener from the client region by setting the listener value to <code>null</code>:    </li>
+      <blockquote>
+        <p><strong><code>set listener null</code></strong></p>
+    </blockquote>
+
+    <li>Create a new entry in the client cache:
+      <blockquote>
+        <p><strong><code>put key-6 val-6</code></strong></p>
+      </blockquote>
+      <p>No event reporting occurs because the cache listener was removed from the region. </p>
+    </li>
+  </OL>
+    <p><strong>
+  In the first client</strong>:</p>
+    <blockquote>
+      <p>Change the values for  <code>key-2</code> and <code>key-3</code>:    </p>
+    </blockquote>
+  <ol>
+    <blockquote>
+      <p><strong>
+      <code>put key-2 123<br>
+      put key-3 456</code></strong></p>
+    </blockquote>
+  </OL>
+    <blockquote>
+      <p>No event reporting occurs because the cache listener was removed.</p>
+    </blockquote>
+    <p><strong>
+  Ending the client sessions</strong>:  </p>
+    <blockquote>
+      <p>
+        You need to keep one of the <code>cacheRunner</code> sessions open for the next exercise, but the second session can be closed. Follow these steps: </p>
+  </blockquote>
+    <ol>
+      <li>End the first <code>cacheRunner</code> application, but leave the session open:</li>
+
+    <blockquote>
+      <p><strong> <code>exit</code></strong></p>
+    </blockquote>
+
+      <li>End the second <code>cacheRunner</code> application:      </li>
+
+    <blockquote>
+      <p><strong><code>exit</code></strong></p>
+    </blockquote>
+
+      <li>Close the second <code>cacheRunner</code> session:</li>
+
+    <blockquote>
+      <p><strong><code>exit</code></strong></p>
+    </blockquote>
+
+      <li>Keep the cache server running for the next exercise.</li>
+    </ol>
+
+</DIV>
+<br>
+<DIV>
+  <h2>
+    <a name="cacheless_region" id="cacheless_region"></a>Using a Cacheless Region</h2>
+  <P>
+In this exercise you learn about applications that do not perform local caching. An application can receive all events on a region without storing the data that comes with the events. Consequently, the application can pass data through to other receivers without the overhead of caching. This configuration lets you separate event processing from data management.</P>
+<P>
+To see how a cacheless region works, complete these steps:</P>
+</DIV>
+<DIV>
+  <OL>
+    <LI CLASS="Numbered">
+In the open <code>cacheRunner</code>  session, start <code>cacheRunner</code>
+ with <code><a href="./tcr_cacheless.xml" target="_blank">tcr_cacheless.xml</a></code> as its initialization file:
+ <blockquote>
+       <p><strong><code>cacheRunner tcr_cacheless.xml</code></strong></p>
+   </blockquote>
+<LI CLASS="Numbered">Go to the <code> listenerWriterLoader</code> region, then check its contents:</LI>
+<blockquote>
+  <p><code><strong> chrgn listenerWriterLoader</strong></code><br>
+  <strong><code>ls<br>
+      </code></strong><code>Region Entries:</code><code><br>
+</blockquote>
+<li>
+  <p> There are no entries in the client cache for the <code>listenerWriterLoader</code> region. However, remember that the <code>listenerWriterLoader</code> region on the cache server contains an <span class="Bulleted">entry named <code>entry1</code> that has a value of <code>1.0</code></span>.</p>
+</li>
+
+  <LI CLASS="Numbered">Retrieve <code>entry1</code> from the cache server:
+    <blockquote>
+      <p><strong> <code>get entry1<br>
+      </code></strong><code>entry1 -&gt; String: 1.0</code></p>
+    </blockquote>
+	<p>The local cache acknowledges that the entry was received.</p>
+  </LI>
+  <LI CLASS="Numbered">
+    Check the contents again:
+      <blockquote>
+      <p><strong>
+        <code>ls<br>
+          </code></strong><code>Region Entries:</code><code><br>
+      </blockquote>
+	    <p> The entry is not retained in the client cache<span class="Bulleted"><code>.</code></span></p>
+  </LI>
+    <li>
+      <p>Close the <code>cacheRunner</code> application:</p>
+      <blockquote>
+        <p><strong> <code>exit</code></strong></p>
+      </blockquote>
+    </li>
+    <li>
+      <p>Close the <code>cacheRunner</code> session:</p>
+      <blockquote>
+        <p><strong> <code>exit</code></strong></p>
+      </blockquote>
+    </li>
+    <li>
+      <p>Stop the cache server:</p>
+      <blockquote>
+        <p><code><strong>cacheserver stop</strong></code></p>
+      </blockquote>
+    </li>
+    <LI CLASS="Numbered"> Close the cache server session:
+      <blockquote>
+          <p> <code><strong>exit</strong></code></p>
+      </blockquote>
+    </LI>
+  </OL>
+  <P><a name="part2" id="part2"></a>
+</DIV>
+<br>
+
+<DIV>
+<hr size="3" noshade>
+<h1>Part 2: Modifying the Cache with Security Configured </h1>
+<hr size="3" noshade>
+</DIV>
+
+ <DIV>
+   <h2>Running cacheRunner to Authenticate Credentials and Authorize Operations </h2>
+   <P>In this example, <code>cacheRunner</code> and the cache server are configured so the <code>cacheRunner</code> client must submit credentials to the server for authentication before the client can connect. The <code>cacheRunner</code> example is also configured so that cache operations are either accepted or denied based on defined roles. The authentication and authorization configurations are made using <code>gemfire.properties</code> for the server and <code>gfcpp.properties</code> for the client.</P>
+   <P>
+For more information about GemFire security, see <a href="#security-templates">Sample Security Implementations in GemFire</a>.</P>
+   <P>The lines you type are shown in a <code> <strong>boldface fixed</strong></code> font. System output is shown in a <code>regular fixed</code> font.</P>
+   <br>
+ </DIV>
+
+<DIV>
+  <h2>
+    
+    <a name="configuring_security" id="configuring_security"></a>Configuring the Environment</h2>
+  <P>
+To demonstrate security, this example requires the configuration of specific security plugin modules. To enable the PKCS third-party security plugin implementation, OpenSSL also needs to be configured. See related sections in this document for details.</P>
+</DIV>
+
+ <DIV>
+<ol>
+  <li><em>For Linux and Solaris:</em> Start a terminal session from the GemFire product installation directory, then configure your environment settings by following the steps in   <code>examples/EnvSetup.html</code>.<br> 
+    <br>
+      <em>For Windows:</em> Run the Visual Studio 2005 Command Prompt to create a terminal session with the necessary preset compiler environment configurations. 
+    Change to the GemFire product installation directory,  then configure your environment settings by following the steps in   <code>examples/EnvSetup.html</code>.<br>
+    <br>
+    <em>See the environment configuration list below for system-specific instructions for the following steps.</em><br>
+  <br>
+  <li>Install OpenSSL (optional):<br>
+      <p> To enable authentication in GemFire, the security plugin needs to be compiled (named <code>securityImpl.dll</code> for Windows and <code>libsecurityImpl.so</code> for Solaris or Linux). The security plugin <em>optionally</em> depends on OpenSSL for its PKCS sample template, so OpenSSL needs to be compiled or installed first.<br>
+          <br>
+        For Linux and Solaris, you can download the latest <a href="http://www.openssl.org/source/" target="_blank">tarball archive</a> for OpenSSL. For Windows users, you can get the OpenSSL installer at <a href="http://www.openssl.org/related/binaries.html" target="_blank">www.openssl.org/related/binaries.html</a>.
+      <blockquote><code> </code>
+          <p><em>To compile OpenSSL (Linux and Solaris):</em></p>
+        <blockquote>
+            <p>Copy the downloaded OpenSSL tarball to your appropriate <code>Linux</code> or <code>SunOS</code> folder at <code>NativeClient_InstallDir/templates/security/openssl</code>, then execute <code>buildit.sh</code> from the shell.</p>
+        </blockquote>
+        <p><em>To install OpenSSL (Windows):</em></p>
+        <blockquote>
+            <p>Run the downloaded OpenSSL installer and accept the default installation path (<code>C:\OpenSSL</code>). </p>
+        </blockquote>
+      </blockquote>
+  <li>Set the <code>JAVA_HOME</code> and <code>GF_JAVA_HOME</code> environment variables to your installed JRE or JDK. See the installation information in the <em>GemFire User's Guide</em> for the versions of Java that are compatible with GemFire. The <code>JAVA_HOME</code> setting is for your applications, and <code>GF_JAVA_HOME</code> is for the GemFire scripts.  You must have a compatible JRE or JDK installed  and you must set <code>JAVA_HOME</code> and <code>GF_JAVA_HOME</code> to point to it. See the Sun Java web site at <a href="http://java.sun.com" target="_blank">http://java.sun.com</a> for the latest Java version for your operating system. <br>
+      <br>
+  <li>Add <code>$JAVA_HOME/bin</code> to the start of your <code>PATH</code>.<br>
+    <br>
+  <li>Set the <code>GFCPP</code> environment variable to the full path to <code>NativeClient_InstallDir</code>.<br>
+    <br>
+  <li>Set the <code>OPENSSL</code> environment variable. For Linux and Solaris, point it to the parent folder for the OpenSSL binaries created from the tarball. For Windows, if you accept the default installation path in step 2, the command is <code>set OPENSSL=C:\OpenSSL</code>. <br>
+  <br>
+  <li><em>For Solaris and Linux only</em>: <br>
+    Set the <code>LD_LIBRARY_PATH</code> environment variable to point to the <code>NativeClient_InstallDir/lib</code> directory and <code>$OPENSSL/lib</code> directory.<br>
+  <br>
+  <em>For Windows only</em>: <br>
+    Set the <code>PATH</code> environment variable to point to the <code>NativeClient_InstallDir\bin</code> directory and <code>%OPENSSL%\bin</code> directory.<br>
+    <br>
+  <li>Compile the security plugin by executing the <code>buildit</code> script in the <code>NativeClient_InstallDir/templates/security</code> directory. This produces <code>securityImpl.dll</code> on Windows and <code>libsecurityImpl.so</code> on Solaris and Linux. <br>
+   <br> 
+    <li>Set the <code>CLASSPATH</code> environment variable to include the path to <code>gfSecurityImpl.jar</code> in the GemFire <code>lib</code> directory.
+</ol>
+<p><i>The following environment configuration list is a summary of the commands described in steps 1 through 9. Optionally, you need to configure the <code>OpenSSL</code> dependency first if PKCS is enabled for the GemFire security plugin. Refer to the <a href="#security-templates-pkcs">Sample Security Implementations in GemFire - PKCS Authentication</a> topic for additional details and a command list.</i></p>
+<p><strong>Bourne and Korn shells (sh, ksh, bash)</strong></p>
+<blockquote>
+  <p>    <code>% <strong>cd GemFireInstallDirectory </strong><strong><br>
+</strong>% <strong>GEMFIRE=&lt;full path to the GemFire directory&gt;</strong><strong><br>
+</strong>% <strong>JAVA_HOME=&lt;installed JRE PATH&gt;; export JAVA_HOME</strong><br>
+% <strong>GF_JAVA_HOME=$JAVA_HOME; export GF_JAVA_HOME</strong><br>
+% <strong>PATH=$JAVA_HOME/bin:$PATH; export PATH</strong><br>
+    % <strong>GFCPP=&lt;full path to NativeClient_InstallDir&gt;; export GFCPP</strong><br>
+    % <strong>OPENSSL=&lt;parent folder for OpenSSL binaries&gt;; export OPENSSL</strong><br>
+    % <strong>LD_LIBRARY_PATH=$GFCPP/lib</strong><br>
+    %<strong> LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$OPENSSL/lib<br>
+    </strong>%<strong> </strong><strong>export LD_LIBRARY_PATH</strong><br>
+    % <strong>CLASSPATH=$GEMFIRE/lib/gfSecurityImpl.jar:$CLASSPATH</strong></code></p>
+</blockquote>
+<p><strong>Windows Command shell (Using the Visual Studio 2005 Command Prompt) </strong></p>
+<blockquote>
+  <p><code>&gt; <strong>cd GemFireInstallDirectory</strong><br>
+&gt; <strong>set GEMFIRE=&lt;full path to the GemFire directory&gt;</strong><br>
+&gt; <strong>set JAVA_HOME=&lt;installed JRE PATH&gt;</strong><br>
+&gt; <strong>set GF_JAVA_HOME=%JAVA_HOME%</strong><br>
+&gt; <strong>set GFCPP=&lt;full path to NativeClient_InstallDir</strong>&gt;<br>
+&gt; <strong>set OPENSSL=C:\OpenSSL</strong><br>
+&gt; <strong>set PATH=%JAVA_HOME%\bin;%GFCPP%\bin;%OPENSSL%\bin;%PATH%</strong><br>
+&gt; <strong>set CLASSPATH=%GEMFIRE%\lib\gfSecurityImpl.jar;%CLASSPATH%</strong></code></p>
+</blockquote>
+<br>
+</DIV>
+
+ <DIV>
+   <h2>
+     <a name="starting_application_processes_secured" id="starting_application_processes_secured"></a>Starting the Cache Server</h2>
+   <P>
+To start the cache server with authentication enabled, complete the following steps:</P>
+</DIV>
+
+<DIV>
+<OL>
+<LI CLASS="Numbered-1st">
+<p>Configure the session environment according to the steps listed in <a href="#configuring_security">Configuring the Environment</a>.</p>
+</LI>
+<LI CLASS="Numbered-1st">
+<p>Place a copy of server configuration file <code>gemfire.properties</code> in the <code>NativeClient_InstallDir/SampleCode\examples\cacheRunner</code> directory. You can copy <code>gemfire.properties</code> from the <code>%GEMFIRE%\defaultConfigs</code> directory. </p>
+</LI>
+<LI CLASS="Numbered">
+Go to the <code>cacheRunner</code>
+ directory:<br>
+    <br>
+	<blockquote>
+    <strong><code>cd NativeClient_InstallDir/SampleCode\examples\cacheRunner</code></strong></blockquote>
+    <LI CLASS="Numbered">Modify <code>gemfire.properties</code> with the following security property entries. You can use any text editor that saves the file as plain text.
+      <blockquote><code>security-<strong>authz-xml-uri</strong>=<strong>authz-dummy.xml</strong></code> (modify <code>security-=</code> to produce this property name and setting) <br>
+    <code>security-client-authenticator=<strong>templates.security.DummyAuthenticator.create</strong></code><br>
+    <code>security-client-accessor=<strong>templates.security.XmlAuthorization.create</strong></code>	</blockquote>
+	<LI CLASS="Numbered">
+Start the cache server, using the <code>cacherunner.xml</code> file to configure its cache:
+<blockquote>
+      <p><strong><code>cacheserver start cache-xml-file=cacherunner.xml</code></strong></p>
+      </blockquote>
+ <p>The cache server is initialized using the region settings in the <code><a href="./cacherunner.xml" target="_blank">cacherunner.xml</a></code> file and the security settings in the <code>gemfire.properties</code> file. A message similar to the following appears, indicating that the cache server is running:</p>
+	</LI>
+ <blockquote>
+   <p>
+     <code>Cacheserver pid: 2120 status: running</code></p>
+   </blockquote>
+ </OL>
+
+<p>See the <a href="#security-templates">Sample Security Implementations in GemFire</a> section for additional server configuration options for <code>cacheRunner</code>.<br>
+    <br>
+    <br>
+</p>
+</DIV>
+
+<DIV>
+  <h2>
+    <a name="starting_application_processes_secured" id="starting_application_processes_secured"></a>Starting CacheRunner</h2>
+  <P><strong>
+With No Credentials</strong>:</P>
+  <P>
+Follow these steps to start <code>cacheRunner</code> so no client credentials are submitted to the cache server. The credentials are in the form of a username and password, and are specified in a local <code>gfcpp.properties</code> file that configures <code>cacheRunner</code>. </P>
+</DIV>
+
+ <DIV>
+<OL>
+<LI CLASS="Numbered-1st">
+<p>Create a <code>cacheRunner</code> session from the GemFire installation directory.</p>
+</LI>
+ <LI CLASS="Numbered">
+ <p><em>For Solaris and Linux only</em>:<br>
+   Configure the session environment according to the steps listed in <a href="#configuring_security">Configuring the Environment for Enabling Security</a>.</p>
+ <LI CLASS="Numbered">
+   <p>Go to the <code> cacheRunner</code> directory:</p>
+ </LI>
+ <blockquote>
+   <p><strong>
+     <code>cd NativeClient_InstallDir/SampleCode\examples\cacheRunner</code></strong></p>
+   </blockquote>
+ <LI CLASS="Numbered">
+   <p>Copy the <code> gfcpp.properties </code> file from the native client <code>defaultSystem</code> directory to the <code>\cacheRunner</code> directory. Open the file in a text editor and note that all property entries, including security-related ones, are commented out. Close the file without making any changes.</p>
+ </LI>
+ <LI CLASS="Numbered">
+Start the <code>cacheRunner</code>
+ application in the session, specifying <code>tcr_cache.xml</code>.
+ <blockquote>
+       <p><strong><code>cacheRunner tcr_cache.xml</code></strong></p>
+   </blockquote>
+   <p>The following authentication error occurs and the client is prevented from connecting to the cache server. Commented-out entries in <code>gfcpp.properties</code> are ignored, so no credentials are supplied by the client.    
+ </LI>
+ <blockquote>
+   <p><code>[warning 2008/03/27 23:30:55.324204 IST trout:25825 3076407424] Authentication required in handshake with endpoint[localhost:50505]: No security-* properties are provided
+     Exception in CacheRunner::connectDistributedSystem [ThinClientDistributionManager::init:no authentication provided]</code><br>
+  </p>
+ </blockquote>
+ </OL>
+<P><strong>
+With Invalid Credentials</strong>:</P>
+ <DIV>
+  <P>
+Start <code>cacheRunner</code> again, but this time specify invalid credentials.</P>
+  <OL>
+<LI CLASS="Numbered">
+ <p>Uncomment the <code>security-username=root</code> property in <code>gfcpp.properties</code> and change its value so <code>cacheRunner</code> submits an invalid user name:
+ <blockquote>
+   <p><code><strong>security-username=invalidUsr
+   </strong></code></p>
+   </blockquote>
+<LI CLASS="Numbered">
+ <p>Start <code>cacheRunner</code>. The invalid user name generates an authentication error and the client is prevented from connecting to the cache server.
+ <blockquote>
+       <p><strong><code>cacheRunner tcr_cache.xml</code></strong><br><br>
+       <code> [warning 2008/03/27 23:29:20.425783 IST trout:25245 3076407424] Authentication failed in handshake with endpoint[localhost:50505]: DummyAuthenticator: Invalid user name [invalidUsr], password supplied.
+Exception in CacheRunner::connectDistributedSystem [ThinClientDistributionManager::init:authentication failed]</code></p>
+ </blockquote>
+</OL>
+ </DIV>
+
+<P><strong>
+With Valid Credentials</strong>:</P>
+ <DIV>
+  <P>
+In this exercise you edit <code>gfcpp.properties</code> again to include valid client credentials:</P>
+  <OL><LI CLASS="Numbered">
+    <p>Open the  <code> gfcpp.properties</code> file  and uncomment all <code> security-* </code> properties. Change the following commands as shown below, noting any platform-specific differences. </p>
+    </LI>
+    <blockquote>
+      <p> &lt;<em>Windows only</em>&gt;<strong><code>security-client-auth-library=securityImpl<br>
+        </code></strong>&lt;<em>Solaris and Linux only</em>&gt;<strong><code>security-client-auth-library=libsecurityImpl<br>
+          security-client-auth-factory=createUserPasswordAuthInitInstance<br>
+          security-username=writer1<br>
+          security-password=writer1<br>
+        </code></strong></p>
+    </blockquote>
+    <P>Values of the library and factory methods are built into the security plugin, and are set according to the cache server properties set in <code>gemfire.properties</code>.<br>
+      Refer to the <a href="#security-templates">Sample Security Implementations in GemFire</a> section for other possible property values. </P>
+    <LI CLASS="Numbered"> Start <code>cacheRunner</code>, specifying <code>tcr_cache.xml</code>:
+      <blockquote>
+          <p><strong><code>cacheRunner tcr_cache.xml</code></strong></p>
+      </blockquote>
+      <P>The client credentials are valid, so <code>cacheRunner</code>  successfully connects to the cache server. The application creates root and listenerWriterLoader regions, then the <code> /root</code> region prompt appears.    </P>
+    </LI>
+    <LI CLASS="Numbered">Leave the client running for the next Authorizing Operations exercise. 
+  </OL>
+
+ </DIV>
+
+</DIV>
+
+
+<DIV>
+  <h2>Authorizing Operations</h2>
+  <P>
+In this exercise you do several cache operations, then observe which operations are denied or allowed based on the submitted credentials.</P>
+</DIV>
+<DIV>
+<P><strong>
+In the running cacherunner client</strong>:  </P>
+
+<OL>
+  <LI CLASS="Numbered">Go to the <code> listenerWriterLoader</code> region, then check the  contents:</LI>
+<blockquote>
+  <p><code><strong>
+    chrgn listenerWriterLoader</strong></code><br>
+	<strong><code>ls<br>
+    </code></strong><code>Region Entries:<br>
+    </blockquote>
+  <p>There are no entries in the local client cache for the <code>listenerWriterLoader</code> region. However,  the <code>listenerWriterLoader</code> region on the cache server was initialized with an <span class="Bulleted">entry named <code>entry1</code> that has a value of <code>1.0</code></span>.
+    </blockquote>
+</p>
+<li>
+  Get <code>entry1</code> from the cache server. An authorization error occurs.
+  <blockquote>
+      <p><strong>
+        <code>get entry1<br>
+        <br>
+        </code></strong><code>[error 2008/03/27 23:27:03.639666 IST trout:24282 3076411520] ThinClientRegion::getNoThrow_internal: An exception ( com.gemstone.gemfire.security.NotAuthorizedException: Not authorized to perform GET operation on region [/listenerWriterLoader] ) happened at remote site
+Entry not found</code></p>
+      </blockquote>
+<p>The entry from the cache server could not be obtained because the <code>get</code> operation is not authorized (the <code>writer1</code> user name supplied by the client has limited operation capabilities). See <a href="./authz-dummy.xml" target="_blank">authz-dummy.xml</a> for a description of the operation permissions granted to the <code>writer1</code> role. Refer to <a href="#security-templates">Sample Security Implementations in GemFire </a> for further details.</p>
+</li>
+<li>Create a new entry in the client cache that gets updated to the cache server. Check the cache contents:
+  <blockquote>
+    <p><strong> <code>put entry2 bat str</code></strong><br>
+	<strong><code>ls<br>
+        </code></strong><code>Region Entries:<br>
+		</code><code>entry2 -&gt; String: bat</code></p>
+  </blockquote>
+  </li>
+<li>
+  Destroy <code>entry2</code> in the client cache and check the contents:
+  <blockquote>
+      <p><strong><code>des -l entry2</code><br>
+		<code>ls<br>
+        </code></strong><code>Region Entries:</code></p>
+      </blockquote>
+</li>
+<li>
+  Get <code>entry2</code> from the cache server, then check the contents:
+  <blockquote>
+      <p><strong><code>get entry2<br>
+      </code></strong><br>
+		<code>[error 2008/03/27 23:27:03.639666 IST trout:24282 3076411520] ThinClientRegion::getNoThrow_internal: An exception ( com.gemstone.gemfire.security.NotAuthorizedException: Not authorized to perform GET operation on region [/listenerWriterLoader] ) happened at remote site
+Entry not found</code><br>
+<br><strong><code>ls<br>
+        </code></strong><code>Region Entries:</code></p>
+      </blockquote>
+<P>The entry from the cache server could not be obtained because the client <code>get</code> operation was not authorized. However, the <code>put</code> and <code>destroy</code> operations were allowed based on the supplied credentials. </P>
+</li>
+  <li>
+    <p>Close the <code>cacheRunner</code> application:</p>
+    <blockquote>
+      <p><strong> <code>exit</code></strong></p>
+    </blockquote>
+  </li>
+  <li>
+    <p>Close the <code>cacheRunner</code> session:</p>
+    <blockquote>
+      <p><strong> <code>exit</code></strong></p>
+    </blockquote>
+  </li>
+  <li>
+    <p>Stop the cache server:</p>
+    <blockquote>
+      <p><code><strong>cacheserver stop</strong></code></p>
+    </blockquote>
+  </li>
+  <LI CLASS="Numbered"> Close the cache server session:
+    <blockquote>
+        <p> <code><strong>exit</strong></code></p>
+    </blockquote>
+  </LI>
+    <LI CLASS="Numbered"> Delete the modified copies of <code>gemfire.properties</code> and <code>gfcpp.properties</code> from the <code>\cacheRunner</code> directory. This ensures that GemFire authentication and authorization is not enabled when you run the other parts of this example.</LI>
+  </OL>
+<a name="part3" id="part3"></a></DIV>
+<br>
+<DIV>
+<hr size="3" noshade>
+<h1>Part 3: Remote Querying</h1>
+<hr size="3" noshade>
+</DIV>
+
+ <DIV>
+   <h2>Running cacheRunner for Querying </h2>
+   <P>In this example, <code>cacheRunner</code> accepts query strings in input and runs them against the cached data stored on a cache server. The <code>cacheRunner</code> example uses a GemFire cache server configuration file, <code><a href="./csQueryPortfolios.xml" target="_blank">csQueryPortfolios.xml</a></code>. When the cache server starts, <code>csQueryPortfolios.xml</code> creates a <code>root</code> region on the server. It also creates a region named <code>Portfolios</code>, which is a <span class="Bulleted">region of stock portfolios whose keys are the portfolio ID</span>.</P>
+   <P>
+These procedures introduce a few of the querying commands. For information on others, enter <strong>
+ <code>help</code></strong>
+ or <strong>
+ <code>?</code></strong>
+ at the <code>cacheRunner</code> client session prompt.</P>
+   <P>In the procedures, the lines you type are shown in a <code> <strong>boldface fixed</strong></code> font. System output is shown in a <code>regular fixed</code> font.</P>
+<br>
+ </DIV>
+
+ <DIV>
+   <h2>
+     Starting the Cache Server</h2>
+   <P>
+To start the cache server, create a session from the GemFire installation directory and complete the following steps:</P>
+</DIV>
+
+<DIV>
+<OL>
+<LI CLASS="Numbered-1st">
+<p>Configure the session environment according to the steps listed in <a href="#configuring_environment">Configuring the Environment</a>.</p>
+</LI>
+<LI CLASS="Numbered-1st">
+  <p>Add the classes for <code>javaobject.jar</code> to your <code>CLASSPATH</code> by entering the following in a single line: </p>
+  	<p><strong> Windows:</strong></p>
+</LI>
+<blockquote>
+  <p><strong> <code>set CLASSPATH=&lt;full path to NativeClient_InstallDir/SampleCode&gt;\examples\cacheRunner\javaobject.jar;%CLASSPATH%</code></strong></p>
+</blockquote>
+
+  	<p><strong> Bourne and Korn shells (sh, ksh, bash):</strong></p>
+    <blockquote>
+  <p><strong> <code>CLASSPATH=&lt;path to NativeClient_InstallDir/SampleCode&gt;/examples/cacheRunner/javaobject.jar:$CLASSPATH; export CLASSPATH</code></strong></p>
+</blockquote>
+
+	  <p> The file <code>javaobject.jar</code> is required for registering the <code>portfolio</code> and <code>position</code> object on the cache server. </p>
+      <LI CLASS="Numbered">
+Go to the <code>cacheRunner</code>
+ directory, then start the cache server:
+ <blockquote>
+   <p><strong>
+     <code>cd NativeClient_InstallDir/SampleCode\examples\cacheRunner</code></strong></p>
+     <p><strong><code>cacheserver start cache-xml-file=csQueryPortfolios.xml</code></strong></p>
+   </blockquote>
+ <P>The <code>csQueryPortfolios.xml</code> file configures the server with a <code>root</code> and <code>Portfolios</code> regions with five portfolio objects. A message similar to the following appears, indicating that the cache server is running:</P>
+</LI>
+ <blockquote>
+   <p>
+     <code>Cacheserver pid: 2120 status: running</code></p>
+   </blockquote>
+  </OL>
+
+</DIV>
+<br>
+<DIV>
+  <h2>
+    <a name="starting_querying_processes" id="starting_querying_processes"></a>Starting the cacheRunner Client </h2>
+  <P>
+Follow these steps to start the <code>cacheRunner</code> client, using the <code>tcr_cacheless.xml</code> initialization file:</P>
+</DIV>
+
+ <DIV>
+<OL>
+<LI CLASS="Numbered-1st">
+<p>Create a session from the GemFire  installation directory.</p>
+</LI>
+ <LI CLASS="Numbered">
+ <p><em>For Solaris and Linux only</em>:<br>
+Configure the session environment according to the steps listed in <a href="#configuring_environment">Configuring the Environment</a>.</p>
+ <LI CLASS="Numbered">
+   <p>Go to the <code> cacheRunner</code> directory in the session</p>
+ </LI>
+ <blockquote>
+   <p><strong>
+     <code>cd NativeClient_InstallDir/SampleCode\examples\cacheRunner</code></strong></p>
+   </blockquote>
+
+<LI CLASS="Numbered">
+Start the <code> cacheRunner</code>
+ application, specifying <code>tcr_cacheless.xml</code>:
+ <blockquote>
+       <p><strong><code>cacheRunner tcr_cacheless.xml</code></strong></p>
+   </blockquote>
+ <P>The <code>cacheRunner</code> client is initialized using the region settings in the <code><a href="./tcr_cacheless.xml" target="_blank">tcr_cacheless.xml</a></code> file in the <code>cacheRunner</code> directory. The application creates <code>root</code>,<code>listenerWriterLoader</code> and <code>Portfolios</code> regions, then the <code> /root</code> region prompt appears. As you move from region to region, the  prompt includes a path to tell you where you are, such as  
+ <code>/Portfolios<EM CLASS="Code9">&gt;</EM></code>.</P>
+</LI>
+<LI CLASS="Numbered">In the <code>cacheRunner</code> client, go to the <code>Portfolios</code> 
+  region:
+    <blockquote>
+    <p><strong><code>
+      chrgn Portfolios</code></strong></p>
+     </blockquote>
+  </OL>
+
+</DIV>
+<br>
+<br>
+
+<DIV>
+  <h2>Executing Remote Queries</h2>
+  <P>
+In these exercises you invoke the <code>execute</code> method to submit several queries that are run on the cache server, then the results are returned to the local client cache.</P>
+</DIV>
+
+<DIV>
+<P><strong>
+In the cacherunner client</strong>:</P>
+
+<ol>
+  <li>
+    This query returns the status of the cache entries for the <code>/Portfolios</code> region on the cache server. Enter the following command:  </li>
+  <blockquote>
+    <p><code><strong>
+    exec select distinct ID, status from  /Portfolios</strong></code></p>
+  </blockquote>
+      <P>
+      This is the query output:</P>
+	        <blockquote>
+      <p> <code>Query results : Found 5 row<br>
+      Struct with 2 fields <br>
+        ID : 4 <br>
+        status : inactive<br>
+      Struct with 2 fields <br>
+        ID : 5 <br>
+        status : active<br>
+      Struct with 2 fields <br>
+        ID : 2 <br>
+        status : inactive<br>
+      Struct with 2 fields <br>
+        ID : 3<br>
+        status : active<br>
+      Struct with 2 fields <br>
+        ID : 1 <br>
+        status : active
+      </code></p>
+      </blockquote>
+      <li>Run a second query. 
+        This query returns the row IDs on the cache server:
+        <blockquote>
+      <p><strong> <code><strong>exec select distinct ID from /Portfolios</strong></code></strong></p>
+      <p><code>Query results : Found 5 row<br>
+      1
+      <br>
+      2
+      <br>
+      3
+      <br>
+      4
+      <br>
+		5
+      </code></p>
+        </blockquote>
+    </li>
+      <li>Run a third query. This query returns the object types for the <code>/Portfolios</code> region on the cache server:
+        <blockquote>
+          <p><strong>
+          <code><strong>exec select distinct ID, pkid, getType from /Portfolios where 1=1</strong></code></strong></p>
+          <p><code>Query results : Found 5 row<br>
+Struct with 3 fields <br>
+ID : 2</code><code><br>
+pkid : 2<br>
+getType : type2<br>
+Struct with 3 fields<br>
+ID : 1<br>
+pkid : 1<br>
+getType : type1<br>
+Struct with 3 fields<br>
+ID : 3<br>
+pkid : 3<br>
+getType : type3
+<br>
+Struct with 3 fields<br>
+ID : 5<br>
+pkid : 5<br>
+getType : type2
+<br>
+Struct with 3 fields<br>
+ID : 4<br>
+pkid : 4<br>
+getType : type1</code></p>
+        </blockquote>
+    </li>
+  </ol>
+</DIV>
+<br>
+<DIV>
+  <h2>Executing Region Query Shortcuts </h2>
+  <P>
+In these exercises you use region query shortcut  methods to submit queries to the cache server, then the results are returned to the local client cache. Query shortcuts take the query &quot;predicate&quot; as a parameter (the part after the <code>WHERE</code> clause), or they can take a normal full query. The three query shortcut methods are described below: </P>
+  <UL>
+    <LI CLASS="Bulleted"><code>query</code> &#151; Executes a query and returns the results. <code></code></LI>
+    <LI CLASS="Bulleted"><code> existsValue</code> &#151;Executes a query and returns <code>TRUE</code> or <code>FALSE</code> based on whether any results (rows) are obtained. </LI>
+    <LI CLASS="Bulleted"><code>selectValue</code> &#151;Executes a query and returns only a single result (row). If no results are obtained then it returns <code>NULL</code>. If more than one result (row) is obtained then a <code>QueryException</code> occurs. </LI>
+  </UL>
+</DIV>
+
+<DIV>
+<P><strong>
+In the cacherunner client</strong>:</P>
+
+<ol>
+  <li>
+    Run this <code>query</code> shortcut, which returns the <code>Portfolios</code> objects with an <code>ID</code> of <code>1</code>:  </li>
+  <blockquote>
+    <p><code><strong>
+    query ID=1</strong></code></p>
+  </blockquote>
+      <P>
+      Query result:</P>
+	        <blockquote>
+      <p> <code>query predicate is ID=1<br>
+      Query results : Found 1 row <br>
+        PortfolioObject: [ ID=1 status=active type=type1 pkid=1</code><br>
+        <code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P1: NULL P2: NULL ]</code></p>
+    </blockquote>
+      <P>
+      The <code>query</code> shortcut takes the predicate string <code>ID=1</code>, constructs the full query statement, then executes the query.  </P>
+      <li>Run this <code>existsValue</code> shortcut. 
+        The query returns either <code>TRUE</code> or <code>FALSE</code>, depending on whether the result is obtained.
+        <blockquote>
+      <p><strong> <code><strong>existsvalue ID=1</strong></code></strong></p>
+	  </blockquote>
+      <P>
+      Query result:</P>
+	        <blockquote>
+      <p> <code>query predicate is ID=1<br>
+      Query result is TRUE 
+      </code></p>
+    </blockquote>
+    </li>
+      <li>Run this <code>selectValue</code> shortcut. The query returns the object types for the <code>/Portfolios</code> region on the cache server:
+        <blockquote>
+          <p><strong>
+          <code><strong>selectValue ID=2</strong></code></strong></p>
+        </blockquote>
+      <P>
+      Query result:</P>
+	        <blockquote>
+      <p> <code>query predicate is ID=2<br>
+      PortfolioObject: [ ID=2 status=inactive type=type2 pkid=2<br>  
+        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P1: NULL P2: NULL ]</code></p>
+    </blockquote>
+    </li>
+      <li>Close the <code>cacheRunner</code> application:
+        <blockquote>
+          <p><strong> <code>exit</code></strong></p>
+        </blockquote>
+      </li>
+      <li>Close the <code>cacheRunner</code> session:
+        <blockquote>
+        <p><strong> <code>exit</code></strong></p>
+        </blockquote>
+      </li>
+      <li>Stop the cache server:
+        <blockquote>
+        <p><code><strong>cacheserver stop</strong></code></p>
+        </blockquote>
+    </li>
+      <li>Close the cache server session:
+        <blockquote>
+        <p> <code><strong>exit</strong></code></p>
+        </blockquote>
+      </li>
+</ol>
+<P><a name="part4" id="part4"></a></DIV>
+<br>
+
+<DIV>
+<hr size="3" noshade>
+<h1>Part 4: High Availability </h1>
+<hr size="3" noshade>
+</DIV>
+
+ <DIV>
+   <h2>Running cacheRunner for High Availability </h2>
+   <P>In this example, <code>cacheRunner</code> demonstrates server failover to highly available client queue backups by failing over to a secondary cache server when the primary server becomes unavailable. The secondary server continues to provide the latest entry updates to the client when the primary server fails. </P>
+   <P>In the procedures, the lines you type are shown in a <code> <strong>boldface fixed</strong></code> font. System output is shown in a <code>regular fixed</code> font.</P>
+<br>
+ </DIV>
+
+ <DIV>
+   <h2>
+     Starting the Primary and Secondary Cache Servers</h2>
+   <P>
+To start the primary and secondary cache servers, create a session and complete the following steps:</P>
+</DIV>
+
+<DIV>
+<OL>
+<LI CLASS="Numbered-1st">
+<p>Configure the session environment according to the steps listed in <a href="#configuring_environment">Configuring the Environment</a>.</p>
+</LI>
+<LI CLASS="Numbered">
+Go to the <code>cacheRunner</code>
+ directory:
+ <blockquote>
+   <p><strong>
+     <code>cd NativeClient_InstallDir/SampleCode\examples\cacheRunner</code></strong></p>
+     </blockquote>
+ </LI>
+<LI CLASS="Numbered">Start the first (primary) cache server by running this command:
+   <blockquote>
+     <p><strong>
+       <code>cacheserver start cache-xml-file=cacherunner.xml -dir=gfecs1</code></strong></p>
+      </blockquote>
+   <P>The <code>gfecs1</code> directory contains a copy of <code><a href="./cacherunner.xml" target="_blank">cacherunner.xml</a></code>, which specifies 50505 for the BridgeServer port for the primary cache server.</P>
+ </LI>
+<LI CLASS="Numbered">Start the second (secondary) cache server by running this command:
+   <blockquote>
+     <p><strong>
+       <code>cacheserver start cache-xml-file=cacherunner2.xml -dir=gfecs2</code></strong></p>
+      </blockquote>
+   <P>The <code>gfecs2</code> directory contains a copy of <code><a href="./cacherunner2.xml" target="_blank">cacherunner2.xml</a></code>, which specifies 50506 for the BridgeServer port for the secondary cache server.</P>
+ </LI>
+ </OL>
+</DIV>
+
+ <DIV>
+   <h2>
+     Starting the  cacheRunner Client</h2>
+   <P>
+To start the <code>cacheRunner</code> client, complete the following steps:</P>
+</DIV>
+
+ <DIV>
+<OL>
+<LI CLASS="Numbered-1st">
+<p>Create a session from the GemFire  installation directory.</p>
+</LI>
+ <LI CLASS="Numbered">
+ <p><em>For Solaris and Linux only</em>:<br>
+Configure the session environment according to the steps listed in <a href="#configuring_environment">Configuring the Environment</a>.</p>
+ <LI CLASS="Numbered">
+   <p>Go to the <code> cacheRunner</code> directory in the session</p>
+ </LI>
+ <blockquote>
+   <p><strong>
+     <code>cd NativeClient_InstallDir\SampleCode\examples\cacheRunner</code></strong></p>
+   </blockquote>
+
+<LI CLASS="Numbered">
+Start the <code> cacheRunner</code>
+ client, specifying <code>tcr_hacache.xml</code>:
+ <blockquote>
+       <p><strong><code>cacheRunner tcr_hacache.xml</code></strong></p>
+   </blockquote>
+ <P>The <code>cacheRunner</code> client is initialized using the settings in <code><a href="./tcr_hacache.xml" target="_blank">tcr_hacache.xml</a></code> in the <code>cacheRunner</code> directory. The XML specifies two cache-level server endpoints that the client connects to (50505 for the primary, and 50506 for the secondary). The <code>redundancy-level=1</code> attribute specifies the number of redundant, or secondary, servers to maintain in addition to the primary server.<br>
+</P>
+  </LI>
+</OL>
+</DIV>
+
+<DIV>
+  <h2>Performing Cache Operations </h2>
+  <P>
+In these steps you produce data in the <code>cacheRunner</code> local client cache. The primary and secondary cache servers receive the updated values.</P>
+</DIV>
+<DIV>
+  <OL>
+  <LI CLASS="Numbered">In the <code>cacheRunner</code> client, go to the <code>listenerWriterLoader</code> region:
+    <blockquote>
+        <p><strong><code> chrgn listenerWriterLoader</code></strong>    </p>
+    </blockquote>
+  <LI CLASS="Numbered">Add an entry to the region:
+    <blockquote>
+      <p><strong>
+        <code>put entry1 ball str</code></strong></p>
+      </blockquote>
+    <P>
+      This line creates an entry whose key is <code> entry1</code>
+      and whose value is the string <code>ball</code>.</P>
+  </LI>
+  <LI CLASS="Numbered">
+    Check the contents to see the new entry:
+      <blockquote>
+        <p><strong>
+          <code>ls<br>
+          </code></strong><code>Region Entries:<br>
+          </code><code>entry1 -&gt; String: ball</code></p>
+      </blockquote>
+  </LI>
+  <LI CLASS="Numbered">
+    Invalidate the new entry in the local cache and then check the contents:
+      <blockquote>
+        <p><strong><code>inv -l entry1</code><br>
+		  <code>ls<br>
+          </code></strong><code>Region Entries:<br>
+          </code><code>entry1 -&gt; No value in cache.</code></p>
+      </blockquote>
+      <p>The value for the entry has been removed from the local cache.</p>
+  </LI>
+    <LI CLASS="Numbered">
+    Get the entry from the primary cache server:
+      <blockquote>
+        <p><strong><code>get entry1</code></strong><code><br>
+entry1 -&gt; String: ball</code></p>
+      </blockquote>
+    </LI>
+<br>
+</OL>
+
+</DIV>
+
+<DIV>
+  <h2>Initiating Server Failover </h2>
+  <P>
+In this procedure you stop and start the primary and secondary servers to initiate a server failover condition.</P>
+</DIV>
+<DIV>
+  <OL><LI CLASS="Numbered">Stop the primary cache server by running this command in the cache server session:
+    <blockquote>
+      <p><strong>
+        <code>cacheserver stop -dir=gfecs1</code></strong></p>
+      </blockquote>
+    <P>
+      The following  message displays in the server session:</P>
+  </LI>
+  <blockquote>
+   <p>
+     <code>CacheServer stopped.</code></p>
+   </blockquote>
+    <P>
+      A redundancy level warning continuously displays in the client session as a result of the stopped server:</P>
+  <blockquote>
+   <p>
+     <code>Requested redundancy level 1 is not satisfiable with 1 servers available</code></p>
+   </blockquote>
+     <LI CLASS="Numbered">
+    The secondary server is now the primary. In the client session, get an entry from the new primary server:
+      <blockquote>
+        <p><strong>
+          <code>get entry1</code></strong><code><br>
+        </code><code>entry1 -&gt; String: ball</code></p>
+      </blockquote>
+     <P>
+      The updated entry is retrieved from the server. </P>
+  </LI>
+     <li>Put a new entry in the client session, then get the entry from the server:
+       <blockquote>
+         <p><strong> <code>put entry2 bat str</code></strong><br>
+           <strong> <code>get entry2</code></strong><code><br>
+              </code><code>entry2 -&gt; String: bat</code>         </p>
+       </blockquote>
+     </li>
+     <li>Start the first cache server again by running this command in the cache server session:
+       <blockquote>
+           <p><strong> <code>cacheserver start cache-xml-file=cacherunner.xml -dir=gfecs1</code></strong></p>
+       </blockquote>
+     </li>
+     <li>In the cache server session,  stop the second (primary) cache server:
+       <blockquote>
+           <p><code><strong>cacheserver stop</strong></code><strong><code> -dir=gfecs2</code></strong></p>
+       </blockquote>
+     </li>
+     <li>In the client session, get the new entry from the new primary server:
+       <blockquote>
+        <p><strong> <code>get entry2</code></strong><code><br>
+              </code><code>entry2 -&gt; String: bat</code>           </p>
+       </blockquote>
+	       <P>
+      Both the primary and secondary servers maintain client cache updates in case a server failover occurs.</P>
+    </li>
+    <br>
+</OL>
+
+</DIV>
+<DIV>
+  <h2>Closing the Cache Server and Client </h2>
+  <ol>
+  <li>Close the <code>cacheRunner</code> application:
+      <blockquote>
+        <p><strong> <code>exit</code></strong></p>
+      </blockquote>
+    <li>Close the <code>cacheRunner</code> session:
+       <blockquote>
+           <p><strong> <code>exit</code></strong></p>
+       </blockquote>
+    </li>
+     <li>Stop the remaining cache server:
+       <blockquote>
+           <p><code><strong>cacheserver stop</strong></code><strong><code> -dir=gfecs1</code></strong></p>
+       </blockquote>
+    </li>
+     <li>Close the cache server session:
+       <blockquote>
+           <p> <code><strong>exit</strong></code></p>
+       </blockquote>
+     </li>
+    <br>
+</ol>
+</DIV>
+ <DIV>
+<H2> <a name="changing_params" id="changing_params">Changing System Parameters</a></H2>
+<P>
+This product ships configured to run with default system properties. If you need to run in a non-default configuration, GemFire also takes a system-level configuration file. Copy the <code>gfcpp.properties</code> file into your <code>cacheRunner</code> directory from the native client <code>defaultSystem</code> directory and edit it as needed. For example, to change the name of the <code>cache.xml</code> file, uncomment this line and change the file name:</P>
+<P>
+  <code>#cache-xml-file=cache.xml</code></P>
+<P>When you are finished with the example, delete the copied <code>gfcpp.properties</code> file from the <code>cacheRunner</code> directory so it can run with the default configuration. <br>
+  <br>
+</P>
+ </DIV>
+
+ <DIV>
+<H2><a name="security-templates" id="security-templates"> Sample Security Implementations in GemFire </a></H2>
+<P> There are two aspects to GemFire security:
+<ol>
+<li> <strong>Authentication</strong>, which verifies the validity of the client(s).<br>
+<li> <strong>Authorization</strong>, which evaluates the permission for GemFire operation(s) by the client(s). <br>
+</ol>
+<p> Authentication can be either dummy or LDAP server-based or PKCS-based, whereas authorization is xml-based only. For different authentication schemes, the corresponding authorization xml configigurations should be provided to the sample authorization module.<br>
+<br>
+<I>Source code for the client side sample implementations is available in <code>NativeClient_InstallDir/templates/security</code>. Corresponding server side samples can be found in <code>GemfireInstallDirectory/templates/security</code>.</I>
+</P>
+  <H3> Dummy Authentication </H3>
+   <P>The authentication scheme is based on a simple username and password. The server side authenticator is in package <code>templates.security.DummyAuthenticator.create</code>. The client side initializer for it is in the compiled <code>securityImpl.dll</code> library with a factory method name <code>createUserPasswordAuthInitInstance</code>.<br>
+   </P>
+
+<font size=2>
+<table border="1" align="top" cellspacing=4 cellpadding=4 width=1000 height=50 >
+ <caption align=left,top>
+ Mapping between Authentication credentials and Authorization roles & privileges
+ </caption>
+ <tr align=middle>
+  <th>Authentication User Name</th>
+  <th>Authorization Roles</th>
+  <th>Permission to the Roles</th>
+ </tr>
+ <tr align=middle>
+  <td valign=middle>root, admin, administrator</td>
+  <td valign=middle>reader, writer, cacheOps</td>
+  <td>
+    <table border=0 cellspacing=0 cellpadding=0>
+      <tr><td> <strong>reader</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: get, register_interest, unregister_interest, key_set, contains_key </td></tr>
+      <tr><td> <strong>writer</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: put, destroy, region_clear</td></tr>
+      <tr><td> <strong>cacheOps</strong>: query, execute_cq, stop_cq, close_cq, region_create, region_destroy</td></tr>
+    </table>
+  </td>
+ </tr>
+
+ <tr align=middle>
+  <td valign=middle>reader0, reader1, reader2</td>
+  <td valign=middle>reader</td>
+  <td>
+    <table border=0 cellspacing=0 cellpadding=0>
+      <tr><td> <strong>reader</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: get, register_interest, unregister_interest, key_set, contains_key </td></tr>
+    </table>
+  </td>
+ </tr>
+
+ <tr align=middle>
+  <td valign=middle>writer0, writer1, writer2</td>
+  <td valign=middle>writer</td>
+  <td>
+    <table border=0 cellspacing=0 cellpadding=0>
+      <tr><td> <strong>writer</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: put, destroy, region_clear</td></tr>
+    </table>
+  </td>
+ </tr>
+
+ <tr align=middle>
+  <td valign=middle>reader3, reader4</td>
+  <td valign=middle>queryRegions</td>
+  <td>
+    <table border=0 cellspacing=0 cellpadding=0>
+      <tr><td> <strong>queryRegions</strong>: query, execute_cq, stop_cq, close_cq</td></tr>
+    </table>
+  </td>
+ </tr>
+</table>
+</font>
+
+  <H3> LDAP Authentication </H3>
+   <P>This scheme of authentication is based on the Usernames and Password configured in a LDAP server. Refer to the Security chapter in the <em>Gemfire Native Client User's Guide</em> for more details. The server side authenticator is in package <code>templates.security.LdapUserAuthenticator.create</code>. The client side initializer for it is  in the <code>securityImpl.dll</code> library (Windows) or the <code>libsecurityImpl.so</code> library (Solaris or Linux) with a factory method name <code>createUserPasswordAuthInitInstance</code>.<br>
+   </P>
+<font size=2>
+<table border="1" align="top" cellspacing=4 cellpadding=4 width=1000 height=50 >
+ <caption align=left,top>
+ Mapping between Authentication credentials and Authorization roles & privileges
+ </caption>
+ <tr align=middle>
+  <th>Authentication User Name</th>
+  <th>Authorization Roles</th>
+  <th>Permission to the Roles</th>
+ </tr>
+ <tr align=middle>
+  <td valign=middle>gemfire1, gemfire2</td>
+  <td valign=middle>reader, writer, cacheOps</td>
+  <td>
+    <table border=0 cellspacing=0 cellpadding=0>
+      <tr><td> <strong>reader</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: get, register_interest, unregister_interest, key_set, contains_key </td></tr>
+      <tr><td> <strong>writer</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: put, destroy, region_clear</td></tr>
+      <tr><td> <strong>cacheOps</strong>: query, execute_cq, stop_cq, close_cq, region_create, region_destroy</td></tr>
+    </table>
+  </td>
+ </tr>
+
+ <tr align=middle>
+  <td valign=middle>gemfire3, gemfire4, gemfire5</td>
+  <td valign=middle>reader</td>
+  <td>
+    <table border=0 cellspacing=0 cellpadding=0>
+      <tr><td> <strong>reader</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: get, register_interest, unregister_interest, key_set, contains_key </td></tr>
+    </table>
+  </td>
+ </tr>
+
+ <tr align=middle>
+  <td valign=middle>gemfire6, gemfire7, gemfire6</td>
+  <td valign=middle>writer</td>
+  <td>
+    <table border=0 cellspacing=0 cellpadding=0>
+      <tr><td> <strong>writer</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: put, destroy, region_clear</td></tr>
+    </table>
+  </td>
+ </tr>
+
+ <tr align=middle>
+  <td valign=middle>gemfire9, gemfire10</td>
+  <td valign=middle>queryRegions</td>
+  <td>
+    <table border=0 cellspacing=0 cellpadding=0>
+      <tr><td> <strong>queryRegions</strong>: query, execute_cq, stop_cq, close_cq</td></tr>
+    </table>
+  </td>
+ </tr>
+</table>
+</font>
+<a name="security-templates-pkcs" id="security-templates-pkcs">
+  <H3> PKCS Authentication </H3>
+   <P>This scheme of authentication is based on public/private key-based encryption/decryption. Refer to the Security chapter in the <em>Gemfire Native Client User's Guide</em> for keystore configurations. The server side authenticator is in package <code>templates.security.PKCSAuthenticator.create</code>. The client side initializer for it is  in the <code>securityImpl.dll</code> library (Windows) or the <code>libsecurityImpl.so</code> library (Solaris or Linux) with a factory method name <code>createPKCSAuthInitInstance</code>.</P>
+
+   <blockquote>
+     <p><strong>PKCS configuration details</strong>
+     </p>
+   </blockquote>
+   <ol>
+  <li>See <a href="#configuring_security">Configuring the Environment</a> in <em>Part 2: Modifying the Cache with Security Configured</em> for details on downloading, compiling and configuring OpenSSL to work with the PKCS implementation.<br>
+    <br>
+<li>Create the keystore with aliases from <em>gemfire1</em> to <em>gemfire10</em>, as described in the Security chapter for the <em>GemFire Native Client User's Guide</em>.<br>
+  <br>
+  <li>Provide the following properties in <code>gfcpp.properties</code> for client side configuration:<br>
+    <em><strong>Note:</strong> All of these properties are user-provided information to keytool-like utilities during public/private key generation and self-signing.     </em>
+    <blockquote> <p> <code> 
+% security-keystorepath=<i>&lt;absolute filepath to keystore where keys are generated&gt;</i><br>
+% security-alias=<i>&lt;alias name given while generating public & private key pair for the client&gt;</i><br>
+% security-keystorepass=<i>&lt;password entered while generating private key while self-signing&gt;</i></code></p> 
+    </blockquote>
+<li>Provide the following properties in <code>gemfire.properties</code> for server side configuration:<br>
+   <em><strong>Note:</strong> All of these properties are user-provided information to keytool-like utilities during truststore creation.</em>
+     <blockquote> <p> <code> 
+% security-publickey-filepath=<i>&lt;absolute filepath to keystore where public keys are generated&gt;</i><br>
+% security-publickey-pass=<i>&lt;password entered while generating key to truststore&gt;</i><br>
+</code> </p> </blockquote>
+</ol>
+   </P>
+
+<font size=2>
+<table border="1" align="top" cellspacing=4 cellpadding=4 width=1000 height=50 >
+ <caption align=left,top>Mapping between Authentication credentials and Authorization roles & privileges.</caption>
+ <tr align=middle>
+  <th>Authentication KeyStore Aliases</th>
+  <th>Authorization Roles</th>
+  <th>Permission to the Roles</th>
+ </tr>
+ <tr align=middle>
+  <td valign=middle>gemfire1, gemfire2</td>
+  <td valign=middle>reader, writer, cacheOps</td>
+  <td>
+    <table border=0 cellspacing=0 cellpadding=0>
+      <tr><td> <strong>reader</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: get, register_interest, unregister_interest, key_set, contains_key </td></tr>
+      <tr><td> <strong>writer</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: put, destroy, region_clear</td></tr>
+      <tr><td> <strong>cacheOps</strong>: query, execute_cq, stop_cq, close_cq, region_create, region_destroy</td></tr>
+    </table>
+  </td>
+ </tr>
+
+ <tr align=middle>
+  <td valign=middle>gemfire3, gemfire4, gemfire5</td>
+  <td valign=middle>reader</td>
+  <td>
+    <table border=0 cellspacing=0 cellpadding=0>
+      <tr><td> <strong>reader</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: get, register_interest, unregister_interest, key_set, contains_key </td></tr>
+    </table>
+  </td>
+ </tr>
+
+ <tr align=middle>
+  <td valign=middle>gemfire6, gemfire7, gemfire6</td>
+  <td valign=middle>writer</td>
+  <td>
+    <table border=0 cellspacing=0 cellpadding=0>
+      <tr><td> <strong>writer</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: put, destroy, region_clear</td></tr>
+    </table>
+  </td>
+ </tr>
+
+ <tr align=middle>
+  <td valign=middle>gemfire9, gemfire10</td>
+  <td valign=middle>queryRegions</td>
+  <td>
+    <table border=0 cellspacing=0 cellpadding=0>
+      <tr><td> <strong>queryRegions</strong>: query, execute_cq, stop_cq, close_cq</td></tr>
+    </table>
+  </td>
+ </tr>
+</table>
+</font>
+
+  <H3> Xml-Based Authorization </H3>
+   <P>This authorization scheme is based on the prior mapping of authentication credentials to roles and privileges. Permissions configured in xml files are supplied corresponding to the authentication scheme. Refer to the Security chapter  in the <em>GemFire Native Client User's Guide</em> for further information. The server side <code>security-accessor</code> is in package <code>templates.security.XmlAuthorization.create</code>, and <code>security-authz-xml-uri</code> should point to either <a href="../../templates/security/authz-dummy.xml" target="_blank"><code>authz-dummy.xml</code></a>, <a href="../../templates/security/authz-ldap.xml" target="_blank"><code>authz-ldap.xml</code></a>, or <a href="../../templates/security/authz-pkcs.xml" target="_blank"><code>authz-pkcs.xml</code></a>, depending on the <code>security-authenticator</code> provided.<br>
+     <br>
+   </P>
+
+</DIV>
+
+<a href="#Top">Top</a>
+<P>&nbsp;</P>
+<P>
+Copyright &#169; 2005-2014 Pivotal Software, Inc. All rights reserved.
+This product is protected by U.S. and international copyright and intellectual
+property laws. Pivotal products are covered by one or more patents listed at
+http://www.pivotal.io/patents. </P>
+</BODY>
+</HTML>
+



[37/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cacheRunner/gfecs1/csQueryPortfolios.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cacheRunner/gfecs1/csQueryPortfolios.xml b/geode-client-native/examples/dist/cacheRunner/gfecs1/csQueryPortfolios.xml
new file mode 100644
index 0000000..ca39f6f
--- /dev/null
+++ b/geode-client-native/examples/dist/cacheRunner/gfecs1/csQueryPortfolios.xml
@@ -0,0 +1,354 @@
+<?xml version="1.0"?>
+<!DOCTYPE cache PUBLIC
+  "-//GemStone Systems, Inc.//GemFire Declarative Caching 6.5//EN"
+  "http://www.gemstone.com/dtd/cache6_5.dtd">
+<cache>
+  <cache-server port="50505" />
+  <region name="root">
+    <region-attributes scope="distributed-no-ack"/>
+  </region>
+  <region name="listenerWriterLoader">
+    <region-attributes scope="distributed-ack" mirror-type="keys-values"/>
+  </region>
+  <region name="Portfolios">
+    <region-attributes scope="distributed-ack" mirror-type="keys-values">
+      <value-constraint>javaobject.Portfolio</value-constraint>
+    </region-attributes>
+    <entry>
+    <key><string>1</string></key>
+    <value>
+      <declarable>
+        <class-name>javaobject.Portfolio</class-name>
+        <parameter name="ID">
+          <string>1</string>
+        </parameter>
+        <parameter name="pkid">
+          <string>1</string>
+        </parameter>
+        <parameter name="type">
+          <string>type1</string>
+        </parameter>
+        <parameter name="status">
+          <string>active</string>
+        </parameter>
+        <parameter name="newVal">
+          <string>CCCCC</string>
+        </parameter>
+        <parameter name="position1">
+          <declarable>
+            <class-name>javaobject.Position</class-name>
+             <parameter name="secId">
+                <string>SUN</string>
+             </parameter>
+             <parameter name="qty">
+                <string>3900</string>
+             </parameter>
+             <parameter name="mktValue">
+               <string>3400.893475</string>
+             </parameter>
+             <parameter name="sharesOutstanding">
+               <string>3400</string>
+             </parameter>
+             <parameter name="secType">
+               <string>r</string>
+             </parameter>
+             <parameter name="pid">
+                <string>345</string>
+             </parameter>
+           </declarable>
+          </parameter>
+          <parameter name="position2">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>IBM</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>4600</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>9900.884732</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>8765</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>p</string>
+                </parameter>
+                <parameter name="pid">
+                   <string>123</string>
+                </parameter>
+            </declarable>
+          </parameter>
+        </declarable>
+      </value>
+     </entry>
+     <entry>
+      <key><string>2</string></key>
+      <value>
+        <declarable>
+          <class-name>javaobject.Portfolio</class-name>
+          <parameter name="ID">
+            <string>2</string>
+          </parameter>
+          <parameter name="pkid">
+            <string>2</string>
+          </parameter>
+          <parameter name="type">
+            <string>type2</string>
+          </parameter>
+          <parameter name="status">
+            <string>inactive</string>
+          </parameter>
+          <parameter name="position1">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>YHOO</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>3900</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>3400.893475</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>9834</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>y</string>
+                </parameter>
+                <parameter name="pid">
+                    <string>129</string>
+                </parameter>
+            </declarable>
+          </parameter>
+          <parameter name="position2">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>GOOG</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>3900</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>3400.893475</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>834</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>t</string>
+                </parameter>
+                <parameter name="pid">
+                    <string>569</string>
+                </parameter>
+            </declarable>
+          </parameter>
+        </declarable>
+      </value>
+    </entry>
+
+     <entry>
+      <key><string>3</string></key>
+      <value>
+        <declarable>
+          <class-name>javaobject.Portfolio</class-name>
+          <parameter name="ID">
+            <string>3</string>
+          </parameter>
+          <parameter name="pkid">
+            <string>3</string>
+          </parameter>
+          <parameter name="type">
+            <string>type3</string>
+          </parameter>
+          <parameter name="status">
+            <string>active</string>
+          </parameter>
+          <parameter name="position1">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>MSFT</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>3900</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>3400.893475</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>1834</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>o</string>
+                </parameter>
+                <parameter name="pid">
+                    <string>545</string>
+                </parameter>
+            </declarable>
+          </parameter>
+          <parameter name="position2">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>AOL</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>3900</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>3400.893475</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>8354</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>t</string>
+                </parameter>
+                <parameter name="pid">
+                    <string>987</string>
+                </parameter>
+            </declarable>
+          </parameter>
+        </declarable>
+      </value>
+    </entry>
+
+     <entry>
+      <key><string>4</string></key>
+      <value>
+        <declarable>
+          <class-name>javaobject.Portfolio</class-name>
+          <parameter name="ID">
+            <string>4</string>
+          </parameter>
+          <parameter name="pkid">
+            <string>4</string>
+          </parameter>
+          <parameter name="type">
+            <string>type1</string>
+          </parameter>
+          <parameter name="status">
+            <string>inactive</string>
+          </parameter>
+          <parameter name="position1">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>APPL</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>3900</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>3400.893475</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>3654</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>d</string>
+                </parameter>
+                <parameter name="pid">
+                    <string>287</string>
+                </parameter>
+            </declarable>
+          </parameter>
+          <parameter name="position2">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>ORCL</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>3900</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>3400.893475</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>5344</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>k</string>
+                </parameter>
+                <parameter name="pid">
+                    <string>567</string>
+                </parameter>
+            </declarable>
+          </parameter>
+        </declarable>
+      </value>
+    </entry>
+
+     <entry>
+      <key><string>5</string></key>
+      <value>
+        <declarable>
+          <class-name>javaobject.Portfolio</class-name>
+          <parameter name="ID">
+            <string>5</string>
+          </parameter>
+          <parameter name="pkid">
+            <string>5</string>
+          </parameter>
+          <parameter name="type">
+            <string>type2</string>
+          </parameter>
+          <parameter name="status">
+            <string>active</string>
+          </parameter>
+          <parameter name="position1">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>SAP</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>3900</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>3400.893475</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>3344</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>k</string>
+                </parameter>
+                <parameter name="pid">
+                    <string>432</string>
+                </parameter>
+            </declarable>
+          </parameter>
+          <parameter name="position2">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>DELL</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>3900</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>3400.893475</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>5354</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>u</string>
+                </parameter>
+                <parameter name="pid">
+                    <string>467</string>
+                </parameter>
+            </declarable>
+          </parameter>
+        </declarable>
+      </value>
+    </entry>    
+  </region>
+</cache> 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cacheRunner/gfecs2/cacherunner2.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cacheRunner/gfecs2/cacherunner2.xml b/geode-client-native/examples/dist/cacheRunner/gfecs2/cacherunner2.xml
new file mode 100644
index 0000000..3a6c04b
--- /dev/null
+++ b/geode-client-native/examples/dist/cacheRunner/gfecs2/cacherunner2.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+
+<!-- Initializes a cache to serve the bridge_region region, 
+    waiting for bridge client communication on port 50506 -->
+
+<!DOCTYPE cache PUBLIC
+  "-//GemStone Systems, Inc.//GemFire Declarative Caching 6.5//EN"
+  "http://www.gemstone.com/dtd/cache6_5.dtd">
+<cache>
+  <cache-server port="50506" notify-by-subscription="true" />
+  <region name="root">
+      <region-attributes scope="distributed-no-ack"/>
+        <entry>
+          <key><string>entry3</string></key>
+          <value><string>3.0</string></value>
+        </entry>
+    </region>
+    <region name="listenerWriterLoader">
+      <region-attributes scope="distributed-ack" mirror-type="keys-values">
+        <!--cache-loader>
+          <class-name>cacheRunner.StringLoader</class-name>
+        </cache-loader-->
+      </region-attributes>
+      <entry>
+        <key><string>entry1</string></key>
+        <value><string>1.0</string></value>
+      </entry>     
+    </region>
+</cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cacheRunner/gfecs2/csQueryPortfolios2.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cacheRunner/gfecs2/csQueryPortfolios2.xml b/geode-client-native/examples/dist/cacheRunner/gfecs2/csQueryPortfolios2.xml
new file mode 100644
index 0000000..f1efab1
--- /dev/null
+++ b/geode-client-native/examples/dist/cacheRunner/gfecs2/csQueryPortfolios2.xml
@@ -0,0 +1,354 @@
+<?xml version="1.0"?>
+<!DOCTYPE cache PUBLIC
+  "-//GemStone Systems, Inc.//GemFire Declarative Caching 6.5//EN"
+  "http://www.gemstone.com/dtd/cache6_5.dtd">
+<cache>
+  <cache-server port="50506" />
+    <region name="root">
+      <region-attributes scope="distributed-no-ack"/>
+    </region>
+    <region name="listenerWriterLoader">
+      <region-attributes scope="distributed-ack" mirror-type="keys-values"/>  
+    </region>
+    <region name="Portfolios">
+      <region-attributes scope="distributed-ack" mirror-type="keys-values">
+        <value-constraint>javaobject.Portfolio</value-constraint>
+      </region-attributes>
+      <entry>
+      <key><string>1</string></key>
+      <value>
+        <declarable>
+          <class-name>javaobject.Portfolio</class-name>
+          <parameter name="ID">
+            <string>1</string>
+          </parameter>
+          <parameter name="pkid">
+            <string>1</string>
+          </parameter>
+          <parameter name="type">
+            <string>type1</string>
+          </parameter>
+          <parameter name="status">
+            <string>active</string>
+          </parameter>
+          <parameter name="newVal">
+            <string>CCCCC</string>
+          </parameter>
+          <parameter name="position1">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>SUN</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>3900</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>3400.893475</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>3400</string>
+                </parameter>
+                <parameter name="secType">
+                    <string>r</string>
+                </parameter>
+                <parameter name="pid">
+                    <string>345</string>
+                </parameter>
+            </declarable>
+          </parameter>
+          <parameter name="position2">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>IBM</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>4600</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>9900.884732</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>8765</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>p</string>
+                </parameter>
+                <parameter name="pid">
+                   <string>123</string>
+                </parameter>
+            </declarable>
+          </parameter>
+        </declarable>
+      </value>
+     </entry>
+     <entry>
+      <key><string>2</string></key>
+      <value>
+        <declarable>
+          <class-name>javaobject.Portfolio</class-name>
+          <parameter name="ID">
+            <string>2</string>
+          </parameter>
+          <parameter name="pkid">
+            <string>2</string>
+          </parameter>
+          <parameter name="type">
+            <string>type2</string>
+          </parameter>
+          <parameter name="status">
+            <string>inactive</string>
+          </parameter>
+          <parameter name="position1">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>YHOO</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>3900</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>3400.893475</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>9834</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>y</string>
+                </parameter>
+                <parameter name="pid">
+                    <string>129</string>
+                </parameter>
+            </declarable>
+          </parameter>
+          <parameter name="position2">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>GOOG</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>3900</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>3400.893475</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>834</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>t</string>
+                </parameter>
+                <parameter name="pid">
+                    <string>569</string>
+                </parameter>
+            </declarable>
+          </parameter>
+        </declarable>
+      </value>
+    </entry>
+
+     <entry>
+      <key><string>3</string></key>
+      <value>
+        <declarable>
+          <class-name>javaobject.Portfolio</class-name>
+          <parameter name="ID">
+            <string>3</string>
+          </parameter>
+          <parameter name="pkid">
+            <string>3</string>
+          </parameter>
+          <parameter name="type">
+            <string>type3</string>
+          </parameter>
+          <parameter name="status">
+            <string>active</string>
+          </parameter>
+          <parameter name="position1">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>MSFT</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>3900</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>3400.893475</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>1834</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>o</string>
+                </parameter>
+                <parameter name="pid">
+                    <string>545</string>
+                </parameter>
+            </declarable>
+          </parameter>
+          <parameter name="position2">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>AOL</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>3900</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>3400.893475</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>8354</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>t</string>
+                </parameter>
+                <parameter name="pid">
+                    <string>987</string>
+                </parameter>
+            </declarable>
+          </parameter>
+        </declarable>
+      </value>
+    </entry>
+
+     <entry>
+      <key><string>4</string></key>
+      <value>
+        <declarable>
+          <class-name>javaobject.Portfolio</class-name>
+          <parameter name="ID">
+            <string>4</string>
+          </parameter>
+          <parameter name="pkid">
+            <string>4</string>
+          </parameter>
+          <parameter name="type">
+            <string>type1</string>
+          </parameter>
+          <parameter name="status">
+            <string>inactive</string>
+          </parameter>
+          <parameter name="position1">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>APPL</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>3900</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>3400.893475</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>3654</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>d</string>
+                </parameter>
+                <parameter name="pid">
+                    <string>287</string>
+                </parameter>
+            </declarable>
+          </parameter>
+          <parameter name="position2">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>ORCL</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>3900</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>3400.893475</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>5344</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>k</string>
+                </parameter>
+                <parameter name="pid">
+                    <string>567</string>
+                </parameter>
+            </declarable>
+          </parameter>
+        </declarable>
+      </value>
+    </entry>
+
+     <entry>
+      <key><string>5</string></key>
+      <value>
+        <declarable>
+          <class-name>javaobject.Portfolio</class-name>
+          <parameter name="ID">
+            <string>5</string>
+          </parameter>
+          <parameter name="pkid">
+            <string>5</string>
+          </parameter>
+          <parameter name="type">
+            <string>type2</string>
+          </parameter>
+          <parameter name="status">
+            <string>active</string>
+          </parameter>
+          <parameter name="position1">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>SAP</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>3900</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>3400.893475</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>3344</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>k</string>
+                </parameter>
+                <parameter name="pid">
+                    <string>432</string>
+                </parameter>
+            </declarable>
+          </parameter>
+          <parameter name="position2">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>DELL</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>3900</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>3400.893475</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>5354</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>u</string>
+                </parameter>
+                <parameter name="pid">
+                    <string>467</string>
+                </parameter>
+            </declarable>
+          </parameter>
+        </declarable>
+      </value>
+    </entry>    
+  </region>
+</cache> 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cacheRunner/tcr_cache.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cacheRunner/tcr_cache.xml b/geode-client-native/examples/dist/cacheRunner/tcr_cache.xml
new file mode 100755
index 0000000..3e07b26
--- /dev/null
+++ b/geode-client-native/examples/dist/cacheRunner/tcr_cache.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Well-formed and valid xml file -->
+<cache>
+  <region name = "root" >
+    <region-attributes caching-enabled="true" >
+      <region-idle-time>
+        <expiration-attributes timeout="0" action="destroy"/> 
+      </region-idle-time>
+      <entry-idle-time>
+        <expiration-attributes timeout="0" action="invalidate"/>
+      </entry-idle-time>
+      <region-time-to-live>
+        <expiration-attributes timeout="0" action="local-destroy"/>
+      </region-time-to-live>
+      <entry-time-to-live>
+        <expiration-attributes timeout="0" action="local-invalidate"/>
+      </entry-time-to-live>
+    </region-attributes>
+  </region>
+  <pool name="examplePool"  subscription-enabled="true" >
+    <server host="localhost" port="50505" />    
+  </pool> 
+  <region name = "listenerWriterLoader" >
+     <region-attributes  refid="CACHING_PROXY" pool-name="examplePool"/>
+  </region>																
+</cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cacheRunner/tcr_cacheless.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cacheRunner/tcr_cacheless.xml b/geode-client-native/examples/dist/cacheRunner/tcr_cacheless.xml
new file mode 100755
index 0000000..1828c51
--- /dev/null
+++ b/geode-client-native/examples/dist/cacheRunner/tcr_cacheless.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Well-formed and valid xml file -->
+<cache>
+  <region name = "root" >
+    <region-attributes caching-enabled="true" >
+      <region-idle-time>
+        <expiration-attributes timeout="0" action="destroy"/> 
+      </region-idle-time>
+      <entry-idle-time>
+        <expiration-attributes timeout="0" action="invalidate"/>
+      </entry-idle-time>
+      <region-time-to-live>
+        <expiration-attributes timeout="0" action="local-destroy"/>
+      </region-time-to-live>
+      <entry-time-to-live>
+        <expiration-attributes timeout="0" action="local-invalidate"/>
+      </entry-time-to-live>
+    </region-attributes>
+  </region>
+  <pool name="examplePool"  subscription-enabled="true" >
+    <server host="localhost" port="50505" />    
+  </pool> 
+  <region name = "listenerWriterLoader" >
+     <region-attributes refid="PROXY" pool-name="examplePool" >
+     </region-attributes>
+  </region>	
+  <region name = "Portfolios" >
+     <region-attributes refid="PROXY" pool-name="examplePool" >
+     </region-attributes>
+  </region>
+																
+</cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cacheRunner/tcr_hacache.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cacheRunner/tcr_hacache.xml b/geode-client-native/examples/dist/cacheRunner/tcr_hacache.xml
new file mode 100644
index 0000000..071303d
--- /dev/null
+++ b/geode-client-native/examples/dist/cacheRunner/tcr_hacache.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Well-formed and valid xml file -->
+<cache>
+  <region name = "root" >
+    <region-attributes caching-enabled="true" >
+      <region-idle-time>
+        <expiration-attributes timeout="0" action="destroy"/> 
+      </region-idle-time>
+      <entry-idle-time>
+        <expiration-attributes timeout="0" action="invalidate"/>
+      </entry-idle-time>
+      <region-time-to-live>
+        <expiration-attributes timeout="0" action="local-destroy"/>
+      </region-time-to-live>
+      <entry-time-to-live>
+        <expiration-attributes timeout="0" action="local-invalidate"/>
+      </entry-time-to-live>
+    </region-attributes>
+  </region>
+   <pool name="examplePool"  subscription-enabled="true" subscription-redundancy="1">
+    <server host="localhost" port="50505" />    
+    <server host="localhost" port="50506" />    
+  </pool> 
+  <region name = "listenerWriterLoader" >
+     <region-attributes refid="CACHING_PROXY"  pool-name="examplePool">
+     </region-attributes>
+  </region>	
+  <region name = "Portfolios" >
+     <region-attributes refid="CACHING_PROXY"  pool-name="examplePool" >
+     </region-attributes>
+  </region>
+															
+</cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cacheRunner/tcr_hacacheless.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cacheRunner/tcr_hacacheless.xml b/geode-client-native/examples/dist/cacheRunner/tcr_hacacheless.xml
new file mode 100644
index 0000000..572f4df
--- /dev/null
+++ b/geode-client-native/examples/dist/cacheRunner/tcr_hacacheless.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Well-formed and valid xml file -->
+<cache>
+  <region name = "root" >
+    <region-attributes caching-enabled="true" >
+      <region-idle-time>
+        <expiration-attributes timeout="0" action="destroy"/> 
+      </region-idle-time>
+      <entry-idle-time>
+        <expiration-attributes timeout="0" action="invalidate"/>
+      </entry-idle-time>
+      <region-time-to-live>
+        <expiration-attributes timeout="0" action="local-destroy"/>
+      </region-time-to-live>
+      <entry-time-to-live>
+        <expiration-attributes timeout="0" action="local-invalidate"/>
+      </entry-time-to-live>
+    </region-attributes>
+  </region>
+   <pool name="examplePool"  subscription-enabled="true" subscription-redundancy="1">
+    <server host="localhost" port="50505" />    
+    <server host="localhost" port="50506" />    
+  </pool> 
+  <region name = "listenerWriterLoader" >
+     <region-attributes refid="PROXY"  pool-name="examplePool"/>
+  </region>	
+  <region name = "Portfolios" >
+     <region-attributes refid="PROXY"  pool-name="examplePool"/>
+  </region>
+															
+</cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cqQuery/CqQuery.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cqQuery/CqQuery.cpp b/geode-client-native/examples/dist/cqQuery/CqQuery.cpp
new file mode 100644
index 0000000..971f9db
--- /dev/null
+++ b/geode-client-native/examples/dist/cqQuery/CqQuery.cpp
@@ -0,0 +1,385 @@
+/*
+ * The Continuous Query Example.
+ *
+ * This example takes the following steps:
+ *
+ */
+
+// Include the GemFire library.
+#include <gfcpp/GemfireCppCache.hpp>
+
+// Include the Query headers.
+#include <gfcpp/SelectResultsIterator.hpp>
+#include <gfcpp/CqQuery.hpp>
+#include <gfcpp/CqAttributesFactory.hpp>
+
+// Include our Query objects, viz. Portfolio and Position.
+#include "Portfolio.hpp"
+#include "Position.hpp"
+#include "string.h"
+
+// Use the "gemfire" namespace.
+using namespace gemfire;
+
+// Use the "testobject" namespace for the query objects.
+using namespace testobject;
+
+#define MAX_LISTNER  8
+
+const char* cqNames[MAX_LISTNER] = {
+  (const char*)"MyCq_0",
+  (const char*)"MyCq_1",
+  (const char*)"MyCq_2",
+  (const char*)"MyCq_3",
+  (const char*)"MyCq_4",
+  (const char*)"MyCq_5",
+  (const char*)"MyCq_6",
+  (const char*)"MyCq_7"
+};
+
+const char* queryStrings[MAX_LISTNER] = {
+  (const char*)"select * from /Portfolios p where p.ID < 4",
+  (const char*)"select * from /Portfolios p where p.ID < 9",
+  (const char*)"select * from /Portfolios p where p.ID < 12",
+  (const char*)"select * from /Portfolios p where p.ID < 3",
+  (const char*)"select * from /Portfolios p where p.ID < 14",
+  (const char*)"select * from /Portfolios p where p.ID < 5",
+  (const char*)"select * from /Portfolios p where p.ID < 6",
+  (const char*)"select * from /Portfolios p where p.ID < 7"
+};
+
+class MyCqListener : public CqListener {
+  uint32_t m_updateCnt;
+  uint32_t m_createCnt;
+  uint32_t m_destroyCnt;
+  uint32_t m_errorCnt;
+  uint32_t m_eventCnt;
+  uint32_t m_id;
+  bool m_verbose;
+  public:
+  MyCqListener(uint32_t id, bool verbose=false):
+    m_updateCnt(0),
+    m_createCnt(0),
+    m_destroyCnt(0),
+    m_errorCnt(0),
+    m_eventCnt(0),
+    m_id(id),
+    m_verbose(verbose)
+  {
+  }
+  void onEvent(const CqEvent& cqe){
+    m_eventCnt++;
+    CqQueryPtr cq = cqe.getCq();
+    char* opStr = (char*)"Default";
+    PortfolioPtr portfolio( dynamic_cast<Portfolio*> (cqe.getNewValue().ptr() ));
+    CacheableStringPtr key( dynamic_cast<CacheableString*> (cqe.getKey().ptr() ));
+    switch (cqe.getQueryOperation())
+      {
+        case CqOperation::OP_TYPE_CREATE:
+	  {
+            opStr = (char*)"CREATE";
+	    m_createCnt++;
+            break;
+	  }
+        case CqOperation::OP_TYPE_UPDATE:
+	  {
+            opStr = (char*)"UPDATE";
+	    m_updateCnt++;
+            break;
+	  }
+        case CqOperation::OP_TYPE_DESTROY:
+	  {
+            opStr = (char*)"DESTROY";
+	    m_destroyCnt++;
+            break;
+	  }
+        default:
+          break;
+       }
+       if(m_eventCnt%5000==0)
+       {
+          if(m_verbose)
+          {
+             LOGINFO("MyCqListener[%d]::OnEvent called with %s, key[%s], value=(%ld,%s)",
+	             m_id, opStr, key->asChar(), portfolio->getID(), portfolio->getPkid()->asChar()); 
+             LOGINFO("MyCqListener[%d]::OnEvent portfolio %s", m_id, portfolio->toString()->asChar()); 
+          }else 
+          {
+             LOGINFO("cq[%s], listener[%d]::OnEvent update Count=%d,create Count=%d, destroy Count=%d, total count=%d",
+                     cq->getName(), m_updateCnt, m_createCnt, m_destroyCnt, m_eventCnt);
+	  }
+          LOGINFO("************Type \'q\' to quit!!!!*****************");
+       }
+  }
+
+  void onError(const CqEvent& cqe){
+       m_eventCnt++;
+       m_errorCnt++;
+       if(m_verbose)
+          LOGINFO("MyCqListener::OnError called");
+  }
+
+  void close(){
+    m_eventCnt++;
+    if(m_verbose)
+       LOGINFO("MyCqListener::close called");
+  }
+};
+
+//Cache Listener
+class MyCacheListener : public CacheListener
+{
+  uint32_t m_eventCount;
+  bool m_verbose;
+
+  void check(const EntryEvent& event, const char* opStr)
+  {
+    m_eventCount++;
+    if(m_eventCount%5000==0)
+    {
+       if(m_verbose)
+       {
+          PortfolioPtr portfolio( dynamic_cast<Portfolio*> (event.getNewValue().ptr() ));
+          CacheableStringPtr key( dynamic_cast<CacheableString*> (event.getKey().ptr() ));
+          if(key!=NULLPTR && portfolio!=NULLPTR)
+          {
+            LOGINFO("CacheListener called with %s, key[%s], value=(%ld,%s)",
+   opStr, key->asChar(), portfolio->getID(), portfolio->getPkid()->asChar()); 
+          }
+       } else 
+       {
+          LOGINFO("cache listener event count=%d", m_eventCount);
+       }
+       LOGINFO("************Type \'q\' to quit!!!!*****************");
+    }
+  }
+
+  public:
+  MyCacheListener(bool verbose=false):
+    m_eventCount(0),
+    m_verbose(verbose)
+  {
+  }
+
+  virtual void afterCreate( const EntryEvent& event )
+  {
+    check(event, (const char*)"Create");
+  }
+
+  virtual void afterUpdate( const EntryEvent& event )
+  {
+    check(event, (const char*)"Update");
+  }
+  virtual void afterRegionInvalidate( const RegionEvent& event ) 
+  {
+    LOGINFO("afterRegionInvalidate called.");
+  }
+  virtual void afterRegionDestroy( const RegionEvent& event )
+  {
+    LOGINFO("afterRegionDestroy called.");
+  }
+  virtual void afterRegionLive( const RegionEvent& event )
+  {
+    LOGINFO("afterRegionLive called.");
+  }
+
+};
+
+// The CqQuery example.
+int main(int argc, char ** argv)
+{
+  if(argc>2)
+  {
+    LOGINFO("usage: %s, [-v] \n -v indicate verbose ", argv[0]);
+    return -1;
+  }
+  bool verbose = false;
+
+  if(argc==2 && !strcmp(argv[1], "-v"))
+      verbose = true;
+  try
+  {
+   
+    // Create the GemFire cache using the settings from the gfcpp.properties file by default.
+    PropertiesPtr prptr = Properties::create();
+    prptr->insert("cache-xml-file", "XMLs/clientCqQuery.xml");
+
+    CacheFactoryPtr cacheFactory = CacheFactory::createCacheFactory(prptr);
+   
+    CachePtr cachePtr = cacheFactory->setSubscriptionEnabled(true)->create();
+
+    LOGINFO("Created the GemFire Cache");
+
+    // Get the Portfolios Region from the Cache which is declared in the Cache XML file.
+    RegionPtr regionPtr = cachePtr->getRegion("Portfolios");
+    AttributesMutatorPtr attrMutator = regionPtr->getAttributesMutator();
+    CacheListenerPtr ptr(new MyCacheListener(verbose));
+    attrMutator->setCacheListener(ptr);
+
+    LOGINFO("Obtained the Region from the Cache");
+
+    // Register our Serializable/Cacheable Query objects, viz. Portfolio and Position.
+    Serializable::registerType( Portfolio::createDeserializable);
+    Serializable::registerType( Position::createDeserializable);
+
+    LOGINFO("Registered Serializable Query Objects");
+
+    regionPtr->registerAllKeys(false, NULLPTR, true);
+
+    // Populate the Region with some Portfolio objects.
+    PortfolioPtr port1Ptr(new Portfolio(1 /*ID*/, 10 /*size*/));
+    PortfolioPtr port2Ptr(new Portfolio(2 /*ID*/, 20 /*size*/));
+    PortfolioPtr port3Ptr(new Portfolio(3 /*ID*/, 30 /*size*/));
+    regionPtr->put("Key1", port1Ptr);
+    regionPtr->put("Key2", port2Ptr);
+    regionPtr->put("Key3", port3Ptr);
+
+    LOGINFO("Populated some Portfolio Objects");
+
+    // Get the QueryService from the Cache.
+    QueryServicePtr qrySvcPtr = cachePtr->getQueryService();
+
+    //Create CqAttributes and Install Listener
+    CqAttributesFactory cqFac;
+    CqListenerPtr cqLstner (new MyCqListener(0, verbose));
+    cqFac.addCqListener(cqLstner);
+    CqAttributesPtr cqAttr = cqFac.create();
+
+    //create a new Cq Query
+    CqQueryPtr qry = qrySvcPtr->newCq(cqNames[0], queryStrings[0], cqAttr); 
+  
+    //execute Cq Query with initial Results
+    CqResultsPtr resultsPtr  = qry->executeWithInitialResults();
+    
+    LOGINFO("ResultSet Query returned %d rows", resultsPtr->size());
+
+    // Iterate through the rows of the query result.
+    SelectResultsIterator iter = resultsPtr->getIterator();
+    
+    while (iter.hasNext())
+    {
+        SerializablePtr ser = iter.next();
+        if (ser != NULLPTR) {
+          LOGINFO (" query pulled object %s\n", ser->toString()->asChar());
+          
+          StructPtr stPtr(dynamic_cast<Struct*>  (ser.ptr() ));                    
+          if (stPtr != NULLPTR)
+          {
+            LOGINFO(" got struct ptr ");
+            SerializablePtr serKey = (*(stPtr.ptr()))["key"];           
+            if (serKey != NULLPTR)
+            {
+              LOGINFO("got struct key %s\n", serKey->toString()->asChar());
+            }
+              
+            SerializablePtr serVal = (*(stPtr.ptr()))["value"];
+            
+            if (serVal != NULLPTR)
+            {
+              LOGINFO("  got struct value %s\n", serVal->toString()->asChar());
+            }
+          }
+        }
+        else {
+          printf("query pulled bad object\n");
+        }       
+    }
+    // Stop the GemFire Continuous query.
+    qry->stop();
+    //restart Cq Query with initial Results
+    qry->execute();
+
+    for(int i=1; i < MAX_LISTNER; i++)
+    {
+      CqListenerPtr cqLstner1(new MyCqListener(i, verbose));
+      cqFac.addCqListener(cqLstner1);
+      cqAttr = cqFac.create();
+      qry = qrySvcPtr->newCq(cqNames[i], queryStrings[i], cqAttr);
+    }
+
+    qry = qrySvcPtr->getCq(cqNames[6]);
+    cqAttr = qry->getCqAttributes();
+    VectorOfCqListener vl;
+    cqAttr->getCqListeners(vl);
+    LOGINFO("number of listeners for cq[%s] is %d", cqNames[6], vl.size());
+
+    qry = qrySvcPtr->getCq(cqNames[0]);
+    CqAttributesMutatorPtr cqAttrMtor = qry->getCqAttributesMutator();
+    for(int32_t i=0; i < vl.size(); i++)
+    {
+      CqListenerPtr ptr = vl[i];
+      cqAttrMtor->addCqListener(ptr);
+    }
+
+    // Stop the GemFire Continuous query.
+    qry->stop();
+
+    //start all Cq Query
+    qrySvcPtr->executeCqs();
+
+    for(int i=0; i < MAX_LISTNER; i++)
+    {
+       LOGINFO("get info for cq[%s]:", cqNames[i]);
+       CqQueryPtr cqy = qrySvcPtr->getCq(cqNames[i]);
+       CqStatisticsPtr cqStats = cqy->getStatistics();
+       LOGINFO("Cq[%s]: CqStatistics: numInserts[%d], numDeletes[%d], numUpdates[%d], numEvents[%d]", 
+                     cqNames[i], cqStats->numInserts(), cqStats->numDeletes(), cqStats->numUpdates(), cqStats->numEvents());
+     }
+
+     CqServiceStatisticsPtr serviceStats = qrySvcPtr->getCqServiceStatistics();
+     LOGINFO("numCqsActive=%d, numCqsCreated=%d, numCqsClosed=%d,numCqsStopped=%d, numCqsOnClient=%d", 
+                     serviceStats->numCqsActive(), serviceStats->numCqsCreated(),
+     serviceStats->numCqsClosed(), serviceStats->numCqsStopped(),
+     serviceStats->numCqsOnClient());
+
+    LOGINFO("***************************************************");
+    LOGINFO("***************************************************");
+    LOGINFO("***************************************************");
+    LOGINFO("************Type \'q\' to quit!!!!*****************");
+    LOGINFO("***************************************************");
+    LOGINFO("***************************************************");
+    LOGINFO("***************************************************");
+    while(1)
+    {
+      char in[2];
+      fscanf(stdin, "%s",in);
+      if(in[0]=='q')
+	break;
+    }
+
+    // Stop all the GemFire Continuous query.
+    qrySvcPtr->stopCqs();
+
+    for(int i=0; i < MAX_LISTNER; i++)
+    {
+       LOGINFO("get info for cq[%s]:", cqNames[i]);
+       CqQueryPtr cqy = qrySvcPtr->getCq(cqNames[i]);
+       cqAttr = cqy->getCqAttributes();
+       cqAttr->getCqListeners(vl);
+       LOGINFO("number of listeners for cq[%s] is %d", cqNames[i], vl.size());
+
+       CqStatisticsPtr cqStats = cqy->getStatistics();
+       LOGINFO("Cq[%s]: CqStatistics: numInserts[%d], numDeletes[%d], numUpdates[%d], numEvents[%d]", 
+                   cqNames[i], cqStats->numInserts(), cqStats->numDeletes(), cqStats->numUpdates(), cqStats->numEvents());
+     }
+
+    // Close all the GemFire Continuous query.
+    qrySvcPtr->closeCqs();
+    LOGINFO("numCqsActive=%d, numCqsCreated=%d, numCqsClosed=%d,numCqsStopped=%d, numCqsOnClient=%d", 
+                   serviceStats->numCqsActive(), serviceStats->numCqsCreated(),
+      serviceStats->numCqsClosed(), serviceStats->numCqsStopped(),
+      serviceStats->numCqsOnClient());
+
+    // Close the GemFire Cache.
+    cachePtr->close();
+
+    LOGINFO("Closed the GemFire Cache");
+
+  }
+  // An exception should not occur
+  catch(const Exception & gemfireExcp)
+  {
+    LOGERROR("CqQuery GemFire Exception: %s", gemfireExcp.getMessage());
+  }
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cqQuery/README.html
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cqQuery/README.html b/geode-client-native/examples/dist/cqQuery/README.html
new file mode 100644
index 0000000..fdeef4d
--- /dev/null
+++ b/geode-client-native/examples/dist/cqQuery/README.html
@@ -0,0 +1,335 @@
+<html xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:w="urn:schemas-microsoft-com:office:word"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
+<meta name=ProgId content=Word.Document>
+<meta name=Generator content="Microsoft Word 11">
+<meta name=Originator content="Microsoft Word 11">
+<link rel=File-List href="README_files/filelist.xml">
+<title>cqQuery: Pivotal GemFire&#174; Native Client C++ Example</title>
+<!--[if gte mso 9]><xml>
+ <o:DocumentProperties>
+  <o:Author>qhe</o:Author>
+  <o:Template>Normal</o:Template>
+  <o:LastAuthor>qhe</o:LastAuthor>
+  <o:Revision>9</o:Revision>
+  <o:TotalTime>8</o:TotalTime>
+  <o:Created>2008-10-29T17:48:00Z</o:Created>
+  <o:LastSaved>2008-10-29T18:11:00Z</o:LastSaved>
+  <o:Pages>1</o:Pages>
+  <o:Words>429</o:Words>
+  <o:Characters>2446</o:Characters>
+  <o:Company>GemStone Systems, Inc.</o:Company>
+  <o:Lines>20</o:Lines>
+  <o:Paragraphs>5</o:Paragraphs>
+  <o:CharactersWithSpaces>2870</o:CharactersWithSpaces>
+  <o:Version>11.6360</o:Version>
+ </o:DocumentProperties>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:WordDocument>
+  <w:SpellingState>Clean</w:SpellingState>
+  <w:GrammarState>Clean</w:GrammarState>
+  <w:ValidateAgainstSchemas/>
+  <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
+  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
+  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
+  <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
+ </w:WordDocument>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:LatentStyles DefLockedState="false" LatentStyleCount="156">
+ </w:LatentStyles>
+</xml><![endif]-->
+<style>
+<!--
+ /* Style Definitions */
+ p.MsoNormal, li.MsoNormal, div.MsoNormal
+	{mso-style-parent:"";
+	margin:0in;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	font-family:"Times New Roman";
+	mso-fareast-font-family:"Times New Roman";}
+h1
+	{mso-margin-top-alt:auto;
+	margin-right:0in;
+	mso-margin-bottom-alt:auto;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	mso-outline-level:1;
+	font-size:24.0pt;
+	font-family:"Times New Roman";
+	font-weight:bold;}
+h2
+	{mso-margin-top-alt:auto;
+	margin-right:0in;
+	mso-margin-bottom-alt:auto;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	mso-outline-level:2;
+	font-size:18.0pt;
+	font-family:"Times New Roman";
+	font-weight:bold;}
+h4
+	{mso-margin-top-alt:auto;
+	margin-right:0in;
+	mso-margin-bottom-alt:auto;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	mso-outline-level:4;
+	font-size:12.0pt;
+	font-family:"Times New Roman";
+	font-weight:bold;}
+p
+	{font-size:12.0pt;
+	font-family:"Times New Roman";
+	mso-fareast-font-family:"Times New Roman";}
+code
+	{font-family:"Courier New";
+	mso-ascii-font-family:"Courier New";
+	mso-fareast-font-family:"Times New Roman";
+	mso-hansi-font-family:"Courier New";
+	mso-bidi-font-family:"Courier New";}
+span.SpellE
+	{mso-style-name:"";
+	mso-spl-e:yes;}
+span.GramE
+	{mso-style-name:"";
+	mso-gram-e:yes;}
+@page Section1
+	{size:8.5in 11.0in;
+	margin:1.0in 1.25in 1.0in 1.25in;
+	mso-header-margin:.5in;
+	mso-footer-margin:.5in;
+	mso-paper-source:0;}
+div.Section1
+	{page:Section1;}
+ /* List Definitions */
+ @list l0
+	{mso-list-id:226569577;
+	mso-list-template-ids:-1947287032;}
+@list l0:level2
+	{mso-level-text:"%2\)";
+	mso-level-tab-stop:1.0in;
+	mso-level-number-position:left;
+	text-indent:-.25in;}
+ol
+	{margin-bottom:0in;}
+ul
+	{margin-bottom:0in;}
+-->
+</style>
+<!--[if gte mso 10]>
+<style>
+ /* Style Definitions */
+ table.MsoNormalTable
+	{mso-style-name:"Table Normal";
+	mso-tstyle-rowband-size:0;
+	mso-tstyle-colband-size:0;
+	mso-style-noshow:yes;
+	mso-style-parent:"";
+	mso-padding-alt:0in 5.4pt 0in 5.4pt;
+	mso-para-margin:0in;
+	mso-para-margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:10.0pt;
+	font-family:"Times New Roman";
+	mso-ansi-language:#0400;
+	mso-fareast-language:#0400;
+	mso-bidi-language:#0400;}
+</style>
+<![endif]-->
+<meta http-equiv=Content-Style-Type content="text/css">
+</head>
+
+<IMG SRC="../../../docs/PIVOTAL_GemFire_190x81.png" BORDER="0">
+<body lang=EN-US link=blue vlink=blue style='tab-interval:.5in'>
+
+<div class=Section1>
+
+<div>
+
+<h1 align=center style='text-align:center'><span class=SpellE><span
+class=GramE>cqQuery</span></span></h1>
+
+<h2 align=center style='text-align:center'>Pivotal<b><sup><font size=-0>&#8482;</font></sup></b> GemFire<b><sup><font size=-0>&#174;</font></sup></b> Native Client </h2>
+
+<h2 align=center style='text-align:center'>C++ Programming Example</h2>
+
+</div>
+
+<div>
+
+<h2><br>
+About the <span class=SpellE>cqQuery</span> Example </h2>
+
+<p>The <span class=SpellE><code><span style='font-size:10.0pt'>cqQuery</span></code></span>
+example demonstrates the native client C++ API for continuous query. The <span
+class=SpellE><code><span style='font-size:10.0pt'>cqQuery</span></code></span>
+example is located in <span class=SpellE><code><span style='font-size:10.0pt'>SampleCode_InstallDir/examples/cqQuery</span></code></span>.</p>
+
+<p>The client application comes with a cache configuration file, <code><span
+style='font-size:10.0pt'><a href="XMLs/clientCqQuery.xml"
+target="_blank"><span class=SpellE><span style='font-size:12.0pt;font-family:
+"Times New Roman"'>clientCqQuery.xml</span></span></a></span></code>, which is
+configured to create a root region and establish the native client endpoints to
+the locally-run server by specifying <code><span style='font-size:10.0pt'>localhost<span
+class=GramE>:50505</span></span></code>. If java server is located on another
+host, you can change <span class=SpellE>localhost</span> to that host
+accordingly.</p>
+
+</div>
+
+<div>
+
+<h2><a name="configuring_environment"></a>Configuring the Environment </h2>
+
+</div>
+
+<div>
+
+<p>The following is a list of the environment configuration commands for the <span
+class=SpellE><code><span style='font-size:10.0pt'>cqQuery</span></code></span>
+example. Choose the set of commands that are appropriate for your operating
+system. The text that you type is shown in <code><b><span style='font-size:
+10.0pt'>bold</span></b></code>.</p>
+
+<p><strong>Bourne and <span class=SpellE>Korn</span> shells (<span
+class=SpellE>sh</span>, <span class=SpellE>ksh</span>, bash)</strong> </p>
+
+<blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'>
+
+<p><code><span style='font-size:10.0pt'>% </span></code><strong><span
+style='font-size:10.0pt;font-family:"Courier New"'>GFCPP=&lt;path to <span
+class=SpellE>NativeClient_InstallDir</span> directory&gt;; export GFCPP </span></strong><span
+style='font-size:10.0pt;font-family:"Courier New"'><br>
+<code>% </code><strong><span style='font-family:"Courier New"'>PATH=$GFCPP/<span
+class=SpellE>bin<span class=GramE>:$</span>PATH</span>; export PATH</span></strong><br>
+<code>% </code><strong><span style='font-family:"Courier New"'>LD_LIBRARY_PATH=$GFCPP/lib;
+export LD_LIBRARY_PATH</span></strong></span></p>
+
+</blockquote>
+
+<p><strong>Windows</strong></p>
+
+<blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'>
+
+<p><em>The Windows native client installer sets the required environment
+configurations for you, so they are listed for reference only.</em></p>
+
+<p style='margin-bottom:12.0pt'><strong><code><span style='font-size:10.0pt'>&gt;
+GFCPP=&lt;path to <span class=SpellE>NativeClient_InstallDir</span> directory&gt;</span></code><span
+style='font-size:10.0pt;font-family:"Courier New"'><br>
+<code>&gt; PATH=%GFCPP%\<span class=SpellE>bin<span class=GramE>;%</span>PATH</span>%</code><br
+style='mso-special-character:line-break'>
+<![if !supportLineBreakNewLine]><br style='mso-special-character:line-break'>
+<![endif]></span></strong></p>
+
+</blockquote>
+
+</div>
+
+<div>
+
+<h2>Running <span class=SpellE>cqQuery</span> </h2>
+
+<p>Follow these steps to run the <span class=SpellE><code><span
+style='font-size:10.0pt'>cqQuery</span></code></span> example. The steps
+reflect Windows operations, so alter them as needed for your operating system.</p>
+
+<p>When you're prompted to enter the name of the native client directory,
+replace the <span class=SpellE><code><span style='font-size:10.0pt'>xxxx</span></code></span>
+in <span class=SpellE><code><span style='font-size:10.0pt'>NativeClient_InstallDir</span></code></span>
+with the actual four-digit product version number. Note that step 1, 3, 4 can
+be run on other operating system hosts.</p>
+
+</div>
+
+<div>
+
+<p style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo1;
+tab-stops:list .5in'><![if !supportLists]><span style='mso-list:Ignore'>1.<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;</span></span><![endif]>Create
+a session, <span class=GramE>then</span> configure the session environment
+according to the steps listed in <a href="#configuring_environment">Configuring
+the Environment</a><a href="../envsetup.html" target="_blank"></a>.</p>
+
+<ol start=2 type=1>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l0 level1 lfo1;tab-stops:list .5in'>Go to the <span class=SpellE><code><span
+     style='font-size:10.0pt'>cqQuery</span></code></span> example directory.</li>
+</ol>
+
+<blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'>
+
+<p style='margin-left:.5in;text-indent:-.10in'><span class=SpellE><span class=GramE><code><b><span
+style='font-size:10.0pt'>cd NativeClient_InstallDir\SampleCode\examples\cqQuery</span></span></b></code></p>
+
+</blockquote>
+
+<ol start=3 type=1>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l0 level1 lfo1;tab-stops:list .5in'>Enter the following commands
+     to start the example: </li>
+</ol>
+
+<p style='margin-left:1.0in;text-indent:-.25in;mso-list:l0 level2 lfo1;
+tab-stops:list 1.0in'><![if !supportLists]><code><span style='mso-ansi-font-size:
+12.0pt;mso-bidi-font-size:12.0pt;font-family:"Times New Roman"'><span
+style='mso-list:Ignore'>1)<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span></code><![endif]><span class=SpellE><code><b><span
+style='font-size:10.0pt'>startServer.bat</span></b></code></span><code><span
+style='mso-ansi-font-size:12.0pt;mso-bidi-font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></code></p>
+
+<p style='margin-left:1.0in;text-indent:-.25in;mso-list:l0 level2 lfo1;
+tab-stops:list 1.0in'><![if !supportLists]><code><span style='mso-ansi-font-size:
+12.0pt;mso-bidi-font-size:12.0pt;font-family:"Times New Roman"'><span
+style='mso-list:Ignore'>2)<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span></code><![endif]><span class=SpellE><code><b><span
+style='font-size:10.0pt'>runCqQuery.bat</span></b></code></span><code><span
+style='mso-ansi-font-size:12.0pt;mso-bidi-font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></code></p>
+
+<p style='margin-left:1.0in;text-indent:-.25in;mso-list:l0 level2 lfo1;
+tab-stops:list 1.0in'><![if !supportLists]><code><span style='mso-ansi-font-size:
+12.0pt;mso-bidi-font-size:12.0pt;font-family:"Times New Roman"'><span
+style='mso-list:Ignore'>3)<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span></span></code><![endif]><code><b><span style='font-size:10.0pt'>In
+another window, <span class=SpellE>runUpdater.bat</span> &lt;<span
+class=SpellE>itr</span> number&gt;, where &lt;<span class=SpellE>itr</span>
+number&gt; is the number of iterations you want this program to run, <span
+class=SpellE>e.g</span>, 500.</span></b></code><code><span style='mso-ansi-font-size:
+12.0pt;mso-bidi-font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></code></p>
+
+<p style='margin-left:1.0in;text-indent:-.25in;mso-list:l0 level2 lfo1;
+tab-stops:list 1.0in'><![if !supportLists]><span style='mso-list:Ignore'>4)<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><![endif]><span
+class=SpellE><span class=GramE><code><b><span style='font-size:10.0pt'>stopServer.bat</span></b></code></span></span><code><b><span
+style='font-size:10.0pt'> when finished.</span></b></code></p>
+
+<p class=MsoNormal><o:p>&nbsp;</o:p></p>
+
+</div>
+
+<div>
+
+<h2>Changing System Parameters</h2>
+
+<p style='margin-bottom:12.0pt'>By default, this product ships configured for
+multicast membership resolution. If your network environment does not allow
+multicast, you can configure GemFire for <span class=SpellE>unicast</span>. See
+the <em>GemFire User's Guide</em> for instructions
+on configuring TCP transport for membership and discovery. </p>
+
+</div>
+
+<p class=MsoNormal><a href="#Top">Top</a> </p>
+
+<p><br>
+<p><span class=GramE>Copyright &#169; 2006-2014 Pivotal Software, Inc. All rights reserved.  This product is protected by U.S. and international copyright and intellectual property laws. Pivotal products are covered by one or more patents listed at http://www.pivotal.io/patents.</p>
+</div>
+
+</body>
+
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cqQuery/Updater.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cqQuery/Updater.cpp b/geode-client-native/examples/dist/cqQuery/Updater.cpp
new file mode 100644
index 0000000..340f653
--- /dev/null
+++ b/geode-client-native/examples/dist/cqQuery/Updater.cpp
@@ -0,0 +1,95 @@
+/*
+ * The Continuous Query QuickStart Example.
+ *
+ * This example takes the following steps:
+ *
+ */
+
+// Include the GemFire library.
+#include <gfcpp/GemfireCppCache.hpp>
+
+// Include our Query objects, viz. Portfolio and Position.
+#include "Portfolio.hpp"
+#include "Position.hpp"
+
+// Use the "gemfire" namespace.
+using namespace gemfire;
+
+// Use the "testobject" namespace for the query objects.
+using namespace testobject;
+
+// The CqQuery QuickStart example.
+int main(int argc, char ** argv)
+{
+  if(argc!=2)
+  {
+    LOGINFO("usage: %s, <iteration count>", argv[0]);
+    return -1;
+  }
+  int itrCnt=atoi(argv[1]);
+  try
+  {
+
+    // Create the GemFire cache using the settings from the gfcpp.properties file by default.
+    PropertiesPtr prptr = Properties::create();
+    prptr->insert("cache-xml-file", "XMLs/clientCqQuery.xml");
+
+    CacheFactoryPtr cacheFactory = CacheFactory::createCacheFactory(prptr);
+   
+    CachePtr cachePtr = cacheFactory->setSubscriptionEnabled(true)->create();       
+
+    LOGINFO("Created the GemFire Cache");
+
+    // Get the Portfolios Region from the Cache which is declared in the Cache XML file.
+    RegionPtr regionPtr = cachePtr->getRegion("Portfolios");
+
+    LOGINFO("Obtained the Region from the Cache");
+
+    // Register our Serializable/Cacheable Query objects, viz. Portfolio and Position.
+    Serializable::registerType( Portfolio::createDeserializable);
+    Serializable::registerType( Position::createDeserializable);
+
+    LOGINFO("Registered Serializable Query Objects");
+
+    // Populate the Region with some Portfolio objects.
+    for(int i =0; i < 150; i++)
+    {
+      PortfolioPtr portPtr(new Portfolio(i /*ID*/, i*10 /*size*/));
+      char buf[128];
+      sprintf(buf, "Key%d", i);
+      regionPtr->put(buf, portPtr);
+    }
+
+    LOGINFO("Populated some Portfolio Objects");
+
+    //make change to generate cq events
+    while(itrCnt-- >0) 
+    {
+      if(itrCnt%10==0)
+	LOGINFO("%d iterations left", itrCnt);
+
+      int up = itrCnt%150 + 150;
+      for(int i =itrCnt%150; i < up; i++)
+      {
+        PortfolioPtr portPtr(new Portfolio(up-i /*ID*/, i*10 /*size*/));
+        char buf[128];
+        sprintf(buf, "Key%d", i);
+        regionPtr->put(buf, portPtr);
+      }
+    }
+
+    LOGINFO("finished updating");
+
+    // Close the GemFire Cache.
+    cachePtr->close();
+
+    LOGINFO("Closed the GemFire Cache");
+
+  }
+  // An exception should not occur
+  catch(const Exception & gemfireExcp)
+  {
+    LOGERROR("CqQuery GemFire Exception: %s", gemfireExcp.getMessage());
+  }
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cqQuery/XMLs/clientCqQuery.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cqQuery/XMLs/clientCqQuery.xml b/geode-client-native/examples/dist/cqQuery/XMLs/clientCqQuery.xml
new file mode 100644
index 0000000..73b5078
--- /dev/null
+++ b/geode-client-native/examples/dist/cqQuery/XMLs/clientCqQuery.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Well-formed and valid xml file -->
+<cache>
+  <region name = "exampleRegion" >
+     <region-attributes refid="PROXY" />
+  </region>	
+  <region name = "Portfolios" >
+     <region-attributes refid="PROXY" />
+  </region>	
+</cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cqQuery/XMLs/serverCqQuery.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cqQuery/XMLs/serverCqQuery.xml b/geode-client-native/examples/dist/cqQuery/XMLs/serverCqQuery.xml
new file mode 100644
index 0000000..f63bc54
--- /dev/null
+++ b/geode-client-native/examples/dist/cqQuery/XMLs/serverCqQuery.xml
@@ -0,0 +1,91 @@
+<?xml version="1.0"?>
+<!DOCTYPE cache PUBLIC
+  "-//GemStone Systems, Inc.//GemFire Declarative Caching 6.5//EN"
+  "http://www.gemstone.com/dtd/cache6_5.dtd">
+<cache>
+
+  <cache-server port="40404" />
+      
+    <region name="exampleRegion">
+      <region-attributes scope="distributed-ack" mirror-type="keys-values"/>
+    </region>
+    
+    <region name="Portfolios">
+    
+      <region-attributes scope="distributed-ack" mirror-type="keys-values">
+        <value-constraint>javaobject.Portfolio</value-constraint>
+      </region-attributes>
+      
+      <entry>
+      <key><string>Key1</string></key>
+      <value>
+        <declarable>
+          <class-name>javaobject.Portfolio</class-name>
+          <parameter name="ID">
+            <string>1</string>
+          </parameter>
+          <parameter name="pkid">
+            <string>1</string>
+          </parameter>
+          <parameter name="type">
+            <string>type1</string>
+          </parameter>
+          <parameter name="status">
+            <string>active</string>
+          </parameter>
+          <parameter name="newVal">
+            <string>CCCCC</string>
+          </parameter>
+          <parameter name="position1">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>SUN</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>3900</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>3400.893475</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>3400</string>
+                </parameter>
+                <parameter name="secType">
+                    <string>r</string>
+                </parameter>
+                <parameter name="pid">
+                    <string>345</string>
+                </parameter>
+            </declarable>
+          </parameter>
+          <parameter name="position2">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>IBM</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>4600</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>9900.884732</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>8765</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>p</string>
+                </parameter>
+                <parameter name="pid">
+                   <string>123</string>
+                </parameter>
+            </declarable>
+          </parameter>
+        </declarable>
+      </value>
+     </entry>
+     
+    </region>
+  
+</cache> 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cqQuery/buildit.bat
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cqQuery/buildit.bat b/geode-client-native/examples/dist/cqQuery/buildit.bat
new file mode 100644
index 0000000..19790a0
--- /dev/null
+++ b/geode-client-native/examples/dist/cqQuery/buildit.bat
@@ -0,0 +1,8 @@
+@echo off
+
+rem GFCPP must be set
+
+cl /MD /Zc:wchar_t /EHsc /GR /wd4996 /D_EXAMPLE /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NON_CONFORMING_SWPRINTFS /DWINVER=0x0500 /DBUILD_TESTOBJECT /I%GFCPP%/include /FeCqQuery.exe CqQuery.cpp Portfolio.cpp Position.cpp %GFCPP%/lib/gfcppcache.lib
+
+cl /MD /Zc:wchar_t /EHsc /GR /wd4996 /D_EXAMPLE /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NON_CONFORMING_SWPRINTFS /DWINVER=0x0500 /DBUILD_TESTOBJECT /I%GFCPP%/include /FeUpdater.exe Updater.cpp Portfolio.cpp Position.cpp %GFCPP%/lib/gfcppcache.lib
+del *.obj

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cqQuery/buildit.sh
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cqQuery/buildit.sh b/geode-client-native/examples/dist/cqQuery/buildit.sh
new file mode 100755
index 0000000..3e3e67c
--- /dev/null
+++ b/geode-client-native/examples/dist/cqQuery/buildit.sh
@@ -0,0 +1,52 @@
+#!/bin/bash
+
+
+if [ -z ${GFCPP:-} ]; then
+  echo GFCPP is not set.
+  exit 1
+fi
+
+echo Building GemFire CqQuery
+
+OPT=-O3
+LIBDIR=lib
+
+platform=`uname`
+is64bit=__IS_64_BIT__
+if [ "$platform" == "SunOS" ]; then
+  if [ $is64bit -eq 1 ]; then
+    ARCH="-xarch=v9"
+  else
+    ARCH="-xarch=v8plus"
+  fi
+  CC=CC
+  CXX_FLAGS="-mt -D_RWSTD_MULTI_THREAD -DTHREAD=MULTI \
+      -D_REENTRANT $OPT $ARCH \
+      -I$GFCPP/include \
+      -L$GFCPP/$LIBDIR \
+      -R$GFCPP/$LIBDIR \
+      -lgfcppcache -lrt -lpthread -lkstat"
+elif [ "$platform" == "Linux" ]; then
+  if [ $is64bit -eq 1 ]; then
+    ARCH="-m64"
+  else
+    ARCH="-m32"
+  fi
+  CC=g++
+  CXX_FLAGS="-D_REENTRANT $OPT -Wall $ARCH \
+      -I$GFCPP/include \
+      -Xlinker -rpath -Xlinker $GFCPP/$LIBDIR -L$GFCPP/$LIBDIR \
+      -lgfcppcache"
+else
+  echo "This script is not supported on this platform."
+  exit 1
+fi
+
+$CC  $CXX_FLAGS \
+    CqQuery.cpp \
+    Portfolio.cpp \
+    Position.cpp -o CqQuery 
+$CC  $CXX_FLAGS \
+    Updater.cpp \
+    Portfolio.cpp \
+    Position.cpp -o Updater 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cqQuery/cleanup.bat
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cqQuery/cleanup.bat b/geode-client-native/examples/dist/cqQuery/cleanup.bat
new file mode 100644
index 0000000..6b5118b
--- /dev/null
+++ b/geode-client-native/examples/dist/cqQuery/cleanup.bat
@@ -0,0 +1,7 @@
+@echo off
+
+echo Deleting GemFire Statistics and Log files...
+
+del /q *.gfs
+del /q gfecs\*.*
+rmdir gfecs

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cqQuery/cleanup.sh
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cqQuery/cleanup.sh b/geode-client-native/examples/dist/cqQuery/cleanup.sh
new file mode 100755
index 0000000..c78dfbf
--- /dev/null
+++ b/geode-client-native/examples/dist/cqQuery/cleanup.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+echo Deleting GemFire Statistics and Log files...
+
+rm -f *.gfs
+rm -f gfecs/*
+rmdir gfecs

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cqQuery/runCqQuery.bat
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cqQuery/runCqQuery.bat b/geode-client-native/examples/dist/cqQuery/runCqQuery.bat
new file mode 100644
index 0000000..4d2ba5b
--- /dev/null
+++ b/geode-client-native/examples/dist/cqQuery/runCqQuery.bat
@@ -0,0 +1,20 @@
+@echo off
+
+rem GFCPP must be set
+
+if not "%GFCPP%"=="" goto startexamples
+
+echo GFCPP is not set.
+goto finished
+
+
+:startexamples
+
+echo.
+echo Running GemFire C++ CqQuery example
+
+set PATH=%PATH%;%GFCPP%\bin;..\bin;
+
+
+call CqQuery.exe %1
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cqQuery/runCqQuery.sh
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cqQuery/runCqQuery.sh b/geode-client-native/examples/dist/cqQuery/runCqQuery.sh
new file mode 100644
index 0000000..aa0b701
--- /dev/null
+++ b/geode-client-native/examples/dist/cqQuery/runCqQuery.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+if [ -z ${GFCPP:-} ]; then
+  echo GFCPP is not set.
+  exit 1
+fi
+
+exname='CqQuery'
+
+echo Running GemFire C++ example ${exname} ...
+
+export PATH="${PATH}:${GEMFIRE}/bin"
+
+${exname} $*
+
+echo Finished example ${exname}.
+
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cqQuery/runUpdater.bat
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cqQuery/runUpdater.bat b/geode-client-native/examples/dist/cqQuery/runUpdater.bat
new file mode 100644
index 0000000..0e02555
--- /dev/null
+++ b/geode-client-native/examples/dist/cqQuery/runUpdater.bat
@@ -0,0 +1,20 @@
+@echo off
+
+rem GFCPP must be set
+
+if not "%GFCPP%"=="" goto startexamples
+
+echo GFCPP is not set.
+goto finished
+
+
+:startexamples
+
+echo.
+echo Running GemFire C++ CqQuery example
+
+set PATH=%PATH%;%GFCPP%\bin;..\bin;
+
+
+call Updater.exe %1
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cqQuery/runUpdater.sh
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cqQuery/runUpdater.sh b/geode-client-native/examples/dist/cqQuery/runUpdater.sh
new file mode 100755
index 0000000..124a679
--- /dev/null
+++ b/geode-client-native/examples/dist/cqQuery/runUpdater.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+if [ -z ${GFCPP:-} ]; then
+  echo GFCPP is not set.
+  exit 1
+fi
+
+exname='Updater'
+
+echo Running GemFire C++ example ${exname} ...
+
+export PATH="${PATH}:${GEMFIRE}/bin"
+
+${exname} $*
+
+echo Finished example ${exname}.
+
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cqQuery/startServer.bat
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cqQuery/startServer.bat b/geode-client-native/examples/dist/cqQuery/startServer.bat
new file mode 100644
index 0000000..8051a0d
--- /dev/null
+++ b/geode-client-native/examples/dist/cqQuery/startServer.bat
@@ -0,0 +1,32 @@
+@echo off
+
+rem GFCPP must be set
+rem GEMFIRE must be set
+
+
+if not "%GEMFIRE%"=="" goto startexamples
+
+echo GEMFIRE is not set.
+goto finished
+
+
+:startexamples
+
+
+:runexample
+
+echo.
+echo Running GemFire Server
+
+set CLASSPATH=%CLASSPATH%;../javaobject.jar;
+set PATH=%GEMFIRE%\bin;%PATH%;%GEMFIRE%\bin;..\bin;
+
+if not exist gfecs mkdir gfecs
+
+
+
+call cacheserver start cache-xml-file=../XMLs/serverCqQuery.xml mcast-port=35673 -dir=gfecs
+
+rem pause
+
+:finished

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cqQuery/startServer.sh
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cqQuery/startServer.sh b/geode-client-native/examples/dist/cqQuery/startServer.sh
new file mode 100755
index 0000000..979863d
--- /dev/null
+++ b/geode-client-native/examples/dist/cqQuery/startServer.sh
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+if [ -z ${GEMFIRE:-} ]; then
+  echo GEMFIRE is not set.
+  exit 1
+fi
+
+echo Running GemFire Server
+
+export CLASSPATH="${CLASSPATH}:../javaobject.jar"
+export PATH="${PATH}:${GEMFIRE}/bin"
+
+if [ ! -d gfecs ]
+then
+  mkdir gfecs
+fi
+
+   cacheserver start cache-xml-file=../XMLs/serverCqQuery.xml mcast-port=35673 -dir=gfecs
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cqQuery/stopServer.bat
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cqQuery/stopServer.bat b/geode-client-native/examples/dist/cqQuery/stopServer.bat
new file mode 100644
index 0000000..be16e9c
--- /dev/null
+++ b/geode-client-native/examples/dist/cqQuery/stopServer.bat
@@ -0,0 +1,21 @@
+@echo off
+
+rem GEMFIRE must be set
+
+
+if not "%GEMFIRE%"=="" goto startexamples
+
+echo GEMFIRE is not set.
+goto finished
+
+
+:startexamples
+
+echo.
+echo Stopping GemFire Server
+
+set PATH=%GEMFIRE%\bin;%PATH%;%GEMFIRE%\bin;..\bin;
+
+call cacheserver stop -dir=gfecs
+:finished
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cqQuery/stopServer.sh
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cqQuery/stopServer.sh b/geode-client-native/examples/dist/cqQuery/stopServer.sh
new file mode 100755
index 0000000..c4f4a9c
--- /dev/null
+++ b/geode-client-native/examples/dist/cqQuery/stopServer.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+if [ -z ${GEMFIRE:-} ]; then
+  echo GEMFIRE is not set.
+  exit 1
+fi
+
+
+echo Stop GemFire Server
+
+export PATH="${PATH}:${GEMFIRE}/bin"
+
+
+cacheserver stop -dir=gfecs
+
+echo Stopped Server
+
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/executeFunction/ExecuteFunctions.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/executeFunction/ExecuteFunctions.cpp b/geode-client-native/examples/dist/executeFunction/ExecuteFunctions.cpp
new file mode 100644
index 0000000..dc9dc4e
--- /dev/null
+++ b/geode-client-native/examples/dist/executeFunction/ExecuteFunctions.cpp
@@ -0,0 +1,287 @@
+/*
+ * The Execute Function Example.
+ *
+ */
+
+// Include the GemFire library.
+#include <gfcpp/GemfireCppCache.hpp>
+
+// Include the Execute function headers.
+#include <gfcpp/FunctionService.hpp>
+#include <gfcpp/Execution.hpp>
+#include <gfcpp/ResultCollector.hpp>
+#ifndef _WIN32
+#include <unistd.h>
+#else
+#include <windows.h>
+#endif
+
+// Use the "gemfire" namespace.
+using namespace gemfire;
+
+char* getFuncIName = (char*)"MultiGetFunctionI";
+char* putFuncIName = (char*)"MultiPutFunctionI";
+char* getFuncName = (char*)"MultiGetFunction";
+char* putFuncName = (char*)"MultiPutFunction";
+char* roFuncName = (char*)"RegionOperationsFunction";
+
+//customer Result collector
+class MyResultCollector : public ResultCollector
+{
+  public:
+   MyResultCollector():
+     m_resultList(CacheableVector::create()),
+     m_isResultReady(false),
+     m_endResultCount(0),
+     m_addResultCount(0),
+     m_getResultCount(0)
+   {
+   }
+   ~MyResultCollector()
+    {
+    }
+   CacheableVectorPtr getResult(uint32_t timeout )
+   {
+     m_getResultCount++;
+     if(m_isResultReady == true)
+       return m_resultList;
+     else
+     {
+       for(uint32_t i=0; i < timeout; i++)
+     {
+#ifndef _WIN32
+  sleep( 1 );
+#else
+  Sleep( 1 );
+#endif
+     if(m_isResultReady == true)
+       return m_resultList;
+     }
+     throw FunctionExecutionException(
+               "Result is not ready, endResults callback is called before invoking getResult() method");
+     }
+   }
+
+   void addResult(CacheablePtr& result)
+   {
+     m_addResultCount++;
+     if(result == NULLPTR)
+      return;
+     CacheableArrayListPtr results = dynCast<CacheableArrayListPtr>(result);
+     for(int32_t i=0; i < results->size(); i++)
+     {
+       m_resultList->push_back(results->operator[](i));
+     }
+   }
+   void endResults()
+   {
+     m_isResultReady = true;
+     m_endResultCount++;
+   }
+   uint32_t getEndResultCount()
+   {
+     return m_endResultCount;
+   }
+   uint32_t getAddResultCount()
+   {
+     return m_addResultCount;
+   }
+   uint32_t getGetResultCount()
+   {
+     return m_getResultCount;
+   }
+
+  private:
+    CacheableVectorPtr m_resultList;
+    volatile bool m_isResultReady;
+    uint32_t m_endResultCount;
+    uint32_t m_addResultCount;
+    uint32_t m_getResultCount;
+};
+
+// The Execute Function example.
+int main(int argc, char ** argv)
+{
+  try
+  {    
+    // Create CacheFactory using the settings from the gfcpp.properties file by default. 
+ 	CacheFactoryPtr cacheFactory = CacheFactory::createCacheFactory();   
+
+    CachePtr cachePtr = cacheFactory
+      ->setSubscriptionEnabled(true)
+      ->addServer("localhost", 50505)
+      ->addServer("localhost", 40404)
+      ->create();
+
+    LOGINFO("Created the GemFire Cache.");  
+
+    RegionPtr regPtr0 = cachePtr
+      ->createRegionFactory(CACHING_PROXY)
+      ->create("partition_region");
+
+    LOGINFO("Created the Partition Region.");  
+    
+    regPtr0->registerAllKeys();
+    char buf[128];
+    CacheableVectorPtr resultList = CacheableVector::create();
+    for(int i=0; i < 34; i++)
+    {
+      sprintf(buf, "VALUE--%d", i);
+      CacheablePtr value(CacheableString::create(buf));
+
+      sprintf(buf, "KEY--%d", i);
+      CacheableKeyPtr key = CacheableKey::create(buf);
+      regPtr0->put(key, value);
+    }
+
+    bool getResult = true;
+    CacheableVectorPtr routingObj = CacheableVector::create();
+    for(int i=0; i < 34; i++)
+    {
+      if(i%2==0) continue;
+      sprintf(buf, "KEY--%d", i);
+      CacheableKeyPtr key = CacheableKey::create(buf);
+      routingObj->push_back(key);
+    }
+    LOGINFO("test data independant function with result on one server");
+    //test data independant function with result on one server
+    ExecutionPtr exc = FunctionService::onServer((RegionServicePtr)cachePtr);
+    CacheablePtr args = routingObj;
+    CacheableVectorPtr executeFunctionResult = 
+         exc->withArgs(args)->execute(getFuncIName, getResult)->getResult();
+    if(executeFunctionResult==NULLPTR)
+    {
+      LOGINFO("get executeFunctionResult is NULL");
+    } else
+    {
+      for (int32_t item=0; item < executeFunctionResult->size(); item++)
+      {
+        CacheableArrayListPtr arrayList = dynCast<CacheableArrayListPtr>(executeFunctionResult->operator[](item));
+        for (int32_t pos=0; pos < arrayList->size(); pos++)
+        {
+          resultList->push_back(arrayList->operator[](pos));
+        }
+      }
+      sprintf(buf, "get: result count = %d", resultList->size());
+      LOGINFO(buf);
+      for(int32_t i=0; i < executeFunctionResult->size(); i++)
+      {
+         sprintf(buf, "get result[%d]=%s", i, dynCast<CacheableStringPtr>(resultList->operator[](i))->asChar());
+         LOGINFO(buf);
+      }
+    }
+
+    LOGINFO("test data independant function without result on one server");
+    getResult = false;
+    exc->withArgs(args)->execute(putFuncIName, getResult, 15, false);
+
+    LOGINFO("test data independant function with result on all servers");
+    getResult = true;
+    exc = FunctionService::onServers((RegionServicePtr)cachePtr);
+    executeFunctionResult = 
+         exc->withArgs(args)->execute(getFuncIName, getResult)->getResult();
+    if(executeFunctionResult==NULLPTR)
+    {
+      LOGINFO("get executeFunctionResult is NULL");
+    } else
+    {
+      resultList->clear();
+      for (int32_t item=0; item < executeFunctionResult->size(); item++)
+      {
+        CacheableArrayListPtr arrayList = dynCast<CacheableArrayListPtr>(executeFunctionResult->operator[](item));
+        for (int32_t pos=0; pos < arrayList->size(); pos++)
+        {
+          resultList->push_back(arrayList->operator[](pos));
+        }
+      }
+      sprintf(buf, "get result count = %d", resultList->size());
+      LOGINFO(buf);
+      for(int32_t i=0; i < executeFunctionResult->size(); i++)
+      {
+         sprintf(buf, "get result[%d]=%s", i, dynCast<CacheableStringPtr>(resultList->operator[](i))->asChar());
+         LOGINFO(buf);
+      }
+    }
+
+    getResult = false;
+    LOGINFO("test data independant function without result on all servers");
+    exc->withArgs(args)->execute(putFuncIName, getResult, 15, false);
+
+    LOGINFO("test data dependant function with result");
+    getResult = true;
+    args = CacheableBoolean::create( 1 );
+    exc = FunctionService::onRegion(regPtr0);
+    args = CacheableKey::create("echoString");
+    executeFunctionResult = 
+         exc->withFilter(routingObj)->withArgs(args)->execute(roFuncName, getResult, 15, true, true)->getResult();
+    if(executeFunctionResult==NULLPTR)
+    {
+      LOGINFO("echo String : executeFunctionResult is NULL");
+    } else 
+    {
+      LOGINFO("echo String : result count = %d", executeFunctionResult->size());
+      const char* str = dynCast<CacheableStringPtr>(executeFunctionResult->operator[](0))->asChar();
+      if(strcmp("echoString", str) != 0 ){
+        LOGINFO("echoString is not echoed back");
+      }
+    }
+    args = CacheableKey::create("echoBoolean");
+    executeFunctionResult = 
+         exc->withFilter(routingObj)->withArgs(args)->execute(roFuncName, getResult, 15, true, true)->getResult();
+    if(executeFunctionResult==NULLPTR)
+    {
+      LOGINFO("echo Boolean: executeFunctionResult is NULL");
+    } else 
+    {
+      LOGINFO("echo Boolean: result count = %d", executeFunctionResult->size());
+      bool b = dynCast<CacheableBooleanPtr>(executeFunctionResult->operator[](0))->value();
+      LOGINFO(b==true ? "true" : "false");
+    }
+    executeFunctionResult = 
+         exc->withFilter(routingObj)->withArgs(args)->execute(getFuncName, getResult)->getResult();
+    if(executeFunctionResult==NULLPTR)
+    {
+      LOGINFO( "execute on region: executeFunctionResult is NULL");
+    } else 
+    {
+      resultList->clear();
+      for (int32_t item=0; item < executeFunctionResult->size(); item++)
+      {
+        CacheableArrayListPtr arrayList = dynCast<CacheableArrayListPtr>(executeFunctionResult->operator[](item));
+        for (int32_t pos=0; pos < arrayList->size(); pos++)
+        {
+          resultList->push_back(arrayList->operator[](pos));
+        }
+      }
+      LOGINFO( "Execute on Region: result count = %d", executeFunctionResult->size());
+      for(int32_t i=0; i < executeFunctionResult->size(); i++)
+      {
+         sprintf(buf, "Execute on Region: result[%d]=%s", i, dynCast<CacheableStringPtr>(resultList->operator[](i))->asChar());
+         LOGINFO(buf);
+      }
+    }
+    //     test get function with customer collector
+    LOGINFO("test get function without customer collector");
+    MyResultCollector *myRC = new MyResultCollector();
+    executeFunctionResult = 
+         exc->withFilter(routingObj)->withArgs(args)->withCollector(ResultCollectorPtr(myRC) )->execute(getFuncName, getResult)->getResult();
+    LOGINFO("add result count = %d", myRC->getAddResultCount());
+    LOGINFO("end result count = %d", myRC->getEndResultCount());
+    LOGINFO("get result count = %d", myRC->getGetResultCount());
+
+    LOGINFO("test data dependant function without result");
+    getResult = false;
+    exc->withFilter(routingObj)->withArgs(args)->execute(putFuncName, getResult, 15, false);
+    // Close the GemFire Cache.
+    cachePtr->close();
+
+    LOGINFO("Closed the GemFire Cache");
+
+  }
+  // An exception should not occur
+  catch(const Exception & gemfireExcp)
+  {
+    LOGERROR("Function Execution GemFire Exception: %s", gemfireExcp.getMessage());
+  }
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/executeFunction/XMLs/serverExecuteFunctions.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/executeFunction/XMLs/serverExecuteFunctions.xml b/geode-client-native/examples/dist/executeFunction/XMLs/serverExecuteFunctions.xml
new file mode 100755
index 0000000..8d94a4d
--- /dev/null
+++ b/geode-client-native/examples/dist/executeFunction/XMLs/serverExecuteFunctions.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+
+
+<!DOCTYPE cache PUBLIC
+  "-//GemStone Systems, Inc.//GemFire Declarative Caching 6.5//EN"
+  "http://www.gemstone.com/dtd/cache6_5.dtd">
+<cache>
+  <cache-server port="50505" notify-by-subscription="true">
+    <group>ServerGroup1</group>
+  </cache-server>
+  <vm-root-region name='partition_region'>
+    <region-attributes  mirror-type="keys-values" data-policy="partition"></region-attributes>
+  </vm-root-region>
+  <function-service>
+    <function>
+      <class-name>javaobject.MultiGetFunctionI</class-name>
+    </function>
+    <function>
+      <class-name>javaobject.MultiPutFunctionI</class-name>
+     </function>
+     <function>
+       <class-name>javaobject.MultiGetFunction</class-name>
+     </function>
+     <function>
+       <class-name>javaobject.MultiPutFunction</class-name>
+     </function>
+     <function>
+       <class-name>javaobject.RegionOperationsFunction</class-name>
+     </function>
+  </function-service>
+</cache>



[20/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CMakeLists.txt b/geode-client-native/src/clicache/CMakeLists.txt
new file mode 100644
index 0000000..ac2d2ae
--- /dev/null
+++ b/geode-client-native/src/clicache/CMakeLists.txt
@@ -0,0 +1,43 @@
+cmake_minimum_required(VERSION 3.4)
+project(clicache)
+
+file(GLOB_RECURSE SOURCES "*.cpp")
+
+#set(PLATFORM_LIBRARIES ${PLATFORM_LIBRARIES} Dbghelp)
+add_library(gfclicache SHARED ${SOURCES})
+
+#TODO get external project library names
+target_link_libraries(gfclicache
+  PUBLIC
+  PRIVATE
+    gfcppcache-static
+    psapi
+    ${ACE_STATIC_LIB}
+    ${libxml2_STATIC_LIB}
+)
+
+add_dependencies(gfclicache libxml2 ACE)
+
+#TODO cmake DEBUG add_definitions(-DACE_NLOGGING -DACE_NDEBUG )
+#TODO move to config.h when not building shared ace
+add_definitions(-D__ACE_INLINE__)
+add_definitions(-DACE_AS_STATIC_LIBS)
+
+string(REPLACE "/EHsc" "/EHa" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
+string(REPLACE "/RTC1" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /clr /wd4947 /doc")
+set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /keyfile:${CMAKE_SOURCE_DIR}/../release/keys/gemfire.snk")
+
+set_target_properties(gfclicache PROPERTIES
+  OUTPUT_NAME Gemstone.Gemfire.Cache
+  VS_DOTNET_TARGET_FRAMEWORK_VERSION "v4.5.1"
+  VS_DOTNET_REFERENCES "System;System.Xml")
+
+#TODO move cppcache headers?
+include_directories(${CMAKE_BINARY_DIR}/cppcache)
+include_directories(${CMAKE_SOURCE_DIR})
+include_directories(${CMAKE_SOURCE_DIR}/cppcache)
+include_directories(${DEPENDENCIES_ACE_DIR}/include)
+include_directories(${DEPENDENCIES_libxml2_DIR}/include/libxml2)
+
+add_subdirectory(templates)

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CacheAttributesFactoryM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CacheAttributesFactoryM.cpp b/geode-client-native/src/clicache/CacheAttributesFactoryM.cpp
new file mode 100644
index 0000000..69041a8
--- /dev/null
+++ b/geode-client-native/src/clicache/CacheAttributesFactoryM.cpp
@@ -0,0 +1,49 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "CacheAttributesFactoryM.hpp"
+#include "CacheAttributesM.hpp"
+#include "ExceptionTypesM.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      void CacheAttributesFactory::SetRedundancyLevel( int32_t redundancyLevel )
+      {
+        NativePtr->setRedundancyLevel( redundancyLevel );
+      }
+
+      void CacheAttributesFactory::SetEndpoints( String^ endpoints )
+      {
+        ManagedString mg_endpoints( endpoints );
+        NativePtr->setEndpoints( mg_endpoints.CharPtr );
+      }
+
+      CacheAttributes^ CacheAttributesFactory::CreateCacheAttributes( )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheAttributesPtr& nativeptr =
+            NativePtr->createCacheAttributes();
+
+          return CacheAttributes::Create(nativeptr.ptr());
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CacheAttributesFactoryM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CacheAttributesFactoryM.hpp b/geode-client-native/src/clicache/CacheAttributesFactoryM.hpp
new file mode 100644
index 0000000..b620caf
--- /dev/null
+++ b/geode-client-native/src/clicache/CacheAttributesFactoryM.hpp
@@ -0,0 +1,74 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/CacheAttributesFactory.hpp"
+#include "impl/NativeWrapper.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      ref class CacheAttributes;
+
+      /// <summary>
+      /// Creates instances of <c>CacheAttributes</c>.
+      /// </summary>
+      /// <seealso cref="CacheAttributes" />
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class CacheAttributesFactory sealed
+        : public Internal::UMWrap<gemfire::CacheAttributesFactory>
+      {
+      public:
+
+        /// <summary>
+        /// Creates a new instance of <c>CacheAttributesFactory</c> ready
+        /// to create a <c>CacheAttributes</c> with default settings.
+        /// </summary>
+        inline CacheAttributesFactory( )
+          : UMWrap( new gemfire::CacheAttributesFactory( ), true )
+        { }
+
+        // ATTRIBUTES
+
+        /// <summary>
+        /// Sets redundancy level to use for regions in the cache.
+        /// </summary>
+        [Obsolete("This method is obsolete since 3.5; use PoolFactory.SetSubscriptionRedundancy instead.")]
+        void SetRedundancyLevel( int32_t redundancyLevel );
+
+        /// <summary>
+        /// Sets endpoints list to be used at the cache-level.
+        /// </summary>
+        [Obsolete("This method is obsolete since 3.5; use PoolFactory.AddServer or PoolFactory.AddLocator instead.")]
+        void SetEndpoints( String^ endpoints );
+
+        // FACTORY METHOD
+
+        /// <summary>
+        /// Creates a <c>CacheAttributes</c> with the current settings.
+        /// </summary>
+        /// <returns>The newly created <c>CacheAttributes</c></returns>
+        /// <exception cref="IllegalStateException">
+        /// if the current settings violate the <a href="compability.html">
+        /// compatibility</a> rules.
+        /// </exception>
+        CacheAttributes^ CreateCacheAttributes( );
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CacheAttributesM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CacheAttributesM.cpp b/geode-client-native/src/clicache/CacheAttributesM.cpp
new file mode 100644
index 0000000..64b6e38
--- /dev/null
+++ b/geode-client-native/src/clicache/CacheAttributesM.cpp
@@ -0,0 +1,34 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "CacheAttributesM.hpp"
+#include "impl/ManagedString.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      int32_t CacheAttributes::RedundancyLevel::get( )
+      {
+        return NativePtr->getRedundancyLevel( );
+      }
+
+      String^ CacheAttributes::Endpoints::get( )
+      {
+        return ManagedString::Get( NativePtr->getEndpoints( ) );
+      }
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CacheAttributesM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CacheAttributesM.hpp b/geode-client-native/src/clicache/CacheAttributesM.hpp
new file mode 100644
index 0000000..171b679
--- /dev/null
+++ b/geode-client-native/src/clicache/CacheAttributesM.hpp
@@ -0,0 +1,95 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/CacheAttributes.hpp"
+#include "impl/NativeWrapper.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      /// <summary>
+      /// Defines attributes for configuring a cache.
+      /// </summary>
+      /// <remarks>
+      /// Currently the following attributes are defined:
+      /// <c>redundancyLevel</c>: Redundancy for HA client queues.
+      /// <c>endpoints</c>: Cache level endpoints list.
+      /// To create an instance of this interface, use
+      /// <see cref="CacheAttributesFactory.CreateCacheAttributes" />.
+      ///
+      /// For compatibility rules and default values, see
+      /// <see cref="CacheAttributesFactory" />.
+      ///
+      /// Note that the <c>CacheAttributes</c> are not distributed with
+      /// the region.
+      /// </remarks>
+      /// <seealso cref="CacheAttributesFactory" />
+        [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class CacheAttributes sealed
+        : public Internal::SBWrap<gemfire::CacheAttributes>
+      {
+      public:
+
+        /// <summary>
+        /// Gets redundancy level for regions in the cache.
+        /// </summary>
+        property int32_t RedundancyLevel
+        {
+          int32_t get( );
+        }
+
+        /// <summary>
+        /// Gets cache level endpoints list.
+        /// </summary>
+        property String^ Endpoints
+        {
+          String^ get( );
+        }
+
+
+      internal:
+
+        /// <summary>
+        /// Internal factory function to wrap a native object pointer inside
+        /// this managed class with null pointer check.
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        /// <returns>
+        /// The managed wrapper object; null if the native pointer is null.
+        /// </returns>
+        inline static CacheAttributes^ Create(
+          gemfire::CacheAttributes* nativeptr )
+        {
+          return ( nativeptr != nullptr ?
+            gcnew CacheAttributes( nativeptr ) : nullptr );
+        }
+
+
+      private:
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline CacheAttributes( gemfire::CacheAttributes* nativeptr )
+          : SBWrap( nativeptr ) { }
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CacheFactoryM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CacheFactoryM.cpp b/geode-client-native/src/clicache/CacheFactoryM.cpp
new file mode 100644
index 0000000..854c1c8
--- /dev/null
+++ b/geode-client-native/src/clicache/CacheFactoryM.cpp
@@ -0,0 +1,410 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "CacheFactoryM.hpp"
+#include "CacheM.hpp"
+#include "CacheAttributesM.hpp"
+#include "DistributedSystemM.hpp"
+#include "SystemPropertiesM.hpp"
+//#pragma warning(disable:4091)
+//#include <msclr/lock.h>
+//#pragma warning(disable:4091)
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      CacheFactory^ CacheFactory::CreateCacheFactory()
+      {
+        return CacheFactory::CreateCacheFactory(Properties::Create());
+      }
+
+      CacheFactory^ CacheFactory::CreateCacheFactory(Properties^ dsProps)
+      {
+        _GF_MG_EXCEPTION_TRY
+
+           gemfire::PropertiesPtr nativepropsptr(
+            GetNativePtr<gemfire::Properties>(dsProps));
+
+          gemfire::CacheFactoryPtr& nativeptr( gemfire::CacheFactory::createCacheFactory( nativepropsptr) );         
+          if (nativeptr.ptr() != nullptr)
+            return gcnew CacheFactory( nativeptr.ptr(), dsProps );
+          return nullptr;
+
+        _GF_MG_EXCEPTION_CATCH_ALL        
+      }
+
+      Cache^ CacheFactory::Create()
+      {
+        _GF_MG_EXCEPTION_TRY
+          //msclr::lock lockInstance(m_singletonSync);
+          DistributedSystem::acquireDisconnectLock();
+    
+          if(!m_connected)
+          {
+             gemfire::PropertiesPtr nativepropsptr(
+               GetNativePtr<gemfire::Properties>(m_dsProps));
+            DistributedSystem::AppDomainInstanceInitialization(nativepropsptr);      
+          }
+
+          gemfire::CachePtr& nativeptr( NativePtr->create( ) );
+
+          bool appDomainEnable = DistributedSystem::SystemProperties->AppDomainEnabled;
+          SafeConvertClass::SetAppDomainEnabled(appDomainEnable);
+
+           if(!m_connected)
+           {
+             //it registers types in unmanage layer, so should be once only 
+             DistributedSystem::ManagedPostConnect();
+             DistributedSystem::AppDomainInstancePostInitialization();
+             DistributedSystem::connectInstance();
+           }
+          
+           m_connected = true;
+           
+           return Cache::Create( nativeptr.ptr( ) );
+        _GF_MG_EXCEPTION_CATCH_ALL
+          finally {
+          DistributedSystem::releaseDisconnectLock();
+        }
+      }
+
+      Cache^ CacheFactory::Create( String^ name, DistributedSystem^ system )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          ManagedString mg_name( name );
+          gemfire::DistributedSystemPtr systemptr(
+            GetNativePtr<gemfire::DistributedSystem>( system ) );
+
+          gemfire::CachePtr& nativeptr( gemfire::CacheFactory::create(
+            mg_name.CharPtr, systemptr ) );
+          return Cache::Create( nativeptr.ptr( ) );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      Cache^ CacheFactory::Create( String^ name, DistributedSystem^ system,
+        String^ cacheXml )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          ManagedString mg_name( name );
+          gemfire::DistributedSystemPtr systemptr(
+            GetNativePtr<gemfire::DistributedSystem>( system ) );
+          ManagedString mg_cacheXml( cacheXml );
+
+          gemfire::CachePtr& nativeptr( gemfire::CacheFactory::create(
+            mg_name.CharPtr, systemptr, mg_cacheXml.CharPtr ) );
+          return Cache::Create( nativeptr.ptr( ) );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      Cache^ CacheFactory::Create( String^ name, DistributedSystem^ system,
+        CacheAttributes^ attributes )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          ManagedString mg_name( name );
+          gemfire::DistributedSystemPtr systemptr(
+            GetNativePtr<gemfire::DistributedSystem>( system ) );
+          gemfire::CacheAttributesPtr attrsPtr(
+            GetNativePtr<gemfire::CacheAttributes>(attributes));
+
+          gemfire::CachePtr& nativeptr( gemfire::CacheFactory::create(
+            mg_name.CharPtr, systemptr, attrsPtr ) );
+          return Cache::Create( nativeptr.ptr( ) );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      Cache^ CacheFactory::Create( String^ name, DistributedSystem^ system,
+        String^ cacheXml, CacheAttributes^ attributes )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          ManagedString mg_name( name );
+          gemfire::DistributedSystemPtr systemptr(
+            GetNativePtr<gemfire::DistributedSystem>( system ) );
+          ManagedString mg_cacheXml( cacheXml );
+          gemfire::CacheAttributesPtr attrsPtr(
+            GetNativePtr<gemfire::CacheAttributes>(attributes));
+
+          gemfire::CachePtr& nativeptr( gemfire::CacheFactory::create(
+            mg_name.CharPtr, systemptr, mg_cacheXml.CharPtr, attrsPtr ) );
+          return Cache::Create( nativeptr.ptr( ) );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      Cache^ CacheFactory::GetInstance( DistributedSystem^ system )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::DistributedSystemPtr p_system(
+            GetNativePtr<gemfire::DistributedSystem>( system ) );
+          gemfire::CachePtr& nativeptr(
+            gemfire::CacheFactory::getInstance( p_system ) );
+
+          return Cache::Create( nativeptr.ptr( ) );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      Cache^ CacheFactory::GetInstanceCloseOk( DistributedSystem^ system )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::DistributedSystemPtr p_system(
+            GetNativePtr<gemfire::DistributedSystem>( system ) );
+          gemfire::CachePtr& nativeptr(
+            gemfire::CacheFactory::getInstanceCloseOk( p_system ) );
+
+          return Cache::Create( nativeptr.ptr( ) );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      Cache^ CacheFactory::GetAnyInstance( )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CachePtr& nativeptr(
+            gemfire::CacheFactory::getAnyInstance( ) );
+          return Cache::Create( nativeptr.ptr( ) );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      String^ CacheFactory::Version::get( )
+      {
+        return ManagedString::Get( gemfire::CacheFactory::getVersion( ) );
+      }
+
+      String^ CacheFactory::ProductDescription::get( )
+      {
+        return ManagedString::Get(
+          gemfire::CacheFactory::getProductDescription( ) );
+      }
+
+
+      CacheFactory^ CacheFactory::SetFreeConnectionTimeout( Int32 connectionTimeout )
+		  {
+			  _GF_MG_EXCEPTION_TRY
+
+			  NativePtr->setFreeConnectionTimeout( connectionTimeout );
+
+        return this;
+
+			  _GF_MG_EXCEPTION_CATCH_ALL
+		  }
+
+		  CacheFactory^ CacheFactory::SetLoadConditioningInterval( Int32 loadConditioningInterval )
+		  {
+			  _GF_MG_EXCEPTION_TRY
+
+			  NativePtr->setLoadConditioningInterval( loadConditioningInterval );
+        return this;
+
+			  _GF_MG_EXCEPTION_CATCH_ALL
+		  }
+
+		  CacheFactory^ CacheFactory::SetSocketBufferSize( Int32 bufferSize )
+      {
+			  _GF_MG_EXCEPTION_TRY
+
+          NativePtr->setSocketBufferSize( bufferSize );
+          return this;
+
+			  _GF_MG_EXCEPTION_CATCH_ALL
+		  }
+
+		  CacheFactory^ CacheFactory::SetReadTimeout( Int32 timeout )
+      {
+			  _GF_MG_EXCEPTION_TRY
+
+          NativePtr->setReadTimeout( timeout );
+          return this;
+
+			  _GF_MG_EXCEPTION_CATCH_ALL
+		  }
+
+		  CacheFactory^ CacheFactory::SetMinConnections( Int32 minConnections )
+      {
+			  _GF_MG_EXCEPTION_TRY
+
+          NativePtr->setMinConnections( minConnections );
+          return this;
+
+			  _GF_MG_EXCEPTION_CATCH_ALL
+		  }
+
+		  CacheFactory^ CacheFactory::SetMaxConnections( Int32 maxConnections )
+      {
+			  _GF_MG_EXCEPTION_TRY
+
+          NativePtr->setMaxConnections( maxConnections );
+          return this;
+
+			  _GF_MG_EXCEPTION_CATCH_ALL
+		  }
+
+		  CacheFactory^ CacheFactory::SetIdleTimeout( Int32 idleTimeout )
+      {
+			  _GF_MG_EXCEPTION_TRY
+
+          NativePtr->setIdleTimeout( idleTimeout );
+          return this;
+
+			  _GF_MG_EXCEPTION_CATCH_ALL
+		  }
+
+		  CacheFactory^ CacheFactory::SetRetryAttempts( Int32 retryAttempts )
+      {
+			  _GF_MG_EXCEPTION_TRY
+
+			  NativePtr->setRetryAttempts( retryAttempts );
+        return this;
+
+			  _GF_MG_EXCEPTION_CATCH_ALL
+		  }
+
+		  CacheFactory^ CacheFactory::SetPingInterval( Int32 pingInterval )
+      {
+			  _GF_MG_EXCEPTION_TRY
+
+          NativePtr->setPingInterval( pingInterval );
+          return this;
+
+			  _GF_MG_EXCEPTION_CATCH_ALL
+		  }
+
+      CacheFactory^ CacheFactory::SetStatisticInterval( Int32 statisticInterval )
+      {
+			  _GF_MG_EXCEPTION_TRY
+
+          NativePtr->setStatisticInterval( statisticInterval );
+          return this;
+
+			  _GF_MG_EXCEPTION_CATCH_ALL
+		  }
+
+      CacheFactory^ CacheFactory::SetServerGroup( String^ group )
+      {
+			  _GF_MG_EXCEPTION_TRY
+
+        ManagedString mg_servergroup( group );
+        NativePtr->setServerGroup( mg_servergroup.CharPtr );
+        return this;
+
+			  _GF_MG_EXCEPTION_CATCH_ALL
+		  }
+
+		  CacheFactory^ CacheFactory::AddLocator( String^ host, Int32 port )
+      {
+			  _GF_MG_EXCEPTION_TRY
+
+        ManagedString mg_host( host );
+        NativePtr->addLocator( mg_host.CharPtr, port );
+        return this;
+
+			  _GF_MG_EXCEPTION_CATCH_ALL
+		  }
+
+      CacheFactory^ CacheFactory::AddServer( String^ host, Int32 port )
+      {
+			  _GF_MG_EXCEPTION_TRY
+
+			  ManagedString mg_host( host );
+        NativePtr->addServer( mg_host.CharPtr, port );
+        return this;
+
+			  _GF_MG_EXCEPTION_CATCH_ALL
+		  }
+
+		  CacheFactory^ CacheFactory::SetSubscriptionEnabled( Boolean enabled )
+      {
+			  _GF_MG_EXCEPTION_TRY
+
+			  NativePtr->setSubscriptionEnabled( enabled );
+        return this;
+
+			  _GF_MG_EXCEPTION_CATCH_ALL
+		  }
+
+      CacheFactory^ CacheFactory::SetPRSingleHopEnabled( Boolean enabled )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          NativePtr->setPRSingleHopEnabled(enabled);
+          return this;
+
+         _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+		  CacheFactory^ CacheFactory::SetSubscriptionRedundancy( Int32 redundancy )
+      {
+			  _GF_MG_EXCEPTION_TRY
+
+          NativePtr->setSubscriptionRedundancy( redundancy );
+          return this;
+
+			  _GF_MG_EXCEPTION_CATCH_ALL
+		  }
+
+		  CacheFactory^ CacheFactory::SetSubscriptionMessageTrackingTimeout( Int32 messageTrackingTimeout )
+      {
+			  _GF_MG_EXCEPTION_TRY
+
+          NativePtr->setSubscriptionMessageTrackingTimeout( messageTrackingTimeout );
+          return this;
+
+			  _GF_MG_EXCEPTION_CATCH_ALL
+		  }
+
+		  CacheFactory^ CacheFactory::SetSubscriptionAckInterval( Int32 ackInterval )
+      {
+			  _GF_MG_EXCEPTION_TRY
+
+          NativePtr->setSubscriptionAckInterval( ackInterval );
+          return this;
+
+			  _GF_MG_EXCEPTION_CATCH_ALL
+		  }
+
+      CacheFactory^ CacheFactory::SetMultiuserAuthentication( bool multiuserAuthentication )
+      {
+			  _GF_MG_EXCEPTION_TRY
+
+          NativePtr->setMultiuserAuthentication( multiuserAuthentication );
+          return this;
+
+			  _GF_MG_EXCEPTION_CATCH_ALL
+	   }
+
+      CacheFactory^ CacheFactory::Set(String^ name, String^ value)
+      {
+        _GF_MG_EXCEPTION_TRY
+          ManagedString mg_name( name );
+          ManagedString mg_value( value );
+          NativePtr->set( mg_name.CharPtr, mg_value.CharPtr );
+          return this;
+
+			  _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CacheFactoryM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CacheFactoryM.hpp b/geode-client-native/src/clicache/CacheFactoryM.hpp
new file mode 100644
index 0000000..3307072
--- /dev/null
+++ b/geode-client-native/src/clicache/CacheFactoryM.hpp
@@ -0,0 +1,658 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/CacheFactory.hpp"
+#include "PropertiesM.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      ref class Cache;
+      ref class CacheAttributes;
+      ref class DistributedSystem;
+
+      /// <summary>
+      /// A factory class that must be used to obtain instance of <see cref="Cache" />.
+      /// </summary>
+      /// <remarks>
+      /// To create a new cache instance, use <see cref="CacheFactory.CreateCacheFactory" />.
+      /// <para>
+      /// To get an existing unclosed cache instance, use <see cref="CacheFactory.GetInstance" />.
+      /// </para>
+      /// </remarks>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class CacheFactory :public Internal::SBWrap<gemfire::CacheFactory>
+      {
+      public:
+
+        /// <summary>
+        /// A factory class that must be used to obtain instance of <see cref="Cache" />.
+        /// This should be called once. Using this one can set default values of <see cref="Pool" />.
+        /// </summary>
+        /// <param name="dsProps">Properties which are applicable at client level.</param>
+        static CacheFactory^ CreateCacheFactory(Properties^ dsProps);
+
+        /// <summary>
+        /// A factory class that must be used to obtain instance of <see cref="Cache" />.
+        /// This should be called once. Using this one can set default values of <see cref="Pool" />.
+        /// </summary>       
+        static CacheFactory^ CreateCacheFactory();
+
+        /// <summary>
+        /// To create the instance of <see cref="Cache" />.
+        /// </summary>
+        Cache^ Create();
+
+        /// <summary>
+        /// Creates a new cache using the specified system.
+        /// </summary>
+        /// <param name="name">the name to associate with the new cache</param>
+        /// <param name="system">
+        /// a DistributedSystem obtained by calling
+        /// <see cref="DistributedSystem.Connect" />
+        /// </param>
+        /// <returns>
+        /// a <c>Cache</c> that uses the specified <c>DistributedSystem</c>
+        /// for distribution.
+        /// </returns>
+        /// <exception cref="IllegalArgumentException">
+        /// If <c>system</c> is not connected
+        /// ( <see cref="DistributedSystem.IsConnected" /> ) or name is null.
+        /// </exception>
+        /// <exception cref="CacheExistsException">
+        /// If an open cache already exists.
+        /// </exception>
+        /// <deprecated>
+        /// as of NativeClient 3.5, use <see cref="CacheFactory.CreateCacheFactory" /> instead.
+        /// </deprecated>
+        static Cache^ Create( String^ name, DistributedSystem^ system );
+
+        /// <summary>
+        /// Creates a new cache using the specified system using parameters
+        /// from the given <a href="cacheXml.html">XML</a> file.
+        /// </summary>
+        /// <param name="name">the name to associate with the new cache</param>
+        /// <param name="system">
+        /// a DistributedSystem obtained by calling
+        /// <see cref="DistributedSystem.Connect" />
+        /// </param>
+        /// <param name="cacheXml">
+        /// name of the cache configuration XML file
+        /// </param>
+        /// <returns>
+        /// a <c>Cache</c> that uses the specified <c>DistributedSystem</c>
+        /// for distribution.
+        /// </returns>
+        /// <exception cref="IllegalArgumentException">
+        /// If <c>system</c> is not <see cref="DistributedSystem.IsConnected"/>
+        /// or name is null
+        /// </exception>
+        /// <exception cref="CacheExistsException">
+        /// ff an open cache already exists
+        /// </exception>
+        /// <exception cref="CacheXmlException">
+        /// if something went wrong while parsing the XML
+        /// </exception>
+        /// <exception cref="IllegalStateException">
+        /// if the XML file is well-formed but not valid (consistent)
+        /// </exception>
+        /// <deprecated>
+        /// as of NativeClient 3.5, use <see cref="CacheFactory.CreateCacheFactory" /> instead.
+        /// </deprecated>
+        static Cache^ Create( String^ name, DistributedSystem^ system,
+          String^ cacheXml );
+
+        /// <summary>
+        /// Creates a new cache using the specified system using the given
+        /// <c>CacheAttributes</c>.
+        /// </summary>
+        /// <param name="name">the name to associate with the new cache</param>
+        /// <param name="system">
+        /// a DistributedSystem obtained by calling
+        /// <see cref="DistributedSystem.Connect" />
+        /// </param>
+        /// <param name="attributes">
+        /// optional <c>CacheAttributes</c> for this cache
+        /// </param>
+        /// <returns>
+        /// a <c>Cache</c> that uses the specified <c>DistributedSystem</c>
+        /// for distribution.
+        /// </returns>
+        /// <exception cref="IllegalArgumentException">
+        /// If <c>system</c> is not <see cref="DistributedSystem.IsConnected"/>
+        /// or name is null
+        /// </exception>
+        /// <exception cref="CacheExistsException">
+        /// ff an open cache already exists
+        /// </exception>
+        /// <deprecated>
+        /// as of NativeClient 3.5, use <see cref="CacheFactory.CreateCacheFactory" /> instead.
+        /// </deprecated>
+        static Cache^ Create( String^ name, DistributedSystem^ system,
+          CacheAttributes^ attributes );
+
+        /// <summary>
+        /// Creates a new cache using the specified system using parameters
+        /// from the given <a href="cacheXml.html">XML</a> file and with
+        /// the given <c>CacheAttributes</c>.
+        /// </summary>
+        /// <param name="name">the name to associate with the new cache</param>
+        /// <param name="system">
+        /// a DistributedSystem obtained by calling
+        /// <see cref="DistributedSystem.Connect" />
+        /// </param>
+        /// <param name="cacheXml">
+        /// name of the cache configuration XML file
+        /// </param>
+        /// <param name="attributes">
+        /// optional <c>CacheAttributes</c> for this cache; these
+        /// override the ones provided in <c>cacheXml</c>.
+        /// </param>
+        /// <returns>
+        /// a <c>Cache</c> that uses the specified <c>DistributedSystem</c>
+        /// for distribution.
+        /// </returns>
+        /// <exception cref="IllegalArgumentException">
+        /// If <c>system</c> is not <see cref="DistributedSystem.IsConnected"/>
+        /// or name is null
+        /// </exception>
+        /// <exception cref="CacheExistsException">
+        /// ff an open cache already exists
+        /// </exception>
+        /// <exception cref="CacheXmlException">
+        /// if something went wrong while parsing the XML
+        /// </exception>
+        /// <exception cref="IllegalStateException">
+        /// if the XML file is well-formed but not valid (consistent)
+        /// </exception>
+        /// <deprecated>
+        /// as of NativeClient 3.5, use <see cref="CacheFactory.CreateCacheFactory" /> instead.
+        /// </deprecated>
+        static Cache^ Create( String^ name, DistributedSystem^ system,
+          String^ cacheXml, CacheAttributes^ attributes );
+
+        /// <summary>
+        /// Gets the instance of <see cref="Cache" /> produced by an
+        /// earlier call to <see cref="CacheFactory.Create" />.
+        /// </summary>
+        /// <param name="system">
+        /// the <see cref="DistributedSystem" /> the cache was created with.
+        /// </param>
+        /// <returns>the <see cref="Cache" /> associated with the specified system.</returns>
+        /// <exception cref="IllegalArgumentException">
+        /// if the distributed system argument is null
+        /// </exception>
+        /// <exception cref="CacheClosedException">
+        /// if a cache has not been created or the created one is closed
+        /// ( <see cref="Cache.IsClosed" /> )
+        /// </exception>
+        /// <exception cref="EntryNotFoundException">
+        /// if a cache with specified system not found
+        /// </exception>
+        static Cache^ GetInstance( DistributedSystem^ system );
+
+        /// <summary>
+        /// Gets the instance of <see cref="Cache" /> produced by an
+        /// earlier call to <see cref="CacheFactory.Create" />, even if it has been closed.
+        /// </summary>
+        /// <param name="system">
+        /// the <see cref="DistributedSystem" /> the cache was created with.
+        /// </param>
+        /// <returns>
+        /// the <c>Cache</c> associated with the specified system.
+        /// </returns>
+        /// <exception cref="IllegalArgumentException">
+        /// if the distributed system argument is null
+        /// </exception>
+        /// <exception cref="CacheClosedException">
+        /// if a cache has not been created.
+        /// </exception>
+        /// <exception cref="EntryNotFoundException">
+        /// if a cache with specified system not found
+        /// </exception>
+        static Cache^ GetInstanceCloseOk( DistributedSystem^ system );
+
+        /// <summary>
+        /// Gets an arbitrary open instance of <see cref="Cache" /> produced by an
+        /// earlier call to <see cref="CacheFactory.Create" />.
+        /// </summary>
+        /// <exception cref="CacheClosedException">
+        /// if a cache has not been created or the only created one is
+        /// closed ( <see cref="Cache.IsClosed" /> )
+        /// </exception>
+        /// <exception cref="EntryNotFoundException">
+        /// if a cache with specified system not found
+        /// </exception>
+        static Cache^ GetAnyInstance( );
+
+        /// <summary>
+        /// Set allocators for non default Microsoft CRT versions.
+        /// </summary>
+        static void SetNewAndDelete()
+        {
+          gemfire::setNewAndDelete( & operator new, & operator delete );
+        }
+
+        /// <summary>
+        /// Returns the version of the cache implementation.
+        /// For the 1.0 release of GemFire, the string returned is <c>1.0</c>.
+        /// </summary>
+        /// <returns>the version of the cache implementation as a <c>String</c></returns>
+        static property String^ Version
+        {
+          static String^ get( );
+        }
+
+        /// <summary>
+        /// Returns the product description string including product name and version.
+        /// </summary>
+        static property String^ ProductDescription
+        {
+          static String^ get( );
+        }
+
+      /// <summary>
+		  /// Sets the free connection timeout for this pool.
+		  /// </summary>
+		  /// <remarks>
+		  /// If the pool has a max connections setting, operations will block
+		  /// if all of the connections are in use. The free connection timeout
+		  /// specifies how long those operations will block waiting for
+		  /// a free connection before receiving an AllConnectionsInUseException.
+		  /// If max connections is not set this setting has no effect.
+      /// </remarks>
+		  /// <param>
+		  /// connectionTimeout the connection timeout in milliseconds
+		  /// </param>
+		  /// <exception>
+		  /// IllegalArgumentException if connectionTimeout 
+		  /// is less than or equal to 0.
+		  /// </exception>
+		  CacheFactory^ SetFreeConnectionTimeout( Int32 connectionTimeout );
+
+		  /// <summary>
+		  /// Sets the load conditioning interval for this pool.
+		  /// </summary>
+		  /// <remarks>
+		  /// This interval controls how frequently the pool will check to see if
+		  /// a connection to a given server should be moved to a different
+		  /// server to improve the load balance.
+		  /// </remarks>
+		  /// <param>
+		  /// loadConditioningInterval the connection lifetime in milliseconds
+		  /// A value of -1 disables load conditioning.
+		  /// </param>
+		  /// <exception>
+		  /// throws IllegalArgumentException if connectionLifetime
+		  /// is less than -1.
+		  /// </exception>
+      /// <returns>
+      /// a instance of <c>CacheFactory</c> 
+      /// </returns>
+      CacheFactory^ SetLoadConditioningInterval( Int32 loadConditioningInterval );
+
+		  /// <summary>
+		  /// Sets the socket buffer size for each connection made in this pool.
+		  /// </summary>
+		  /// <remarks>
+		  /// Large messages can be received and sent faster when this buffer is larger.
+		  /// Larger buffers also optimize the rate at which servers can send events
+		  /// for client subscriptions.
+		  /// </remarks>
+		  /// <param>
+		  /// bufferSize the size of the socket buffers used for reading and
+		  /// writing on each connection in this pool.
+		  /// </param>
+		  /// <exception>
+		  /// throws IllegalArgumentException if bufferSize
+		  /// is less than or equal to 0.
+		  /// </exception>
+      /// <returns>
+      /// a instance of <c>CacheFactory</c> 
+      /// </returns>
+		  CacheFactory^ SetSocketBufferSize( Int32 bufferSize );
+
+		  /// <summary>
+		  /// Sets the number of milliseconds to wait for a response from a server before
+		  /// timing out the operation and trying another server (if any are available).
+		  /// </summary>
+		  /// <param>
+		  /// timeout number of milliseconds to wait for a response from a server
+		  /// </param>
+		  /// <exception>
+		  /// throws IllegalArgumentException if timeout
+		  /// is less than or equal to 0.
+		  /// </exception>
+      /// <returns>
+      /// a instance of <c>CacheFactory</c> 
+      /// </returns>
+		  CacheFactory^ SetReadTimeout( Int32 timeout );
+
+		  /// <summary>
+		  /// Set the minimum number of connections to keep available at all times.
+		  /// </summary>
+		  /// <remarks>
+		  /// When the pool is created, it will create this many connections.
+		  /// If 0 then connections will not be made until an actual operation
+		  /// is done that requires client-to-server communication.
+		  /// </remarks>
+		  /// <param>
+		  /// minConnections the initial number of connections this pool will create.
+		  /// </param>
+		  /// <exception>
+		  /// throws IllegalArgumentException if minConnections is less than 0.
+		  /// </exception>
+      /// <returns>
+      /// a instance of <c>CacheFactory</c> 
+      /// </returns>
+		  CacheFactory^ SetMinConnections( Int32 minConnections );
+
+		  /// <summary>
+		  /// Set the max number of client to server connections that the pool will create.
+		  /// </summary>
+		  /// <remarks>
+		  /// If all of the connections are in use, an operation requiring a client to
+		  /// server connection will block until a connection is available.
+		  /// see setFreeConnectionTimeout(int)
+		  /// </remarks>
+		  /// <param>
+		  /// maxConnections the maximum number of connections in the pool.
+		  /// -1 indicates that there is no maximum number of connections.
+		  /// </param>
+		  /// <exception>
+		  /// throws IllegalArgumentException if maxConnections is less than minConnections.
+		  /// </exception>
+      /// <returns>
+      /// a instance of <c>CacheFactory</c> 
+      /// </returns>
+		  CacheFactory^ SetMaxConnections( Int32 maxConnections );
+
+		  /// <summary>
+		  /// Set the amount of time a connection can be idle before expiring the connection.
+		  /// </summary>
+		  /// <remarks>
+		  /// If the pool size is greater than the minimum specified, connections which have
+		  /// been idle for longer than the idleTimeout will be closed.
+		  /// </remarks>
+		  /// <param>
+		  /// idleTimeout The amount of time in milliseconds that an idle connection
+		  /// should live before expiring. -1 indicates that connections should never expire.
+		  /// </param>
+		  /// <exception>
+		  /// throws IllegalArgumentException if idleTimout is less than 0.
+		  /// </exception>
+      /// <returns>
+      /// a instance of <c>CacheFactory</c> 
+      /// </returns>
+		  CacheFactory^ SetIdleTimeout( Int32 idleTimeout );
+
+		  /// <summary>
+		  /// Set the number of times to retry a request after timeout/exception.
+		  /// </summary>
+		  /// <param>
+		  /// retryAttempts The number of times to retry a request
+		  /// after timeout/exception. -1 indicates that a request should be
+		  /// tried against every available server before failing.
+		  /// </param>
+		  /// <exception>
+		  /// throws IllegalArgumentException if idleTimout is less than 0.
+		  /// </exception>
+      /// <returns>
+      /// a instance of <c>CacheFactory</c> 
+      /// </returns>
+		  CacheFactory^ SetRetryAttempts( Int32 retryAttempts );
+
+		  /// <summary>
+		  /// Set how often to ping servers to verify that they are still alive.
+		  /// </summary>
+		  /// <remarks>
+		  /// Each server will be sent a ping every pingInterval if there has not
+		  /// been any other communication with the server.
+		  /// These pings are used by the server to monitor the health of
+		  /// the client. Make sure that the pingInterval is less than the
+		  /// maximum time between pings allowed by the bridge server.
+		  /// see in CacheServer: setMaximumTimeBetweenPings(int)
+		  /// </remarks>
+		  /// <param>
+		  /// pingInterval The amount of time in milliseconds between pings.
+		  /// </param>
+		  /// <exception>
+		  /// throws IllegalArgumentException if pingInterval is less than 0.
+		  /// </exception>
+      /// <returns>
+      /// a instance of <c>CacheFactory</c> 
+      /// </returns>
+		  CacheFactory^ SetPingInterval( Int32 pingInterval );
+
+		  /// <summary>
+		  /// Set how often to send client statistics to the server.
+		  /// </summary>
+		  /// <remarks>
+		  /// Doing this allows gfmon to monitor clients.
+		  /// A value of -1 disables the sending of client statistics
+		  /// to the server.
+          /// </remarks>
+		  /// <param>
+		  /// statisticInterval The amount of time in milliseconds between
+		  /// sends of client statistics to the server.
+		  /// </param>
+		  /// <exception>
+		  /// throws IllegalArgumentException if statisticInterval
+		  /// is less than -1.
+		  /// </exception>
+      /// <returns>
+      /// a instance of <c>CacheFactory</c> 
+      /// </returns>
+      CacheFactory^ SetStatisticInterval( Int32 statisticInterval);
+
+		  /// <summary>
+		  /// Configures the group that all servers this pool connects to must belong to.
+		  /// </summary>
+		  /// <param>
+		  /// group the server group that this pool will connect to.
+		  /// If null or "" then all servers will be connected to.
+		  /// </param>
+      /// <returns>
+      /// a instance of <c>CacheFactory</c> 
+      /// </returns>
+      CacheFactory^ SetServerGroup( String^ group );
+
+		  /// <summary>
+		  /// Add a locator, given its host and port, to this factory.
+		  /// </summary>
+		  /// <remarks>
+		  /// The locator must be a server locator and will be used to discover other running
+		  /// bridge servers and locators.
+		  /// </remarks>
+		  /// <param>
+		  /// host the host name or ip address that the locator is listening on.
+		  /// </param>
+		  /// <param>
+		  /// port the port that the locator is listening on
+		  /// </param>
+		  /// <exception>
+		  /// throws IllegalArgumentException if host is an unknown host
+		  /// or if port is outside the valid range of [1..65535] inclusive.
+		  /// </exception>
+		  /// <exception>
+		  /// throws IllegalStateException if a locator has already been added to this factory.
+		  /// </exception>
+      /// <returns>
+      /// a instance of <c>CacheFactory</c> 
+      /// </returns>
+		  CacheFactory^ AddLocator( String^ host, Int32 port );
+
+		  /// <summary>
+		  /// Add a server, given its host and port, to this factory.
+		  /// </summary>
+		  /// <remarks>
+		  /// The server must be a bridge server and this client will
+		  /// directly connect to without consulting a server locator.
+		  /// </remarks>
+		  /// <param>
+		  /// host the host name or ip address that the server is listening on.
+		  /// </param>
+		  /// <param>
+		  /// port the port that the server is listening on
+		  /// </param>
+          /// <exception>
+		  /// throws IllegalArgumentException if host is an unknown host
+		  /// or if port is outside the valid range of [1..65535] inclusive.
+		  /// </exception>
+		  /// <exception>
+		  /// throws IllegalStateException if a server has already been added to this factory.
+		  /// </exception>
+      /// <returns>
+      /// a instance of <c>CacheFactory</c> 
+      /// </returns>
+      CacheFactory^ AddServer( String^ host, Int32 port );
+
+		  /// <summary>
+		  /// Enable subscriptions.
+		  /// </summary>
+		  /// <remarks>
+		  /// If set to true then the created pool will have server-to-client
+		  /// subscriptions enabled. If set to false then all Subscription*
+		  /// attributes are ignored at create time.
+		  /// </remarks>
+      /// <returns>
+      /// a instance of <c>CacheFactory</c> 
+      /// </returns>
+		  CacheFactory^ SetSubscriptionEnabled( Boolean enabled );
+
+      /// <summary>
+		  /// By default SetPRSingleHopEnabled is true.
+		  /// </summary>
+		  /// <remarks>
+		  /// The client is aware of location of partitions on servers hosting
+      /// Using this information, the client routes the client cache operations
+		  /// directly to the server which is hosting the required partition for the
+		  /// cache operation. 
+      /// If SetPRSingleHopEnabled is false the client can do an extra hop on servers
+      /// to go to the required partition for that cache operation.
+      /// The SetPRSingleHopEnabled avoids extra hops only for following cache operations :
+      /// put, get & destroy operations.
+		  /// </remarks>
+      /// <returns>
+      /// a instance of <c>CacheFactory</c> 
+      /// </returns>
+		  CacheFactory^ SetPRSingleHopEnabled( Boolean enabled );
+
+		  /// <summary>
+		  /// Sets the redundancy level for this pools server-to-client subscriptions.
+		  /// </summary>
+		  /// <remarks>
+		  /// If 0 then no redundant copies will be kept on the servers.
+		  /// Otherwise an effort will be made to maintain the requested number of
+		  /// copies of the server-to-client subscriptions. At most one copy per server will
+		  /// be made up to the requested level.
+		  /// </remarks>
+		  /// <param>
+		  /// redundancy the number of redundant servers for this client's subscriptions.
+		  /// </param>
+		  /// <exception>
+		  /// throws IllegalArgumentException if redundancyLevel is less than -1.
+		  /// </exception>
+      /// <returns>
+      /// a instance of <c>CacheFactory</c> 
+      /// </returns>
+		  CacheFactory^ SetSubscriptionRedundancy( Int32 redundancy );
+
+		  /// <summary>
+		  /// Sets the messageTrackingTimeout attribute which is the time-to-live period,
+		  /// in milliseconds, for subscription events the client has received from the server.
+		  /// </summary>
+		  /// <remarks>
+		  /// It's used to minimize duplicate events. Entries that have not been modified
+		  /// for this amount of time are expired from the list.
+		  /// </remarks>
+		  /// <param>
+		  /// messageTrackingTimeout number of milliseconds to set the timeout to.
+		  /// </param>
+		  /// <exception>
+		  /// throws IllegalArgumentException if messageTrackingTimeout is less than or equal to 0.
+		  /// </exception>
+      /// <returns>
+      /// a instance of <c>CacheFactory</c> 
+      /// </returns>
+		  CacheFactory^ SetSubscriptionMessageTrackingTimeout( Int32 messageTrackingTimeout );
+
+		  /// <summary>
+		  /// Sets the is the interval in milliseconds to wait before sending
+		  /// acknowledgements to the bridge server for events received from the server subscriptions.
+		  /// </summary>
+		  /// <param>
+		  /// ackInterval number of milliseconds to wait before sending event acknowledgements.
+		  /// </param>
+		  /// <exception>
+		  /// throws IllegalArgumentException if ackInterval is less than or equal to 0.
+		  /// </exception>
+      /// <returns>
+      /// a instance of <c>CacheFactory</c> 
+      /// </returns>
+		  CacheFactory^ SetSubscriptionAckInterval( Int32 ackInterval );
+
+
+      /// <summary>
+		  /// Sets whether pool is in multiuser mode
+		  /// </summary>
+		  /// <param>
+		  /// multiuserAuthentication should be true/false. Default value is false;
+		  /// </param>
+      /// <returns>
+      /// a instance of <c>CacheFactory</c> 
+      /// </returns>
+      CacheFactory^ SetMultiuserAuthentication( bool multiuserAuthentication );
+
+
+      /// <summary>
+		  /// Sets a gemfire property that will be used when creating the ClientCache.
+      /// </summary>
+		  /// <param>
+		  /// name the name of the gemfire property
+		  /// </param>
+      /// <param>
+		  /// value the value of the gemfire property
+		  /// </param>
+      /// <returns>
+      /// a instance of <c>CacheFactory</c> 
+      /// </returns>
+      CacheFactory^ Set(String^ name, String^ value);
+
+       private:
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+         inline CacheFactory( gemfire::CacheFactory* nativeptr, Properties^ dsProps )
+          : SBWrap( nativeptr ) 
+         { 
+            m_dsProps = dsProps;
+         }
+
+         Properties^ m_dsProps; 
+         static System::Object^ m_singletonSync = gcnew System::Object();
+
+        internal:
+          static bool m_connected = false;
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CacheListenerAdapter.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CacheListenerAdapter.hpp b/geode-client-native/src/clicache/CacheListenerAdapter.hpp
new file mode 100644
index 0000000..ac3c0f7
--- /dev/null
+++ b/geode-client-native/src/clicache/CacheListenerAdapter.hpp
@@ -0,0 +1,74 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "ICacheListener.hpp"
+
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      /// <summary>
+      /// Utility class that implements all methods in <c>ICacheListener</c>
+      /// with empty implementations. Applications can subclass this class
+      /// and only override the methods for the events of interest.
+      /// </summary>
+        [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class CacheListenerAdapter
+        : public ICacheListener
+      {
+      public:
+        virtual void AfterCreate(EntryEvent^ ev)
+        {
+        }
+
+        virtual void AfterUpdate(EntryEvent^ ev)
+        {
+        }
+
+        virtual void AfterInvalidate(EntryEvent^ ev)
+        {
+        }
+
+        virtual void AfterDestroy(EntryEvent^ ev)
+        {
+        }
+
+        virtual void AfterRegionInvalidate(RegionEvent^ ev)
+        {
+        }
+
+        virtual void AfterRegionDestroy(RegionEvent^ ev)
+        {
+        }
+
+        virtual void AfterRegionLive(RegionEvent^ ev)
+        {
+        }
+
+        virtual void AfterRegionClear(RegionEvent^ ev)
+        {
+        }
+
+        virtual void Close(Region^ region)
+        {
+        }
+        virtual void AfterRegionDisconnected( Region^ region )
+        {
+        }
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CacheM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CacheM.cpp b/geode-client-native/src/clicache/CacheM.cpp
new file mode 100644
index 0000000..a433a01
--- /dev/null
+++ b/geode-client-native/src/clicache/CacheM.cpp
@@ -0,0 +1,223 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "CacheM.hpp"
+#include "DistributedSystemM.hpp"
+#include "RegionM.hpp"
+#include "RegionAttributesM.hpp"
+#include "QueryServiceM.hpp"
+#include "FunctionServiceM.hpp"
+#include "ExecutionM.hpp"
+#include "CacheFactoryM.hpp"
+#include "impl/AuthenticatedCacheM.hpp"
+
+//#include "impl/DistributedSystemImpl.hpp"
+
+#pragma warning(disable:4091)
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      void Cache::InitializeDeclarativeCache( String^ cacheXml )
+      {
+        ManagedString mg_cacheXml( cacheXml );
+        NativePtr->initializeDeclarativeCache( mg_cacheXml.CharPtr );
+      }
+
+      String^ Cache::Name::get( )
+      {
+        return ManagedString::Get( NativePtr->getName( ) );
+      }
+
+      bool Cache::IsClosed::get( )
+      {
+        return NativePtr->isClosed( );
+      }
+
+      DistributedSystem^ Cache::DistributedSystem::get( )
+      {
+        gemfire::DistributedSystemPtr& nativeptr(
+          NativePtr->getDistributedSystem( ) );
+
+        return GemStone::GemFire::Cache::DistributedSystem::Create(
+          nativeptr.ptr( ) );
+      }
+
+      void Cache::Close( )
+      {
+        Close( false );
+      }
+
+      void Cache::Close( bool keepalive )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          GemStone::GemFire::Cache::DistributedSystem::acquireDisconnectLock();
+
+          GemStone::GemFire::Cache::DistributedSystem::disconnectInstance();
+          GemStone::GemFire::Cache::CacheFactory::m_connected = false;
+
+          NativePtr->close( keepalive );
+
+          // If DS automatically disconnected due to the new bootstrap API, then cleanup the C++/CLI side
+          //if (!gemfire::DistributedSystem::isConnected())
+          {
+            GemStone::GemFire::Cache::DistributedSystem::UnregisterBuiltinManagedTypes();
+          }
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+        finally
+        {
+          GemStone::GemFire::Cache::DistributedSystem::releaseDisconnectLock();
+        }
+      }
+
+      void Cache::ReadyForEvents( )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          NativePtr->readyForEvents( );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      Region^ Cache::CreateRegion( String^ name, RegionAttributes^ attributes )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          ManagedString mg_name( name );
+          gemfire::RegionAttributesPtr regionAttribsPtr(
+            GetNativePtr<gemfire::RegionAttributes>( attributes ) );
+
+          gemfire::RegionPtr& nativeptr( NativePtr->createRegion(
+            mg_name.CharPtr, regionAttribsPtr ) );
+          return Region::Create( nativeptr.ptr( ) );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      Region^ Cache::GetRegion( String^ path )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          ManagedString mg_path( path );
+          gemfire::RegionPtr& nativeptr(
+            NativePtr->getRegion( mg_path.CharPtr ) );
+
+          return Region::Create( nativeptr.ptr( ) );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      QueryService^ Cache::GetQueryService( )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          return QueryService::Create( NativePtr->getQueryService( ).ptr( ) );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+      
+      QueryService^ Cache::GetQueryService(String^ poolName )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          ManagedString mg_poolName( poolName );
+          return QueryService::Create( NativePtr->getQueryService(mg_poolName.CharPtr).ptr( ) );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      RegionFactory^ Cache::CreateRegionFactory(RegionShortcut preDefinedRegionAttributes)
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::RegionShortcut preDefineRegionAttr = gemfire::CACHING_PROXY;
+
+          switch(preDefinedRegionAttributes)
+          {
+          case RegionShortcut::PROXY:
+              preDefineRegionAttr = gemfire::PROXY;
+              break;
+          case RegionShortcut::CACHING_PROXY:
+              preDefineRegionAttr = gemfire::CACHING_PROXY;
+              break;
+          case RegionShortcut::CACHING_PROXY_ENTRY_LRU:
+              preDefineRegionAttr = gemfire::CACHING_PROXY_ENTRY_LRU;
+              break;
+          case RegionShortcut::LOCAL:
+              preDefineRegionAttr = gemfire::LOCAL;
+              break;
+          case RegionShortcut::LOCAL_ENTRY_LRU:
+              preDefineRegionAttr = gemfire::LOCAL_ENTRY_LRU;
+              break;          
+          }
+
+          return RegionFactory::Create(NativePtr->createRegionFactory(preDefineRegionAttr).ptr());
+          
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      IRegionService^ Cache::CreateAuthenticatedView(Properties^ credentials)
+      {
+        gemfire::Properties* prop = NULL;
+
+        if (credentials != nullptr)
+          prop = GetNativePtr<gemfire::Properties>( credentials );
+
+        gemfire::PropertiesPtr credPtr(prop);
+        
+        _GF_MG_EXCEPTION_TRY
+
+          return AuthenticatedCache::Create( (NativePtr->createAuthenticatedView(credPtr)).ptr());
+
+        _GF_MG_EXCEPTION_CATCH_ALL   
+      }
+
+      IRegionService^ Cache::CreateAuthenticatedView(Properties^ credentials, String^ poolName)
+      {
+        gemfire::Properties* prop = NULL;
+
+        if (credentials != nullptr)
+          prop = GetNativePtr<gemfire::Properties>( credentials );
+
+        gemfire::PropertiesPtr credPtr(prop);
+
+        ManagedString mg_poolName( poolName );
+        
+        _GF_MG_EXCEPTION_TRY
+
+          return AuthenticatedCache::Create( (NativePtr->createAuthenticatedView(credPtr, mg_poolName.CharPtr)).ptr());
+
+        _GF_MG_EXCEPTION_CATCH_ALL   
+      }
+
+			array<Region^>^ Cache::RootRegions( )
+      {
+        gemfire::VectorOfRegion vrr;
+        NativePtr->rootRegions( vrr );
+        array<Region^>^ rootRegions =
+          gcnew array<Region^>( vrr.size( ) );
+
+        for( int32_t index = 0; index < vrr.size( ); index++ )
+        {
+          gemfire::RegionPtr& nativeptr( vrr[ index ] );
+          rootRegions[ index ] = Region::Create( nativeptr.ptr( ) );
+        }
+        return rootRegions;
+      }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CacheM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CacheM.hpp b/geode-client-native/src/clicache/CacheM.hpp
new file mode 100644
index 0000000..cd6a804
--- /dev/null
+++ b/geode-client-native/src/clicache/CacheM.hpp
@@ -0,0 +1,281 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/Cache.hpp"
+#include "impl/NativeWrapper.hpp"
+#include "RegionShortcutM.hpp"
+#include "RegionFactoryM.hpp"
+#include "PropertiesM.hpp"
+#include "IGemFireCache.hpp"
+#include "IRegionService.hpp"
+#include "RegionM.hpp"
+
+#include "RegionAttributesM.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      ref class DistributedSystem;
+      //ref class Region;
+      //ref class RegionAttributes;
+      ref class QueryService;
+      ref class FunctionService;
+
+      /// <summary>
+      /// Provides a distributed cache.
+      /// </summary>
+      /// <remarks>
+      /// Caches are obtained from Create methods on the
+      /// <see cref="CacheFactory.Create"/> class.
+      /// <para>
+      /// When a cache will no longer be used, call <see cref="Cache.Close" />.
+      /// Once it <see cref="Cache.IsClosed" /> any attempt to use it
+      /// will cause a <c>CacheClosedException</c> to be thrown.
+      /// </para><para>
+      /// A cache can have multiple root regions, each with a different name.
+      /// </para>
+      /// </remarks>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class Cache sealed
+        : public IGemFireCache, Internal::SBWrap<gemfire::Cache>
+      {
+      public:
+
+        /// <summary>
+        /// Initializes the cache from an XML file.
+        /// </summary>
+        /// <param name="cacheXml">pathname of a <c>cache.xml</c> file</param>
+        virtual void InitializeDeclarativeCache( String^ cacheXml );
+
+        /// <summary>
+        /// Returns the name of this cache.
+        /// </summary>
+        /// <remarks>
+        /// This method does not throw
+        /// <c>CacheClosedException</c> if the cache is closed.
+        /// </remarks>
+        /// <returns>the string name of this cache</returns>
+        virtual property String^ Name
+        {
+          String^ get( );
+        }
+
+        /// <summary>
+        /// True if this cache has been closed.
+        /// </summary>
+        /// <remarks>
+        /// After a new cache object is created, this method returns false.
+        /// After <see cref="Close" /> is called on this cache object, this method
+        /// returns true.
+        /// </remarks>
+        /// <returns>true if this cache is closed, otherwise false</returns>
+        virtual property bool IsClosed
+        {
+          bool get( );
+        }
+
+        /// <summary>
+        /// Returns the distributed system used to
+        /// <see cref="CacheFactory.Create" /> this cache.
+        /// </summary>
+        /// <remarks>
+        /// This method does not throw
+        /// <c>CacheClosedException</c> if the cache is closed.
+        /// </remarks>
+        virtual property DistributedSystem^ DistributedSystem
+        {
+          GemStone::GemFire::Cache::DistributedSystem^ get( );
+        }
+
+        /// <summary>
+        /// Terminates this object cache and releases all the local resources.
+        /// </summary>
+        /// <remarks>
+        /// After this cache is closed, any further
+        /// method call on this cache or any region object will throw
+        /// <c>CacheClosedException</c>, unless otherwise noted.
+        /// </remarks>
+        /// <exception cref="CacheClosedException">
+        /// if the cache is already closed.
+        /// </exception>
+        virtual void Close( );
+
+        /// <summary>
+        /// Terminates this object cache and releases all the local resources.
+        /// </summary>
+        /// <remarks>
+        /// After this cache is closed, any further
+        /// method call on this cache or any region object will throw
+        /// <c>CacheClosedException</c>, unless otherwise noted.
+        /// </remarks>
+        /// <param name="keepalive">whether to keep a durable client's queue alive</param>
+        /// <exception cref="CacheClosedException">
+        /// if the cache is already closed.
+        /// </exception>
+        virtual void Close( bool keepalive );
+
+        /// <summary>
+        /// Send the client-ready message to the server for a durable client.        
+        /// </summary>
+        /// <remarks>
+        /// This method should only be called for durable clients and
+        /// with a cache server version 5.5 onwards.
+        /// </remarks>
+        /// <exception cref="IllegalStateException">
+        /// if there was a problem sending the message to the server.
+        /// </exception>
+        virtual void ReadyForEvents( );
+
+        /// <summary>
+        /// Creates a region with the given name using the specified
+        /// RegionAttributes.
+        /// The region is just created locally. It is not created on the server
+        /// to which this client is connected with.
+        /// </summary>
+        /// <remarks>
+        /// If Pool attached with Region is in multiusersecure mode then don't use return instance of region as no credential are attached with this instance.
+        /// Get instance of region from <see cref="Cache.CreateAuthenticatedView" to do the operation on Cache. 
+        /// </remarks>
+        /// <param name="name">the name of the region to create</param>
+        /// <param name="attributes">the attributes of the root region</param>
+        /// <returns>new region</returns>
+        /// <exception cref="RegionExistsException">
+        /// if a region with the same name is already in this cache
+        /// </exception>
+        /// <exception cref="CacheClosedException">
+        /// if the cache is closed
+        /// </exception>
+        /// <exception cref="OutOfMemoryException">
+        /// if the memory allocation failed
+        /// </exception>
+        /// <exception cref="RegionCreationFailedException">
+        /// if the call fails due to incomplete mirror initialization
+        /// </exception>
+        /// <exception cref="InitFailedException">
+        /// if the optional PersistenceManager fails to initialize
+        /// </exception>
+        /// <exception cref="UnknownException">otherwise</exception>
+        /// <deprecated>
+        /// as of NativeClient 3.5, use <see cref="Cache.CreateRegionFactory /> instead.
+        /// </deprecated>
+        virtual Region^ CreateRegion( String^ name, RegionAttributes^ attributes );
+
+        /// <summary>
+        /// Returns an existing region given the full path from root, or null 
+        /// if no such region exists.
+        /// </summary>
+        /// <remarks>
+        /// If Pool attached with Region is in multiusersecure mode then don't use return instance of region as no credential are attached with this instance.
+        /// Get region from RegionService instance of Cache.<see cref="Cache.CreateAuthenticatedView(PropertiesPtr)" />.
+        /// </remarks>
+        /// <param name="path">the pathname of the region</param>
+        /// <returns>the region</returns>
+        virtual GemStone::GemFire::Cache::Region^ GetRegion( String^ path );
+
+        /// <summary>
+        /// Returns an array of root regions in the cache. This set is a
+        /// snapshot and is not backed by the cache.
+        /// </summary>
+        /// <remarks>
+        /// It is not supported when Cache is created from Pool.
+        /// </remarks>
+        /// <returns>array of regions</returns>
+        virtual array<GemStone::GemFire::Cache::Region^>^ RootRegions( );
+
+        /// <summary>
+        /// Get a query service object to be able to query the cache.
+        /// Supported only when cache is created from Pool(pool is in multiuserSecure mode)
+        /// </summary>
+        /// <remarks>
+        /// Currently only works against the java server in native mode, and
+        /// at least some endpoints must have been defined in some regions
+        /// before actually firing a query.
+        /// </remarks>
+        virtual QueryService^ GetQueryService( );
+
+        /// <summary>
+        /// Get a query service object to be able to query the cache.
+        /// Use only when Cache has more than one Pool.
+        /// </summary>
+        /// <remarks>
+        /// Currently only works against the java server in native mode, and
+        /// at least some endpoints must have been defined in some regions
+        /// before actually firing a query.
+        /// </remarks>
+        QueryService^ GetQueryService(String^ poolName );
+
+        /// <summary>
+        /// Returns the instance of <see cref="RegionFactory" /> to create the region
+        /// </summary>
+        /// <remarks>
+        /// Pass the <see cref="RegionShortcut" /> to set the deafult region attributes
+        /// </remarks>
+        /// <param name="regionShortcut">the regionShortcut to set the default region attributes</param>
+        /// <returns>Instance of RegionFactory</returns>
+        RegionFactory^ CreateRegionFactory(RegionShortcut regionShortcut); 
+
+        /// <summary>
+        /// Returns the instance of <see cref="IRegionService" /> to do the operation on Cache with different Credential.
+        /// </summary>
+        /// <remarks>
+        /// Deafault pool should be in multiuser mode <see cref="CacheFactory.SetMultiuserAuthentication" />
+        /// </remarks>
+        /// <param name="credentials">the user Credentials.</param>
+        /// <returns>Instance of IRegionService</returns>
+        IRegionService^ CreateAuthenticatedView(Properties^ credentials);
+
+        /// <summary>
+        /// Returns the instance of <see cref="IRegionService" /> to do the operation on Cache with different Credential.
+        /// </summary>
+        /// <remarks>
+        /// Deafault pool should be in multiuser mode <see cref="CacheFactory.SetMultiuserAuthentication" />
+        /// </remarks>
+        /// <param name="credentials">the user Credentials.</param>
+        /// <param name="poolName">Pool, which is in multiuser mode.</param>
+        /// <returns>Instance of IRegionService</returns>
+        IRegionService^ CreateAuthenticatedView(Properties^ credentials, String^ poolName);
+
+      internal:
+
+        /// <summary>
+        /// Internal factory function to wrap a native object pointer inside
+        /// this managed class with null pointer check.
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        /// <returns>
+        /// The managed wrapper object; null if the native pointer is null.
+        /// </returns>
+        inline static Cache^ Create( gemfire::Cache* nativeptr )
+        {
+          return ( nativeptr != nullptr ?
+            gcnew Cache( nativeptr ) : nullptr );
+        }
+
+
+      private:
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline Cache( gemfire::Cache* nativeptr )
+          : SBWrap( nativeptr ) { }
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CacheStatisticsM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CacheStatisticsM.cpp b/geode-client-native/src/clicache/CacheStatisticsM.cpp
new file mode 100644
index 0000000..ef8d86d
--- /dev/null
+++ b/geode-client-native/src/clicache/CacheStatisticsM.cpp
@@ -0,0 +1,32 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "CacheStatisticsM.hpp"
+
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      uint32_t CacheStatistics::LastModifiedTime::get( )
+      {
+        return NativePtr->getLastModifiedTime( );
+      }
+
+      uint32_t CacheStatistics::LastAccessedTime::get( )
+      {
+        return NativePtr->getLastAccessedTime( );
+      }
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CacheStatisticsM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CacheStatisticsM.hpp b/geode-client-native/src/clicache/CacheStatisticsM.hpp
new file mode 100644
index 0000000..19b6920
--- /dev/null
+++ b/geode-client-native/src/clicache/CacheStatisticsM.hpp
@@ -0,0 +1,145 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/CacheStatistics.hpp"
+#include "impl/NativeWrapper.hpp"
+
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      /// <summary>
+      /// Defines common statistical information for both the region and its entries.
+      /// </summary>
+      /// <remarks>
+      /// All of these methods may throw a <c>CacheClosedException</c>,
+      /// <c>RegionDestroyedException</c>, or <c>EntryDestroyedException</c>.
+      /// </remarks>
+      /// <seealso cref="Region.Statistics" />
+      /// <seealso cref="RegionEntry.Statistics" />
+        [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class CacheStatistics sealed
+        : public Internal::SBWrap<gemfire::CacheStatistics>
+      {
+      public:
+
+        /// <summary>
+        /// For an entry, returns the time that the entry's value was last modified.
+        /// For a region, returns the last time any of the region's entries' values or
+        /// the values in subregions' entries were modified.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// The modification may have been initiated locally, or it may have been
+        /// an update distributed from another cache. It may also have been a new
+        /// value provided by a loader. The modification time on a region is
+        /// propagated upward to parent regions, transitively, to the root region.
+        /// </para><para>
+        /// The number is expressed as the number of milliseconds since January 1, 1970.
+        /// The granularity may be as coarse as 100ms, so the accuracy may be off by
+        /// up to 50ms.
+        /// </para><para>
+        /// Entry and subregion creation will update the modification time on a
+        /// region, but <c>Region.Destroy</c>, <c>Region.DestroyRegion</c>,
+        /// <c>Region.Invalidate</c>, and <c>Region.InvalidateRegion</c>
+        /// do not update the modification time.
+        /// </para>
+        /// </remarks>
+        /// <returns>
+        /// the last modification time of the region or the entry;
+        /// returns 0 if the entry is invalid or the modification time is uninitialized.
+        /// </returns>
+        /// <seealso cref="Region.Put" />
+        /// <seealso cref="Region.Get" />
+        /// <seealso cref="Region.Create" />
+        /// <seealso cref="Region.CreateSubRegion" />
+        property uint32_t LastModifiedTime
+        {
+          /// <summary>
+          /// Get the last modified time of an entry or a region.
+          /// </summary>
+          /// <returns>
+          /// the last accessed time expressed as the number of milliseconds since
+          /// January 1, 1970.
+          /// </returns>
+          uint32_t get( );
+        }
+
+        /// <summary>
+        /// For an entry, returns the last time it was accessed via <c>Region.Get</c>.
+        /// For a region, returns the last time any of its entries or the entries of
+        /// its subregions were accessed with <c>Region.Get</c>.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// Any modifications will also update the <c>LastAccessedTime</c>,
+        /// so <c>LastAccessedTime</c> is always greater than or equal to
+        /// <c>LastModifiedTime</c>. The <c>LastAccessedTime</c> on a region is
+        /// propagated upward to parent regions, transitively, to the the root region.
+        /// </para><para>
+        /// The number is expressed as the number of milliseconds since
+        /// January 1, 1970. The granularity may be as coarse as 100ms, so
+        /// the accuracy may be off by up to 50ms.
+        /// </para>
+        /// </remarks>
+        /// <returns>
+        /// the last access time of the region or the entry's value;
+        /// returns 0 if entry is invalid or access time is uninitialized.
+        /// </returns>
+        /// <seealso cref="Region.Get" />
+        /// <seealso cref="LastModifiedTime" />
+        property uint32_t LastAccessedTime
+        {
+          /// <summary>
+          /// Get the last accessed time of an entry or a region.
+          /// </summary>
+          /// <returns>
+          /// the last accessed time expressed as the number of milliseconds since
+          /// January 1, 1970.
+          /// </returns>
+          uint32_t get( );
+        }
+
+
+      internal:
+
+        /// <summary>
+        /// Internal factory function to wrap a native object pointer inside
+        /// this managed class with null pointer check.
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        /// <returns>
+        /// The managed wrapper object; null if the native pointer is null.
+        /// </returns>
+        inline static CacheStatistics^ Create( gemfire::CacheStatistics* nativeptr )
+        {
+          return ( nativeptr != nullptr ?
+            gcnew CacheStatistics( nativeptr ) : nullptr );
+        }
+
+
+      private:
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline CacheStatistics( gemfire::CacheStatistics* nativeptr )
+          : SBWrap( nativeptr ) { }
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CacheWriterAdapter.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CacheWriterAdapter.hpp b/geode-client-native/src/clicache/CacheWriterAdapter.hpp
new file mode 100644
index 0000000..1a9c139
--- /dev/null
+++ b/geode-client-native/src/clicache/CacheWriterAdapter.hpp
@@ -0,0 +1,64 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "ICacheWriter.hpp"
+
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      /// <summary>
+      /// Utility class that implements all methods in <c>ICacheWriter</c>
+      /// with empty implementations. Applications can subclass this class
+      /// and only override the methods for the events of interest.
+      /// </summary>
+        [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class CacheWriterAdapter
+        : public ICacheWriter
+      {
+      public:
+        virtual bool BeforeUpdate(EntryEvent^ ev)
+        {
+          return true;
+        }
+
+        virtual bool BeforeCreate(EntryEvent^ ev)
+        {
+          return true;
+        }
+
+        virtual bool BeforeDestroy(EntryEvent^ ev)
+        {
+          return true;
+        }
+
+        virtual bool BeforeRegionDestroy(RegionEvent^ ev)
+        {
+          return true;
+        }
+
+        virtual bool BeforeRegionClear(RegionEvent^ ev)
+        {
+          return true;
+        }
+
+        virtual void Close(Region^ region)
+        {
+        }
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CacheableArrayListM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CacheableArrayListM.hpp b/geode-client-native/src/clicache/CacheableArrayListM.hpp
new file mode 100644
index 0000000..5d5d5c5
--- /dev/null
+++ b/geode-client-native/src/clicache/CacheableArrayListM.hpp
@@ -0,0 +1,115 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "CacheableVectorM.hpp"
+
+
+using namespace System;
+using namespace System::Collections::Generic;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      /// <summary>
+      /// A mutable <c>IGFSerializable</c> vector wrapper that can serve as
+      /// a distributable object for caching. This class extends .NET generic
+      /// <c>List</c> class.
+      /// </summary>
+        [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class CacheableArrayList
+        : public CacheableVector
+      {
+      public:
+        /// <summary>
+        /// Allocates a new empty instance.
+        /// </summary>
+        inline CacheableArrayList()
+          : CacheableVector()
+        { }
+
+        /// <summary>
+        /// Allocates a new instance copying from the given collection.
+        /// </summary>
+        /// <param name="collection">
+        /// The collection whose elements are copied to this list.
+        /// </param>
+        inline CacheableArrayList(IEnumerable<IGFSerializable^>^ collection)
+          : CacheableVector(collection)
+        { }
+
+        /// <summary>
+        /// Allocates a new empty instance with given initial size.
+        /// </summary>
+        /// <param name="capacity">
+        /// The initial capacity of the vector.
+        /// </param>
+        inline CacheableArrayList(int32_t capacity)
+          : CacheableVector(capacity)
+        { }
+
+        /// <summary>
+        /// Static function to create a new empty instance.
+        /// </summary>
+        inline static CacheableArrayList^ Create()
+        {
+          return gcnew CacheableArrayList();
+        }
+
+        /// <summary>
+        /// Static function to create a new instance copying from the
+        /// given collection.
+        /// </summary>
+        inline static CacheableArrayList^ Create(
+          IEnumerable<IGFSerializable^>^ collection)
+        {
+          return gcnew CacheableArrayList(collection);
+        }
+
+        /// <summary>
+        /// Static function to create a new instance with given initial size.
+        /// </summary>
+        inline static CacheableArrayList^ Create(int32_t capacity)
+        {
+          return gcnew CacheableArrayList(capacity);
+        }
+
+        // Region: IGFSerializable Members
+
+        /// <summary>
+        /// Returns the classId of the instance being serialized.
+        /// This is used by deserialization to determine what instance
+        /// type to create and deserialize into.
+        /// </summary>
+        /// <returns>the classId</returns>
+        virtual property uint32_t ClassId
+        {
+          virtual uint32_t get() override
+          {
+            return GemFireClassIds::CacheableArrayList;
+          }
+        }
+
+        // End Region: IGFSerializable Members
+
+        /// <summary>
+        /// Factory function to register this class.
+        /// </summary>
+        static IGFSerializable^ CreateDeserializable()
+        {
+          return gcnew CacheableArrayList();
+        }
+      };
+    }
+  }
+}


[15/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/ExceptionTypesM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/ExceptionTypesM.hpp b/geode-client-native/src/clicache/ExceptionTypesM.hpp
new file mode 100644
index 0000000..ab0749b
--- /dev/null
+++ b/geode-client-native/src/clicache/ExceptionTypesM.hpp
@@ -0,0 +1,700 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include <cppcache/ExceptionTypes.hpp>
+#include <cppcache/SignalHandler.hpp>
+#include "impl/ManagedString.hpp"
+
+
+using namespace System;
+using namespace System::Collections::Generic;
+using namespace System::Runtime::Serialization;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      ref class GemFireException;
+
+      /// <summary>
+      /// Factory delegate to create a managed GemFire exception.
+      /// </summary>
+      /// <remarks>
+      /// For each managed exception class, its factory delegate is registered
+      /// and maintained in a static dictionary mapped to its corresponding
+      /// native GemFire C++ exception name.
+      /// </remarks>
+
+      delegate GemFireException^ CreateException(
+        const gemfire::Exception& nativeEx, System::Exception^ innerException);
+
+      /// <summary>
+      /// The base exception class of all managed GemFire exceptions.
+      /// </summary>
+      [Serializable]
+      //[Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class GemFireException
+        : public System::Exception
+      {
+      private:
+
+        /// <summary>
+        /// Prefix for distiguishing managed system exceptions
+        /// </summary>
+        literal String^ MgSysExPrefix = "GFCLI_EXCEPTION:";
+
+        /// <summary>
+        /// This contains a mapping of the native GemFire exception class
+        /// name to the factory delegate of the corresponding managed GemFire
+        /// exception class.
+        /// </summary>
+        static Dictionary<String^, CreateException^>^ Native2ManagedExMap =
+          Init( );
+
+        /// <summary>
+        /// Name and delegate pair class. The Native2ManagedExMap dictionary
+        /// is populated from a static array of this class.
+        /// </summary>
+        value class NameDelegatePair
+        {
+        public:
+
+          /// <summary>
+          /// The name of the native GemFire exception class.
+          /// </summary>
+          String^ m_name;
+
+          /// <summary>
+          /// The factory delegate of the managed GemFire exception class
+          /// corresponding to <c>m_name</c>
+          /// </summary>
+          CreateException^ m_delegate;
+        };
+
+
+      internal:
+
+        /// <summary>
+        /// Static method to associate the native exception names with
+        /// the corresponding managed exception factory delegates.
+        /// </summary>
+        /// <remarks>
+        /// This method is not thread-safe and should be called in a single thread.
+        /// </remarks>
+        static Dictionary<String^, CreateException^>^ Init( );
+
+        /// <summary>
+        /// Create the managed GemFire exception for a given native GemFire exception.
+        /// As a special case normal system exceptions are also created when the
+        /// native exception is a wrapper of a managed system exception.
+        /// </summary>
+        /// <remarks>
+        /// Wherever the native GemFire C++ code raises a <c>gemfire::Exception</c>,
+        /// the CLI wrapper code should have a catch-all for those and use
+        /// this function to create the corresponding managed GemFire exception.
+        /// If no managed GemFire exception has been defined (or has not been
+        /// added using _GF_MG_EXCEPTION_ADD in ExceptionTypesM.cpp) then a
+        /// generic <c>GemFireException</c> exception is returned.
+        /// </remarks>
+        /// <param name="nativeEx">The native GemFire exception object</param>
+        /// <returns>
+        /// The managed GemFire exception object corresponding to the provided
+        /// native GemFire exception object.
+        /// </returns>
+        static Exception^ Get(const gemfire::Exception& nativeEx);
+
+        /// <summary>
+        /// Get the stack trace for the given native exception.
+        /// </summary>
+        /// <param name="nativeEx">The native GemFire exception object</param>
+        /// <returns>The stack trace of the native exception.</returns>
+        inline static String^ GetStackTrace(
+          const gemfire::Exception& nativeEx )
+        {
+          char nativeExStack[2048] = { '\0' };
+#ifndef _WIN64
+          nativeEx.getStackTrace(nativeExStack, 2047);
+#endif
+					return GemStone::GemFire::ManagedString::Get(nativeExStack);
+        }
+
+        /// <summary>
+        /// Gets the C++ native exception object for a given managed exception.
+        /// </summary>
+        /// <remarks>
+        /// This method is to handle conversion of managed exceptions to
+        /// C++ exception for those thrown by managed callbacks.
+        /// For non-Gemfire .NET exceptions we wrap it inside the generic
+        /// <c>GemfireException</c> with a special prefix in message.
+        /// While converting the exception back from C++ to .NET if the
+        /// prefix is found in the message, then it tries to construct
+        /// the original exception by reflection on the name of exception
+        /// contained in the message. Note that in this process the
+        /// original stacktrace is appended to the message of the exception.
+        /// </remarks>
+        inline static gemfire::ExceptionPtr GetNative(Exception^ ex)
+        {
+          if (ex != nullptr) {
+            GemFireException^ gfEx = dynamic_cast<GemFireException^>(ex);
+            if (gfEx != nullptr) {
+              return gfEx->GetNative();
+            }
+            else {
+              gemfire::ExceptionPtr cause;
+              if (ex->InnerException != nullptr) {
+                cause = GemFireException::GetNative(ex->InnerException);
+              }
+              GemStone::GemFire::ManagedString mg_exStr(MgSysExPrefix + ex->ToString());
+              return gemfire::ExceptionPtr(new gemfire::Exception(
+                  mg_exStr.CharPtr, NULL, false, cause));
+            }
+          }
+          return NULLPTR;
+        }
+
+        /// <summary>
+        /// Gets the C++ native exception object for this managed
+        /// <c>GemFireException</c>.
+        /// </summary>
+        virtual gemfire::ExceptionPtr GetNative()
+        {
+          String^ msg = this->Message + ": " + this->StackTrace;
+          GemStone::GemFire::ManagedString mg_msg(msg);
+          gemfire::ExceptionPtr cause;
+          if (this->InnerException != nullptr) {
+            cause = GemFireException::GetNative(this->InnerException);
+          }
+          return gemfire::ExceptionPtr(new gemfire::Exception(mg_msg.CharPtr,
+              NULL, false, cause));
+        }
+
+        /// <summary>
+        /// Throws the C++ native exception object for the given .NET exception.
+        /// </summary>
+        /// <remarks>
+        /// This method is to handle conversion of managed exceptions to
+        /// C++ exception for those thrown by managed callbacks.
+        /// For non-Gemfire .NET exceptions we wrap it inside the generic
+        /// <c>GemfireException</c> with a special prefix in message.
+        /// While converting the exception back from C++ to .NET if the
+        /// prefix is found in the message, then it tries to construct
+        /// the original exception by reflection on the name of exception
+        /// contained in the message. Note that in this process the
+        /// original stacktrace is appended to the message of the exception.
+        /// </remarks>
+        inline static void ThrowNative(Exception^ ex)
+        {
+          if (ex != nullptr) {
+            gemfire::ExceptionPtr cause;
+            if (ex->InnerException != nullptr) {
+              cause = GemFireException::GetNative(ex->InnerException);
+            }
+            GemStone::GemFire::ManagedString mg_exStr(MgSysExPrefix + ex->ToString());
+            throw gemfire::Exception(mg_exStr.CharPtr, NULL, false, cause);
+          }
+        }
+
+        /// <summary>
+        /// Throws the C++ native exception object for this managed
+        /// <c>GemFireException</c>.
+        /// </summary>
+        inline void ThrowNative()
+        {
+          GetNative()->raise();
+        }
+
+
+      public:
+
+        /// <summary>
+        /// Default constructor.
+        /// </summary>
+        inline GemFireException( )
+          : Exception( ) { }
+
+        /// <summary>
+        /// Constructor to create an exception object with the given message.
+        /// </summary>
+        /// <param name="message">The exception message.</param>
+        inline GemFireException( String^ message )
+          : Exception( message ) { }
+
+        /// <summary>
+        /// Constructor to create an exception object with the given message
+        /// and with the given inner exception.
+        /// </summary>
+        /// <param name="message">The exception message.</param>
+        /// <param name="innerException">The inner exception object.</param>
+        inline GemFireException( String^ message, System::Exception^ innerException )
+          : Exception( message, innerException ) { }
+
+        /// <summary>
+        /// Generate a minidump of the current process in the directory
+        /// specified for log files using "log-file" property.
+        /// This is equivalent to the ".dump /ma" command of windbg.
+        /// </summary>
+        static String^ GenerateMiniDump();
+
+        /// <summary>
+        /// Generate a minidump of the current process in the directory
+        /// specified for log files using "log-file" property.
+        /// This is equivalent to the ".dump /ma" command of windbg.
+        /// </summary>
+        static String^ GenerateMiniDump(int32_t exceptionCode,
+          IntPtr exceptionPointers);
+
+      protected:
+
+        /// <summary>
+        /// Initializes a new instance of the <c>GemFireException</c> class with
+        /// serialized data.
+        /// This allows deserialization of this exception in .NET remoting.
+        /// </summary>
+        /// <param name="info">
+        /// holds the serialized object data about
+        /// the exception being thrown
+        /// </param>
+        /// <param name="context">
+        /// contains contextual information about
+        /// the source or destination
+        /// </param>
+        inline GemFireException( SerializationInfo^ info, StreamingContext context )
+          : Exception( info, context ) { }
+      };
+
+/// Handle gemfire exceptions from native layer and convert to managed
+/// exceptions. Also handle fatal exceptions to generate mini dumps if
+/// stack trace dumping is enabled
+#define _GF_MG_EXCEPTION_TRY        \
+      try {
+#define _GF_MG_EXCEPTION_CATCH_ALL  \
+      } \
+      catch (const gemfire::Exception& ex) { \
+      throw GemStone::GemFire::Cache::GemFireException::Get(ex); \
+      } \
+      catch (System::AccessViolationException^ ex) { \
+        GemStone::GemFire::Cache::GemFireException::GenerateMiniDump(); \
+        throw ex; \
+      }
+
+
+/// Creates a class <c>x</c> named for each exception <c>y</c>.
+#define _GF_MG_EXCEPTION_DEF2(x,y) \
+      [Serializable] \
+      public ref class x: public GemFireException \
+      { \
+      public: \
+      \
+        /** <summary>Default constructor</summary> */ \
+        x( ) \
+          : GemFireException( ) { } \
+        \
+        /** <summary>
+         *  Constructor to create an exception object with the given message.
+         *  </summary>
+         *  <param name="message">The exception message.</param>
+         */ \
+        x( String^ message ) \
+          : GemFireException( message ) { } \
+        \
+        /** <summary>
+         *  Constructor to create an exception object with the given message
+         *  and with the given inner exception.
+         *  </summary>
+         *  <param name="message">The exception message.</param>
+         *  <param name="innerException">The inner exception object.</param>
+         */ \
+        x( String^ message, System::Exception^ innerException ) \
+          : GemFireException( message, innerException ) { } \
+        \
+      protected: \
+      \
+        /** <summary>
+         *  Initializes a new instance of the class with serialized data.
+         *  This allows deserialization of this exception in .NET remoting.
+         *  </summary>
+         *  <param name="info">
+         *  holds the serialized object data about the exception being thrown
+         *  </param>
+         *  <param name="context">
+         *  contains contextual information about the source or destination
+         *  </param>
+         */ \
+        x( SerializationInfo^ info, StreamingContext context ) \
+          : GemFireException( info, context ) { } \
+      \
+      internal: \
+        x(const gemfire::y& nativeEx) \
+          : GemFireException(ManagedString::Get(nativeEx.getMessage()), \
+              gcnew GemFireException(GemFireException::GetStackTrace( \
+                nativeEx))) { } \
+        \
+        x(const gemfire::y& nativeEx, Exception^ innerException) \
+          : GemFireException(ManagedString::Get(nativeEx.getMessage()), \
+              innerException) { } \
+        \
+        static GemFireException^ Create(const gemfire::Exception& ex, \
+            Exception^ innerException) \
+        { \
+          const gemfire::y* nativeEx = dynamic_cast<const gemfire::y*>( &ex ); \
+          if (nativeEx != nullptr) { \
+            if (innerException == nullptr) { \
+              return gcnew x(*nativeEx); \
+            } \
+            else { \
+              return gcnew x(*nativeEx, innerException); \
+            } \
+          } \
+          return nullptr; \
+        } \
+        virtual gemfire::ExceptionPtr GetNative() override \
+        { \
+          String^ msg = this->Message + ": " + this->StackTrace; \
+          ManagedString mg_msg(msg); \
+          gemfire::ExceptionPtr cause; \
+          if (this->InnerException != nullptr) { \
+            cause = GemFireException::GetNative(this->InnerException); \
+          } \
+          return gemfire::ExceptionPtr(new gemfire::y(mg_msg.CharPtr, \
+              NULL, false, cause)); \
+        } \
+      }
+
+/// Creates a class named for each exception <c>x</c>.
+#define _GF_MG_EXCEPTION_DEF(x) _GF_MG_EXCEPTION_DEF2(x,x)
+
+
+      // For all the native GemFire C++ exceptions, a corresponding definition
+      // should be added below *AND* it should also be added to the static array
+      // in ExceptionTypesM.cpp using _GF_MG_EXCEPTION_ADD( x )
+
+      /// <summary>
+      /// A gemfire assertion exception.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( AssertionException );
+
+      /// <summary>
+      /// Thrown when an argument to a method is illegal.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( IllegalArgumentException );
+
+      /// <summary>
+      /// Thrown when the state of cache is manipulated to be illegal.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( IllegalStateException );
+
+      /// <summary>
+      /// Thrown when an attempt is made to create an existing cache.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( CacheExistsException );
+
+      /// <summary>
+      /// Thrown when the cache xml is incorrect.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( CacheXmlException );
+
+      /// <summary>
+      /// Thrown when a timout occurs.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( TimeoutException );
+
+      /// <summary>
+      /// Thrown when the cache writer aborts the operation.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( CacheWriterException );
+
+      /// <summary>
+      /// Thrown when the cache listener throws an exception.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( CacheListenerException );
+
+      /// <summary>
+      /// Thrown when an attempt is made to create an existing region.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( RegionExistsException );
+
+      /// <summary>
+      /// Thrown when an operation is attempted on a closed cache.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( CacheClosedException );
+
+      /// <summary>
+      /// Thrown when lease of cache proxy has expired.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( LeaseExpiredException );
+
+      /// <summary>
+      /// Thrown when the cache loader aborts the operation.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( CacheLoaderException );
+
+      /// <summary>
+      /// Thrown when an operation is attempted on a destroyed region.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( RegionDestroyedException );
+
+      /// <summary>
+      /// Thrown when an operation is attempted on a destroyed entry.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( EntryDestroyedException );
+
+      /// <summary>
+      /// Thrown when the connecting target is not running.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( NoSystemException );
+
+      /// <summary>
+      /// Thrown when an attempt is made to connect to
+      /// DistributedSystem second time.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( AlreadyConnectedException );
+
+      /// <summary>
+      /// Thrown when a non-existing file is accessed.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( FileNotFoundException );
+
+      /// <summary>
+      /// Thrown when an operation is interrupted.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( InterruptedException );
+
+      /// <summary>
+      /// Thrown when an operation unsupported by the
+      /// current configuration is attempted.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( UnsupportedOperationException );
+
+      /// <summary>
+      /// Thrown when statistics are invoked for a region where
+      /// they are disabled.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( StatisticsDisabledException );
+
+      /// <summary>
+      /// Thrown when a concurrent operation fails.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( ConcurrentModificationException );
+
+      /// <summary>
+      /// An unknown exception occurred.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( UnknownException );
+
+      /// <summary>
+      /// Thrown when a cast operation fails.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( ClassCastException );
+
+      /// <summary>
+      /// Thrown when an operation is attempted on a non-existent entry.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( EntryNotFoundException );
+
+      /// <summary>
+      /// Thrown when there is an input/output error.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF2( GemFireIOException, GemfireIOException );
+
+      /// <summary>
+      /// Thrown when gemfire configuration file is incorrect.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF2( GemFireConfigException, GemfireConfigException );
+
+      /// <summary>
+      /// Thrown when a null argument is provided to a method
+      /// where it is expected to be non-null.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( NullPointerException );
+
+      /// <summary>
+      /// Thrown when attempt is made to create an existing entry.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( EntryExistsException );
+
+      /// <summary>
+      /// Thrown when an operation is attempted before connecting
+      /// to the distributed system.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( NotConnectedException );
+
+      /// <summary>
+      /// Thrown when there is an error in the cache proxy.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( CacheProxyException );
+
+      /// <summary>
+      /// Thrown when the system cannot allocate any more memory.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( OutOfMemoryException );
+
+      /// <summary>
+      /// Thrown when an attempt is made to release a lock not
+      /// owned by the thread.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( NotOwnerException );
+
+      /// <summary>
+      /// Thrown when a region is created in an incorrect scope.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( WrongRegionScopeException );
+
+      /// <summary>
+      /// Thrown when the internal buffer size is exceeded.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( BufferSizeExceededException );
+
+      /// <summary>
+      /// Thrown when a region creation operation fails.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( RegionCreationFailedException );
+
+      /// <summary>
+      /// Thrown when there is a fatal internal exception in GemFire.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( FatalInternalException );
+
+      /// <summary>
+      /// Thrown by the persistence manager when a write
+      /// fails due to disk failure.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( DiskFailureException );
+
+      /// <summary>
+      /// Thrown by the persistence manager when the data
+      /// to be read from disk is corrupt.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( DiskCorruptException );
+
+      /// <summary>
+      /// Thrown when persistence manager fails to initialize.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( InitFailedException );
+
+      /// <summary>
+      /// Thrown when persistence manager fails to close properly.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( ShutdownFailedException );
+
+      /// <summary>
+      /// Thrown when an exception occurs on the cache server.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( CacheServerException );
+
+      /// <summary>
+      /// Thrown when bound of array/vector etc. is exceeded.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( OutOfRangeException );
+
+      /// <summary>
+      /// Thrown when query exception occurs at the server.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( QueryException );
+
+      /// <summary>
+      /// Thrown when an unknown message is received from the server.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( MessageException );
+
+      /// <summary>
+      /// Thrown when a client operation is not authorized on the server.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( NotAuthorizedException );
+
+      /// <summary>
+      /// Thrown when authentication to the server fails.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( AuthenticationFailedException );
+
+      /// <summary>
+      /// Thrown when credentials are not provided to a server which expects them.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( AuthenticationRequiredException );
+
+      /// <summary>
+      /// Thrown when a duplicate durable client id is provided to the server.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( DuplicateDurableClientException );
+
+      /// <summary>
+      /// Thrown when a client is unable to contact any locators.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( NoAvailableLocatorsException );
+
+      /// <summary>
+      /// Thrown when all connections in a pool are in use..
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( AllConnectionsInUseException );
+
+      /// <summary>
+      /// Thrown when cq is invalid
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( CqInvalidException );
+
+      /// <summary>
+      /// Thrown when function execution failed
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( FunctionExecutionException );
+
+      /// <summary>
+      /// Thrown during continuous query execution time.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( CqException );
+
+      /// <summary>
+      /// Thrown if the Cq on which the operaion performed is closed
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( CqClosedException );
+
+      /// <summary>
+      /// Thrown if the Cq Query failed
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( CqQueryException );
+
+      /// <summary>
+      /// Thrown if a Cq by this name already exists on this client
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( CqExistsException );
+
+      _GF_MG_EXCEPTION_DEF( InvalidDeltaException );
+
+      /// <summary>
+      /// Thrown if a Key is not present in the region.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( KeyNotFoundException );
+
+      /// <summary>
+      /// Thrown if commit fails.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( CommitConflictException );
+
+	  
+	        /// <summary>
+      /// Thrown if transaction delegate went down.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( TransactionDataNodeHasDepartedException );
+
+	        /// <summary>
+      /// Thrown if commit rebalance happens during a transaction.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( TransactionDataRebalancedException );
+      #ifdef CSTX_COMMENTED
+      /// <summary>
+      /// Thrown if transaction writer fails.
+      /// </summary>
+      _GF_MG_EXCEPTION_DEF( TransactionWriterException );
+      #endif
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/ExecutionM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/ExecutionM.cpp b/geode-client-native/src/clicache/ExecutionM.cpp
new file mode 100644
index 0000000..e76899a
--- /dev/null
+++ b/geode-client-native/src/clicache/ExecutionM.cpp
@@ -0,0 +1,84 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "ExecutionM.hpp"
+#include "cppcache/Execution.hpp"
+#include "ResultCollectorM.hpp"
+#include "impl/ManagedResultCollector.hpp"
+#include "impl/SafeConvert.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      Execution^ Execution::WithFilter(array<IGFSerializable^>^ routingObj)
+      {
+        _GF_MG_EXCEPTION_TRY
+           gemfire::CacheableVectorPtr rsptr = gemfire::CacheableVector::create();
+           for( int index = 0; index < routingObj->Length; index++ )
+           {
+                rsptr->push_back(gemfire::CacheablePtr(SafeMSerializableConvert( routingObj[ index])));
+	   }
+	 return Execution::Create(NativePtr->withFilter(rsptr).ptr());
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      Execution^ Execution::WithArgs(IGFSerializable^ args)
+      {
+        _GF_MG_EXCEPTION_TRY
+	 gemfire::CacheablePtr argsptr( SafeMSerializableConvert( args ) );
+	 return Execution::Create(NativePtr->withArgs(argsptr).ptr());
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      Execution^ Execution::WithCollector(IResultCollector^ rc)
+      {
+        _GF_MG_EXCEPTION_TRY
+	 gemfire::ResultCollectorPtr rcptr;
+	 if ( rc != nullptr ) {
+		rcptr = new gemfire::ManagedResultCollector( rc );
+	 }
+         return Execution::Create( NativePtr->withCollector(rcptr).ptr());
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+      IResultCollector^ Execution::Execute(String^ func)
+      {
+        return Execute(func, false);
+      }
+      IResultCollector^ Execution::Execute(String^ func, Boolean getResult)
+      {
+        return Execute(func, getResult, DEFAULT_QUERY_RESPONSE_TIMEOUT);
+      }
+      IResultCollector^ Execution::Execute(String^ func, Boolean getResult, UInt32 timeout)
+      {
+        return Execute(func, getResult, timeout, true);
+      }
+
+      IResultCollector^ Execution::Execute(String^ func, Boolean getResult, UInt32 timeout, Boolean isHA, Boolean optimizeForWrite)
+      {
+          _GF_MG_EXCEPTION_TRY
+	  ManagedString mg_function( func );
+	gemfire::ResultCollectorPtr rc = NativePtr->execute(mg_function.CharPtr, getResult, timeout, isHA, optimizeForWrite);
+	return gcnew ResultCollector(rc.ptr());
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      IResultCollector^ Execution::Execute(String^ func, Boolean getResult, UInt32 timeout, Boolean isHA)
+      {
+        return Execute(func, getResult, timeout, isHA, false);;
+      }
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/ExecutionM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/ExecutionM.hpp b/geode-client-native/src/clicache/ExecutionM.hpp
new file mode 100644
index 0000000..65bfcc8
--- /dev/null
+++ b/geode-client-native/src/clicache/ExecutionM.hpp
@@ -0,0 +1,126 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/Execution.hpp"
+#include "impl/NativeWrapper.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      interface class IGFSerializable;
+      interface class IResultCollector;
+      ref class ResultCollector;
+
+      /// <summary>
+      /// This class encapsulates events that occur for cq.
+      /// </summary>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class Execution sealed
+        : public Internal::SBWrap<gemfire::Execution>
+      {
+      public:
+        /// <summary>
+		/// Add a routing object, 
+        /// Return self.
+        /// </summary>
+		Execution^ WithFilter(array<IGFSerializable^>^ routingObj);
+
+        /// <summary>
+		/// Add an argument, 
+        /// Return self.
+        /// </summary>
+		Execution^ WithArgs(IGFSerializable^ args);
+
+        /// <summary>
+		/// Add a result collector, 
+        /// Return self.
+        /// </summary>
+		Execution^ WithCollector(IResultCollector^ rc);
+
+        /// <summary>
+        /// Execute a function, 
+        /// Return resultCollector.
+		/// </summary>
+		/// <param name="func"> The name of the function to be executed. </param>
+		/// <param name="getResult"> Indicating if results are expected. </param>
+		/// <param name="timeout"> Value to wait for the operation to finish before timing out.</param>
+		/// <param name="isHA"> Whether the given function is HA. </param>
+		/// <param name="optimizeForWrite"> Whether the function should be optmized for write operation. </param>
+        /// <deprecated>
+        /// parameters hasResult, isHA and optimizeForWrite are deprecated as of NativeClient 3.6, use of these parameters is ignored.
+        /// </deprecated>
+        IResultCollector^ Execute(String^ func, Boolean getResult, UInt32 timeout, Boolean isHA, Boolean optimizeForWrite);
+
+        /// <summary>
+        /// Execute a function, 
+		/// Return resultCollector.
+        /// </summary>
+		/// <param name="func"> The name of the function to be executed. </param>
+		/// <param name="getResult"> Indicating if results are expected. </param>
+		/// <param name="timeout"> Value to wait for the operation to finish before timing out.</param>
+		/// <param name="isHA"> Whether the given function is HA. </param>
+        IResultCollector^ Execute(String^ func, Boolean getResult, UInt32 timeout, Boolean isHA);
+
+        /// <summary>
+        /// Execute a function, 
+        /// Return resultCollector.
+        /// </summary>
+		/// <param name="getResult"> Indicating if results are expected. </param>
+		/// <param name="timeout"> Value to wait for the operation to finish before timing out.</param> 
+        IResultCollector^ Execute(String^ func, Boolean getResult, UInt32 timeout);
+        
+        /// <summary>
+		/// Execute a function, 
+        /// Return resultCollector.
+        /// </summary>
+		/// <param name="getResult"> Indicating if results are expected. </param>
+        
+        IResultCollector^ Execute(String^ func, Boolean getResult);
+
+        /// <summary>
+        /// Execute a function, 
+        /// Return resultCollector.
+        /// </summary>
+        IResultCollector^ Execute(String^ func);
+
+      internal:
+
+        /// <summary>
+        /// Internal factory function to wrap a native object pointer inside
+        /// this managed class with null pointer check.
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        /// <returns>
+        /// The managed wrapper object; null if the native pointer is null.
+        /// </returns>
+        inline static Execution^ Create( gemfire::Execution* nativeptr )
+        {
+          return ( nativeptr != nullptr ?
+            gcnew Execution( nativeptr ) : nullptr );
+	}
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer.
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline Execution( gemfire::Execution* nativeptr )
+          : SBWrap( nativeptr ) { }
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/ExpirationActionM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/ExpirationActionM.hpp b/geode-client-native/src/clicache/ExpirationActionM.hpp
new file mode 100644
index 0000000..4188258
--- /dev/null
+++ b/geode-client-native/src/clicache/ExpirationActionM.hpp
@@ -0,0 +1,124 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/ExpirationAction.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      /// <summary>
+      /// Enumerated type for expiration (LRU) actions.
+      /// Contains values for setting an action type.
+      /// </summary>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public enum class ExpirationAction
+      {
+        /// <summary>
+        /// When the region or cached object expires, it is invalidated.
+        /// </summary>
+        Invalidate = 0,
+
+        /// <summary>
+        /// When expired, invalidated locally only.
+        /// </summary>
+        LocalInvalidate,
+
+        /// <summary>
+        /// When the region or cached object expires, it is destroyed.
+        /// </summary>
+        Destroy,
+
+        /// <summary>
+        /// When expired, destroyed locally only.
+        /// </summary>
+        LocalDestroy,
+
+        /// <summary>Invalid action type.</summary>
+        InvalidAction
+      };
+
+
+      /// <summary>
+      /// Static class containing convenience methods for <c>ExpirationAction</c>.
+      /// </summary>
+      public ref class Expiration STATICCLASS
+      {
+      public:
+
+        /// <summary>
+        /// Returns true if this action is distributed invalidate.
+        /// </summary>
+        /// <returns>true if this an <c>Invalidate</c></returns>
+        inline static bool IsInvalidate( ExpirationAction type ) 
+        {
+          return (type == ExpirationAction::Invalidate);
+        }
+
+        /// <summary>
+        /// Returns true if this action is local invalidate.
+        /// </summary>
+        /// <returns>true if this is a <c>LocalInvalidate</c></returns>
+        inline static bool IsLocalInvalidate( ExpirationAction type ) 
+        {
+          return (type == ExpirationAction::LocalInvalidate);
+        }
+
+        /// <summary>
+        /// Returns true if this action is distributed destroy.
+        /// </summary>
+        /// <returns>true if this is <c>Destroy</c></returns>
+        inline static bool IsDestroy( ExpirationAction type ) 
+        {
+          return (type == ExpirationAction::Destroy);
+        }
+
+        /// <summary>
+        /// Returns true if this action is local destroy.
+        /// </summary>
+        /// <returns>true if this is <c>LocalDestroy</c></returns>
+        inline static bool IsLocalDestroy( ExpirationAction type )
+        {
+          return (type == ExpirationAction::LocalDestroy);
+        }
+
+        /// <summary>
+        /// Returns true if this action is local.
+        /// </summary>
+        /// <returns>true if this is <c>LocalInvalidate</c> or
+        /// <c>LocalDestroy</c></returns>
+        inline static bool IsLocal( ExpirationAction type )
+        {
+          return (type == ExpirationAction::LocalInvalidate) ||
+            (type == ExpirationAction::LocalDestroy);
+        }
+
+        /// <summary>
+        /// Returns true if this action is distributed.
+        /// </summary>
+        /// <returns>true if this is an <c>Invalidate</c> or
+        /// a <c>Destroy</c></returns>
+        inline static bool IsDistributed( ExpirationAction type ) 
+        {
+          return (type == ExpirationAction::Invalidate) ||
+            (type == ExpirationAction::Destroy);
+        }
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/FunctionServiceM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/FunctionServiceM.cpp b/geode-client-native/src/clicache/FunctionServiceM.cpp
new file mode 100644
index 0000000..a0b7cd3
--- /dev/null
+++ b/geode-client-native/src/clicache/FunctionServiceM.cpp
@@ -0,0 +1,121 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "FunctionServiceM.hpp"
+#include "cppcache/FunctionService.hpp"
+#include "PoolM.hpp"
+#include "RegionM.hpp"
+#include "ExecutionM.hpp"
+#include "cppcache/RegionService.hpp"
+#include "impl/AuthenticatedCacheM.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      Execution^ FunctionService::OnRegion( Region^ rg )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::RegionPtr regionptr(
+            GetNativePtr<gemfire::Region>( rg ) );
+
+          gemfire::ExecutionPtr& nativeptr( gemfire::FunctionService::onRegion(
+            regionptr ) );
+          return Execution::Create( nativeptr.ptr( ) );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+      Execution^ FunctionService::OnServer( Pool^ pl )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::PoolPtr poolptr(GetNativePtr<gemfire::Pool>( pl ) );
+
+          gemfire::ExecutionPtr& nativeptr( gemfire::FunctionService::onServer(
+            poolptr ) );
+          return Execution::Create( nativeptr.ptr( ) );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      Execution^ FunctionService::OnServers( Pool^ pl )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::PoolPtr poolptr(GetNativePtr<gemfire::Pool>( pl ) );
+          gemfire::ExecutionPtr& nativeptr( gemfire::FunctionService::onServers(
+            poolptr ) );
+          return Execution::Create( nativeptr.ptr( ) );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      Execution^ FunctionService::OnServer( IRegionService^ cache )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          Cache^ realCache = dynamic_cast<Cache^>(cache);
+
+        if(realCache != nullptr)
+        {
+            gemfire::RegionServicePtr cacheptr(GetNativePtr<gemfire::RegionService>( realCache ) );
+
+            gemfire::ExecutionPtr& nativeptr( gemfire::FunctionService::onServer(
+              cacheptr ) );
+            return Execution::Create( nativeptr.ptr( ) );
+        }
+        else
+        {
+          AuthenticatedCache^ authCache = dynamic_cast<AuthenticatedCache^>(cache);
+          gemfire::RegionServicePtr cacheptr(GetNativePtr<gemfire::RegionService>( authCache ) );
+
+            gemfire::ExecutionPtr& nativeptr( gemfire::FunctionService::onServer(
+              cacheptr ) );
+            return Execution::Create( nativeptr.ptr( ) );
+        }
+
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      Execution^ FunctionService::OnServers( IRegionService^ cache )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          Cache^ realCache = dynamic_cast<Cache^>(cache);
+
+          if(realCache != nullptr)
+          {
+            gemfire::RegionServicePtr cacheptr(GetNativePtr<gemfire::RegionService>( realCache ) );
+
+            gemfire::ExecutionPtr& nativeptr( gemfire::FunctionService::onServers(
+              cacheptr ) );
+            return Execution::Create( nativeptr.ptr( ) );
+          }
+          else
+          {
+            AuthenticatedCache^ authCache = dynamic_cast<AuthenticatedCache^>(cache);
+            gemfire::RegionServicePtr cacheptr(GetNativePtr<gemfire::RegionService>( authCache ) );
+
+            gemfire::ExecutionPtr& nativeptr( gemfire::FunctionService::onServers(
+              cacheptr ) );
+            return Execution::Create( nativeptr.ptr( ) );
+          }
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/FunctionServiceM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/FunctionServiceM.hpp b/geode-client-native/src/clicache/FunctionServiceM.hpp
new file mode 100644
index 0000000..437bb08
--- /dev/null
+++ b/geode-client-native/src/clicache/FunctionServiceM.hpp
@@ -0,0 +1,93 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/FunctionService.hpp"
+#include "CacheM.hpp"
+#include "impl/NativeWrapper.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      ref class Region;
+      ref class Pool;
+      ref class Execution;
+
+      /// <summary>
+      /// A factory class used to create Execute object for function execution
+      /// </summary>
+      /// <remarks>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class FunctionService 
+        : public Internal::SBWrap<gemfire::FunctionService>
+      {
+      public:
+
+        /// <summary>
+        /// Creates a new region Execution object
+        /// </summary>
+        /// <remarks>
+        /// If Pool is multiusersecure mode then one need to pass logical instance of Region Pool->CreateSecureUserCache(<credentials>)->getRegion(<regionPath>).
+        /// </remarks>
+        static Execution^ OnRegion( Region^ rg );
+
+        /// <summary>
+        /// Creates a new Execution object on one server
+        /// </summary>
+        /// <remarks>
+        /// </remarks>
+        /// <exception cref="UnsupportedOperationException">unsupported operation exception, when Pool is in multiusersecure mode.</exception>
+        static Execution^ OnServer( Pool^ pl );
+
+        /// <summary>
+        /// Creates a new Execution object on all servers in the pool
+        /// </summary>
+        /// <remarks>
+        /// </remarks>
+        /// <exception cref="UnsupportedOperationException">unsupported operation exception, when Pool is in multiusersecure mode.</exception>
+        static Execution^ OnServers( Pool^ pl );
+
+        /// <summary>
+        /// Creates a new Execution object on one server.
+        /// </summary>
+        /// <remarks>
+        /// </remarks>
+        /// <exception cref="IllegalStateException">when Pool has been closed.</exception>
+        static Execution^ OnServer( IRegionService^ cache );
+
+        /// <summary>
+        /// Creates a new Execution object on all servers in the pool.
+        /// </summary>
+        /// <remarks>
+        /// </remarks>
+        /// <exception cref="IllegalStateException">when Pool has been closed.</exception>
+        static Execution^ OnServers( IRegionService^ cache );
+        
+      internal:
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline FunctionService( gemfire::FunctionService* nativeptr )
+          : SBWrap( nativeptr ) { }
+
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/GemFireClassIdsM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/GemFireClassIdsM.hpp b/geode-client-native/src/clicache/GemFireClassIdsM.hpp
new file mode 100644
index 0000000..f2e9099
--- /dev/null
+++ b/geode-client-native/src/clicache/GemFireClassIdsM.hpp
@@ -0,0 +1,276 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include <cppcache/GemfireTypeIds.hpp>
+
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      /// <summary>
+      /// Static class containing the classIds of the built-in cacheable types.
+      /// </summary>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class GemFireClassIds
+      {
+      public:
+
+        /// <summary>
+        /// ClassId of <c>Properties</c> class
+        /// </summary>
+        literal uint32_t Properties =
+          gemfire::GemfireTypeIds::Properties + 0x80000000;
+
+        /// <summary>        
+        /// ClassId of <c>CharArray</c> class
+        /// </summary>
+        literal uint32_t CharArray =
+          gemfire::GemfireTypeIds::CharArray + 0x80000000;
+
+        /// <summary>
+        /// ClassId of <c>BooleanArray</c> class
+        /// </summary>
+        literal uint32_t BooleanArray =
+          gemfire::GemfireTypeIds::BooleanArray + 0x80000000;
+
+        /// <summary>
+        /// ClassId of <c>RegionAttributes</c> class
+        /// </summary>
+        literal uint32_t RegionAttributes =
+          gemfire::GemfireTypeIds::RegionAttributes + 0x80000000;
+
+        /// <summary>
+        /// ClassId of <c>CacheableUndefined</c> class
+        /// Implementation note: this has DSFID of FixedIDByte hence a
+        /// different increment.
+        /// </summary>
+        literal uint32_t CacheableUndefined =
+          gemfire::GemfireTypeIds::CacheableUndefined + 0xa0000000;
+
+        /// <summary>
+        /// ClassId of <c>Struct</c> class
+        /// </summary>
+        literal uint32_t Struct =
+          gemfire::GemfireTypeIds::Struct + 0x80000000;
+
+        /// <summary>
+        /// ClassId of <c>CacheableString</c> class
+        /// </summary>
+        literal uint32_t CacheableString =
+          gemfire::GemfireTypeIds::CacheableString + 0x80000000;
+
+        /// <summary>
+        /// ClassId of <c>CacheableString</c> class for huge strings
+        /// </summary>
+        literal uint32_t CacheableStringHuge =
+          gemfire::GemfireTypeIds::CacheableStringHuge + 0x80000000;
+
+        /// <summary>
+        /// ClassId of <c>CacheableBytes</c> class
+        /// </summary>
+        literal uint32_t CacheableBytes =
+          gemfire::GemfireTypeIds::CacheableBytes + 0x80000000;
+
+        /// <summary>
+        /// ClassId of <c>CacheableInt16Array</c> class
+        /// </summary>
+        literal uint32_t CacheableInt16Array =
+          gemfire::GemfireTypeIds::CacheableInt16Array + 0x80000000;
+
+        /// <summary>
+        /// ClassId of <c>CacheableInt32Array</c> class
+        /// </summary>
+        literal uint32_t CacheableInt32Array =
+          gemfire::GemfireTypeIds::CacheableInt32Array + 0x80000000;
+
+        /// <summary>
+        /// ClassId of <c>CacheableInt64Array</c> class
+        /// </summary>
+        literal uint32_t CacheableInt64Array =
+          gemfire::GemfireTypeIds::CacheableInt64Array + 0x80000000;
+
+        /// <summary>
+        /// ClassId of <c>CacheableFloatArray</c> class
+        /// </summary>
+        literal uint32_t CacheableFloatArray =
+          gemfire::GemfireTypeIds::CacheableFloatArray + 0x80000000;
+
+        /// <summary>
+        /// ClassId of <c>CacheableDoubleArray</c> class
+        /// </summary>
+        literal uint32_t CacheableDoubleArray =
+          gemfire::GemfireTypeIds::CacheableDoubleArray + 0x80000000;
+
+        /// <summary>
+        /// ClassId of <c>CacheableVector</c> class for object arrays
+        /// </summary>
+        literal uint32_t CacheableObjectArray =
+          gemfire::GemfireTypeIds::CacheableObjectArray + 0x80000000;
+
+        /// <summary>
+        /// ClassId of <c>CacheableBoolean</c> class
+        /// </summary>
+        literal uint32_t CacheableBoolean =
+          gemfire::GemfireTypeIds::CacheableBoolean + 0x80000000;
+
+        /// <summary>
+        /// ClassId of <c>CacheableInt16</c> class for wide-characters
+        /// </summary>
+        literal uint32_t CacheableCharacter =
+          gemfire::GemfireTypeIds::CacheableWideChar + 0x80000000;
+
+        /// <summary>
+        /// ClassId of <c>CacheableByte</c> class
+        /// </summary>
+        literal uint32_t CacheableByte =
+          gemfire::GemfireTypeIds::CacheableByte + 0x80000000;
+
+        /// <summary>
+        /// ClassId of <c>CacheableInt16</c> class
+        /// </summary>
+        literal uint32_t CacheableInt16 =
+          gemfire::GemfireTypeIds::CacheableInt16 + 0x80000000;
+
+        /// <summary>
+        /// ClassId of <c>CacheableInt32</c> class
+        /// </summary>
+        literal uint32_t CacheableInt32 =
+          gemfire::GemfireTypeIds::CacheableInt32 + 0x80000000;
+
+        /// <summary>
+        /// ClassId of <c>CacheableInt64</c> class
+        /// </summary>
+        literal uint32_t CacheableInt64 =
+          gemfire::GemfireTypeIds::CacheableInt64 + 0x80000000;
+
+        /// <summary>
+        /// ClassId of <c>CacheableFloat</c> class
+        /// </summary>
+        literal uint32_t CacheableFloat =
+          gemfire::GemfireTypeIds::CacheableFloat + 0x80000000;
+
+        /// <summary>
+        /// ClassId of <c>CacheableDouble</c> class
+        /// </summary>
+        literal uint32_t CacheableDouble =
+          gemfire::GemfireTypeIds::CacheableDouble + 0x80000000;
+
+        /// <summary>
+        /// ClassId of <c>CacheableDate</c> class
+        /// </summary>
+        literal uint32_t CacheableDate =
+          gemfire::GemfireTypeIds::CacheableDate + 0x80000000;
+
+        /// <summary>
+        /// ClassId of <c>CacheableFileName</c> class
+        /// </summary>
+        literal uint32_t CacheableFileName =
+          gemfire::GemfireTypeIds::CacheableFileName + 0x80000000;
+
+        /// <summary>
+        /// ClassId of <c>CacheableStringArray</c> class
+        /// </summary>
+        literal uint32_t CacheableStringArray =
+          gemfire::GemfireTypeIds::CacheableStringArray + 0x80000000;
+
+        /// <summary>
+        /// ClassId of <c>CacheableVector</c> class
+        /// </summary>
+        literal uint32_t CacheableVector =
+          gemfire::GemfireTypeIds::CacheableVector + 0x80000000;
+
+        /// <summary>
+        /// ClassId of <c>CacheableStack</c> class
+        /// </summary>
+        literal uint32_t CacheableStack =
+          gemfire::GemfireTypeIds::CacheableStack + 0x80000000;
+
+        /// <summary>
+        /// ClassId of <c>CacheableArrayList</c> class
+        /// </summary>
+        literal uint32_t CacheableArrayList =
+          gemfire::GemfireTypeIds::CacheableArrayList + 0x80000000;
+
+        /// <summary>
+        /// ClassId of <c>CacheableHashSet</c> class
+        /// </summary>
+        literal uint32_t CacheableHashSet =
+          gemfire::GemfireTypeIds::CacheableHashSet + 0x80000000;
+
+        /// <summary>
+        /// ClassId of <c>CacheableLinkedHashSet</c> class
+        /// </summary>
+        literal uint32_t CacheableLinkedHashSet =
+          gemfire::GemfireTypeIds::CacheableLinkedHashSet + 0x80000000;
+
+        /// <summary>
+        /// ClassId of <c>CacheableHashMap</c> class
+        /// </summary>
+        literal uint32_t CacheableHashMap =
+          gemfire::GemfireTypeIds::CacheableHashMap + 0x80000000;
+
+        /// <summary>
+        /// ClassId of <c>CacheableHashTable</c> class
+        /// </summary>
+        literal uint32_t CacheableHashTable =
+          gemfire::GemfireTypeIds::CacheableHashTable + 0x80000000;
+
+        /// <summary>
+        /// ClassId of <c>CacheableIdentityHashMap</c> class
+        /// </summary>
+        literal uint32_t CacheableIdentityHashMap =
+          gemfire::GemfireTypeIds::CacheableIdentityHashMap + 0x80000000;
+
+        /// <summary>
+        /// Not used.
+        /// </summary>
+        literal uint32_t CacheableTimeUnit =
+          gemfire::GemfireTypeIds::CacheableTimeUnit + 0x80000000;
+
+        /// <summary>
+        /// ClassId of <c>CacheableString</c> class for null strings
+        /// </summary>
+        literal uint32_t CacheableNullString =
+          gemfire::GemfireTypeIds::CacheableNullString + 0x80000000;
+
+        /// <summary>
+        /// ClassId of <c>CacheableString</c> class for ASCII strings
+        /// </summary>
+        literal uint32_t CacheableASCIIString =
+          gemfire::GemfireTypeIds::CacheableASCIIString + 0x80000000;
+
+        /// <summary>
+        /// ClassId of <c>CacheableString</c> class for huge ASCII strings
+        /// </summary>
+        literal uint32_t CacheableASCIIStringHuge =
+          gemfire::GemfireTypeIds::CacheableASCIIStringHuge + 0x80000000;
+
+
+        // Built-in managed types.
+
+        /// <summary>
+        /// ClassId of <c>CacheableObject</c> class
+        /// </summary>
+        literal uint32_t CacheableManagedObject = 7 + 0x80000000;
+
+        /// <summary>
+        /// ClassId of <c>CacheableObjectXml</c> class
+        /// </summary>
+        literal uint32_t CacheableManagedObjectXml = 8 + 0x80000000;
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/IAuthInitialize.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/IAuthInitialize.hpp b/geode-client-native/src/clicache/IAuthInitialize.hpp
new file mode 100644
index 0000000..15cebed
--- /dev/null
+++ b/geode-client-native/src/clicache/IAuthInitialize.hpp
@@ -0,0 +1,71 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      ref class Properties;
+
+      /// <summary>
+      /// Specifies the mechanism to obtain credentials for a client.
+      /// It is mandantory for clients when the server is running in secure
+      /// mode having a <c>security-client-authenticator</c> module specified.
+      /// Implementations should register the library path as
+      /// <c>security-client-auth-library</c> system property and factory
+      /// function (a zero argument function returning pointer to an
+      /// AuthInitialize object) as the <c>security-client-auth-factory</c>
+      /// system property.
+      ///
+      /// For a managed class implementing <c>IAuthInitialize</c> the fully
+      /// qualified name of the factory function should be provided in the
+      /// form {Namespace}.{Class Name}.{Method Name} as the
+      /// <c>security-client-auth-factory</c> property.
+      /// </summary>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public interface class IAuthInitialize
+      {
+      public:
+
+        /// <summary>
+        /// Initialize with the given set of security properties
+        /// return the credentials for the client as properties.
+        /// </summary>
+        /// <param name="props">
+        /// the set of <c>security-*</c> properties provided to the
+        /// <see cref="DistributedSystem.connect"/> method
+        /// </param>
+        /// <param name="server">
+        /// the ID of the current endpoint in the format "host:port"
+        /// </param>
+        /// <returns>
+        /// the credentials to be used for the given server
+        /// </returns>
+        /// <remarks>
+        /// This method can modify the given set of properties. For
+        /// example it may invoke external agents or even interact with
+        /// the user.
+        /// </remarks>
+        Properties^ GetCredentials(Properties^ props, String^ server);
+
+        /// <summary>
+        /// Invoked before the cache goes down.
+        /// </summary>
+        void Close();
+
+      };
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/ICacheListener.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/ICacheListener.hpp b/geode-client-native/src/clicache/ICacheListener.hpp
new file mode 100644
index 0000000..04cb341
--- /dev/null
+++ b/geode-client-native/src/clicache/ICacheListener.hpp
@@ -0,0 +1,199 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+
+#include "RegionM.hpp"
+#include "EntryEventM.hpp"
+#include "RegionEventM.hpp"
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      /// <summary>
+      /// An application plug-in that can be installed on a region.
+      /// </summary>
+      /// <remarks>
+      /// Listeners are change notifications that are invoked
+      /// AFTER the change has occured for region update operations on a client.
+      /// Listeners also receive notifications when entries in a region are modified.
+      /// Multiple events can cause concurrent invocation
+      /// of <c>ICacheListener</c> methods.  If event A occurs before event B,
+      /// there is no guarantee that their corresponding <c>ICacheListener</c>
+      /// method invocations will occur in the same order. Any exceptions thrown by
+      /// the listener are caught by GemFire and logged. If the exception is due to
+      /// listener invocation on the same thread where a region operation has been
+      /// performed, then a <c>CacheListenerException</c> is thrown back to
+      /// the application. If the exception is for a notification received from
+      /// server then that is logged and the notification thread moves on to
+      /// receiving other notifications.
+      /// <para>
+      /// A cache listener is defined in the <see cref="RegionAttributes" />.
+      /// </para>
+      ///
+      /// There are two cases in which listeners are invoked. The first is when a
+      /// region modification operation (e.g. put, create, destroy, invalidate)
+      /// is performed. For this case it is important to ensure that minimal work is
+      /// done in the listener before returning control back to Gemfire since the
+      /// operation will block till the listener has not completed. For example,
+      /// a listener implementation may choose to hand off the event to a thread pool
+      /// that then processes the event on its thread rather than the listener thread.
+      /// The second is when notifications are received from java server as a result
+      /// of region register interest calls (<c>Region.RegisterKeys</c> etc),
+      /// or invalidate notifications when notify-by-subscription is false on the
+      /// server. In this case the methods of <c>ICacheListener</c> are invoked
+      /// asynchronously (i.e. does not block the thread that receives notification
+      /// messages). Additionally for the latter case of notifications from server,
+      /// listener is always invoked whether or not local operation is successful
+      /// e.g. if a destroy notification is received and key does not exist in the
+      /// region, the listener will still be invoked. This is different from the
+      /// first case where listeners are invoked only when the region update
+      /// operation succeeds.
+      /// </remarks>
+      /// <seealso cref="AttributesFactory.SetCacheListener" />
+      /// <seealso cref="RegionAttributes.CacheListener" />
+      /// <seealso cref="ICacheLoader" />
+      /// <seealso cref="ICacheWriter" />
+      /// <seealso cref="CacheListenerException" />
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public interface class ICacheListener
+      {
+      public:
+
+        /// <summary>
+        /// Handles the event of a new key being added to a region.
+        /// </summary>
+        /// <remarks>
+        /// The entry did not previously exist in this region in the local cache
+        /// (even with a null value).
+        /// <para>
+        /// This function does not throw any exception.
+        /// </para>
+        /// </remarks>
+        /// <param name="ev">
+        /// Denotes the event object associated with the entry creation.
+        /// </param>
+        /// <seealso cref="Region.Create" />
+        /// <seealso cref="Region.Put" />
+        /// <seealso cref="Region.Get" />
+        void AfterCreate( EntryEvent^ ev );
+
+        /// <summary>
+        /// Handles the event of an entry's value being modified in a region.
+        /// </summary>
+        /// <remarks>
+        /// This entry previously existed in this region in the local cache,
+        /// but its previous value may have been null.
+        /// </remarks>
+        /// <param name="ev">
+        /// EntryEvent denotes the event object associated with updating the entry.
+        /// </param>
+        /// <seealso cref="Region.Put" />
+        void AfterUpdate( EntryEvent^ ev );
+
+        /// <summary>
+        /// Handles the event of an entry's value being invalidated.
+        /// </summary>
+        /// <param name="ev">
+        /// EntryEvent denotes the event object associated with the entry invalidation.
+        /// </param>
+        void AfterInvalidate( EntryEvent^ ev );
+
+        /// <summary>
+        /// Handles the event of an entry being destroyed.
+        /// </summary>
+        /// <param name="ev">
+        /// EntryEvent denotes the event object associated with the entry destruction.
+        /// </param>
+        /// <seealso cref="Region.Destroy" />
+        void AfterDestroy( EntryEvent^ ev );
+
+        /// <summary>
+        /// Handles the event of a region being cleared.
+        /// </summary>
+        void AfterRegionClear( RegionEvent^ ev );
+
+        /// <summary>
+        /// Handles the event of a region being invalidated.
+        /// </summary>
+        /// <remarks>
+        /// Events are not invoked for each individual value that is invalidated
+        /// as a result of the region being invalidated. Each subregion, however,
+        /// gets its own <c>RegionInvalidated</c> event invoked on its listener.
+        /// </remarks>
+        /// <param name="ev">
+        /// RegionEvent denotes the event object associated with the region invalidation.
+        /// </param>
+        /// <seealso cref="Region.InvalidateRegion" />
+        void AfterRegionInvalidate( RegionEvent^ ev );
+
+        /// <summary>
+        /// Handles the event of a region being destroyed.
+        /// </summary>
+        /// <remarks>
+        /// Events are not invoked for each individual entry that is destroyed
+        /// as a result of the region being destroyed. Each subregion, however,
+        /// gets its own <c>AfterRegionDestroyed</c> event invoked on its listener.
+        /// </remarks>
+        /// <param name="ev">
+        /// RegionEvent denotes the event object associated with the region destruction.
+        /// </param>
+        /// <seealso cref="Region.DestroyRegion" />
+        void AfterRegionDestroy( RegionEvent^ ev );
+
+        /// <summary>
+        /// Handles the event of a region going live.
+        /// </summary>
+        /// <remarks>
+        /// Each subregion gets its own <c>AfterRegionLive</c> event invoked on its listener.
+        /// </remarks>
+        /// <param name="ev">
+        /// RegionEvent denotes the event object associated with the region going live.
+        /// </param>
+        /// <seealso cref="Cache.ReadyForEvents" />
+        void AfterRegionLive( RegionEvent^ ev );
+
+        /// <summary>
+        /// Called when the region containing this callback is destroyed, when
+        /// the cache is closed.
+        /// </summary>
+        /// <remarks>
+        /// Implementations should clean up any external resources,
+        /// such as database connections. Any runtime exceptions this method
+        /// throws will be logged.
+        /// </remarks>
+        /// <param>
+        /// It is possible for this method to be called multiple times on a single
+        /// callback instance, so implementations must be tolerant of this.
+        /// </param>
+        /// <seealso cref="Cache.Close" />
+        /// <seealso cref="Region.DestroyRegion" />
+        void Close( Region^ region );
+
+        ///<summary>
+        ///Called when all the endpoints associated with region are down.
+        ///This will be called when all the endpoints are down for the first time.
+        ///If endpoints come up and again go down it will be called again.
+        ///This will also be called when all endpoints are down and region is attached to the pool.
+        ///</summary>
+        ///<remarks>
+        ///</remark>
+        ///<param>
+        ///region Region^ denotes the assosiated region.
+        ///</param>
+        void AfterRegionDisconnected(Region^ region );
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/ICacheLoader.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/ICacheLoader.hpp b/geode-client-native/src/clicache/ICacheLoader.hpp
new file mode 100644
index 0000000..668d2ef
--- /dev/null
+++ b/geode-client-native/src/clicache/ICacheLoader.hpp
@@ -0,0 +1,108 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/CacheLoader.hpp"
+
+#include "ICacheableKey.hpp"
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      ref class Region;
+      interface class IGFSerializable;
+      //interface class ICacheableKey;
+
+      /// <summary>
+      /// CacheLoader
+      /// </summary>
+      /// <remarks>
+      /// CacheLoader
+      /// </remarks>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class CacheLoader STATICCLASS
+      {
+      };
+
+      /// <summary>
+      /// A data-loading application plug-in that can be installed on a region.
+      /// </summary>
+      /// <remarks>
+      /// Loaders facilitate loading of data into the cache from a third-party data source. 
+      /// When an application does a
+      /// lookup for a key in a region and it does not exist, GemFire checks to
+      /// see if any loaders are available for the region in the system and
+      /// invokes them to get the value for the key into the cache.
+      /// <para>
+      /// A cache loader is defined in the <see cref="RegionAttributes" />.
+      /// </para>
+      /// When <see cref="Region.Get" /> is called for a region
+      /// entry that has a null value, the <see cref="ICacheLoader.Load" />
+      /// method of the region's cache loader is invoked.  The <c>Load</c> method
+      /// creates the value for the desired key by performing an operation such
+      /// as a database query. 
+      /// </remarks>
+      /// <seealso cref="AttributesFactory.SetCacheLoader" />
+      /// <seealso cref="RegionAttributes.CacheLoader" />
+      /// <seealso cref="ICacheListener" />
+      /// <seealso cref="ICacheWriter" />
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public interface class ICacheLoader
+      {
+      public:
+
+        /// <summary>
+        /// Loads a value. Application writers should implement this
+        /// method to customize the loading of a value.
+        /// </summary>
+        /// <remarks>
+        /// This method is called
+        /// by the caching service when the requested value is not in the cache.
+        /// Any exception thrown by this method is propagated back to and thrown
+        /// by the invocation of <see cref="Region.Get" /> that triggered this load.
+        /// </remarks>
+        /// <param name="region">a Region for which this is called.</param>
+        /// <param name="key">the key for the cacheable</param>
+        /// <param name="helper">
+        /// </param>
+        /// <returns>
+        /// the value supplied for this key, or null if no value can be
+        /// supplied. 
+        /// If every available loader returns
+        /// a null value, <see cref="Region.Get" /> will return null.
+        /// </returns>
+        /// <seealso cref="Region.Get" />
+        IGFSerializable^ Load(Region^ region, ICacheableKey^ key,
+          IGFSerializable^ helper);
+
+        /// <summary>
+        /// Called when the region containing this callback is destroyed, when
+        /// the cache is closed.
+        /// </summary>
+        /// <remarks>
+        /// Implementations should clean up any external resources, such as
+        /// database connections. Any runtime exceptions this method throws will be logged.
+        /// <para>
+        /// It is possible for this method to be called multiple times on a single
+        /// callback instance, so implementations must be tolerant of this.
+        /// </para>
+        /// </remarks>
+        /// <seealso cref="Cache.Close" />
+        /// <seealso cref="Region.DestroyRegion" />
+        void Close( Region^ region );
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/ICacheWriter.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/ICacheWriter.hpp b/geode-client-native/src/clicache/ICacheWriter.hpp
new file mode 100644
index 0000000..be47c1d
--- /dev/null
+++ b/geode-client-native/src/clicache/ICacheWriter.hpp
@@ -0,0 +1,161 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+
+#include "RegionM.hpp"
+#include "EntryEventM.hpp"
+#include "RegionEventM.hpp"
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      /// <summary>
+      /// An application plug-in that can be installed on a region.
+      /// Defines methods that are called <b>before</b> entry modification,
+      /// such as writing the value to a database.
+      /// </summary>
+      /// <remarks>
+      /// <para>
+      /// A distributed region will typically have a single cache writer.
+      /// If the application is designed such that all or most updates to
+      /// a region occur on a node, the cache writer for the region should
+      /// be installed at that node. 
+      /// </para><para>
+      /// A cache writer is defined in the <see cref="RegionAttributes" />.
+      /// </para><para>
+      /// Cache writer invocations are initiated by the node where the entry or
+      /// region modification occurs. 
+      /// </para><para>
+      /// Before a region is updated via a put, create, or destroy operation,
+      /// GemFire will call an <c>ICacheWriter</c> that is installed anywhere in any
+      /// participating cache for that region, preferring a local <c>ICacheWriter</c>
+      /// if there is one. Usually there will be only one <c>ICacheWriter</c> in
+      /// the distributed system. If there are multiple <c>ICacheWriter</c>s
+      /// available in the distributed system, the GemFire
+      /// implementation always prefers one that is stored locally, or else picks one
+      /// arbitrarily. In any case, only one <c>ICacheWriter</c> will be invoked.
+      /// </para><para>
+      /// The typical use for a <c>ICacheWriter</c> is to update a database.
+      /// Application writers should implement these methods to execute
+      /// application-specific behavior before the cache is modified.
+      /// </para>
+      /// <para>
+      /// Note that cache writer callbacks are synchronous callbacks and have the ability
+      /// to veto the cache update. Since cache writer invocations require communications
+      /// over the network, (especially if they are not co-located on the nodes where the
+      /// change occurs) the use of cache writers presents a performance penalty.
+      /// </para><para>
+      /// The <c>ICacheWriter</c> is capable of aborting the update to the cache by throwing
+      /// a <c>CacheWriterException</c>. This exception or any runtime exception
+      /// thrown by the <c>ICacheWriter</c> will abort the operation, and the
+      /// exception will be propagated to the initiator of the operation, regardless
+      /// of whether the initiator is in the same process as the <c>ICacheWriter</c>.
+      /// </para>
+      /// </remarks>
+      /// <seealso cref="AttributesFactory.SetCacheWriter" />
+      /// <seealso cref="RegionAttributes.CacheWriter" />
+      /// <seealso cref="ICacheLoader" />
+      /// <seealso cref="ICacheListener" />
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public interface class ICacheWriter
+      {
+      public:
+
+        /// <summary>
+        /// Called before an entry is updated. The entry update is initiated by a
+        /// <c>Put</c> or a <c>Get</c> that causes the loader to update an existing entry.
+        /// </summary>
+        /// <remarks>
+        /// The entry previously existed in the cache where the operation was
+        /// initiated, although the old value may have been null. The entry being
+        /// updated may or may not exist in the local cache where the CacheWriter is
+        /// installed.
+        /// </remarks>
+        /// <param name="ev">
+        /// event object associated with updating the entry
+        /// </param>
+        /// <seealso cref="Region.Put" />
+        /// <seealso cref="Region.Get" />
+        bool BeforeUpdate( EntryEvent^ ev );
+
+        /// <summary>
+        /// Called before an entry is created. Entry creation is initiated by a
+        /// <c>Create</c>, a <c>Put</c>, or a <c>Get</c>.
+        /// </summary>
+        /// <remarks>
+        /// The <c>CacheWriter</c> can determine whether this value comes from a
+        /// <c>Get</c> or not from <c>Load</c>. The entry being
+        /// created may already exist in the local cache where this <c>CacheWriter</c>
+        /// is installed, but it does not yet exist in the cache where the operation was initiated.
+        /// </remarks>
+        /// <param name="ev">
+        /// event object associated with creating the entry
+        /// </param>
+        /// <seealso cref="Region.Create" />
+        /// <seealso cref="Region.Put" />
+        /// <seealso cref="Region.Get" />
+        bool BeforeCreate( EntryEvent^ ev );
+
+        /// <summary>
+        /// Called before an entry is destroyed.
+        /// </summary>
+        /// <remarks>
+        /// The entry being destroyed may or may
+        /// not exist in the local cache where the CacheWriter is installed. This method
+        /// is <em>not</em> called as a result of expiration or
+        /// <see cref="Region.LocalDestroyRegion" />.
+        /// </remarks>
+        /// <param name="ev">
+        /// event object associated with destroying the entry
+        /// </param>
+        /// <seealso cref="Region.Destroy" />
+        bool BeforeDestroy( EntryEvent^ ev );
+
+        /// <summary>
+        /// Called before this region is cleared.
+        /// </summary>
+        bool BeforeRegionClear( RegionEvent^ ev );
+
+        /// <summary>
+        /// Called before this region is destroyed.
+        /// </summary>
+        /// <param name="ev">
+        /// event object associated with destroying the region
+        /// </param>
+        /// <seealso cref="Region.DestroyRegion" />
+        bool BeforeRegionDestroy( RegionEvent^ ev );
+
+        /// <summary>
+        /// Called when the region containing this callback is destroyed, when
+        /// the cache is closed.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// Implementations should clean up any external
+        /// resources, such as database connections. Any runtime exceptions this method
+        /// throws will be logged.
+        /// </para><para>
+        /// It is possible for this method to be called multiple times on a single
+        /// callback instance, so implementations must be tolerant of this.
+        /// </para>
+        /// </remarks>
+        /// <param name="region">region to close</param>
+        /// <seealso cref="Cache.Close" />
+        /// <seealso cref="Region.DestroyRegion" />
+        void Close( Region^ region );
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/ICacheableKey.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/ICacheableKey.hpp b/geode-client-native/src/clicache/ICacheableKey.hpp
new file mode 100644
index 0000000..923e4d7
--- /dev/null
+++ b/geode-client-native/src/clicache/ICacheableKey.hpp
@@ -0,0 +1,60 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "IGFSerializable.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      /// <summary>
+      /// This interface class is the superclass of all user objects 
+      /// in the cache that can be used as a key.
+      /// </summary>
+      /// <remarks>
+      /// If an implementation is required to act as a key in the cache, then
+      /// it must implement this interface and preferably override
+      /// <c>System.Object.ToString</c> to obtain proper string representation.
+      /// Note that this interface requires that the class overrides
+      /// <c>Object.GetHashCode</c>. Though this is not enforced, the default
+      /// implementation in <c>System.Object</c> is almost certainly incorrect
+      /// and will not work correctly.
+      /// </remarks>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public interface class ICacheableKey
+        : public GemStone::GemFire::Cache::IGFSerializable
+      {
+      public:
+
+        /// <summary>
+        /// Get the hash code for this object. This is used in the internal
+        /// hash tables and so must have a nice distribution pattern.
+        /// </summary>
+        /// <returns>
+        /// The hashcode for this object.
+        /// </returns>
+        int32_t GetHashCode( );
+
+        /// <summary>
+        /// Returns true if this <c>ICacheableKey</c> matches the other.
+        /// </summary>
+        bool Equals( GemStone::GemFire::Cache::ICacheableKey^ other );
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/ICqAttributes.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/ICqAttributes.hpp b/geode-client-native/src/clicache/ICqAttributes.hpp
new file mode 100644
index 0000000..20eee1d
--- /dev/null
+++ b/geode-client-native/src/clicache/ICqAttributes.hpp
@@ -0,0 +1,108 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      interface class CqListener;
+
+      /// <summary>
+      /// An application plug-in that can be installed on a region.
+      /// Listener change notifications are invoked <c>after</c>
+      /// the change has occured.
+      /// </summary>
+      /// <remarks>
+      /// Listeners receive notifications when entries in a region change or changes occur to the
+      /// region attributes themselves.
+      /// <para>
+      /// A cache listener is defined in the <see cref="RegionAttributes" />.
+      /// </para>
+      /// The methods on a <c>ICacheListener</c>
+      /// are invoked asynchronously. Multiple events can cause concurrent invocation
+      /// of <c>ICacheListener</c> methods.  If event A occurs before event B,
+      /// there is no guarantee that their corresponding <c>ICacheListener</c>
+      /// method invocations will occur in the same order.  Any exceptions thrown by
+      /// the listener are caught by GemFire and logged. 
+      ///
+      /// Listeners are user callbacks that
+      /// are invoked by GemFire. It is important to ensure that minimal work is done in the
+      /// listener before returning control back to GemFire. For example, a listener
+      /// implementation may choose to hand off the event to a thread pool that then processes
+      /// the event on its thread rather than the listener thread
+      /// </remarks>
+      /// <seealso cref="AttributesFactory.SetCacheListener" />
+      /// <seealso cref="RegionAttributes.CacheListener" />
+      /// <seealso cref="ICacheLoader" />
+      /// <seealso cref="ICacheWriter" />
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public interface class ICqListener
+      {
+      public:
+
+        /// <summary>
+        /// Handles the event of a new key being added to a region.
+        /// </summary>
+        /// <remarks>
+        /// The entry did not previously exist in this region in the local cache
+        /// (even with a null value).
+        /// <para>
+        /// This function does not throw any exception.
+        /// </para>
+        /// </remarks>
+        /// <param name="ev">
+        /// Denotes the event object associated with the entry creation.
+        /// </param>
+        /// <seealso cref="Region.Create" />
+        /// <seealso cref="Region.Put" />
+        /// <seealso cref="Region.Get" />
+        void OnEvent( CqEvent^ ev );
+
+        /// <summary>
+        /// Handles the event of an entry's value being modified in a region.
+        /// </summary>
+        /// <remarks>
+        /// This entry previously existed in this region in the local cache,
+        /// but its previous value may have been null.
+        /// </remarks>
+        /// <param name="ev">
+        /// EntryEvent denotes the event object associated with updating the entry.
+        /// </param>
+        /// <seealso cref="Region.Put" />
+        void OnError( CqEvent^ ev );
+
+
+        /// <summary>
+        /// Called when the region containing this callback is destroyed, when
+        /// the cache is closed.
+        /// </summary>
+        /// <remarks>
+        /// Implementations should clean up any external resources,
+        /// such as database connections. Any runtime exceptions this method
+        /// throws will be logged.
+        /// <para>
+        /// It is possible for this method to be called multiple times on a single
+        /// callback instance, so implementations must be tolerant of this.
+        /// </para>
+        /// </remarks>
+        /// <seealso cref="Cache.Close" />
+        /// <seealso cref="Region.DestroyRegion" />
+        void Close();
+      };
+
+    }
+  }
+}



[04/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CacheableHashTableMN.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CacheableHashTableMN.hpp b/geode-client-native/src/clicache/com/vmware/CacheableHashTableMN.hpp
new file mode 100644
index 0000000..e717c73
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CacheableHashTableMN.hpp
@@ -0,0 +1,108 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "../../gf_defs.hpp"
+#include "CacheableHashMapMN.hpp"
+#include "DataInputMN.hpp"
+
+
+using namespace System;
+using namespace System::Collections::Generic;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+      /// <summary>
+      /// A mutable <c>ICacheableKey</c> to <c>IGFSerializable</c> hash table
+      /// that can serve as a distributable object for caching. This class
+      /// extends .NET generic <c>Dictionary</c> class.
+      /// </summary>
+      ref class CacheableHashTable
+        : public CacheableHashMap
+      {
+      public:
+
+        /// <summary>
+        /// Allocates a new empty instance.
+        /// </summary>
+        inline CacheableHashTable()
+          : CacheableHashMap()
+        { }
+
+        /// <summary>
+        /// Allocates a new instance copying from the given dictionary.
+        /// </summary>
+        /// <param name="dictionary">
+        /// The dictionary whose elements are copied to this HashTable.
+        /// </param>
+        inline CacheableHashTable(Object^ dictionary)
+          : CacheableHashMap(dictionary)
+        { }
+
+        /// <summary>
+        /// Allocates a new empty instance with given initial size.
+        /// </summary>
+        /// <param name="capacity">
+        /// The initial capacity of the HashTable.
+        /// </param>
+        inline CacheableHashTable(int32_t capacity)
+          : CacheableHashMap(capacity)
+        { }
+
+
+        // Region: IGFSerializable Members
+
+        /// <summary>
+        /// Returns the classId of the instance being serialized.
+        /// This is used by deserialization to determine what instance
+        /// type to create and deserialize into.
+        /// </summary>
+        /// <returns>the classId</returns>
+        virtual property uint32_t ClassId
+        {
+          virtual uint32_t get() override
+          {
+            return GemFireClassIds::CacheableHashTable;
+          }
+        }
+
+        // End Region: IGFSerializable Members
+
+        /// <summary>
+        /// Factory function to register this class.
+        /// </summary>
+        static IGFSerializable^ CreateDeserializable()
+        {
+          return gcnew CacheableHashTable();
+        }
+
+        virtual IGFSerializable^ FromData(DataInput^ input) override
+        {
+          m_dictionary = input->ReadHashtable();
+          return this;
+        }
+      internal:
+
+        /// <summary>
+        /// Factory function to register this class.
+        /// </summary>
+        static IGFSerializable^ Create(Object^ hashtable)
+        {
+          return gcnew CacheableHashTable(hashtable);
+        }
+      };
+
+    }
+  }
+}
+ } //namespace 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CacheableIdentityHashMapMN.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CacheableIdentityHashMapMN.hpp b/geode-client-native/src/clicache/com/vmware/CacheableIdentityHashMapMN.hpp
new file mode 100644
index 0000000..d3aa3b1
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CacheableIdentityHashMapMN.hpp
@@ -0,0 +1,118 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "../../gf_defs.hpp"
+#include "CacheableHashMapMN.hpp"
+
+
+using namespace System;
+using namespace System::Collections::Generic;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+      /// <summary>
+      /// A mutable <c>ICacheableKey</c> to <c>IGFSerializable</c> hash map
+      /// that can serve as a distributable object for caching. This class
+      /// extends .NET generic <c>Dictionary</c> class. This class is meant
+      /// as a means to interoperate with java server side
+      /// <c>IdentityHashMap</c> class objects but is intentionally not
+      /// intended to provide <c>java.util.IdentityHashMap</c> semantics.
+      /// </summary>
+      ref class CacheableIdentityHashMap
+        : public CacheableHashMap
+      {
+      public:
+        /// <summary>
+        /// Allocates a new empty instance.
+        /// </summary>
+        inline CacheableIdentityHashMap()
+          : CacheableHashMap()
+        { }
+
+        /// <summary>
+        /// Allocates a new instance copying from the given dictionary.
+        /// </summary>
+        /// <param name="dictionary">
+        /// The dictionary whose elements are copied to this HashMap.
+        /// </param>
+        inline CacheableIdentityHashMap(Object^ dictionary)
+          : CacheableHashMap(dictionary)
+        { }
+
+        /// <summary>
+        /// Allocates a new empty instance with given initial size.
+        /// </summary>
+        /// <param name="capacity">
+        /// The initial capacity of the HashMap.
+        /// </param>
+        inline CacheableIdentityHashMap(int32_t capacity)
+          : CacheableHashMap(capacity)
+        { }
+
+        /// <summary>
+        /// Static function to create a new empty instance.
+        /// </summary>
+        inline static CacheableIdentityHashMap^ Create()
+        {
+          return gcnew CacheableIdentityHashMap();
+        }
+
+        /// <summary>
+        /// Static function to create a new instance copying from the
+        /// given dictionary.
+        /// </summary>
+        inline static CacheableIdentityHashMap^ Create(
+          Object^ dictionary)
+        {
+          return gcnew CacheableIdentityHashMap(dictionary);
+        }
+
+        /// <summary>
+        /// Static function to create a new instance with given initial size.
+        /// </summary>
+        inline static CacheableIdentityHashMap^ Create(int32_t capacity)
+        {
+          return gcnew CacheableIdentityHashMap(capacity);
+        }
+
+        // Region: IGFSerializable Members
+
+        /// <summary>
+        /// Returns the classId of the instance being serialized.
+        /// This is used by deserialization to determine what instance
+        /// type to create and deserialize into.
+        /// </summary>
+        /// <returns>the classId</returns>
+        virtual property uint32_t ClassId
+        {
+          virtual uint32_t get() override
+          {
+            return GemFireClassIds::CacheableIdentityHashMap;
+          }
+        }
+
+        // End Region: IGFSerializable Members
+
+        /// <summary>
+        /// Factory function to register this class.
+        /// </summary>
+        static IGFSerializable^ CreateDeserializable()
+        {
+          return gcnew CacheableIdentityHashMap();
+        }
+      };
+    }
+  }
+}
+ } //namespace 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CacheableKeyMN.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CacheableKeyMN.cpp b/geode-client-native/src/clicache/com/vmware/CacheableKeyMN.cpp
new file mode 100644
index 0000000..176b148
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CacheableKeyMN.cpp
@@ -0,0 +1,108 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+//#include "gf_includesN.hpp"
+#include "CacheableKeyMN.hpp"
+#include "CacheableStringMN.hpp"
+#include "CacheableBuiltinsMN.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+     // generic<class TKey>
+      int32_t CacheableKey::GetHashCode()
+      {
+        return static_cast<gemfire::CacheableKey*>(NativePtr())->hashcode();
+      }
+
+     // generic<class TKey>
+      bool CacheableKey::Equals(Generic::ICacheableKey^ other)
+      {
+        if (other == nullptr || other->ClassId != ClassId) {
+          return false;
+        }
+        return static_cast<gemfire::CacheableKey*>(NativePtr())->operator==(
+          *static_cast<gemfire::CacheableKey*>(
+            ((Generic::CacheableKey^)other)->NativePtr()));
+      }
+
+      //generic<class TKey>
+      bool CacheableKey::Equals(Object^ obj)
+      {
+        CacheableKey^ otherKey =
+          dynamic_cast<CacheableKey^>(obj);
+
+        if (otherKey != nullptr) {
+          return static_cast<gemfire::CacheableKey*>(NativePtr())->operator==(
+            *static_cast<gemfire::CacheableKey*>(otherKey->NativePtr()));
+        }
+        return false;
+      }
+
+      //generic<class TKey>
+      CacheableKey::operator CacheableKey^ (Byte value)
+      {
+        return (CacheableKey^) CacheableByte::Create(value);
+      }
+
+      //generic<class TKey>
+      CacheableKey::operator CacheableKey^ (bool value)
+      {
+        return (CacheableKey^) CacheableBoolean::Create(value);
+      }
+
+      //generic<class TKey>
+      CacheableKey::operator CacheableKey^ (Char value)
+      {
+        return (CacheableKey^) CacheableCharacter::Create(value);
+      }
+
+      //generic<class TKey>
+      CacheableKey::operator CacheableKey^ (Double value)
+      {
+        return (CacheableKey^) CacheableDouble::Create(value);
+      }
+
+      //generic<class TKey>
+      CacheableKey::operator CacheableKey^ (Single value)
+      {
+        return (CacheableKey^) CacheableFloat::Create(value);
+      }
+
+      //generic<class TKey>
+      CacheableKey::operator CacheableKey^ (int16_t value)
+      {
+        return (CacheableKey^) CacheableInt16::Create(value);
+      }
+
+      //generic<class TKey>
+      CacheableKey::operator CacheableKey^ (int32_t value)
+      {
+        return (CacheableKey^) CacheableInt32::Create(value);
+      }
+
+     // generic<class TKey>
+      CacheableKey::operator CacheableKey^ (int64_t value)
+      {
+        return (CacheableKey^) CacheableInt64::Create(value);
+      }
+
+      //generic<class TKey>
+      CacheableKey::operator CacheableKey^ (String^ value)
+      {
+        return dynamic_cast<CacheableKey^>(CacheableString::Create(value));
+      }
+    }
+  }
+}
+} //namespace 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CacheableKeyMN.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CacheableKeyMN.hpp b/geode-client-native/src/clicache/com/vmware/CacheableKeyMN.hpp
new file mode 100644
index 0000000..f6c6042
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CacheableKeyMN.hpp
@@ -0,0 +1,129 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "../../gf_defs.hpp"
+#include <cppcache/CacheableKey.hpp>
+//#include "impl/NativeWrapperN.hpp"
+#include "SerializableMN.hpp"
+#include "ICacheableKeyN.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+      /// <summary>
+      /// This class wraps the native C++ <c>gemfire::Serializable</c> objects
+      /// as managed <see cref="../../IGFSerializable" /> objects.
+      /// </summary>
+      public ref class CacheableKey
+        : public Serializable, public ICacheableKey
+      {
+      public:
+        /// <summary>
+        /// Return the hashcode for this key.
+        /// It gets the hash code by calling the <c>hashcode()</c> function
+        /// of the underlying <c>gemfire::CacheableKey</c> object.
+        /// </summary>
+        virtual int32_t GetHashCode() override;
+
+        /// <summary>
+        /// Return true if this key matches other object. It invokes the '=='
+        /// operator of the underlying <c>gemfire::CacheableKey</c> object.
+        /// </summary>
+        virtual bool Equals(ICacheableKey^ other);
+
+        /// <summary>
+        /// Return true if this key matches other object.
+        /// It invokes the '==' operator if the underlying object is a
+        /// <c>gemfire::CacheableKey</c>, else returns
+        /// <c>System.Object.Equals()</c>
+        /// </summary>
+        virtual bool Equals(Object^ obj) override;
+
+        // Static conversion functions from primitive types.
+
+        /// <summary>
+        /// Implicit conversion operator from a boolean
+        /// to a <c>CacheableKey</c>.
+        /// </summary>
+        static operator CacheableKey^ (bool value);
+
+        /// <summary>
+        /// Implicit conversion operator from a byte
+        /// to a <c>CacheableKey</c>.
+        /// </summary>
+        static operator CacheableKey^ (Byte value);
+
+        /// <summary>
+        /// Implicit conversion operator from a double
+        /// to a <c>CacheableKey</c>.
+        /// </summary>
+        static operator CacheableKey^ (Double value);
+
+        /// <summary>
+        /// Implicit conversion operator from a float
+        /// to a <c>CacheableKey</c>.
+        /// </summary>
+        static operator CacheableKey^ (Single value);
+
+        /// <summary>
+        /// Implicit conversion operator from a 16-bit integer
+        /// to a <c>CacheableKey</c>.
+        /// </summary>
+        static operator CacheableKey^ (int16_t value);
+
+        /// <summary>
+        /// Implicit conversion operator from a character
+        /// to a <c>CacheableKey</c>.
+        /// </summary>
+        static operator CacheableKey^ (Char value);
+
+        /// <summary>
+        /// Implicit conversion operator from a 32-bit integer
+        /// to a <c>CacheableKey</c>.
+        /// </summary>
+        static operator CacheableKey^ (int32_t value);
+
+        /// <summary>
+        /// Implicit conversion operator from a 64-bit integer
+        /// to a <c>CacheableKey</c>.
+        /// </summary>
+        static operator CacheableKey^ (int64_t value);
+
+        /// <summary>
+        /// Implicit conversion operator from a string
+        /// to a <c>CacheableKey</c>.
+        /// </summary>
+        static operator CacheableKey^ (String^ value);
+
+      internal:
+        /// <summary>
+        /// Default constructor.
+        /// </summary>
+        inline CacheableKey()
+          : Generic::Serializable() { }
+
+        /// <summary>
+        /// Internal constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline CacheableKey(gemfire::Serializable* nativeptr)
+          : Generic::Serializable(nativeptr) { }
+      };
+    }
+  }
+}
+} //namespace 
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CacheableLinkedListMN.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CacheableLinkedListMN.hpp b/geode-client-native/src/clicache/com/vmware/CacheableLinkedListMN.hpp
new file mode 100644
index 0000000..d56cc8a
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CacheableLinkedListMN.hpp
@@ -0,0 +1,142 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "../../gf_defs.hpp"
+#include "CacheableVectorMN.hpp"
+
+
+using namespace System;
+using namespace System::Collections::Generic;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+      /// <summary>
+      /// A mutable <c>IGFSerializable</c> vector wrapper that can serve as
+      /// a distributable object for caching. This class extends .NET generic
+      /// <c>List</c> class.
+      /// </summary>
+      ref class CacheableLinkedList
+        : public IGFSerializable
+      {
+        System::Collections::Generic::LinkedList<Object^>^ m_linkedList;
+      public:
+        /// <summary>
+        /// Allocates a new empty instance.
+        /// </summary>
+        inline CacheableLinkedList(System::Collections::Generic::LinkedList<Object^>^ list)
+        {
+          m_linkedList = list;
+        }
+
+
+        /// <summary>
+        /// Static function to create a new empty instance.
+        /// </summary>
+        inline static CacheableLinkedList^ Create()
+        {
+          return gcnew CacheableLinkedList(gcnew System::Collections::Generic::LinkedList<Object^>());
+        }
+
+        /// <summary>
+        /// Static function to create a new empty instance.
+        /// </summary>
+        inline static CacheableLinkedList^ Create(System::Collections::Generic::LinkedList<Object^>^ list)
+        {
+          return gcnew CacheableLinkedList(list);
+        }
+
+
+        // Region: IGFSerializable Members
+
+        /// <summary>
+        /// Returns the classId of the instance being serialized.
+        /// This is used by deserialization to determine what instance
+        /// type to create and deserialize into.
+        /// </summary>
+        /// <returns>the classId</returns>
+        virtual property uint32_t ClassId
+        {
+          virtual uint32_t get()
+          {
+            return GemFireClassIds::CacheableLinkedList;
+          }
+        }
+
+        // Region: IGFSerializable Members
+
+      virtual void ToData(DataOutput^ output)
+      {
+        if(m_linkedList != nullptr)
+        {
+          output->WriteArrayLen(m_linkedList->Count);
+          for each (Object^ obj in m_linkedList) {
+						//TODO::split
+            output->WriteObject(obj);
+          }
+        }
+        else
+          output->WriteByte(0xFF);
+      }
+
+      virtual IGFSerializable^ FromData(DataInput^ input)
+      {
+        int len = input->ReadArrayLen();
+        for( int i = 0; i < len; i++)
+        {
+          m_linkedList->AddLast(input->ReadObject());
+        }
+        return this;
+      }
+
+      /*uint32_t ObjectSize::get()
+      {
+        //TODO::hitesh
+        uint32_t size = static_cast<uint32_t> (sizeof(CacheableVector^));
+        for each (IGFSerializable^ val in this) {
+          if (val != nullptr) {
+            size += val->ObjectSize;
+          }
+        }
+        return m_linkedList->Count;
+      }*/
+
+        virtual property uint32_t ObjectSize
+        {
+          virtual uint32_t get()
+          {
+            return m_linkedList->Count;
+          }
+        }
+
+        virtual property System::Collections::Generic::LinkedList<Object^>^ Value
+        {
+          virtual System::Collections::Generic::LinkedList<Object^>^ get()
+          {
+            return m_linkedList;
+          }
+        }
+        // End Region: IGFSerializable Members
+
+        /// <summary>
+        /// Factory function to register this class.
+        /// </summary>
+        static IGFSerializable^ CreateDeserializable()
+        {
+          return gcnew CacheableLinkedList(gcnew System::Collections::Generic::LinkedList<Object^>());
+        }
+      };
+    }
+  }
+}
+ } //namespace

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CacheableObjectArrayMN.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CacheableObjectArrayMN.cpp b/geode-client-native/src/clicache/com/vmware/CacheableObjectArrayMN.cpp
new file mode 100644
index 0000000..6744012
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CacheableObjectArrayMN.cpp
@@ -0,0 +1,114 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+
+
+//#include "gf_includesN.hpp"
+#include <cppcache/impl/GemfireTypeIdsImpl.hpp>
+#include "CacheableObjectArrayMN.hpp"
+#include "DataOutputMN.hpp"
+#include "DataInputMN.hpp"
+#include "ExceptionTypesMN.hpp"
+#include "impl/SafeConvertN.hpp"
+#include "impl/PdxTypeRegistry.hpp"
+
+using namespace System;
+using namespace System::Collections::Generic;
+
+using namespace GemStone::GemFire::Cache::Generic;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+      // Region: IGFSerializable Members
+
+      void CacheableObjectArray::ToData(DataOutput^ output)
+      {
+        output->WriteArrayLen((int32_t)Count);
+        output->WriteByte((int8_t)gemfire::GemfireTypeIdsImpl::Class);
+        output->WriteByte((int8_t)gemfire::GemfireTypeIds::CacheableASCIIString);
+        output->WriteUTF("java.lang.Object");
+
+        for each (Object^ obj in this) {
+					//TODO::split
+          output->WriteObject(obj);
+        }
+
+        /*_GF_MG_EXCEPTION_TRY
+
+          gemfire::DataOutput& nativeOutput = *(output->_NativePtr);
+          nativeOutput.writeArrayLen((int32_t)Count);
+          nativeOutput.write((int8_t)gemfire::GemfireTypeIdsImpl::Class);
+          nativeOutput.write((int8_t)gemfire::GemfireTypeIds::CacheableASCIIString);
+          nativeOutput.writeASCII("java.lang.Object");
+          for each (IGFSerializable^ obj in this) {
+            gemfire::SerializablePtr objPtr(SafeMSerializableConvert(obj));
+            nativeOutput.writeObject(objPtr);
+          }
+
+        _GF_MG_EXCEPTION_CATCH_ALL*/
+      }
+
+      IGFSerializable^ CacheableObjectArray::FromData(DataInput^ input)
+      {
+        int len = input->ReadArrayLen();
+        if (len >= 0) {
+          //int8_t typeCode;
+          input->ReadByte(); // ignore CLASS typeid
+          input->ReadByte(); // ignore string typeid
+          unsigned short classLen;
+          classLen = input->ReadInt16();
+          input->AdvanceCursor(classLen);
+          //nativeInput.readInt(&classLen);
+          //nativeInput.advanceCursor(classLen);
+        }
+        for (int32_t index = 0; index < len; ++index) {
+          Add(input->ReadObject());
+        }
+        return this;
+        /*_GF_MG_EXCEPTION_TRY
+
+          gemfire::DataInput& nativeInput = *(input->_NativePtr);
+          int32_t len;
+          nativeInput.readArrayLen(&len);
+          if (len >= 0) {
+            int8_t typeCode;
+            nativeInput.read(&typeCode); // ignore CLASS typeid
+            nativeInput.read(&typeCode); // ignore string typeid
+            uint16_t classLen;
+            nativeInput.readInt(&classLen);
+            nativeInput.advanceCursor(classLen);
+          }
+          gemfire::CacheablePtr value;
+          for (int32_t index = 0; index < len; ++index) {
+            nativeInput.readObject(value);
+            Add(SafeUMSerializableConvert(value.ptr()));
+          }
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+        return this;*/
+      }
+
+      uint32_t CacheableObjectArray::ObjectSize::get()
+      { 
+       /* uint32_t size = static_cast<uint32_t> (sizeof(CacheableObjectArray^));
+        for each (IGFSerializable^ val in this) {
+          if (val != nullptr) {
+            size += val->ObjectSize;
+          }
+        }*/
+        return Count;
+      }      
+      // End Region: IGFSerializable Members
+    }
+  }
+}
+ } //namespace 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CacheableObjectArrayMN.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CacheableObjectArrayMN.hpp b/geode-client-native/src/clicache/com/vmware/CacheableObjectArrayMN.hpp
new file mode 100644
index 0000000..9889c37
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CacheableObjectArrayMN.hpp
@@ -0,0 +1,145 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "../../gf_defs.hpp"
+#include "IGFSerializableN.hpp"
+#include "GemFireClassIdsMN.hpp"
+
+
+using namespace System;
+using namespace System::Collections::Generic;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+
+      /// <summary>
+      /// A mutable <c>IGFSerializable</c> object array wrapper that can serve
+      /// as a distributable object for caching. Though this class provides
+      /// compatibility with java Object[] serialization, it provides the
+      /// semantics of .NET generic <c>List</c> class.
+      /// </summary>
+      public ref class CacheableObjectArray
+        : public List<Object^>, public IGFSerializable
+      {
+      public:
+        /// <summary>
+        /// Allocates a new empty instance.
+        /// </summary>
+        inline CacheableObjectArray()
+          : List<Object^>()
+        { }
+
+        /// <summary>
+        /// Allocates a new instance copying from the given collection.
+        /// </summary>
+        /// <param name="collection">
+        /// The collection whose elements are copied to this list.
+        /// </param>
+        inline CacheableObjectArray(IEnumerable<Object^>^ collection)
+          : List<Object^>(collection)
+        { }
+
+        /// <summary>
+        /// Allocates a new empty instance with given initial size.
+        /// </summary>
+        /// <param name="capacity">
+        /// The initial capacity of the vector.
+        /// </param>
+        inline CacheableObjectArray(int32_t capacity)
+          : List<Object^>(capacity)
+        { }
+
+        /// <summary>
+        /// Static function to create a new empty instance.
+        /// </summary>
+        inline static CacheableObjectArray^ Create()
+        {
+          return gcnew CacheableObjectArray();
+        }
+
+        /// <summary>
+        /// Static function to create a new instance copying from the
+        /// given collection.
+        /// </summary>
+        inline static CacheableObjectArray^ Create(
+          IEnumerable<Object^>^ collection)
+        {
+          return gcnew CacheableObjectArray(collection);
+        }
+
+        /// <summary>
+        /// Static function to create a new instance with given initial size.
+        /// </summary>
+        inline static CacheableObjectArray^ Create(int32_t capacity)
+        {
+          return gcnew CacheableObjectArray(capacity);
+        }
+
+        // Region: IGFSerializable Members
+
+        /// <summary>
+        /// Serializes this object.
+        /// </summary>
+        /// <param name="output">
+        /// the DataOutput object to use for serializing the object
+        /// </param>
+        virtual void ToData(DataOutput^ output);
+
+        /// <summary>
+        /// Deserialize this object, typical implementation should return
+        /// the 'this' pointer.
+        /// </summary>
+        /// <param name="input">
+        /// the DataInput stream to use for reading the object data
+        /// </param>
+        /// <returns>the deserialized object</returns>
+        virtual IGFSerializable^ FromData(DataInput^ input);
+
+        /// <summary>
+        /// return the size of this object in bytes
+        /// </summary>
+        virtual property uint32_t ObjectSize
+        {
+          virtual uint32_t get();
+        }
+
+        /// <summary>
+        /// Returns the classId of the instance being serialized.
+        /// This is used by deserialization to determine what instance
+        /// type to create and deserialize into.
+        /// </summary>
+        /// <returns>the classId</returns>
+        virtual property uint32_t ClassId
+        {
+          virtual uint32_t get()
+          {
+            return GemFireClassIds::CacheableObjectArray;
+          }
+        }
+
+        // End Region: IGFSerializable Members
+
+        /// <summary>
+        /// Factory function to register this class.
+        /// </summary>
+        static IGFSerializable^ CreateDeserializable()
+        {
+          return gcnew CacheableObjectArray();
+        }
+      };
+
+    }
+  }
+}
+ } //namespace 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CacheableObjectN.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CacheableObjectN.cpp b/geode-client-native/src/clicache/com/vmware/CacheableObjectN.cpp
new file mode 100644
index 0000000..fdae998
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CacheableObjectN.cpp
@@ -0,0 +1,72 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+
+//#include "gf_includesN.hpp"
+#include "CacheableObjectN.hpp"
+#include "DataInputMN.hpp"
+#include "DataOutputMN.hpp"
+#include "impl/GFNullStreamN.hpp"
+#include "impl/GFDataInputStreamN.hpp"
+#include "impl/GFDataOutputStreamN.hpp"
+
+using namespace System;
+using namespace System::IO;
+using namespace System::Runtime::Serialization::Formatters::Binary;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+      void CacheableObject::ToData(DataOutput^ output)
+      {
+        if(m_obj != nullptr)
+        {
+          output->AdvanceCursor(4); // placeholder for object size bytes needed while reading back.
+
+          GFDataOutputStream dos(output);
+          BinaryFormatter bf;
+          int64_t checkpoint = dos.Length;
+          bf.Serialize(%dos, m_obj);
+          m_objectSize = (uint32_t) (dos.Length - checkpoint);
+
+          output->RewindCursor(m_objectSize + 4);
+          output->WriteInt32(m_objectSize);
+          output->AdvanceCursor(m_objectSize);
+        }
+      }
+
+      IGFSerializable^ CacheableObject::FromData(DataInput^ input)
+      {
+        int maxSize = input->ReadInt32();
+        GFDataInputStream dis(input, maxSize);
+        uint32_t checkpoint = dis.BytesRead;
+        BinaryFormatter bf;
+        m_obj = bf.Deserialize(%dis);
+        m_objectSize = dis.BytesRead - checkpoint;
+        return this;
+      }
+
+      uint32_t CacheableObject::ObjectSize::get()
+      { 
+        if (m_objectSize == 0) {
+          GFNullStream ns;
+          BinaryFormatter bf;
+          bf.Serialize(%ns, m_obj);
+
+          m_objectSize = (uint32_t)sizeof(CacheableObject^) + (uint32_t)ns.Length;
+        }
+        return m_objectSize;
+      }
+    }
+  }
+}
+ } //namespace 
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CacheableObjectN.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CacheableObjectN.hpp b/geode-client-native/src/clicache/com/vmware/CacheableObjectN.hpp
new file mode 100644
index 0000000..556b571
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CacheableObjectN.hpp
@@ -0,0 +1,146 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "../../gf_defs.hpp"
+#include "IGFSerializableN.hpp"
+#include "GemFireClassIdsMN.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+      /// <summary>
+      /// An mutable generic <see cref="System.Object" /> wrapper that can
+      /// serve as a distributable value for caching.
+      /// </summary>
+      /// <remarks>
+      /// <para>
+      /// This class can serialize any class which has either the
+      /// [Serializable] attribute set or implements
+      /// <see cref="System.Runtime.Serialization.ISerializable" /> interface.
+      /// However, for better efficiency the latter should be avoided and the
+      /// user should implement <see cref="../../IGFSerializable" /> instead.
+      /// </para><para>
+      /// The user must keep in mind that the rules that apply to runtime
+      /// serialization would be the rules that apply to this class. For
+      /// the serialization will be carried out by serializing all the
+      /// members (public/private/protected) of the class. Each of the
+      /// contained classes should also have either the [Serializable]
+      /// attribute set or implement <c>ISerializable</c> interface.
+      /// </para>
+      /// </remarks>
+      public ref class CacheableObject
+        : public IGFSerializable
+      {
+      public:
+        /// <summary>
+        /// Static function to create a new instance from the given object.
+        /// </summary>
+        /// <remarks>
+        /// If the given object is null then this method returns null.
+        /// </remarks>
+        inline static CacheableObject^ Create(Object^ value)
+        {
+          return (value != nullptr ? gcnew CacheableObject(value) :
+            nullptr);
+        }
+
+        /// <summary>
+        /// Serializes this <see cref="System.Object" /> using
+        /// <see cref="System.Runtime.Serialization.Formatters.Binary.BinaryFormatter" /> class.
+        /// </summary>
+        /// <param name="output">
+        /// the DataOutput object to use for serializing the object
+        /// </param>
+        virtual void ToData(DataOutput^ output);
+
+        /// <summary>
+        /// Deserializes the <see cref="System.Object" /> using
+        /// <see cref="System.Runtime.Serialization.Formatters.Binary.BinaryFormatter" /> class.
+        /// </summary>
+        /// <param name="input">
+        /// the DataInput stream to use for reading the object data
+        /// </param>
+        /// <returns>the deserialized object</returns>
+        virtual IGFSerializable^ FromData(DataInput^ input);
+
+        /// <summary>
+        /// return the size of this object in bytes
+        /// </summary>
+        virtual property uint32_t ObjectSize
+        {
+          virtual uint32_t get();
+        }
+
+        /// <summary>
+        /// Returns the classId of the instance being serialized.
+        /// This is used by deserialization to determine what instance
+        /// type to create and deserialize into.
+        /// </summary>
+        /// <returns>the classId</returns>
+        virtual property uint32_t ClassId
+        {
+          inline virtual uint32_t get()
+          {
+            return GemFireClassIds::CacheableManagedObject;
+          }
+        }
+
+        /// <summary>
+        /// Gets the object value.
+        /// </summary>
+        /// <remarks>
+        /// The user can modify the object and the changes shall be reflected
+        /// immediately in the local cache. For this change to be propagate to
+        /// other members of the distributed system, the object needs to be
+        /// put into the cache.
+        /// </remarks>
+        property Object^ Value
+        {
+          inline Object^ get()
+          {
+            return m_obj;
+          }
+        }
+
+        virtual String^ ToString() override
+        {
+          return (m_obj == nullptr ? nullptr : m_obj->ToString());
+        }
+
+        /// <summary>
+        /// Factory function to register this class.
+        /// </summary>
+        static IGFSerializable^ CreateDeserializable()
+        {
+          return gcnew CacheableObject(nullptr);
+        }
+
+      internal:
+        /// <summary>
+        /// Allocates a new instance from the given object.
+        /// </summary>
+        inline CacheableObject(Object^ value)
+          : m_obj(value), m_objectSize(0) { }
+
+        
+
+      private:
+        Object^ m_obj;
+        uint32_t m_objectSize;
+      };
+    }
+  }
+}
+ } //namespace 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CacheableObjectXmlN.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CacheableObjectXmlN.cpp b/geode-client-native/src/clicache/com/vmware/CacheableObjectXmlN.cpp
new file mode 100644
index 0000000..8ec060b
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CacheableObjectXmlN.cpp
@@ -0,0 +1,101 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+
+
+//#include "gf_includesN.hpp"
+#include "CacheableObjectXmlN.hpp"
+#include "DataInputMN.hpp"
+#include "DataOutputMN.hpp"
+#include "LogMN.hpp"
+#include "impl/GFNullStreamN.hpp"
+#include "impl/GFDataInputStreamN.hpp"
+#include "impl/GFDataOutputStreamN.hpp"
+
+using namespace System;
+using namespace System::IO;
+using namespace System::Xml::Serialization;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+      void CacheableObjectXml::ToData(DataOutput^ output)
+      {
+        if (m_obj == nullptr) {
+          output->WriteByte((Byte)1);
+        }
+        else
+        {
+          output->WriteByte((Byte)0);
+          Type^ objType = m_obj->GetType();
+
+          output->WriteUTF(objType->AssemblyQualifiedName);
+
+          output->AdvanceCursor(4); // placeholder for object size bytes needed while reading back.
+
+          XmlSerializer xs(objType);
+          GFDataOutputStream dos(output);
+          int64_t checkpoint = dos.Length;
+          xs.Serialize(%dos, m_obj);
+          m_objectSize = (uint32_t) (dos.Length - checkpoint);
+
+          output->RewindCursor(m_objectSize + 4);
+          output->WriteInt32(m_objectSize);
+          output->AdvanceCursor(m_objectSize);
+        }
+      }
+
+      IGFSerializable^ CacheableObjectXml::FromData(DataInput^ input)
+      {
+        Byte isNull = input->ReadByte();
+        if (isNull) {
+          m_obj = nullptr;
+        }
+        else {
+          String^ typeName = input->ReadUTF();
+          Type^ objType = Type::GetType(typeName);
+          if (objType == nullptr)
+          {
+            Log::Error("CacheableObjectXml.FromData(): Cannot find type '" +
+              typeName + "'.");
+            m_obj = nullptr;
+          }
+          else {
+            int maxSize = input->ReadInt32();
+            GFDataInputStream dis(input, maxSize);
+            XmlSerializer xs(objType);
+            uint32_t checkpoint = dis.BytesRead;
+            m_obj = xs.Deserialize(%dis);
+            m_objectSize = dis.BytesRead - checkpoint;
+          }
+        }
+        return this;
+      }
+
+      uint32_t CacheableObjectXml::ObjectSize::get()
+      { 
+        if (m_objectSize == 0) {
+          if (m_obj != nullptr) {
+            Type^ objType = m_obj->GetType();
+            XmlSerializer xs(objType);
+            GFNullStream ns;
+            xs.Serialize(%ns, m_obj);
+
+            m_objectSize = (uint32_t)sizeof(CacheableObjectXml^) + (uint32_t)ns.Length;
+          }
+        }
+        return m_objectSize;
+      }
+    }
+  }
+}
+ } //namespace 
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CacheableObjectXmlN.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CacheableObjectXmlN.hpp b/geode-client-native/src/clicache/com/vmware/CacheableObjectXmlN.hpp
new file mode 100644
index 0000000..47bf408
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CacheableObjectXmlN.hpp
@@ -0,0 +1,147 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "../../gf_defs.hpp"
+#include "IGFSerializableN.hpp"
+#include "GemFireClassIdsMN.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+      /// <summary>
+      /// A mutable generic <see cref="System.Object" /> wrapper that can
+      /// serve as a distributable value for caching.
+      /// </summary>
+      /// <remarks>
+      /// <para>
+      /// This class can contain any object and uses the
+      /// <see cref="System.Xml.Serialization.XmlSerializer" /> to
+      /// serialize and deserialize the object. So the user must use the
+      /// <c>XmlSerializer</c> attributes to control the serialization/deserialization
+      /// of the object (or implement the <see cref="System.Xml.Serialization.IXmlSerializable" />)
+      /// to change the serialization/deserialization. However, the latter should
+      /// be avoided for efficiency reasons and the user should implement
+      /// <see cref="../../IGFSerializable" /> instead.
+      /// </para><para>
+      /// The user must keep in mind that the rules that apply to <c>XmlSerializer</c>
+      /// would be the rules that apply to this class. For instance the user
+      /// cannot pass objects of class implementing or containing
+      /// <see cref="System.Collections.IDictionary" /> class, must use
+      /// <see cref="System.Xml.Serialization.XmlIncludeAttribute" /> to
+      /// mark user-defined types etc.
+      /// </para>
+      /// </remarks>
+      public ref class CacheableObjectXml
+        : public IGFSerializable
+      {
+      public:
+        /// <summary>
+        /// Static function to create a new instance from the given object.
+        /// </summary>
+        /// <remarks>
+        /// If the given object is null then this method returns null.
+        /// </remarks>
+        inline static CacheableObjectXml^ Create(Object^ value)
+        {
+          return (value != nullptr ? gcnew CacheableObjectXml(value) :
+            nullptr);
+        }
+
+        /// <summary>
+        /// Serializes this <see cref="System.Object" /> using
+        /// <see cref="System.Xml.Serialization.XmlSerializer" /> class.
+        /// </summary>
+        /// <param name="output">
+        /// the DataOutput object to use for serializing the object
+        /// </param>
+        virtual void ToData(DataOutput^ output);
+
+        /// <summary>
+        /// Deserializes the <see cref="System.Object" /> using
+        /// <see cref="System.Xml.Serialization.XmlSerializer" /> class.
+        /// </summary>
+        /// <param name="input">
+        /// the DataInput stream to use for reading the object data
+        /// </param>
+        /// <returns>the deserialized object</returns>
+        virtual IGFSerializable^ FromData(DataInput^ input);
+
+        /// <summary>
+        /// return the size of this object in bytes
+        /// </summary>
+        virtual property uint32_t ObjectSize
+        {
+          virtual uint32_t get();
+        }
+
+        /// <summary>
+        /// Returns the classId of the instance being serialized.
+        /// This is used by deserialization to determine what instance
+        /// type to create and deserialize into.
+        /// </summary>
+        /// <returns>the classId</returns>
+        virtual property uint32_t ClassId
+        {
+          inline virtual uint32_t get()
+          {
+            return GemFireClassIds::CacheableManagedObjectXml;
+          }
+        }
+
+        /// <summary>
+        /// Gets the object value.
+        /// </summary>
+        /// <remarks>
+        /// The user can modify the object and the changes shall be reflected
+        /// immediately in the local cache. For this change to be propagate to
+        /// other members of the distributed system, the object needs to be
+        /// put into the cache.
+        /// </remarks>
+        property Object^ Value
+        {
+          inline Object^ get()
+          {
+            return m_obj;
+          }
+        }
+
+        virtual String^ ToString() override
+        {
+          return (m_obj == nullptr ? nullptr : m_obj->ToString());
+        }
+
+        /// <summary>
+        /// Factory function to register this class.
+        /// </summary>
+        static IGFSerializable^ CreateDeserializable()
+        {
+          return gcnew CacheableObjectXml(nullptr);
+        }
+
+      internal:
+        /// <summary>
+        /// Allocates a new instance from the given object.
+        /// </summary>
+        inline CacheableObjectXml(Object^ value)
+          : m_obj(value), m_objectSize(0) { }
+
+      private:
+        Object^ m_obj;
+        uint32_t m_objectSize;
+      };
+    }
+  }
+}
+ } //namespace 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CacheableStackMN.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CacheableStackMN.cpp b/geode-client-native/src/clicache/com/vmware/CacheableStackMN.cpp
new file mode 100644
index 0000000..39efaa6
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CacheableStackMN.cpp
@@ -0,0 +1,82 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+
+
+//#include "gf_includesN.hpp"
+#include "CacheableStackMN.hpp"
+#include "DataOutputMN.hpp"
+#include "DataInputMN.hpp"
+#include <cppcache/impl/GemfireTypeIdsImpl.hpp>
+#include "impl/SafeConvertN.hpp"
+#include "GemFireClassIdsMN.hpp"
+
+using namespace System;
+using namespace System::Collections::Generic;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+      // Region: IGFSerializable Members
+
+      void CacheableStack::ToData(DataOutput^ output)
+      {
+        if(m_stack != nullptr)
+        {
+          output->WriteArrayLen((int32_t)m_stack->Count);
+          for each (Object^ obj in m_stack) {
+					  output->WriteObject(obj);
+          }
+        }
+        else
+        {
+          output->WriteByte(0xFF);
+        }
+      }
+
+      IGFSerializable^ CacheableStack::FromData(DataInput^ input)
+      {
+        int len = input->ReadArrayLen();
+        if (len > 0)
+        {
+          System::Collections::Generic::Stack<Object^>^ stack = safe_cast<System::Collections::Generic::Stack<Object^>^>(m_stack);
+          for( int i = 0; i < len; i++)
+          {
+            (stack)->Push(input->ReadObject());
+//            Push(input->ReadObject());
+          }
+        }
+        return this;
+      }
+
+      uint32_t CacheableStack::ClassId::get()
+      {
+        return GemFireClassIds::CacheableStack;
+      }
+
+      uint32_t CacheableStack::ObjectSize::get()
+      { 
+        //TODO:hitesh
+        /*uint32_t size = static_cast<uint32_t> (sizeof(CacheableStack^));
+        for each (IGFSerializable^ val in this) {
+          if (val != nullptr) {
+            size += val->ObjectSize;
+          }
+        }*/
+        return m_stack->Count;
+      }
+
+      // End Region: IGFSerializable Members
+    }
+  }
+}
+ } //namespace 
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CacheableStackMN.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CacheableStackMN.hpp b/geode-client-native/src/clicache/com/vmware/CacheableStackMN.hpp
new file mode 100644
index 0000000..9ce3e7d
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CacheableStackMN.hpp
@@ -0,0 +1,120 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "../../gf_defs.hpp"
+#include "IGFSerializableN.hpp"
+
+
+using namespace System;
+using namespace System::Collections::Generic;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+      /// <summary>
+      /// A mutable <c>IGFSerializable</c> vector wrapper that can serve as
+      /// a distributable object for caching.
+      /// </summary>
+      ref class CacheableStack
+        : public IGFSerializable
+      {
+      public:
+        /// <summary>
+        /// Allocates a new empty instance.
+        /// </summary>
+        inline CacheableStack(System::Collections::ICollection^ stack)
+        { 
+          m_stack = stack;
+        }
+                
+        /// <summary>
+        /// Static function to create a new empty instance.
+        /// </summary>
+        inline static CacheableStack^ Create()
+        {
+          return gcnew CacheableStack(gcnew System::Collections::Generic::Stack<Object^>());
+        }
+
+        /// <summary>
+        /// Static function to create a new empty instance.
+        /// </summary>
+        inline static CacheableStack^ Create(System::Collections::ICollection^ stack)
+        {
+          return gcnew CacheableStack(stack);
+        }
+
+        
+        
+        // Region: IGFSerializable Members
+
+        /// <summary>
+        /// Serializes this object.
+        /// </summary>
+        /// <param name="output">
+        /// the DataOutput object to use for serializing the object
+        /// </param>
+        virtual void ToData(DataOutput^ output);
+
+        /// <summary>
+        /// Deserialize this object, typical implementation should return
+        /// the 'this' pointer.
+        /// </summary>
+        /// <param name="input">
+        /// the DataInput stream to use for reading the object data
+        /// </param>
+        /// <returns>the deserialized object</returns>
+        virtual IGFSerializable^ FromData(DataInput^ input);
+
+        /// <summary>
+        /// return the size of this object in bytes
+        /// </summary>
+        virtual property uint32_t ObjectSize
+        {
+          virtual uint32_t get();
+        }
+
+        /// <summary>
+        /// Returns the classId of the instance being serialized.
+        /// This is used by deserialization to determine what instance
+        /// type to create and deserialize into.
+        /// </summary>
+        /// <returns>the classId</returns>
+        virtual property uint32_t ClassId
+        {
+          virtual uint32_t get();
+        }
+
+        virtual property System::Collections::ICollection^ Value
+        {
+          virtual System::Collections::ICollection^ get()
+          {
+            return m_stack;
+          }
+        }
+        // End Region: IGFSerializable Members
+
+        /// <summary>
+        /// Factory function to register this class.
+        /// </summary>
+        static IGFSerializable^ CreateDeserializable()
+        {
+          return gcnew CacheableStack(gcnew System::Collections::Generic::Stack<Object^>());
+        }
+
+        private:
+          System::Collections::ICollection^ m_stack;
+      };
+    }
+  }
+}
+ } //namespace 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CacheableStringArrayMN.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CacheableStringArrayMN.cpp b/geode-client-native/src/clicache/com/vmware/CacheableStringArrayMN.cpp
new file mode 100644
index 0000000..cf2029b
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CacheableStringArrayMN.cpp
@@ -0,0 +1,88 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+
+#include "CacheableStringArrayMN.hpp"
+#include "CacheableStringMN.hpp"
+#include "DataInputMN.hpp"
+#include "DataOutputMN.hpp"
+#include "ExceptionTypesMN.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+
+      CacheableStringArray::CacheableStringArray(array<String^>^ strings)
+        : Serializable()
+      {
+        m_value = strings;
+      }
+
+      
+      array<String^>^ CacheableStringArray::GetValues()
+      {
+        return m_value;
+      }
+
+      String^ CacheableStringArray::default::get(int32_t index)
+      {
+        return m_value[index];
+      }
+
+      void CacheableStringArray::ToData(DataOutput^ output) 
+      {
+        if (m_value == nullptr)
+        {
+          output->WriteArrayLen(-1);
+        }
+        else
+        {
+          output->WriteArrayLen(m_value->Length);
+          if (m_value->Length > 0)
+          {
+            for(int i = 0; i < m_value->Length; i++)
+            {
+              output->WriteObject(m_value[i]);
+            }
+            GC::KeepAlive(this);
+          }
+		    }
+      }
+        
+    
+      IGFSerializable^ CacheableStringArray::FromData(DataInput^ input)
+      {
+        int len = input->ReadArrayLen();
+        if ( len == -1)
+        {
+          m_value = nullptr;
+          return nullptr;
+        }
+        else 
+        {
+          m_value = gcnew array<String^>(len);
+          if (len > 0)
+          {
+            for( int i = 0; i < len; i++)
+            {
+              m_value[i] = dynamic_cast<String^>(input->ReadObject());
+            }
+          }
+          return this;
+        }
+      }
+
+    }
+  }
+}
+ } //namespace 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CacheableStringArrayMN.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CacheableStringArrayMN.hpp b/geode-client-native/src/clicache/com/vmware/CacheableStringArrayMN.hpp
new file mode 100644
index 0000000..cfba324
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CacheableStringArrayMN.hpp
@@ -0,0 +1,180 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+
+
+#include "../../gf_defs.hpp"
+#include <cppcache/CacheableBuiltins.hpp>
+#include "SerializableMN.hpp"
+#include "GemFireClassIdsMN.hpp"
+#include "CacheableStringMN.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+      ref class CacheableString;
+
+      /// <summary>
+      /// An immutable wrapper for array of strings that can serve as
+      /// a distributable object for caching.
+      /// </summary>
+      ref class CacheableStringArray
+        : public Serializable
+      {
+      public:
+        /// <summary>
+        /// Static function to create a new instance copying from the given
+        /// string array.
+        /// </summary>
+        /// <remarks>
+        /// If the given array of strings is null or of zero-length then
+        /// this method returns null.
+        /// </remarks>
+        /// <exception cref="IllegalArgumentException">
+        /// If the array contains a string greater than or equal 64K in length.
+        /// </exception>
+        inline static CacheableStringArray^ Create(array<String^>^ strings)
+        {
+          return (strings != nullptr && strings->Length > 0 ?
+            gcnew CacheableStringArray(strings) : nullptr);
+        }
+        
+         /// <summary>
+        /// Serializes this managed object.
+        /// </summary>
+        /// <param name="output">
+        /// the DataOutput object to use for serializing the object
+        /// </param>
+        virtual void ToData(DataOutput^ output) override;
+
+        /// <summary>
+        /// Deserializes the managed object -- returns an instance of the
+        /// <c>IGFSerializable</c> class.
+        /// </summary>
+        /// <param name="input">
+        /// the DataInput stream to use for reading the object data
+        /// </param>
+        /// <returns>the deserialized object</returns>
+        virtual IGFSerializable^ FromData(DataInput^ input) override;
+
+
+        /// <summary>
+        /// Returns the classId of the instance being serialized.
+        /// This is used by deserialization to determine what instance
+        /// type to create and deserialize into.
+        /// </summary>
+        /// <returns>the classId</returns>
+        virtual property uint32_t ClassId
+        {
+          virtual uint32_t get() override
+          {
+            return GemFireClassIds::CacheableStringArray;
+          }
+        }
+
+        /// <summary>
+        /// return the size of this object in bytes
+        /// </summary>
+        virtual property uint32_t ObjectSize
+        {
+          virtual uint32_t get() override
+          {
+            int size = 0; 
+            for( int i = 0; i < m_value->Length; i++ )
+            {
+              size += m_value[i]->Length;
+            }
+            return (uint32_t) (size + sizeof(this));
+          }
+
+        }
+
+        /// <summary>
+        /// Returns a copy of the underlying array of strings.
+        /// </summary>
+        array<String^>^ GetValues();
+
+        /// <summary>
+        /// Returns a copy of the underlying string at the given index.
+        /// </summary>
+        property String^ GFINDEXER(int32_t)
+        {
+          String^ get(int32_t index);
+        }
+
+        /// <summary>
+        /// Gets the length of the array.
+        /// </summary>
+        property int32_t Length
+        {
+          inline int32_t get()
+          {
+            return m_value->Length;
+          }
+        }
+
+        virtual String^ ToString() override
+        {
+          return m_value->ToString();
+        }
+
+        /// <summary>
+        /// Factory function to register this class.
+        /// </summary>
+        static IGFSerializable^ CreateDeserializable()
+        {
+          return gcnew CacheableStringArray();
+        }
+
+      internal:
+        /// <summary>
+        /// Factory function to register wrapper
+        /// </summary>
+        static IGFSerializable^ Create(gemfire::Serializable* obj)
+        {
+          return (obj != nullptr ?
+            gcnew CacheableStringArray(obj) : nullptr);
+        }
+
+      private:
+        array<String^>^ m_value;
+        /// <summary>
+        /// Allocates a new instance copying from the given string array.
+        /// </summary>
+        /// <exception cref="IllegalArgumentException">
+        /// If the array contains a string greater than or equal 64K in length.
+        /// </exception>
+        CacheableStringArray(array<String^>^ strings);
+
+
+        inline CacheableStringArray()
+          : Serializable() 
+        { 
+          //gemfire::Serializable* sp = gemfire::CacheableStringArray::createDeserializable();
+          //SetSP(sp);
+        }
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline CacheableStringArray(gemfire::Serializable* nativeptr)
+          : Serializable(nativeptr) { }
+      };
+    }
+  }
+}
+ } //namespace 
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CacheableStringMN.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CacheableStringMN.cpp b/geode-client-native/src/clicache/com/vmware/CacheableStringMN.cpp
new file mode 100644
index 0000000..6588028
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CacheableStringMN.cpp
@@ -0,0 +1,202 @@
+/*=========================================================================
+* Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+*=========================================================================
+*/
+
+
+#include "DataOutputMN.hpp"
+#include "DataInputMN.hpp"
+
+//#include "gf_includesN.hpp"
+#include "CacheableStringMN.hpp"
+#include "ExceptionTypesMN.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+
+      void CacheableString::ToData(DataOutput^ output)
+      {
+        if (m_type == GemFireClassIds::CacheableASCIIString ||
+            m_type == GemFireClassIds::CacheableString)
+        {
+          output->WriteUTF(m_value);
+        }
+        else if (m_type == GemFireClassIds::CacheableASCIIStringHuge)
+        {
+          output->WriteASCIIHuge(m_value);
+        }
+        else
+        {
+          output->WriteUTFHuge(m_value);
+        }
+      }
+
+      IGFSerializable^ CacheableString::FromData(DataInput^ input) 
+      {
+        if (m_type == GemFireClassIds::CacheableASCIIString ||
+            m_type == GemFireClassIds::CacheableString)
+        {
+          m_value = input->ReadUTF();
+        }
+        else if (m_type == GemFireClassIds::CacheableASCIIStringHuge)
+        {
+          m_value = input->ReadASCIIHuge();
+        }
+        else 
+        {
+          m_value = input->ReadUTFHuge();
+        }
+
+        return this;
+      }
+
+
+      inline void CacheableString::GetCacheableString(String^ value,
+        gemfire::CacheableStringPtr& cStr)
+      {
+        size_t len;
+        if (value != nullptr && (len = value->Length) > 0) {
+          pin_ptr<const wchar_t> pin_value = PtrToStringChars(value);
+          cStr = gemfire::CacheableString::create(pin_value, (int32_t)len);
+        }
+        else {
+          cStr = (gemfire::CacheableString*)
+            gemfire::CacheableString::createDeserializable();
+        }
+      }
+
+      inline void CacheableString::GetCacheableString(array<Char>^ value,
+        gemfire::CacheableStringPtr& cStr)
+      {
+        size_t len;
+        if (value != nullptr && (len = value->Length) > 0) {
+          pin_ptr<const Char> pin_value = &value[0];
+          cStr = gemfire::CacheableString::create(
+            (const wchar_t*)pin_value, (int32_t)len);
+        }
+        else {
+          cStr = (gemfire::CacheableString*)
+            gemfire::CacheableString::createDeserializable();
+        }
+      }
+
+      CacheableString::CacheableString(String^ value)
+        : CacheableKey()
+      {
+        if (value == nullptr ) {
+          throw gcnew IllegalArgumentException("CacheableString: null or " +
+            "zero-length string provided to the constructor.");
+        }
+        m_value = value;
+
+        this->SetStringType();
+      }
+
+      CacheableString::CacheableString(array<Char>^ value)
+        : CacheableKey()
+      {
+        if (value == nullptr ) {
+          throw gcnew IllegalArgumentException("CacheableString: null or " +
+            "zero-length character array provided to the constructor.");
+        }
+        m_value = gcnew String(value);
+       
+        this->SetStringType();
+      }
+
+      CacheableString::CacheableString(String^ value, bool noParamCheck)
+        : CacheableKey()
+      {
+        m_value = value;
+        this->SetStringType();
+      }
+
+      CacheableString::CacheableString(array<Char>^ value, bool noParamCheck)
+        : CacheableKey()
+      {
+        m_value = gcnew String(value);
+        this->SetStringType();
+      }
+
+      uint32_t CacheableString::ObjectSize::get()
+      {
+        return (m_value->Length * sizeof(char));
+      }
+
+      bool CacheableString::Equals(GemStone::GemFire::Cache::Generic::ICacheableKey^ other)
+      {
+        if (other == nullptr || other->ClassId != ClassId) {
+          return false;
+        }
+
+        CacheableString^ otherStr =
+          dynamic_cast<CacheableString^>(other);
+
+        if (otherStr == nullptr)
+          return false;
+
+        return m_value->Equals(otherStr->Value);//TODO::Hitesh
+      }
+
+      bool CacheableString::Equals(Object^ obj)
+      {
+        CacheableString^ otherStr =
+          dynamic_cast<CacheableString^>(obj);
+
+        if (otherStr != nullptr) {
+          return m_value->Equals(otherStr->Value);
+        }
+        return false;
+      }
+
+      int32_t CacheableString::GetHashCode()
+      {
+        if (String::IsNullOrEmpty(m_value)) {
+          return 0;
+        }
+        //TODO:hitesh need to need java hashcode
+        //return m_value->GetHashCode();
+        if(m_hashcode == 0) 
+        {
+          int32_t prime = 31;
+          int32_t localHash = 0;
+          for (int32_t i = 0; i < m_value->Length; i++) 
+            localHash = prime*localHash +  m_value[i];
+          m_hashcode = localHash;
+        }
+        return m_hashcode;
+      }
+
+      void CacheableString::SetStringType()
+      {
+        int len = DataOutput::getEncodedLength(m_value);
+        
+        if (len == m_value->Length)//ASCII string
+        {
+          if (len > 0xFFFF)
+            m_type = GemFireClassIds::CacheableASCIIStringHuge;
+          else
+            m_type = GemFireClassIds::CacheableASCIIString;
+        }
+        else
+        {
+          if (len > 0xFFFF)
+            m_type = GemFireClassIds::CacheableStringHuge;
+          else
+            m_type = GemFireClassIds::CacheableString;  
+        }
+      }
+    }
+  }
+}
+ } //namespace 
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CacheableStringMN.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CacheableStringMN.hpp b/geode-client-native/src/clicache/com/vmware/CacheableStringMN.hpp
new file mode 100644
index 0000000..012a8be
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CacheableStringMN.hpp
@@ -0,0 +1,313 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+
+
+#include "../../gf_defs.hpp"
+#include <cppcache/CacheableString.hpp>
+#include "impl/ManagedStringN.hpp"
+#include "CacheableKeyMN.hpp"
+#include "GemFireClassIdsMN.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+      /// <summary>
+      /// An immutable string wrapper that can serve as a distributable
+      /// key object for caching as well as being a string value.
+      /// </summary>
+      ref class CacheableString
+        : public CacheableKey
+      {
+      public:
+        /// <summary>
+        /// Allocates a new instance copying from the given string.
+        /// </summary>
+        /// <param name="value">the string value of the new instance</param>
+        /// <exception cref="IllegalArgumentException">
+        /// if the provided string is null or has zero length
+        /// </exception>
+        CacheableString(String^ value);
+
+        /// <summary>
+        /// Allocates a new instance copying from the given character array.
+        /// </summary>
+        /// <param name="value">
+        /// the character array value of the new instance
+        /// </param>
+        /// <exception cref="IllegalArgumentException">
+        /// if the provided array is null or has zero length
+        /// </exception>
+        CacheableString(array<Char>^ value);
+
+        /// <summary>
+        /// Static function to create a new instance copying from
+        /// the given string.
+        /// </summary>
+        /// <remarks>
+        /// Providing a null or zero size string will return a null
+        /// <c>CacheableString</c> object.
+        /// </remarks>
+        /// <param name="value">the string value of the new instance</param>
+        inline static CacheableString^ Create(String^ value)
+        {
+          return (value != nullptr ?
+            gcnew CacheableString(value, true) : nullptr);
+        }
+
+        /// <summary>
+        /// Serializes this managed object.
+        /// </summary>
+        /// <param name="output">
+        /// the DataOutput object to use for serializing the object
+        /// </param>
+        virtual void ToData(DataOutput^ output) override;
+
+        /// <summary>
+        /// Deserializes the managed object -- returns an instance of the
+        /// <c>IGFSerializable</c> class.
+        /// </summary>
+        /// <param name="input">
+        /// the DataInput stream to use for reading the object data
+        /// </param>
+        /// <returns>the deserialized object</returns>
+        virtual IGFSerializable^ FromData(DataInput^ input) override;
+
+        // <summary>
+        /// Returns the classId of the instance being serialized.
+        /// This is used by deserialization to determine what instance
+        /// type to create and deserialize into.
+        /// </summary>
+        /// <returns>the classId</returns>
+        virtual property uint32_t ClassId
+        {
+          virtual uint32_t get() override
+          {
+            return m_type;
+          }
+        }
+
+        
+        /// <summary>
+        /// return the size of this object in bytes
+        /// </summary>
+        virtual property uint32_t ObjectSize
+        {
+          virtual uint32_t get() override;
+        }
+
+        /// <summary>
+        /// Static function to create a new instance copying from
+        /// the given character array.
+        /// </summary>
+        /// <remarks>
+        /// Providing a null or zero size character array will return a null
+        /// <c>CacheableString</c> object.
+        /// </remarks>
+        /// <param name="value">
+        /// the character array value of the new instance
+        /// </param>
+        inline static CacheableString^ Create(array<Char>^ value)
+        {
+          return (value != nullptr && value->Length > 0 ?
+            gcnew CacheableString(value, true) : nullptr);
+        }
+        
+        /// <summary>
+        /// Return a string representation of the object.
+        /// This returns the same string as <c>Value</c> property.
+        /// </summary>
+        virtual String^ ToString() override
+        {
+          return m_value;
+        }
+
+        /// <summary>
+        /// Return true if this key matches other object.
+        /// It invokes the '==' operator of the underlying
+        /// <c>gemfire::CacheableString</c> object.
+        /// </summary>
+        virtual bool Equals(GemStone::GemFire::Cache::Generic::ICacheableKey^ other) override;
+
+        /// <summary>
+        /// Return true if this key matches other object.
+        /// It invokes the '==' operator of the underlying
+        /// <c>gemfire::CacheableString</c> object.
+        /// </summary>
+        virtual bool Equals(Object^ obj) override;
+
+        /// <summary>
+        /// Return the hashcode for this key.
+        /// </summary>
+        virtual int32_t GetHashCode() override;
+
+        /// <summary>
+        /// Gets the string value.
+        /// </summary>
+        property String^ Value
+        {
+          inline String^ get()
+          {
+            return m_value;
+          }
+        }
+
+         /// <summary>
+        /// Static function to check whether IsNullOrEmpty.
+        /// </summary>
+        /// <remarks>
+        /// This is similar to the C# string.IsNullOrEmpty method.
+        /// </remarks>
+        /// <param name="value">the CacheableString value to check</param>
+        inline static bool IsNullOrEmpty(CacheableString^ value)
+        {
+          return (value == nullptr || value->Length == 0);
+        }
+
+        /// <summary>
+        /// Implicit conversion operator to underlying <c>System.String</c>.
+        /// </summary>
+        inline static operator String^ (CacheableString^ str)
+        {
+          return (str != nullptr ? CacheableString::GetString(str) : nullptr);
+        }
+
+        /// <summary>
+        /// Gets the length of the underlying C string.
+        /// </summary>
+        property uint32_t Length
+        {
+          inline uint32_t get()
+          {
+            return m_value->Length;
+          }
+        }
+
+        /// <summary>
+        /// True when the underlying C string is a wide-character string.
+        /// </summary>
+        property bool IsWideString
+        {
+          inline bool get()
+          {
+            return true;//TODO:hitesh
+          }
+        }
+
+      internal:
+        static IGFSerializable^ CreateDeserializable()
+        {
+          return gcnew CacheableString(GemFireClassIds::CacheableASCIIString);
+        }
+        
+        static IGFSerializable^ createDeserializableHuge()
+        {
+          return gcnew CacheableString(GemFireClassIds::CacheableASCIIStringHuge);
+        }
+
+        static IGFSerializable^ createUTFDeserializable()
+        {
+          return gcnew CacheableString(GemFireClassIds::CacheableString);
+        }
+
+        static IGFSerializable^ createUTFDeserializableHuge()
+        {
+          return gcnew CacheableString(GemFireClassIds::CacheableStringHuge);
+        }
+        /// <summary>
+        /// Factory function to register wrapper
+        /// </summary>
+        static IGFSerializable^ Create(gemfire::Serializable* obj)
+        {
+          return (obj != nullptr ?
+            gcnew CacheableString(obj) : nullptr);
+        }
+
+        /// <summary>
+        /// Internal function to create a <c>gemfire::CacheableString</c>
+        /// from the given managed string.
+        /// </summary>
+        static void GetCacheableString(String^ value,
+          gemfire::CacheableStringPtr& cStr);
+
+        /// <summary>
+        /// Internal function to create a <c>gemfire::CacheableString</c>
+        /// from the given managed array of characters.
+        /// </summary>
+        static void GetCacheableString(array<Char>^ value,
+          gemfire::CacheableStringPtr& cStr);
+
+        /// <summary>
+        /// Get the <c>System.String</c> from the given
+        /// <c>gemfire::CacheableString</c>
+        /// </summary>
+        inline static String^ GetString(gemfire::CacheableString * cStr)
+        {
+          if (cStr == NULL) {
+            return nullptr;
+          }
+          else if (cStr->isWideString()) {
+            return ManagedString::Get(cStr->asWChar());
+          }
+          else {
+            return ManagedString::Get(cStr->asChar());
+          }
+        }
+
+        inline static String^ GetString(CacheableString^ cStr)
+        {
+          return cStr->Value;
+        }
+
+				CacheableString(uint32_t type): CacheableKey()
+        {
+          m_type = type;
+        }
+
+      private:
+        String^ m_value;
+        uint32_t m_type; 
+        int m_hashcode;
+
+        CacheableString(): CacheableKey()
+        {
+          m_type = GemFireClassIds::CacheableASCIIString;
+        }        
+         
+        void SetStringType();
+        /// <summary>
+        /// Private constructor to create a CacheableString without checking
+        /// for arguments.
+        /// </summary>
+        CacheableString(String^ value, bool noParamCheck);
+
+        /// <summary>
+        /// Private constructor to create a CacheableString without checking
+        /// for arguments.
+        /// </summary>
+        CacheableString(array<Char>^ value, bool noParamCheck);
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline CacheableString(gemfire::Serializable* nativeptr)
+          : CacheableKey(nativeptr) { }
+      };
+    }
+  }
+}
+ } //namespace 
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CacheableUndefinedMN.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CacheableUndefinedMN.cpp b/geode-client-native/src/clicache/com/vmware/CacheableUndefinedMN.cpp
new file mode 100644
index 0000000..3ddc35c
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CacheableUndefinedMN.cpp
@@ -0,0 +1,45 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+
+
+//#include "gf_includesN.hpp"
+#include "CacheableUndefinedMN.hpp"
+#include "DataOutputMN.hpp"
+#include "DataInputMN.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+      // Region: IGFSerializable Members
+
+      void CacheableUndefined::ToData(DataOutput^ output)
+      {
+      }
+
+      IGFSerializable^ CacheableUndefined::FromData(DataInput^ input)
+      {
+        return this;
+      }
+
+      uint32_t CacheableUndefined::ObjectSize::get()
+      {
+        return static_cast<uint32_t> (sizeof(CacheableUndefined^));
+      }
+
+      // End Region: IGFSerializable Members
+    }
+  }
+}
+ } //namespace 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CacheableUndefinedMN.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CacheableUndefinedMN.hpp b/geode-client-native/src/clicache/com/vmware/CacheableUndefinedMN.hpp
new file mode 100644
index 0000000..d61d1e5
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CacheableUndefinedMN.hpp
@@ -0,0 +1,99 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "../../gf_defs.hpp"
+#include "IGFSerializableN.hpp"
+#include "GemFireClassIdsMN.hpp"
+#include "LogMN.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+      /// <summary>
+      /// Encapsulate an undefined result.
+      /// </summary>
+      public ref class CacheableUndefined
+        : public IGFSerializable
+      {
+      public:
+        /// <summary>
+        /// Allocates a new empty instance.
+        /// </summary>
+        inline CacheableUndefined() { }
+
+        /// <summary>
+        /// Static function to create a new empty instance.
+        /// </summary>
+        inline static CacheableUndefined^ Create()
+        {
+          return gcnew CacheableUndefined();
+        }
+
+        // Region: IGFSerializable Members
+
+        /// <summary>
+        /// Serializes this object.
+        /// </summary>
+        /// <param name="output">
+        /// the DataOutput object to use for serializing the object
+        /// </param>
+        virtual void ToData(DataOutput^ output);
+
+        /// <summary>
+        /// Deserialize this object, typical implementation should return
+        /// the 'this' pointer.
+        /// </summary>
+        /// <param name="input">
+        /// the DataInput stream to use for reading the object data
+        /// </param>
+        /// <returns>the deserialized object</returns>
+        virtual IGFSerializable^ FromData(DataInput^ input);
+
+        /// <summary>
+        /// return the size of this object in bytes
+        /// </summary>
+        virtual property uint32_t ObjectSize
+        {
+          virtual uint32_t get();
+        }
+
+        /// <summary>
+        /// Returns the classId of the instance being serialized.
+        /// This is used by deserialization to determine what instance
+        /// type to create and deserialize into.
+        /// </summary>
+        /// <returns>the classId</returns>
+        virtual property uint32_t ClassId
+        {
+          inline virtual uint32_t get()
+          {
+            return GemFireClassIds::CacheableUndefined;
+          }
+        }
+
+        // End Region: IGFSerializable Members
+
+        /// <summary>
+        /// Factory function to register this class.
+        /// </summary>
+        static IGFSerializable^ CreateDeserializable()
+        {
+					return gcnew CacheableUndefined();
+        }
+      };
+    }
+  }
+}
+ } //namespace 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CacheableVectorMN.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CacheableVectorMN.cpp b/geode-client-native/src/clicache/com/vmware/CacheableVectorMN.cpp
new file mode 100644
index 0000000..82483f9
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CacheableVectorMN.cpp
@@ -0,0 +1,70 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+
+
+//#include "gf_includesN.hpp"
+#include "CacheableVectorMN.hpp"
+#include "DataOutputMN.hpp"
+#include "DataInputMN.hpp"
+#include "ExceptionTypesMN.hpp"
+#include "impl/SafeConvertN.hpp"
+
+using namespace System;
+using namespace System::Collections::Generic;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+      // Region: IGFSerializable Members
+
+      void CacheableVector::ToData(DataOutput^ output)
+      {
+        if(m_arrayList != nullptr)
+        {
+          output->WriteArrayLen(m_arrayList->Count);
+          for each (Object^ obj in m_arrayList) {
+						//TODO::split
+            output->WriteObject(obj);
+          }
+        }
+        else
+          output->WriteByte(0xFF);
+      }
+
+      IGFSerializable^ CacheableVector::FromData(DataInput^ input)
+      {
+        int len = input->ReadArrayLen();
+        for( int i = 0; i < len; i++)
+        {
+          m_arrayList->Add(input->ReadObject());
+        }
+        return this;
+      }
+
+      uint32_t CacheableVector::ObjectSize::get()
+      { 
+        //TODO::hitesh
+        /*uint32_t size = static_cast<uint32_t> (sizeof(CacheableVector^));
+        for each (IGFSerializable^ val in this) {
+          if (val != nullptr) {
+            size += val->ObjectSize;
+          }
+        }*/
+        return m_arrayList->Count;
+      }
+
+      // End Region: IGFSerializable Members
+    }
+  }
+}
+ } //namespace 
+



[50/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/VS_Solutions/debug/AdminAPI/AdminAPI.sln
----------------------------------------------------------------------
diff --git a/geode-client-native/VS_Solutions/debug/AdminAPI/AdminAPI.sln b/geode-client-native/VS_Solutions/debug/AdminAPI/AdminAPI.sln
new file mode 100644
index 0000000..a0214d6
--- /dev/null
+++ b/geode-client-native/VS_Solutions/debug/AdminAPI/AdminAPI.sln
@@ -0,0 +1,28 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AdminApiMain", "main\AdminApiMain.vcproj", "{EFA4655C-779A-47FF-A857-B691E06B2B10}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AdminApiSrc", "src\AdminApiSrc.vcproj", "{B6C13F47-D46B-40EF-AC6B-3DBC87897702}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfiguration) = preSolution
+		Debug = Debug
+		Release = Release
+	EndGlobalSection
+	GlobalSection(ProjectConfiguration) = postSolution
+		{EFA4655C-779A-47FF-A857-B691E06B2B10}.Debug.ActiveCfg = Debug|Win32
+		{EFA4655C-779A-47FF-A857-B691E06B2B10}.Debug.Build.0 = Debug|Win32
+		{EFA4655C-779A-47FF-A857-B691E06B2B10}.Release.ActiveCfg = Release|Win32
+		{EFA4655C-779A-47FF-A857-B691E06B2B10}.Release.Build.0 = Release|Win32
+		{B6C13F47-D46B-40EF-AC6B-3DBC87897702}.Debug.ActiveCfg = Debug|Win32
+		{B6C13F47-D46B-40EF-AC6B-3DBC87897702}.Release.ActiveCfg = Release|Win32
+		{B6C13F47-D46B-40EF-AC6B-3DBC87897702}.Release.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+	EndGlobalSection
+	GlobalSection(ExtensibilityAddIns) = postSolution
+	EndGlobalSection
+EndGlobal

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/VS_Solutions/debug/AdminAPI/main/AdminApiMain.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/VS_Solutions/debug/AdminAPI/main/AdminApiMain.cpp b/geode-client-native/VS_Solutions/debug/AdminAPI/main/AdminApiMain.cpp
new file mode 100644
index 0000000..953995f
--- /dev/null
+++ b/geode-client-native/VS_Solutions/debug/AdminAPI/main/AdminApiMain.cpp
@@ -0,0 +1,109 @@
+/*=========================================================================
+ * Copyright (c) 2010-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * one or more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+// this program is for Visual Studio Debugging of the Admin API
+// this program acts as an Admin API 'member' of the Distributed System
+// tests here SHOULD also be part of the 'testAdminAPI.cpp' unit tests.
+//
+#include "AdminApiMain.hpp"
+
+static const int discovery_iterations = 1;
+
+using namespace gemfire_admin;
+
+AdminTest*  test;
+
+int main( int argc, char**argv )
+{
+  test = new AdminTest();
+  test->begin();
+
+  printf("\npress 'q' to quit > ");
+
+  while ( 1 ) {
+    if(getchar() != 'q')
+      break;
+  }
+
+  return 0;
+}
+
+void AdminTest::begin() {
+
+  printf("AdminTest, begun");
+
+  ////////////////////////////////////////////////////////
+  //// USE ONLY ONE connect() CALL others for testing ////
+  ////////////////////////////////////////////////////////
+  //
+  sys = AdministratedSystem::connect( "Bosco-dflt" );  // via gfcpp.properties or defaults
+  //sys = AdministratedSystem::connect( "Rosco-mcast", "224.0.33.99", "10398" );
+  //sys = AdministratedSystem::connect( "Cosco-mcast", "10.80.10.82" );
+
+  for ( int i = 0; i < discovery_iterations; i++ )
+    discover( i );
+
+  printf("\n");
+
+  sys->disconnect();
+}
+
+void AdminTest::discover( int iteration_num ) {
+
+  VectorOfCacheApplication  apps;
+  CacheApplicationPtr       app;
+  VectorOfCacheRegion       regs;
+
+  printf( "\n>>Discovery Iteration %d<<\n", iteration_num + 1 );
+
+  sys->discover();
+  sys->getCacheApplications( apps );
+
+  for ( size_t i = 0; i < apps.size(); i++ ) {
+    app = apps[i];
+
+    if ( i > 0 ) 
+      printf("\n");
+
+    printf( "\nMemberId = %s", app->getId() );
+    printf( "\nMemberType = %s", app->getMemberType() );
+    printf( "\nHostAddress = %s", app->getHostAddress() );
+
+    printf( "\n HostName = %s", app->getHostName() );
+    printf( "\n Name = %s", app->getName() );
+    printf( "\n OS = %s", app->getOperatingSystem() );
+    printf( "\n License = %s", app->getLicense() );
+    printf( "\n StatsEnabled = %d", app->getStatisticsEnabled() );
+    printf( "\n StatsInterval = %d", app->getStatisticsInterval() );
+    printf( "\n" );
+
+    app->getRootRegions( regs );
+
+    for ( size_t j = 0; j < regs.size(); j++ ) {
+      regionize( 0, regs[j] );
+    }
+  }
+  printf("\n");
+}
+
+void AdminTest::regionize( int level, CacheRegionPtr reg ) {
+
+  VectorOfCacheRegion  subs;
+
+  // indent properly
+  //
+  for ( int i = 0; i < level; i++ )
+    printf("  ");
+
+  printf( "   %s\n", reg->getFullPath() );
+
+  reg->getSubRegions( subs );
+  for ( size_t j = 0; j < subs.size(); j++ )
+    regionize( level + 1, subs[j] );
+}
+
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/VS_Solutions/debug/AdminAPI/main/AdminApiMain.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/VS_Solutions/debug/AdminAPI/main/AdminApiMain.hpp b/geode-client-native/VS_Solutions/debug/AdminAPI/main/AdminApiMain.hpp
new file mode 100644
index 0000000..39d855d
--- /dev/null
+++ b/geode-client-native/VS_Solutions/debug/AdminAPI/main/AdminApiMain.hpp
@@ -0,0 +1,29 @@
+/*=========================================================================
+ * Copyright (c) 2010-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * one or more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+#ifndef _ADMINTEST_HPP_
+#define _ADMINTEST_HPP_
+
+#include <string>
+#include <admin/AdministratedSystem.hpp>
+#include <admin/CacheRegion.hpp>
+
+using namespace gemfire_admin;
+
+class AdminTest
+{
+  public:
+    AdministratedSystem* sys;
+
+    void begin();
+    void discover( int iteration_num );
+    void regionize( int level, CacheRegionPtr reg );
+
+};
+
+#endif
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/VS_Solutions/debug/AdminAPI/main/AdminApiMain.vcproj
----------------------------------------------------------------------
diff --git a/geode-client-native/VS_Solutions/debug/AdminAPI/main/AdminApiMain.vcproj b/geode-client-native/VS_Solutions/debug/AdminAPI/main/AdminApiMain.vcproj
new file mode 100644
index 0000000..c738d0e
--- /dev/null
+++ b/geode-client-native/VS_Solutions/debug/AdminAPI/main/AdminApiMain.vcproj
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="AdminApiMain"
+	ProjectGUID="{EFA4655C-779A-47FF-A857-B691E06B2B10}"
+	RootNamespace="AdminApiMain"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="Debug"
+			IntermediateDirectory="Debug"
+			ConfigurationType="1"
+			CharacterSet="2"
+			ReferencesPath="">
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalOptions="/wd4312 /wd4244 /wd4311 /wd4267"
+				Optimization="0"
+				AdditionalIncludeDirectories="&quot;$(ProjectDir)..\..\..\..\src\com\gemstone\gemfire\internal\cppcache&quot;;&quot;$(ProjectDir)..\..\..\..\src\com\gemstone\gemfire\internal\cppcache\impl&quot;;&quot;$(ProjectDir)..\..\..\..\..\cpp_thirdparty\ace5.4&quot;;&quot;$(ProjectDir)..\..\..\..\..\cpp_thirdparty\LBM\LBM_1.7.0.0\Win2k-i386\include&quot;;&quot;$(ProjectDir)..\..\..\..\..\cpp_thirdparty\LBM\LBM_1.7.0.0\Win2k-i386\include\lbm&quot;"
+				PreprocessorDefinitions="_DEBUG;_CONSOLE;__ACE_INLINE__;ACE_NOLOGGING;ACE_NDEBUG;WIN32;_WIN32;WINVER=0x0500;_WINNT=0x0500;IAL;_X86_;x86;_WIN32_WINNT=0x500"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="$(ProjectDir)..\..\..\..\build-artifacts\win\hidden\lib\Ace.lib $(ProjectDir)..\..\..\..\build-artifacts\win\hidden\lib\debug\gfcppcache.lib"
+				OutputFile="$(OutDir)/AdminApi.exe"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories=""
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/AdminApiMain.pdb"
+				SubSystem="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"
+				CommandLine="copy $(ProjectDir)gfcpp.properties $(TargetDir)"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="Release"
+			IntermediateDirectory="Release"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="4"
+				UsePrecompiledHeader="3"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/CacheTest.exe"
+				LinkIncremental="1"
+				GenerateDebugInformation="TRUE"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath=".\AdminApiMain.cpp">
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+			<File
+				RelativePath=".\AdminApiMain.hpp">
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+		</Filter>
+		<File
+			RelativePath=".\gfcpp.properties">
+		</File>
+		<File
+			RelativePath=".\locator.gfcpp.properties">
+		</File>
+		<File
+			RelativePath=".\mcast.gfcpp.properties">
+		</File>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/VS_Solutions/debug/AdminAPI/main/gfcpp.properties
----------------------------------------------------------------------
diff --git a/geode-client-native/VS_Solutions/debug/AdminAPI/main/gfcpp.properties b/geode-client-native/VS_Solutions/debug/AdminAPI/main/gfcpp.properties
new file mode 100644
index 0000000..9c056df
--- /dev/null
+++ b/geode-client-native/VS_Solutions/debug/AdminAPI/main/gfcpp.properties
@@ -0,0 +1,6 @@
+# gfcpp.properties formatted file 10/5/2005 3:07:00 PM
+# generated 10/5/2005 3:07:00 PM by the Gemfire C++ Console
+#
+statistic-archive-file=AdminApi
+mcast-address=224.0.33.99
+mcast-port=10399
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/VS_Solutions/debug/AdminAPI/main/locator.gfcpp.properties
----------------------------------------------------------------------
diff --git a/geode-client-native/VS_Solutions/debug/AdminAPI/main/locator.gfcpp.properties b/geode-client-native/VS_Solutions/debug/AdminAPI/main/locator.gfcpp.properties
new file mode 100644
index 0000000..e729d77
--- /dev/null
+++ b/geode-client-native/VS_Solutions/debug/AdminAPI/main/locator.gfcpp.properties
@@ -0,0 +1,5 @@
+# gfcpp.properties formatted file 10/5/2005 3:07:00 PM
+# generated 10/5/2005 3:07:00 PM by the Gemfire C++ Console
+#
+statistic-archive-file=d:/gfs-files/AdminApi
+locators=10.80.10.82
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/VS_Solutions/debug/AdminAPI/main/mcast.gfcpp.properties
----------------------------------------------------------------------
diff --git a/geode-client-native/VS_Solutions/debug/AdminAPI/main/mcast.gfcpp.properties b/geode-client-native/VS_Solutions/debug/AdminAPI/main/mcast.gfcpp.properties
new file mode 100644
index 0000000..ba0d3ba
--- /dev/null
+++ b/geode-client-native/VS_Solutions/debug/AdminAPI/main/mcast.gfcpp.properties
@@ -0,0 +1,6 @@
+# gfcpp.properties formatted file 10/5/2005 3:07:00 PM
+# generated 10/5/2005 3:07:00 PM by the Gemfire C++ Console
+#
+statistic-archive-file=d:/gfs-files/AdminApi
+mcast-address=224.0.33.99
+mcast-port=10399
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/VS_Solutions/debug/AdminAPI/src/AdminApiSrc.vcproj
----------------------------------------------------------------------
diff --git a/geode-client-native/VS_Solutions/debug/AdminAPI/src/AdminApiSrc.vcproj b/geode-client-native/VS_Solutions/debug/AdminAPI/src/AdminApiSrc.vcproj
new file mode 100644
index 0000000..c8c38ca
--- /dev/null
+++ b/geode-client-native/VS_Solutions/debug/AdminAPI/src/AdminApiSrc.vcproj
@@ -0,0 +1,236 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="AdminApiSrc"
+	ProjectGUID="{B6C13F47-D46B-40EF-AC6B-3DBC87897702}"
+	RootNamespace="AdminApiSrc"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="Debug"
+			IntermediateDirectory="Debug"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="&quot;$(ProjectDir)..\..\..\..\src\com\gemstone\gemfire\internal\cppcache&quot;;&quot;$(ProjectDir)..\..\..\..\src\com\gemstone\gemfire\internal\cppcache\impl&quot;;&quot;$(ProjectDir)..\..\..\..\..\cpp_thirdparty\ace5.4&quot;;&quot;$(ProjectDir)..\..\..\..\..\cpp_thirdparty\LBM\LBM_1.7.0.0\Win2k-i386\include&quot;"
+				PreprocessorDefinitions="_DEBUG;_CONSOLE;__ACE_INLINE__;ACE_NOLOGGING;ACE_NDEBUG;WIN32;_WIN32;WINVER=0x0500;_WINNT=0x0500;IAL;_X86_;x86;_WIN32_WINNT=0x500;BUILD_CPPCACHE"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="1"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/gfcppcache.exe"
+				LinkIncremental="2"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/gfcppcache.pdb"
+				SubSystem="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="Release"
+			IntermediateDirectory="Release"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="4"
+				UsePrecompiledHeader="3"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/gfcppcache.exe"
+				LinkIncremental="1"
+				GenerateDebugInformation="TRUE"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath="..\..\..\..\src\com\gemstone\gemfire\internal\cppcache\admin\AdministratedSystem.cpp">
+			</File>
+			<File
+				RelativePath="..\..\..\..\src\com\gemstone\gemfire\internal\cppcache\admin\impl\AdministratedSystemImpl.cpp">
+			</File>
+			<File
+				RelativePath="..\..\..\..\src\com\gemstone\gemfire\internal\cppcache\impl\AdminManager.cpp">
+			</File>
+			<File
+				RelativePath="..\..\..\..\src\com\gemstone\gemfire\internal\cppcache\admin\impl\ApplicationAdminHandler.cpp">
+			</File>
+			<File
+				RelativePath="..\..\..\..\src\com\gemstone\gemfire\internal\cppcache\admin\impl\CacheApplicationImpl.cpp">
+			</File>
+			<File
+				RelativePath="..\..\..\..\src\com\gemstone\gemfire\internal\cppcache\admin\impl\CacheRegionImpl.cpp">
+			</File>
+			<File
+				RelativePath="..\..\..\..\src\com\gemstone\gemfire\internal\cppcache\DistributedSystem.cpp">
+			</File>
+			<File
+				RelativePath="..\..\..\..\src\com\gemstone\gemfire\internal\cppcache\admin\impl\LocatorImpl.cpp">
+			</File>
+			<File
+				RelativePath="..\..\..\..\src\com\gemstone\gemfire\internal\cppcache\admin\LogEvent.cpp">
+			</File>
+			<File
+				RelativePath="..\..\..\..\src\com\gemstone\gemfire\internal\cppcache\admin\LogListener.cpp">
+			</File>
+			<File
+				RelativePath="..\..\..\..\src\com\gemstone\gemfire\internal\cppcache\admin\Statistic.cpp">
+			</File>
+			<File
+				RelativePath="..\..\..\..\src\com\gemstone\gemfire\internal\cppcache\admin\StatisticEvent.cpp">
+			</File>
+			<File
+				RelativePath="..\..\..\..\src\com\gemstone\gemfire\internal\cppcache\admin\StatisticListener.cpp">
+			</File>
+			<File
+				RelativePath="..\..\..\..\src\com\gemstone\gemfire\internal\cppcache\admin\StatisticResource.cpp">
+			</File>
+			<File
+				RelativePath="..\..\..\..\tests\cppcache\testAdminAPI.cpp">
+			</File>
+			<File
+				RelativePath="..\..\..\..\tests\cppcache\testDistributedSystem.cpp">
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+			<File
+				RelativePath="..\..\..\..\src\com\gemstone\gemfire\internal\cppcache\admin\AdministratedSystem.hpp">
+			</File>
+			<File
+				RelativePath="..\..\..\..\src\com\gemstone\gemfire\internal\cppcache\admin\impl\AdministratedSystemImpl.hpp">
+			</File>
+			<File
+				RelativePath="..\..\..\..\src\com\gemstone\gemfire\internal\cppcache\impl\AdminManager.hpp">
+			</File>
+			<File
+				RelativePath="..\..\..\..\src\com\gemstone\gemfire\internal\cppcache\impl\AdminMessageType.hpp">
+			</File>
+			<File
+				RelativePath="..\..\..\..\src\com\gemstone\gemfire\internal\cppcache\admin\impl\ApplicationAdminHandler.hpp">
+			</File>
+			<File
+				RelativePath="..\..\..\..\src\com\gemstone\gemfire\internal\cppcache\admin\CacheApplication.hpp">
+			</File>
+			<File
+				RelativePath="..\..\..\..\src\com\gemstone\gemfire\internal\cppcache\admin\impl\CacheApplicationImpl.hpp">
+			</File>
+			<File
+				RelativePath="..\..\..\..\src\com\gemstone\gemfire\internal\cppcache\admin\CacheRegion.hpp">
+			</File>
+			<File
+				RelativePath="..\..\..\..\src\com\gemstone\gemfire\internal\cppcache\admin\impl\CacheRegionImpl.hpp">
+			</File>
+			<File
+				RelativePath="..\..\..\..\src\com\gemstone\gemfire\internal\cppcache\admin\defaults.hpp">
+			</File>
+			<File
+				RelativePath="..\..\..\..\src\com\gemstone\gemfire\internal\cppcache\DistributedSystem.hpp">
+			</File>
+			<File
+				RelativePath="..\..\..\..\src\com\gemstone\gemfire\internal\cppcache\admin\Locator.hpp">
+			</File>
+			<File
+				RelativePath="..\..\..\..\src\com\gemstone\gemfire\internal\cppcache\admin\impl\LocatorImpl.hpp">
+			</File>
+			<File
+				RelativePath="..\..\..\..\src\com\gemstone\gemfire\internal\cppcache\admin\LogEvent.hpp">
+			</File>
+			<File
+				RelativePath="..\..\..\..\src\com\gemstone\gemfire\internal\cppcache\admin\LogListener.hpp">
+			</File>
+			<File
+				RelativePath="..\..\..\..\src\com\gemstone\gemfire\internal\cppcache\admin\Statistic.hpp">
+			</File>
+			<File
+				RelativePath="..\..\..\..\src\com\gemstone\gemfire\internal\cppcache\admin\StatisticEvent.hpp">
+			</File>
+			<File
+				RelativePath="..\..\..\..\src\com\gemstone\gemfire\internal\cppcache\admin\StatisticListener.hpp">
+			</File>
+			<File
+				RelativePath="..\..\..\..\src\com\gemstone\gemfire\internal\cppcache\admin\StatisticResource.hpp">
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/VS_Solutions/examples/CacheTest/CacheTest.sln
----------------------------------------------------------------------
diff --git a/geode-client-native/VS_Solutions/examples/CacheTest/CacheTest.sln b/geode-client-native/VS_Solutions/examples/CacheTest/CacheTest.sln
new file mode 100644
index 0000000..9442a6c
--- /dev/null
+++ b/geode-client-native/VS_Solutions/examples/CacheTest/CacheTest.sln
@@ -0,0 +1,25 @@
+Microsoft Visual Studio Solution File, Format Version 9.00
+# Visual Studio 2005
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CacheTest", "CacheTest.vcproj", "{EFA4655C-779A-47FF-A857-B691E06B2B10}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Debug|x64 = Debug|x64
+		Release|Win32 = Release|Win32
+		Release|x64 = Release|x64
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{EFA4655C-779A-47FF-A857-B691E06B2B10}.Debug|Win32.ActiveCfg = Debug|Win32
+		{EFA4655C-779A-47FF-A857-B691E06B2B10}.Debug|Win32.Build.0 = Debug|Win32
+		{EFA4655C-779A-47FF-A857-B691E06B2B10}.Debug|x64.ActiveCfg = Debug|x64
+		{EFA4655C-779A-47FF-A857-B691E06B2B10}.Debug|x64.Build.0 = Debug|x64
+		{EFA4655C-779A-47FF-A857-B691E06B2B10}.Release|Win32.ActiveCfg = Release|Win32
+		{EFA4655C-779A-47FF-A857-B691E06B2B10}.Release|Win32.Build.0 = Release|Win32
+		{EFA4655C-779A-47FF-A857-B691E06B2B10}.Release|x64.ActiveCfg = Release|x64
+		{EFA4655C-779A-47FF-A857-B691E06B2B10}.Release|x64.Build.0 = Release|x64
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/VS_Solutions/examples/CacheTest/CacheTest.vcproj
----------------------------------------------------------------------
diff --git a/geode-client-native/VS_Solutions/examples/CacheTest/CacheTest.vcproj b/geode-client-native/VS_Solutions/examples/CacheTest/CacheTest.vcproj
new file mode 100644
index 0000000..e599bbe
--- /dev/null
+++ b/geode-client-native/VS_Solutions/examples/CacheTest/CacheTest.vcproj
@@ -0,0 +1,538 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8.00"
+	Name="CacheTest"
+	ProjectGUID="{EFA4655C-779A-47FF-A857-B691E06B2B10}"
+	RootNamespace="CacheTest"
+	Keyword="Win32Proj"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+		<Platform
+			Name="x64"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="Debug"
+			IntermediateDirectory="Debug"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+				CommandLine="copy $(ProjectDir)gfcpp.properties $(TargetDir)"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalOptions="/wd4312 /wd4244 /wd4311 /wd4267"
+				Optimization="0"
+				AdditionalIncludeDirectories="&quot;$(ProjectDir)..\..\..\build-artifacts\win\product\include&quot;;&quot;$(ProjectDir)..\..\..\..\cpp_thirdparty\ace5.4&quot;"
+				PreprocessorDefinitions="_DEBUG;_CONSOLE;__ACE_INLINE__;ACE_NOLOGGING;ACE_NDEBUG;WIN32;_WIN32;WINVER=0x0500;_WINNT=0x0500;IAL;_X86_;x86;_WIN32_WINNT=0x500"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				BrowseInformation="1"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="$(ProjectDir)..\..\..\build-artifacts\win\hidden\lib\Ace.lib $(ProjectDir)..\..\..\build-artifacts\win\hidden\lib\debug\gfcppcache.lib"
+				OutputFile="$(OutDir)/CacheTest.exe"
+				LinkIncremental="2"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile="$(OutDir)/CacheTest.pdb"
+				SubSystem="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="Release"
+			IntermediateDirectory="Release"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="0"
+				UsePrecompiledHeader="2"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/CacheTest.exe"
+				LinkIncremental="1"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug|x64"
+			OutputDirectory="Debug"
+			IntermediateDirectory="Debug"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+				CommandLine="copy $(ProjectDir)gfcpp.properties $(TargetDir)"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+				TargetEnvironment="3"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalOptions="/wd4312 /wd4244 /wd4311 /wd4267"
+				Optimization="0"
+				AdditionalIncludeDirectories="&quot;$(ProjectDir)..\..\..\build-artifacts\win\product\include&quot;;&quot;$(ProjectDir)..\..\..\..\cpp_thirdparty\ace5.4&quot;"
+				PreprocessorDefinitions="_DEBUG;_CONSOLE;__ACE_INLINE__;ACE_NOLOGGING;ACE_NDEBUG;_WIN32;WINVER=0x0500;_WINNT=0x0500;_WIN32_WINNT=0x500"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				BrowseInformation="1"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="$(ProjectDir)..\..\..\build-artifacts\win\hidden\lib\Ace.lib $(ProjectDir)..\..\..\build-artifacts\win\hidden\lib\debug\gfcppcache.lib"
+				OutputFile="$(OutDir)/CacheTest.exe"
+				LinkIncremental="2"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile="$(OutDir)/CacheTest.pdb"
+				SubSystem="1"
+				TargetMachine="17"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|x64"
+			OutputDirectory="Release"
+			IntermediateDirectory="Release"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+				TargetEnvironment="3"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				PreprocessorDefinitions="WIN64;NDEBUG;_CONSOLE"
+				RuntimeLibrary="0"
+				UsePrecompiledHeader="2"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="$(OutDir)/CacheTest.exe"
+				LinkIncremental="1"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="17"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\..\tests\cachetest\CacheTest.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\tests\cachetest\GetTask.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\tests\cachetest\MultiTask.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\tests\cachetest\PreloadTask.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\tests\cachetest\PutTask.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\tests\cachetest\ResetTask.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\tests\cachetest\Stats.cpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath="..\..\..\tests\cachetest\CacheTest.hpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\tests\cachetest\DataSet.hpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\tests\cachetest\GetTask.hpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\tests\cachetest\MultiTask.hpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\tests\cachetest\PreloadTask.hpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\tests\cachetest\PutTask.hpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\tests\cachetest\ResetTask.hpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\tests\cachetest\Stats.hpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+		</Filter>
+		<Filter
+			Name="xml"
+			>
+			<File
+				RelativePath=".\xml\01_cache.xml"
+				>
+				<FileConfiguration
+					Name="Debug|Win32"
+					ExcludedFromBuild="true"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|x64"
+					ExcludedFromBuild="true"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath=".\xml\02_cache.xml"
+				>
+				<FileConfiguration
+					Name="Debug|Win32"
+					ExcludedFromBuild="true"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|x64"
+					ExcludedFromBuild="true"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath=".\xml\03_cache.xml"
+				>
+				<FileConfiguration
+					Name="Debug|Win32"
+					ExcludedFromBuild="true"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|x64"
+					ExcludedFromBuild="true"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath=".\xml\04_cache.xml"
+				>
+				<FileConfiguration
+					Name="Debug|Win32"
+					ExcludedFromBuild="true"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|x64"
+					ExcludedFromBuild="true"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+					/>
+				</FileConfiguration>
+			</File>
+		</Filter>
+		<Filter
+			Name="scripts"
+			>
+			<File
+				RelativePath=".\scripts\cs.sh"
+				>
+			</File>
+			<File
+				RelativePath=".\scripts\ct.sh"
+				>
+			</File>
+			<File
+				RelativePath=".\scripts\start_some.bat"
+				>
+			</File>
+		</Filter>
+		<File
+			RelativePath=".\gfcpp.properties"
+			>
+		</File>
+		<File
+			RelativePath=".\locator.gfcpp.properties"
+			>
+		</File>
+		<File
+			RelativePath=".\mcast.gfcpp.properties"
+			>
+		</File>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/VS_Solutions/examples/CacheTest/gfcpp.properties
----------------------------------------------------------------------
diff --git a/geode-client-native/VS_Solutions/examples/CacheTest/gfcpp.properties b/geode-client-native/VS_Solutions/examples/CacheTest/gfcpp.properties
new file mode 100644
index 0000000..c71e3e0
--- /dev/null
+++ b/geode-client-native/VS_Solutions/examples/CacheTest/gfcpp.properties
@@ -0,0 +1,6 @@
+# gfcpp.properties formatted file 10/5/2005 3:07:00 PM
+# generated 10/5/2005 3:07:00 PM by the Gemfire C++ Console
+#
+statistic-archive-file=CacheTest
+mcast-address=224.0.33.99
+mcast-port=10399
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/VS_Solutions/examples/CacheTest/locator.gfcpp.properties
----------------------------------------------------------------------
diff --git a/geode-client-native/VS_Solutions/examples/CacheTest/locator.gfcpp.properties b/geode-client-native/VS_Solutions/examples/CacheTest/locator.gfcpp.properties
new file mode 100644
index 0000000..24b908d
--- /dev/null
+++ b/geode-client-native/VS_Solutions/examples/CacheTest/locator.gfcpp.properties
@@ -0,0 +1,5 @@
+# gfcpp.properties formatted file 10/5/2005 3:07:00 PM
+# generated 10/5/2005 3:07:00 PM by the Gemfire C++ Console
+#
+statistic-archive-file=d:/gfs-files/CacheTest
+locators=10.80.10.82
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/VS_Solutions/examples/CacheTest/mcast.gfcpp.properties
----------------------------------------------------------------------
diff --git a/geode-client-native/VS_Solutions/examples/CacheTest/mcast.gfcpp.properties b/geode-client-native/VS_Solutions/examples/CacheTest/mcast.gfcpp.properties
new file mode 100644
index 0000000..b300182
--- /dev/null
+++ b/geode-client-native/VS_Solutions/examples/CacheTest/mcast.gfcpp.properties
@@ -0,0 +1,6 @@
+# gfcpp.properties formatted file 10/5/2005 3:07:00 PM
+# generated 10/5/2005 3:07:00 PM by the Gemfire C++ Console
+#
+statistic-archive-file=d:/gfs-files/CacheTest
+mcast-address=224.0.33.99
+mcast-port=10399
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/VS_Solutions/examples/CacheTest/scripts/cs.sh
----------------------------------------------------------------------
diff --git a/geode-client-native/VS_Solutions/examples/CacheTest/scripts/cs.sh b/geode-client-native/VS_Solutions/examples/CacheTest/scripts/cs.sh
new file mode 100644
index 0000000..3d9153e
--- /dev/null
+++ b/geode-client-native/VS_Solutions/examples/CacheTest/scripts/cs.sh
@@ -0,0 +1,25 @@
+#!/bin/sh
+#
+# cs.sh
+#
+echo
+echo starting CacheTest.exe CacheServer instance
+echo 
+
+XML=""
+NAME="Server-10"
+CMD="CacheTest.exe --server=2 --region=HeeHaw --burstct=4 --burstus=10000 --name="
+
+if [ "${1}" != "" ]; then
+	XML="--xml=../xml/${1}_cache.xml"		
+	CMD="$CMD$NAME${1} $XML"
+else
+	CMD="$CMD$NAME${1}"
+fi
+echo
+echo $CMD
+echo
+#cd /trunk/VS_Solutions/examples/CacheTest/Debug/
+cd ../Debug/
+$CMD
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/VS_Solutions/examples/CacheTest/scripts/ct.sh
----------------------------------------------------------------------
diff --git a/geode-client-native/VS_Solutions/examples/CacheTest/scripts/ct.sh b/geode-client-native/VS_Solutions/examples/CacheTest/scripts/ct.sh
new file mode 100644
index 0000000..144e7ed
--- /dev/null
+++ b/geode-client-native/VS_Solutions/examples/CacheTest/scripts/ct.sh
@@ -0,0 +1,25 @@
+#!/bin/sh
+#
+# ct.sh
+#
+echo
+echo starting CacheTest.exe instance
+echo 
+
+XML=""
+NAME="Application-09"
+CMD="CacheTest.exe --region=HeeHaw --burstct=4 --burstus=10000 --name="
+
+if [ "${1}" != "" ]; then
+	XML="--xml=../xml/${1}_cache.xml"		
+	CMD="$CMD$NAME${1} $XML"
+else
+	CMD="$CMD$NAME${1}"
+fi
+echo
+echo $CMD
+echo
+#cd /trunk/VS_Solutions/examples/CacheTest/Debug/
+cd ../Debug/
+$CMD
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/VS_Solutions/examples/CacheTest/scripts/start_some.bat
----------------------------------------------------------------------
diff --git a/geode-client-native/VS_Solutions/examples/CacheTest/scripts/start_some.bat b/geode-client-native/VS_Solutions/examples/CacheTest/scripts/start_some.bat
new file mode 100644
index 0000000..a351a02
--- /dev/null
+++ b/geode-client-native/VS_Solutions/examples/CacheTest/scripts/start_some.bat
@@ -0,0 +1,17 @@
+REM
+REM get the party started
+REM
+
+SET CACHETEST_PATH=D:\work\gemstone\gfcpp\trunk\VS_Solutions\examples\CacheTest\Debug
+
+SET XML_FILE=%CACHETEST_PATH\..\xml\
+
+SET CMD_ARGS=--burstct=4 --burstus=10000 --task=put
+
+start "01_cache.xml" %CACHETEST_PATH%\CacheTest.exe %CMD_ARGS% --xml=%XML_FILE%\01_cache.xml
+start "02_cache.xml" %CACHETEST_PATH%\CacheTest.exe %CMD_ARGS% --xml=%XML_FILE%\02_cache.xml
+REM start "03_cache.xml" %CACHETEST_PATH%\CacheTest.exe %CMD_ARGS% --xml=%XML_FILE%\03_cache.xml
+REM start "04_cache.xml" %CACHETEST_PATH%\CacheTest.exe %CMD_ARGS% --xml=%XML_FILE%\04_cache.xml
+start "ct server 01" %CACHETEST_PATH%\CacheTest.exe %CMD_ARGS% --server=2
+REM start "ct server 02" %CACHETEST_PATH%\CacheTest.exe %CMD_ARGS% --server=2
+exit
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/VS_Solutions/examples/CacheTest/xml/01_cache.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/VS_Solutions/examples/CacheTest/xml/01_cache.xml b/geode-client-native/VS_Solutions/examples/CacheTest/xml/01_cache.xml
new file mode 100644
index 0000000..759e255
--- /dev/null
+++ b/geode-client-native/VS_Solutions/examples/CacheTest/xml/01_cache.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Well-formed and valid xml file -->
+<cache>
+
+ <root-region name = "Root1" >
+    <region-attributes scope="distributed-ack" mirror-type="none" caching-enabled="true" initial-capacity="25" load-factor="0.32" concurrency-level="10" interest-list-enabled="FALSE"  max-distribute-value-length-when-create ="20" lru-entries-limit = "35">
+       <region-idle-time>
+         <expiration-attributes timeout="20" action="destroy"/> 
+       </region-idle-time>
+       <entry-idle-time>
+         <expiration-attributes timeout="10" action="invalidate"/>
+       </entry-idle-time>
+       <region-time-to-live>
+         <expiration-attributes timeout="0" action="local-destroy"/>
+       </region-time-to-live>
+       <entry-time-to-live>
+         <expiration-attributes timeout="0" action="local-invalidate"/>
+       </entry-time-to-live>
+    </region-attributes>
+
+
+    <region name="SubRegion1">
+         <region-attributes scope="local" mirror-type="none" caching-enabled="true" initial-capacity="23" load-factor="0.89" concurrency-level="52">
+         </region-attributes>
+    </region>
+
+ </root-region>
+
+
+ <root-region name= "Root2">
+    <region-attributes scope="distributed-no-ack" mirror-type="keys-values" caching-enabled="true" initial-capacity="16" load-factor="0.75" concurrency-level="16" interest-list-enabled="false"  max-distribute-value-length-when-create ="20" >                                                         
+      <region-time-to-live>
+        <expiration-attributes timeout="0" action="destroy"/>
+      </region-time-to-live>
+       <region-idle-time>
+        <expiration-attributes timeout="0" action="invalidate"/>
+      </region-idle-time>
+      <entry-time-to-live>
+        <expiration-attributes timeout="0" action="destroy"/>
+      </entry-time-to-live>
+      <entry-idle-time>
+        <expiration-attributes timeout="0" action="invalidate"/>
+      </entry-idle-time>
+    </region-attributes>
+
+    <region name="SubRegion21">
+         <region-attributes scope="local" mirror-type="none" caching-enabled="true" initial-capacity="16" load-factor="0.75" concurrency-level="16">
+            <region-idle-time>
+               <expiration-attributes timeout="20" action="destroy"/>
+            </region-idle-time>
+            <entry-idle-time>
+               <expiration-attributes timeout="10" action="invalidate"/>
+            </entry-idle-time>
+         </region-attributes>
+    </region>
+
+    <region name="SubRegion22">
+        <region name="SubSubRegion221">
+        </region>
+    </region>
+
+ </root-region>
+
+</cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/VS_Solutions/examples/CacheTest/xml/02_cache.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/VS_Solutions/examples/CacheTest/xml/02_cache.xml b/geode-client-native/VS_Solutions/examples/CacheTest/xml/02_cache.xml
new file mode 100644
index 0000000..759e255
--- /dev/null
+++ b/geode-client-native/VS_Solutions/examples/CacheTest/xml/02_cache.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Well-formed and valid xml file -->
+<cache>
+
+ <root-region name = "Root1" >
+    <region-attributes scope="distributed-ack" mirror-type="none" caching-enabled="true" initial-capacity="25" load-factor="0.32" concurrency-level="10" interest-list-enabled="FALSE"  max-distribute-value-length-when-create ="20" lru-entries-limit = "35">
+       <region-idle-time>
+         <expiration-attributes timeout="20" action="destroy"/> 
+       </region-idle-time>
+       <entry-idle-time>
+         <expiration-attributes timeout="10" action="invalidate"/>
+       </entry-idle-time>
+       <region-time-to-live>
+         <expiration-attributes timeout="0" action="local-destroy"/>
+       </region-time-to-live>
+       <entry-time-to-live>
+         <expiration-attributes timeout="0" action="local-invalidate"/>
+       </entry-time-to-live>
+    </region-attributes>
+
+
+    <region name="SubRegion1">
+         <region-attributes scope="local" mirror-type="none" caching-enabled="true" initial-capacity="23" load-factor="0.89" concurrency-level="52">
+         </region-attributes>
+    </region>
+
+ </root-region>
+
+
+ <root-region name= "Root2">
+    <region-attributes scope="distributed-no-ack" mirror-type="keys-values" caching-enabled="true" initial-capacity="16" load-factor="0.75" concurrency-level="16" interest-list-enabled="false"  max-distribute-value-length-when-create ="20" >                                                         
+      <region-time-to-live>
+        <expiration-attributes timeout="0" action="destroy"/>
+      </region-time-to-live>
+       <region-idle-time>
+        <expiration-attributes timeout="0" action="invalidate"/>
+      </region-idle-time>
+      <entry-time-to-live>
+        <expiration-attributes timeout="0" action="destroy"/>
+      </entry-time-to-live>
+      <entry-idle-time>
+        <expiration-attributes timeout="0" action="invalidate"/>
+      </entry-idle-time>
+    </region-attributes>
+
+    <region name="SubRegion21">
+         <region-attributes scope="local" mirror-type="none" caching-enabled="true" initial-capacity="16" load-factor="0.75" concurrency-level="16">
+            <region-idle-time>
+               <expiration-attributes timeout="20" action="destroy"/>
+            </region-idle-time>
+            <entry-idle-time>
+               <expiration-attributes timeout="10" action="invalidate"/>
+            </entry-idle-time>
+         </region-attributes>
+    </region>
+
+    <region name="SubRegion22">
+        <region name="SubSubRegion221">
+        </region>
+    </region>
+
+ </root-region>
+
+</cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/VS_Solutions/examples/CacheTest/xml/03_cache.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/VS_Solutions/examples/CacheTest/xml/03_cache.xml b/geode-client-native/VS_Solutions/examples/CacheTest/xml/03_cache.xml
new file mode 100644
index 0000000..759e255
--- /dev/null
+++ b/geode-client-native/VS_Solutions/examples/CacheTest/xml/03_cache.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Well-formed and valid xml file -->
+<cache>
+
+ <root-region name = "Root1" >
+    <region-attributes scope="distributed-ack" mirror-type="none" caching-enabled="true" initial-capacity="25" load-factor="0.32" concurrency-level="10" interest-list-enabled="FALSE"  max-distribute-value-length-when-create ="20" lru-entries-limit = "35">
+       <region-idle-time>
+         <expiration-attributes timeout="20" action="destroy"/> 
+       </region-idle-time>
+       <entry-idle-time>
+         <expiration-attributes timeout="10" action="invalidate"/>
+       </entry-idle-time>
+       <region-time-to-live>
+         <expiration-attributes timeout="0" action="local-destroy"/>
+       </region-time-to-live>
+       <entry-time-to-live>
+         <expiration-attributes timeout="0" action="local-invalidate"/>
+       </entry-time-to-live>
+    </region-attributes>
+
+
+    <region name="SubRegion1">
+         <region-attributes scope="local" mirror-type="none" caching-enabled="true" initial-capacity="23" load-factor="0.89" concurrency-level="52">
+         </region-attributes>
+    </region>
+
+ </root-region>
+
+
+ <root-region name= "Root2">
+    <region-attributes scope="distributed-no-ack" mirror-type="keys-values" caching-enabled="true" initial-capacity="16" load-factor="0.75" concurrency-level="16" interest-list-enabled="false"  max-distribute-value-length-when-create ="20" >                                                         
+      <region-time-to-live>
+        <expiration-attributes timeout="0" action="destroy"/>
+      </region-time-to-live>
+       <region-idle-time>
+        <expiration-attributes timeout="0" action="invalidate"/>
+      </region-idle-time>
+      <entry-time-to-live>
+        <expiration-attributes timeout="0" action="destroy"/>
+      </entry-time-to-live>
+      <entry-idle-time>
+        <expiration-attributes timeout="0" action="invalidate"/>
+      </entry-idle-time>
+    </region-attributes>
+
+    <region name="SubRegion21">
+         <region-attributes scope="local" mirror-type="none" caching-enabled="true" initial-capacity="16" load-factor="0.75" concurrency-level="16">
+            <region-idle-time>
+               <expiration-attributes timeout="20" action="destroy"/>
+            </region-idle-time>
+            <entry-idle-time>
+               <expiration-attributes timeout="10" action="invalidate"/>
+            </entry-idle-time>
+         </region-attributes>
+    </region>
+
+    <region name="SubRegion22">
+        <region name="SubSubRegion221">
+        </region>
+    </region>
+
+ </root-region>
+
+</cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/VS_Solutions/examples/CacheTest/xml/04_cache.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/VS_Solutions/examples/CacheTest/xml/04_cache.xml b/geode-client-native/VS_Solutions/examples/CacheTest/xml/04_cache.xml
new file mode 100644
index 0000000..d16f234
--- /dev/null
+++ b/geode-client-native/VS_Solutions/examples/CacheTest/xml/04_cache.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Well-formed and valid xml file -->
+<cache>
+
+ <root-region name = "Root1" >
+    <region-attributes scope="distributed-ack" mirror-type="none" caching-enabled="true" initial-capacity="25" load-factor="0.32" concurrency-level="10" interest-list-enabled="FALSE"  max-distribute-value-length-when-create ="20" lru-entries-limit = "35">
+       <region-idle-time>
+         <expiration-attributes timeout="20" action="destroy"/> 
+       </region-idle-time>
+       <entry-idle-time>
+         <expiration-attributes timeout="10" action="invalidate"/>
+       </entry-idle-time>
+       <region-time-to-live>
+         <expiration-attributes timeout="0" action="local-destroy"/>
+       </region-time-to-live>
+       <entry-time-to-live>
+         <expiration-attributes timeout="0" action="local-invalidate"/>
+       </entry-time-to-live>
+    </region-attributes>
+
+
+    <region name="SubRegion1">
+         <region-attributes scope="local" mirror-type="none" caching-enabled="true" initial-capacity="23" load-factor="0.89" concurrency-level="52">
+         </region-attributes>
+    </region>
+
+ </root-region>
+
+
+ <root-region name= "Root2">
+    <region-attributes scope="distributed-no-ack" mirror-type="keys-values" caching-enabled="true" initial-capacity="16" load-factor="0.75" concurrency-level="16" interest-list-enabled="false"  max-distribute-value-length-when-create ="20" >                                                         
+      <region-time-to-live>
+        <expiration-attributes timeout="0" action="destroy"/>
+      </region-time-to-live>
+       <region-idle-time>
+        <expiration-attributes timeout="0" action="invalidate"/>
+      </region-idle-time>
+      <entry-time-to-live>
+        <expiration-attributes timeout="0" action="destroy"/>
+      </entry-time-to-live>
+      <entry-idle-time>
+        <expiration-attributes timeout="0" action="invalidate"/>
+      </entry-idle-time>
+    </region-attributes>
+
+    <region name="SubRegion21">
+         <region-attributes scope="local" mirror-type="none" caching-enabled="true" initial-capacity="16" load-factor="0.75" concurrency-level="16">
+            <region-idle-time>
+               <expiration-attributes timeout="20" action="destroy"/>
+            </region-idle-time>
+            <entry-idle-time>
+               <expiration-attributes timeout="10" action="invalidate"/>
+            </entry-idle-time>
+         </region-attributes>
+    </region>
+
+ </root-region>
+
+</cache>


[42/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/HierarchicalClient/README.html
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/HierarchicalClient/README.html b/geode-client-native/examples/clicache/HierarchicalClient/README.html
new file mode 100755
index 0000000..bedc3c8
--- /dev/null
+++ b/geode-client-native/examples/clicache/HierarchicalClient/README.html
@@ -0,0 +1,170 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"><HTML>
+<HEAD>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+<META NAME="GENERATOR" CONTENT="Adobe FrameMaker 7.0/HTML Export Filter">
+
+<TITLE>HierarchicalClient: Pivotal GemFire&#169; Native Client Example</TITLE>
+
+</HEAD>
+<BODY>
+ <IMG SRC="../../../docs/PIVOTAL_GemFire_190x81.png" BORDER="0">
+ <DIV>
+   <h1 align="center"><a name="Top" id="Top"></a>HierarchicalClient</h1>
+   <h2 align="center">Pivotal GemFire&#174; Native Client</h2>
+   <h2 align="center">C# Programming Example</h2>
+</DIV>
+ 
+<DIV>
+<P>Tiered caching, also called hierarchical caching, lets you isolate data management to one or more servers, allowing multiple clients to connect and use the server caches. This is the model for scalability, with many clients benefitting from the management resources of just a few servers.
+<P> In GemFire hierarchical caching, there is a server-side distributed system and one or more client-side distributed systems. The server VMs run BridgeServers that listen on unique ports for data requests and updates from clients. The clients forward all data requests their caches cannot fulfill to the servers. To do this, they use a custom data loader, the BridgeLoader. The clients might also be configured with a custom listener, called the BridgeWriter, that updates the servers when data is modified on the client side.  In the <a href="../../../quickstart/xml/hierarchicalserver.xml" target="_blank"><code>HierarchicalServer.xml</code></a> file for the cache server used in this example, note that the BridgeServer is defined for the entire cache. It services requests from any client for any region in the cache.<br>
+  <br>
+</DIV>
+ <DIV>
+<H2>
+About the HierarchicalClient Example </H2>
+<P>The <code>HierarchicalClient</code> example is an interactive C# program that uses Microsoft .NET Framework 4.0 to access the GemFire C++ API for modifying and viewing cache contents.</P>
+<blockquote>
+  <p align="left"><em>Microsoft .NET Framework 4.0 must be installed before running this example. For information about installing the .NET Framework, see the </em>GemFire Native Client User's Guide<em>.</em> </p>
+</blockquote>
+<P><code>HierarchicalClient</code> demonstrates a server in a tiered hierarchical caching setup. The client application comes with a cache configuration file, <code><a href="./HierarchicalClient.xml" target="_blank">HierarchicalClient.xml</a></code>, which  is configured to create a root region and establish the native client endpoints to the locally-run server by specifying <code>localhost:40404</code>.</P>
+<P>The <code>HierarchicalClient</code> cache listens for client requests at a specific port (see <code><a href="../../../quickstart/xml/hierarchicalserver.xml" target="_blank">HierarchicalServer.xml</a></code>). The client connects to the cache server's port, sending data requests and updates. At the beginning, both the server and client cache regions are empty.</P>
+<P> When you run the example it will:</P>
+<UL>
+<LI CLASS="Bulleted">Get entries.<br>
+  These result in client cache misses, so the client forwards   the request to the server. The server's loader runs to satisfy its   cache misses. You also see server and client listeners reporting on the   new cache entries.<br>
+  <br>
+</LI>
+<LI CLASS="Bulleted">Modify the cache.<br>
+  The client entry updates and destroys are forwarded to   the server by the client's cache writer. Client entry invalidates are not   forwarded. Again, the listeners on both sides report the cache activity.<br>
+</LI>
+</UL>
+</DIV>
+
+<DIV>
+<H2>
+<a name="configuring_environment" id="configuring_environment"></a>Configuring the Environment </H2>
+<P>
+Examples that interact with a Java cache server require specific environment configurations so the Java cache server will run properly. Follow the configuration steps listed below that apply to your operating system: </P>
+</DIV>
+ <DIV>
+<ol>
+  <li>From the GemFire product installation directory, configure your environment settings by following the steps in <code>examples/EnvSetup.html</code>. Refer to the User's 
+      Guide if you need help with this step.<br>
+      <br>
+  <li>Set the <code>JAVA_HOME</code> and <code>GF_JAVA_HOME</code>  environment variables to your installed Java JRE or JDK. See the Installation chapter of the   <em>GemFire Users's Guide</em> for the versions of Java that are compatible with GemFire. The <code>JAVA_HOME</code> setting is for your applications, and  <code>GF_JAVA_HOME</code> is for the GemFire scripts. You must have a compatible Java JRE or JDK installed and you must set <code>JAVA_HOME</code> and <code>GF_JAVA_HOME</code> to point to it.<br>
+      <br>
+  <li>Add <code>$JAVA_HOME/bin</code> to the start of your <code>PATH</code>. <br>
+  <br>
+  <li>Add the GemFire quickstart classes to your <code>CLASSPATH</code>. <br>
+  <blockquote>
+  <p><strong> <code><strong>set CLASSPATH=%GEMFIRE%\quickstart\classes;%CLASSPATH%</strong></code></strong></p>
+</blockquote>  
+</ol>
+<p>The following is a list of the environment configuration commands for the <code>HierarchicalClient</code> example. Choose the set of commands that are appropriate for your operating system. The text that you type is shown in bold.
+  These configurations only need to be performed for the sessions that invoke the Java cache server.</p>
+<p><strong>Bourne and Korn shells (sh, ksh, bash)</strong></p>
+<blockquote>
+  <p>    <code>% <strong>cd GemFireInstallDirectory</strong><br>
+    % <strong>CLASSPATH=$CLASSPATH:$GEMFIRE/quickstart/classes; export CLASSPATH</strong><br>
+    % <strong>cd $GEMFIRE/quickstart</strong><br>
+    % <strong>JAVA_HOME=&lt;Installed JRE PATH&gt;; export JAVA_HOME</strong><br>
+    % <strong>GF_JAVA_HOME=$JAVA_HOME; export GF_JAVA_HOME</strong><br>
+    % <strong>PATH=$JAVA_HOME/bin:$PATH; export PATH</strong></code></p>
+</blockquote>
+<p><strong>Windows</strong></p>
+<blockquote>
+  <p><code>&gt; <strong>cd GemFireInstallDirectory</strong><br>
+&gt; <strong>set CLASSPATH=%GEMFIRE%\quickstart\classes;%CLASSPATH%</strong><br>
+&gt; <strong>cd %GEMFIRE%\quickstart</strong><br>
+&gt; <strong>set JAVA_HOME=&lt;Installed JRE PATH&gt;</strong><br>
+&gt; <strong>set GF_JAVA_HOME=%JAVA_HOME%</strong><br>
+&gt; <strong>set PATH=%JAVA_HOME%\bin;%PATH%</strong> </code></p>
+</blockquote>
+</DIV>
+
+<DIV>
+<H2>
+Starting HierarchicalClient </H2>
+<P>
+To run the <code>HierarchicalClient</code> example, create a session from the GemFire product directory and complete the following steps.</P>
+<P>This first session starts the Java cache server. </P>
+</DIV>
+ <DIV>
+<OL>
+<LI CLASS="Numbered-1st"><p>
+Configure the session environment according to the steps listed in <a href="#configuring_environment">Configuring the Environment</a><a href="../envsetup.html" target="_blank"></a>.</p>
+</LI>
+
+<LI CLASS="Numbered-1st">If you have not already done so, go to the <code>%GEMFIRE%/quickstart</code> directory.</LI>
+  <blockquote>
+    <p><strong>
+      <code>cd %GEMFIRE%/quickstart</code></strong></p>
+    </blockquote>
+<LI CLASS="Numbered">Enter this command to start the Java cache server:
+  
+  <blockquote>
+    <p><strong>
+      <code>java quickstart.HierarchicalServer</code></strong></p>
+     </blockquote>
+  <P>The server creates <code>/root/exampleRegion</code> and prompts you to start the <code>HierarchicalClient</code> application.</P>
+</LI>
+<LI CLASS="Numbered">
+Create another session and go to the <code>cli_HierarchicalClient</code> example directory:
+  <blockquote>
+    <p><strong><code>cd examples\cli_HierarchicalClient</code></strong></p>
+  </blockquote>
+  <li>
+    Start the <code>HierarchicalClient</code> application:</li>
+  <blockquote>
+   <p><strong>
+     <code>HierarchicalClient.exe</code></strong></p>
+   </blockquote>	
+</OL>
+<br>
+</DIV>
+
+<DIV>
+<H2>
+Running the Example </H2>
+<P>
+The client session does a <code>get</code> for <code>Key0</code>, <code>Key1</code>, <code>Key2</code>, and <code>Key3</code>, then forwards the requests to the cache server. The server session reports that the values have been retrieved.</P>
+</DIV>
+<DIV>
+<P><strong>
+In the client session</strong></P>
+<blockquote>
+  <p>
+    Press <code>Enter</code>, as prompted. The client session reports a series of entry updates and destroys, which are forwarded to the cache server.</p>
+  </blockquote>
+<p><strong>In the server session</strong></p>
+<blockquote>
+  <p>
+    The listener for the cache server reports create, update, and destroy events resulting from the modified entries.
+  </p>
+</blockquote>
+<p><strong>In the client session</strong></p>
+<blockquote>
+  <p>
+    Press <code>Enter</code> to end the application, then type <strong><code>Exit</code></strong> to close the session.  </p>
+</blockquote>
+<p><strong>In the server session</strong></p>
+<blockquote>
+  <p>Press <code>Enter</code> to end the cache server, then type <strong><code>Exit</code></strong> to close the session.  </p>
+</blockquote>
+</DIV>
+<DIV>
+<H2>
+Changing System Parameters</H2>
+<P>This product ships configured to run with default system properties. If you need to run in a non-default configuration, GemFire also takes a system-level configuration file. To configure a .NET client, rename any <code>gfcpp.properties</code> file currently in the example directory, then copy <code>gfcpp.properties</code> file into your <code>cli_HierarchicalClient</code> directory from the <code>defaultSystem</code> directory. Edit the <code>gfcpp.properties</code> file in your <code>cli_HierarchicalClient</code> directory, as needed.</P>
+<P>If you also need to make a non-default configuration for the Java cache server, rename any <code>gemfire.properties</code> file currently in the <code>%GEMFIRE%/quickstart</code>, then copy <code>gemfire.properties</code> into the <code>/quickstart</code> directory from the <code>%GEMFIRE%/defaultConfigs</code> directory and edit it. For example, to change the name of the <code>cache.xml</code> file, uncomment this line and change the file name:</P>
+<P> <code>#cache-xml-file=cache.xml</code></P>
+<P>When you're done with the example, delete your edited versions of <code>gemfire.properties</code> and <code>gfcpp.properties</code>, then restore the renamed original versions to their original names so other examples can use the unedited files.</P>
+</DIV>
+<a href="#Top">Top</a>
+<P>
+<br>
+Copyright &#169; 2005-2014 Pivotal Software, Inc. All rights reserved. This product is protected by U.S. and international copyright and intellectual property laws. Pivotal products are covered by one or more patents listed at http://www.pivotal.io/patents.
+</BODY>
+</HTML>
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/ProductBrowser/Form1.Designer.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/ProductBrowser/Form1.Designer.cs b/geode-client-native/examples/clicache/ProductBrowser/Form1.Designer.cs
new file mode 100755
index 0000000..9437a85
--- /dev/null
+++ b/geode-client-native/examples/clicache/ProductBrowser/Form1.Designer.cs
@@ -0,0 +1,364 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *========================================================================
+ */
+
+namespace ProductBrowser
+{
+  partial class ProductBrowser
+  {
+    /// <summary>
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary>
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing)
+    {
+      if (disposing && (components != null))
+      {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Windows Form Designer generated code
+
+    /// <summary>
+    /// Required method for Designer support - do not modify
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent()
+    {
+      this.lblProdId = new System.Windows.Forms.Label();
+      this.txtProdId = new System.Windows.Forms.TextBox();
+      this.txtProdName = new System.Windows.Forms.TextBox();
+      this.lblProdName = new System.Windows.Forms.Label();
+      this.txtProdNum = new System.Windows.Forms.TextBox();
+      this.lblProdNum = new System.Windows.Forms.Label();
+      this.txtStock = new System.Windows.Forms.TextBox();
+      this.label1 = new System.Windows.Forms.Label();
+      this.txtReorder = new System.Windows.Forms.TextBox();
+      this.label2 = new System.Windows.Forms.Label();
+      this.txtCost = new System.Windows.Forms.TextBox();
+      this.label3 = new System.Windows.Forms.Label();
+      this.txtList = new System.Windows.Forms.TextBox();
+      this.label4 = new System.Windows.Forms.Label();
+      this.txtMfgDays = new System.Windows.Forms.TextBox();
+      this.label5 = new System.Windows.Forms.Label();
+      this.label6 = new System.Windows.Forms.Label();
+      this.label7 = new System.Windows.Forms.Label();
+      this.btnCreate = new System.Windows.Forms.Button();
+      this.btnSearch = new System.Windows.Forms.Button();
+      this.txtSellDate = new System.Windows.Forms.TextBox();
+      this.txtDiscDate = new System.Windows.Forms.TextBox();
+      this.btnClear = new System.Windows.Forms.Button();
+      this.txtEvent = new System.Windows.Forms.TextBox();
+      this.btnDestroy = new System.Windows.Forms.Button();
+      this.btnInvalidate = new System.Windows.Forms.Button();
+      this.label8 = new System.Windows.Forms.Label();
+      this.SuspendLayout();
+      // 
+      // lblProdId
+      // 
+      this.lblProdId.AutoSize = true;
+      this.lblProdId.Location = new System.Drawing.Point(44, 52);
+      this.lblProdId.Name = "lblProdId";
+      this.lblProdId.Size = new System.Drawing.Size(56, 13);
+      this.lblProdId.TabIndex = 0;
+      this.lblProdId.Text = "Product Id";
+      // 
+      // txtProdId
+      // 
+      this.txtProdId.Location = new System.Drawing.Point(134, 45);
+      this.txtProdId.Name = "txtProdId";
+      this.txtProdId.Size = new System.Drawing.Size(100, 20);
+      this.txtProdId.TabIndex = 1;
+      // 
+      // txtProdName
+      // 
+      this.txtProdName.Location = new System.Drawing.Point(134, 86);
+      this.txtProdName.Name = "txtProdName";
+      this.txtProdName.Size = new System.Drawing.Size(100, 20);
+      this.txtProdName.TabIndex = 3;
+      // 
+      // lblProdName
+      // 
+      this.lblProdName.AutoSize = true;
+      this.lblProdName.Location = new System.Drawing.Point(44, 93);
+      this.lblProdName.Name = "lblProdName";
+      this.lblProdName.Size = new System.Drawing.Size(75, 13);
+      this.lblProdName.TabIndex = 2;
+      this.lblProdName.Text = "Product Name";
+      // 
+      // txtProdNum
+      // 
+      this.txtProdNum.Location = new System.Drawing.Point(134, 124);
+      this.txtProdNum.Name = "txtProdNum";
+      this.txtProdNum.Size = new System.Drawing.Size(100, 20);
+      this.txtProdNum.TabIndex = 5;
+      // 
+      // lblProdNum
+      // 
+      this.lblProdNum.AutoSize = true;
+      this.lblProdNum.Location = new System.Drawing.Point(44, 131);
+      this.lblProdNum.Name = "lblProdNum";
+      this.lblProdNum.Size = new System.Drawing.Size(84, 13);
+      this.lblProdNum.TabIndex = 4;
+      this.lblProdNum.Text = "Product Number";
+      // 
+      // txtStock
+      // 
+      this.txtStock.Location = new System.Drawing.Point(134, 168);
+      this.txtStock.Name = "txtStock";
+      this.txtStock.Size = new System.Drawing.Size(100, 20);
+      this.txtStock.TabIndex = 7;
+      // 
+      // label1
+      // 
+      this.label1.AutoSize = true;
+      this.label1.Location = new System.Drawing.Point(44, 175);
+      this.label1.Name = "label1";
+      this.label1.Size = new System.Drawing.Size(56, 13);
+      this.label1.TabIndex = 6;
+      this.label1.Text = "Stock Amt";
+      // 
+      // txtReorder
+      // 
+      this.txtReorder.Location = new System.Drawing.Point(134, 201);
+      this.txtReorder.Name = "txtReorder";
+      this.txtReorder.Size = new System.Drawing.Size(100, 20);
+      this.txtReorder.TabIndex = 9;
+      // 
+      // label2
+      // 
+      this.label2.AutoSize = true;
+      this.label2.Location = new System.Drawing.Point(44, 208);
+      this.label2.Name = "label2";
+      this.label2.Size = new System.Drawing.Size(66, 13);
+      this.label2.TabIndex = 8;
+      this.label2.Text = "Reorder Amt";
+      // 
+      // txtCost
+      // 
+      this.txtCost.Location = new System.Drawing.Point(134, 237);
+      this.txtCost.Name = "txtCost";
+      this.txtCost.Size = new System.Drawing.Size(100, 20);
+      this.txtCost.TabIndex = 11;
+      // 
+      // label3
+      // 
+      this.label3.AutoSize = true;
+      this.label3.Location = new System.Drawing.Point(44, 244);
+      this.label3.Name = "label3";
+      this.label3.Size = new System.Drawing.Size(28, 13);
+      this.label3.TabIndex = 10;
+      this.label3.Text = "Cost";
+      // 
+      // txtList
+      // 
+      this.txtList.Location = new System.Drawing.Point(134, 279);
+      this.txtList.Name = "txtList";
+      this.txtList.Size = new System.Drawing.Size(100, 20);
+      this.txtList.TabIndex = 13;
+      // 
+      // label4
+      // 
+      this.label4.AutoSize = true;
+      this.label4.Location = new System.Drawing.Point(44, 286);
+      this.label4.Name = "label4";
+      this.label4.Size = new System.Drawing.Size(50, 13);
+      this.label4.TabIndex = 12;
+      this.label4.Text = "List Price";
+      // 
+      // txtMfgDays
+      // 
+      this.txtMfgDays.Location = new System.Drawing.Point(134, 318);
+      this.txtMfgDays.Name = "txtMfgDays";
+      this.txtMfgDays.Size = new System.Drawing.Size(100, 20);
+      this.txtMfgDays.TabIndex = 15;
+      // 
+      // label5
+      // 
+      this.label5.AutoSize = true;
+      this.label5.Location = new System.Drawing.Point(44, 325);
+      this.label5.Name = "label5";
+      this.label5.Size = new System.Drawing.Size(64, 13);
+      this.label5.TabIndex = 14;
+      this.label5.Text = "Days to Mfg";
+      // 
+      // label6
+      // 
+      this.label6.AutoSize = true;
+      this.label6.Location = new System.Drawing.Point(44, 360);
+      this.label6.Name = "label6";
+      this.label6.Size = new System.Drawing.Size(50, 13);
+      this.label6.TabIndex = 16;
+      this.label6.Text = "Sell Date";
+      // 
+      // label7
+      // 
+      this.label7.AutoSize = true;
+      this.label7.Location = new System.Drawing.Point(44, 396);
+      this.label7.Name = "label7";
+      this.label7.Size = new System.Drawing.Size(89, 13);
+      this.label7.TabIndex = 18;
+      this.label7.Text = "Discontinue Date";
+      // 
+      // btnCreate
+      // 
+      this.btnCreate.Location = new System.Drawing.Point(319, 447);
+      this.btnCreate.Name = "btnCreate";
+      this.btnCreate.Size = new System.Drawing.Size(75, 23);
+      this.btnCreate.TabIndex = 20;
+      this.btnCreate.Text = "Put";
+      this.btnCreate.UseVisualStyleBackColor = true;
+      this.btnCreate.Click += new System.EventHandler(this.btnCreate_Click);
+      // 
+      // btnSearch
+      // 
+      this.btnSearch.Location = new System.Drawing.Point(238, 447);
+      this.btnSearch.Name = "btnSearch";
+      this.btnSearch.Size = new System.Drawing.Size(75, 23);
+      this.btnSearch.TabIndex = 23;
+      this.btnSearch.Text = "Get";
+      this.btnSearch.UseVisualStyleBackColor = true;
+      this.btnSearch.Click += new System.EventHandler(this.btnSearch_Click);
+      // 
+      // txtSellDate
+      // 
+      this.txtSellDate.Location = new System.Drawing.Point(134, 360);
+      this.txtSellDate.Name = "txtSellDate";
+      this.txtSellDate.Size = new System.Drawing.Size(100, 20);
+      this.txtSellDate.TabIndex = 24;
+      // 
+      // txtDiscDate
+      // 
+      this.txtDiscDate.Location = new System.Drawing.Point(134, 396);
+      this.txtDiscDate.Name = "txtDiscDate";
+      this.txtDiscDate.Size = new System.Drawing.Size(100, 20);
+      this.txtDiscDate.TabIndex = 25;
+      // 
+      // btnClear
+      // 
+      this.btnClear.Location = new System.Drawing.Point(562, 447);
+      this.btnClear.Name = "btnClear";
+      this.btnClear.Size = new System.Drawing.Size(75, 23);
+      this.btnClear.TabIndex = 26;
+      this.btnClear.Text = "Clear";
+      this.btnClear.UseVisualStyleBackColor = true;
+      this.btnClear.Click += new System.EventHandler(this.btnClear_Click);
+      // 
+      // txtEvent
+      // 
+      this.txtEvent.Location = new System.Drawing.Point(316, 45);
+      this.txtEvent.Multiline = true;
+      this.txtEvent.Name = "txtEvent";
+      this.txtEvent.Size = new System.Drawing.Size(321, 364);
+      this.txtEvent.TabIndex = 27;
+      // 
+      // btnDestroy
+      // 
+      this.btnDestroy.Location = new System.Drawing.Point(400, 447);
+      this.btnDestroy.Name = "btnDestroy";
+      this.btnDestroy.Size = new System.Drawing.Size(75, 23);
+      this.btnDestroy.TabIndex = 28;
+      this.btnDestroy.Text = "Destroy";
+      this.btnDestroy.UseVisualStyleBackColor = true;
+      this.btnDestroy.Click += new System.EventHandler(this.btnDestroy_Click);
+      // 
+      // btnInvalidate
+      // 
+      this.btnInvalidate.Location = new System.Drawing.Point(481, 447);
+      this.btnInvalidate.Name = "btnInvalidate";
+      this.btnInvalidate.Size = new System.Drawing.Size(75, 23);
+      this.btnInvalidate.TabIndex = 29;
+      this.btnInvalidate.Text = "Invalidate";
+      this.btnInvalidate.UseVisualStyleBackColor = true;
+      this.btnInvalidate.Click += new System.EventHandler(this.btnInvalidate_Click);
+      // 
+      // label8
+      // 
+      this.label8.AutoSize = true;
+      this.label8.Location = new System.Drawing.Point(316, 26);
+      this.label8.Name = "label8";
+      this.label8.Size = new System.Drawing.Size(81, 13);
+      this.label8.TabIndex = 30;
+      this.label8.Text = "Event Message";
+      // 
+      // ProductBrowser
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.ClientSize = new System.Drawing.Size(673, 501);
+      this.Controls.Add(this.label8);
+      this.Controls.Add(this.btnInvalidate);
+      this.Controls.Add(this.btnDestroy);
+      this.Controls.Add(this.txtEvent);
+      this.Controls.Add(this.btnClear);
+      this.Controls.Add(this.txtDiscDate);
+      this.Controls.Add(this.txtSellDate);
+      this.Controls.Add(this.btnSearch);
+      this.Controls.Add(this.btnCreate);
+      this.Controls.Add(this.label7);
+      this.Controls.Add(this.label6);
+      this.Controls.Add(this.txtMfgDays);
+      this.Controls.Add(this.label5);
+      this.Controls.Add(this.txtList);
+      this.Controls.Add(this.label4);
+      this.Controls.Add(this.txtCost);
+      this.Controls.Add(this.label3);
+      this.Controls.Add(this.txtReorder);
+      this.Controls.Add(this.label2);
+      this.Controls.Add(this.txtStock);
+      this.Controls.Add(this.label1);
+      this.Controls.Add(this.txtProdNum);
+      this.Controls.Add(this.lblProdNum);
+      this.Controls.Add(this.txtProdName);
+      this.Controls.Add(this.lblProdName);
+      this.Controls.Add(this.txtProdId);
+      this.Controls.Add(this.lblProdId);
+      this.Name = "ProductBrowser";
+      this.Text = "Product Browser";
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.Label lblProdId;
+    private System.Windows.Forms.TextBox txtProdId;
+    private System.Windows.Forms.TextBox txtProdName;
+    private System.Windows.Forms.Label lblProdName;
+    private System.Windows.Forms.TextBox txtProdNum;
+    private System.Windows.Forms.Label lblProdNum;
+    private System.Windows.Forms.TextBox txtStock;
+    private System.Windows.Forms.Label label1;
+    private System.Windows.Forms.TextBox txtReorder;
+    private System.Windows.Forms.Label label2;
+    private System.Windows.Forms.TextBox txtCost;
+    private System.Windows.Forms.Label label3;
+    private System.Windows.Forms.TextBox txtList;
+    private System.Windows.Forms.Label label4;
+    private System.Windows.Forms.TextBox txtMfgDays;
+    private System.Windows.Forms.Label label5;
+    private System.Windows.Forms.Label label6;
+    private System.Windows.Forms.Label label7;
+    private System.Windows.Forms.Button btnCreate;
+    private System.Windows.Forms.Button btnSearch;
+    private System.Windows.Forms.TextBox txtSellDate;
+    private System.Windows.Forms.TextBox txtDiscDate;
+    private System.Windows.Forms.Button btnClear;
+    private System.Windows.Forms.TextBox txtEvent;
+    private System.Windows.Forms.Button btnDestroy;
+    private System.Windows.Forms.Button btnInvalidate;
+    private System.Windows.Forms.Label label8;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/ProductBrowser/Form1.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/ProductBrowser/Form1.cs b/geode-client-native/examples/clicache/ProductBrowser/Form1.cs
new file mode 100755
index 0000000..5300f22
--- /dev/null
+++ b/geode-client-native/examples/clicache/ProductBrowser/Form1.cs
@@ -0,0 +1,342 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *========================================================================
+ */
+
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+using GemStone.GemFire.Cache;
+
+namespace ProductBrowser
+{
+  public partial class ProductBrowser : Form, ICacheListener
+  {
+    //Cache cache = null;
+    GemStone.GemFire.Cache.Region prodRegion = null;
+    private string logLevel = "debug";
+    private string logFile = "productBrowserLog";
+
+    public ProductBrowser()
+    {
+      InitializeComponent();
+      Serializable.RegisterType(Product.CreateInstance);
+
+      /*
+       * Initialize Cache system properties
+       */      
+      GemStone.GemFire.Cache.Properties prop = GemStone.GemFire.Cache.Properties.Create();
+      prop.Insert("log-file", logFile);
+      prop.Insert("log-level", logLevel);
+      prop.Insert("name", "ProductCache");
+      CacheFactory cacheFactory = CacheFactory.CreateCacheFactory(prop);      
+
+      try
+      {
+        /*
+         * Create the GemFire Client cache
+         */
+
+        Cache cache = cacheFactory.SetSubscriptionEnabled(true).Create();
+
+        /*
+         * Specify required region attributes
+         */
+
+        RegionFactory regionFactory = cache.CreateRegionFactory(RegionShortcut.CACHING_PROXY);
+
+        /*
+         * Create the region and register interest in all keys
+         */
+         prodRegion = regionFactory
+          .SetCachingEnabled(true)
+          .SetCacheListener(this)
+          .Create("product");      
+
+         prodRegion.RegisterAllKeys();
+      }
+      catch (Exception e)
+      {
+        MessageBox.Show("Error during client initialization.  " + e.Message);
+      }
+
+    }
+
+    private void btnCreate_Click(object sender, EventArgs e)
+    {
+      Product prd = new Product();
+      prd.productId = Convert.ToInt32(txtProdId.Text);
+      prd.name = txtProdName.Text;
+      prd.productNumber = txtProdNum.Text;
+      prd.makeFlag = "false";
+      prd.finishedGoodsFlag = "false";
+      prd.color = "Black";
+      prd.safetyLockLevel = Convert.ToInt32(txtStock.Text);
+      prd.reorderPoint = Convert.ToInt32(txtReorder.Text);
+      prd.standardCost = Convert.ToDouble(txtCost.Text);
+      prd.listPrice = Convert.ToDouble(txtList.Text);
+      prd.daysToManufacture = Convert.ToInt32(txtMfgDays.Text);
+      prd.sellStartDate = txtSellDate.Text;
+      prd.discontinuedDate = txtDiscDate.Text;
+
+      try
+      {
+        // as the unique identifier is ProductId, we can use this as the key
+        CacheableString key = new CacheableString(txtProdId.Text);
+        prodRegion.Put(key, prd);
+      }
+      catch (Exception ex)
+      {
+        MessageBox.Show("Error creating a new product.  " + ex.Message);
+      }
+    }
+
+    private void btnSearch_Click(object sender, EventArgs e)
+    {
+      //  perform a search based upon the ProductId.  If the ProductId is not specified, thrown an exception.
+      if (txtProdId.Text == null)
+      {
+        MessageBox.Show("Searching enabled on Product ID only");
+      }
+      else
+      {
+        string prodId = txtProdId.Text;
+        clearTxtBoxes();
+        Product prod = (Product)prodRegion.Get(prodId);
+
+        if (prod == null)
+        {
+          MessageBox.Show("Unable to find a product with a ProductId of " + prodId);
+        }
+        else
+        {
+          txtProdId.Text = Convert.ToString(prodId);
+          txtProdName.Text = prod.name;
+          txtProdNum.Text = prod.productNumber;
+          txtStock.Text = Convert.ToString(prod.safetyLockLevel);
+          txtReorder.Text = Convert.ToString(prod.reorderPoint);
+          txtCost.Text = Convert.ToString(prod.standardCost);
+          txtList.Text = Convert.ToString(prod.listPrice);
+          txtMfgDays.Text = Convert.ToString(prod.daysToManufacture);
+          txtSellDate.Text = prod.sellStartDate;
+          txtDiscDate.Text = prod.discontinuedDate;
+        }
+      }
+    }
+
+    private void btnClear_Click(object sender, EventArgs e)
+    {
+      clearTxtBoxes();
+    }
+
+    private void clearTxtBoxes()
+    {
+      txtCost.Clear();
+      txtList.Clear();
+      txtMfgDays.Clear();
+      txtProdId.Clear();
+      txtProdName.Clear();
+      txtProdNum.Clear();
+      txtReorder.Clear();
+      txtStock.Clear();
+      txtSellDate.ResetText();
+      txtDiscDate.ResetText();
+      txtEvent.ResetText();
+    }
+
+
+    #region ICacheListener Members
+
+    public void AfterCreate(EntryEvent ev)
+    {
+      string createMessage;
+
+      ICacheableKey cKey = ev.Key;
+      CacheableString cStr = cKey as CacheableString;
+
+      Product newProd = (Product)ev.NewValue;
+
+      createMessage = string.Format("Product ID {1} has been created. " +
+        "Product details are:{0}\tProduct Name :  {2}{0}\tProduct Number :  " +
+        "{3}{0}\tColor :  {4}{0}\tStock Level :  {5}{0}\tReorder Point :  " +
+        "{6}{0}\tProduct Cost :  {7}{0}\tList Price :  " +
+        "{8}{0}\tAvailable as of :  {9}{0}\tDiscontinued as of :  {10}",
+        Environment.NewLine, cStr.Value, newProd.name, newProd.productNumber,
+        newProd.color, newProd.safetyLockLevel, newProd.reorderPoint,
+        newProd.standardCost, newProd.listPrice, newProd.sellStartDate,
+        newProd.discontinuedDate);
+    }
+
+    public void AfterDestroy(EntryEvent ev)
+    {
+      string destroyMessage;
+
+      ICacheableKey cKey = ev.Key;
+      CacheableString cStr = cKey as CacheableString;
+
+      destroyMessage = "Product ID " + cStr.Value + " has been destroyed";
+    }
+
+    public void AfterInvalidate(EntryEvent ev)
+    {
+      string invalidateMessage;
+
+      ICacheableKey cKey = ev.Key;
+      CacheableString cStr = cKey as CacheableString;
+
+      invalidateMessage = "Product ID " + cStr.Value + " has been invalidated";
+    }
+
+    public void AfterRegionDestroy(RegionEvent ev)
+    {
+      txtEvent.Text = ev.Region.Name + " has been destroyed";
+    }
+
+    public void AfterRegionClear(RegionEvent ev)
+    {
+      txtEvent.Text = ev.Region.Name + " has been cleared";
+    }
+
+    public void AfterRegionInvalidate(RegionEvent ev)
+    {
+      txtEvent.Text = ev.Region.Name + " has been invalidated";
+    }
+    /*
+     * AfterUpdate is invoked after an entry has been updated.  It provide access to the 
+     * old and new values of the entry
+     */
+    public void AfterUpdate(EntryEvent ev)
+    {
+      // text string containing the 'delta' between the two objects
+      string updateMessage = null;
+
+      try
+      {
+        ICacheableKey cKey = ev.Key;
+        CacheableString cStr = cKey as CacheableString;
+
+        updateMessage = "Product ID " + cStr.Value + " has been updated." +
+          Environment.NewLine;
+
+        Product newProduct = (Product)ev.NewValue;
+        Product oldProduct = (Product)ev.OldValue;
+
+        if (oldProduct != null)
+        {
+          updateMessage = updateMessage + Environment.NewLine +
+            "\tProduct Name :  " + oldProduct.name + " ---> " +
+              newProduct.name + Environment.NewLine +
+            "\tProduct Number :  " + oldProduct.productNumber + " ---> " +
+              newProduct.productNumber + Environment.NewLine +
+            "\tColor :  " + oldProduct.color + " ---> " +
+              newProduct.color + Environment.NewLine +
+            "\tStock Level :  " + oldProduct.safetyLockLevel + " ---> " +
+              newProduct.safetyLockLevel + Environment.NewLine +
+            "\tReorder Point :  " + oldProduct.reorderPoint + " ---> " +
+              newProduct.reorderPoint + Environment.NewLine +
+            "\tProduct Cost :  " + oldProduct.standardCost + " ---> " +
+              newProduct.standardCost + Environment.NewLine +
+            "\tList Price :  " + oldProduct.listPrice + " ---> " +
+              newProduct.listPrice + Environment.NewLine +
+            "\tAvailable as of :  " + oldProduct.sellStartDate + " ---> " +
+              newProduct.sellStartDate + Environment.NewLine +
+            "\tDiscontinued as of :  " + oldProduct.discontinuedDate + " ---> " +
+              newProduct.discontinuedDate + Environment.NewLine;
+
+          txtEvent.Text = updateMessage;
+        }
+        else
+        {
+          updateMessage = "Product ID " + cStr.Value + " has been updated. " +
+            "A prior value does not exist.  Product details are: " + Environment.NewLine + Environment.NewLine +
+            "\tProduct Name :  " + newProduct.name + Environment.NewLine +
+            "\tProduct Number :  " + newProduct.productNumber + Environment.NewLine +
+            "\tColor :  " + newProduct.color + Environment.NewLine +
+            "\tStock Level :  " + newProduct.safetyLockLevel + Environment.NewLine +
+            "\tReorder Point :  " + newProduct.reorderPoint + Environment.NewLine +
+            "\tProduct Cost :  " + newProduct.standardCost + Environment.NewLine +
+            "\tList Price :  " + newProduct.listPrice + Environment.NewLine +
+            "\tAvailable as of :  " + newProduct.sellStartDate + Environment.NewLine +
+            "\tDiscontinued as of :  " + newProduct.discontinuedDate + Environment.NewLine;
+        }
+      }
+      catch (Exception e)
+      {
+        txtEvent.Text = "AfterUpdate exception." +
+          Environment.NewLine + e.Message;
+      }
+    }
+
+    public void AfterRegionLive(RegionEvent ev)
+    {
+      txtEvent.Text = ev.Region.Name + " is live";
+    }
+
+    public void Close(GemStone.GemFire.Cache.Region region)
+    {
+      txtEvent.Text = region.Name + " has closed";
+    }
+    public void AfterRegionDisconnected(GemStone.GemFire.Cache.Region region)
+    {
+      txtEvent.Text = region.Name + " has disconnected";
+    }
+    #endregion
+
+    private void btnDestroy_Click(object sender, EventArgs e)
+    {
+      //  Destroy an entry based upon the ProductId (key).  If the ProductId is not specified, notify the user.
+      if (txtProdId.Text.Length == 0)
+      {
+        MessageBox.Show("Please specify a Product Id to destroy.");
+      }
+      else
+      {
+        string prodId = txtProdId.Text;
+
+        try
+        {
+          prodRegion.Destroy(prodId);
+          clearTxtBoxes();
+        }
+        catch (Exception re)
+        {
+          MessageBox.Show("Unable to destroy entry." +
+            Environment.NewLine + re.Message);
+        }
+      }
+    }
+
+    private void btnInvalidate_Click(object sender, EventArgs e)
+    {
+      //  Invalidate an entry based upon the ProductId (key).  If the ProductId is not specified, notify the user.
+      if (txtProdId.Text.Length == 0)
+      {
+        MessageBox.Show("Please specify a Product Id to invalidate.");
+      }
+      else
+      {
+        string prodId = txtProdId.Text;
+
+        try
+        {
+          prodRegion.Invalidate(prodId);
+          clearTxtBoxes();
+        }
+        catch (Exception re)
+        {
+          MessageBox.Show("Unable to invalidate entry." +
+            Environment.NewLine + re.Message);
+        }
+      }
+
+    }
+
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/ProductBrowser/Form1.resx
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/ProductBrowser/Form1.resx b/geode-client-native/examples/clicache/ProductBrowser/Form1.resx
new file mode 100755
index 0000000..19dc0dd
--- /dev/null
+++ b/geode-client-native/examples/clicache/ProductBrowser/Form1.resx
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/ProductBrowser/Product.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/ProductBrowser/Product.cs b/geode-client-native/examples/clicache/ProductBrowser/Product.cs
new file mode 100755
index 0000000..8b3e764
--- /dev/null
+++ b/geode-client-native/examples/clicache/ProductBrowser/Product.cs
@@ -0,0 +1,293 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *========================================================================
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using GemStone.GemFire.Cache;
+
+namespace ProductBrowser
+{
+  class Product : IGFSerializable
+  {
+    private int ProductID;
+    private string Name;
+    private string ProductNumber;
+    private string MakeFlag;
+    private string FinishedGoodsFlag;
+    private string Color;
+    private int SafetyStockLevel;
+    private int ReorderPoint;
+    private double StandardCost;
+    private double ListPrice;
+    private int DaysToManufacture;
+    private string SellStartDate;
+    private string DiscontinuedDate;
+
+    private UInt32 GetStringSize(string str)
+    {
+      return (UInt32)(str == null ? 0 : sizeof(char) * str.Length);
+    }
+
+    public Product()
+    {
+    }
+
+    public Product(int prodId, string prodName, string prodNum, string makeFlag, string finished, string color,
+                    int safetyLock, int reorderPt, double stdCost, double listPrice, int mfgDays,
+                    string startDate, string discDate)
+    {
+      ProductID = prodId;
+      Name = prodName;
+      ProductNumber = prodNum;
+      MakeFlag = makeFlag;
+      FinishedGoodsFlag = finished;
+      Color = color;
+      SafetyStockLevel = safetyLock;
+      ReorderPoint = reorderPt;
+      StandardCost = stdCost;
+      ListPrice = listPrice;
+      DaysToManufacture = mfgDays;
+      SellStartDate = startDate;
+      DiscontinuedDate = discDate;
+    }
+
+    public static IGFSerializable CreateInstance()
+    {
+      return new Product(0, null, null, Convert.ToString(false), Convert.ToString(false), null, 1000, 750, 0.00, 0.00, 5,
+                          Convert.ToString(DateTime.Now), Convert.ToString(DateTime.Now));
+    }
+
+    public int productId
+    {
+      get
+      {
+        return ProductID;
+      }
+      set
+      {
+        ProductID = value;
+      }
+    }
+
+    public string name
+    {
+      get
+      {
+        return Name;
+      }
+      set
+      {
+        Name = value;
+      }
+    }
+
+    public string productNumber
+    {
+      get
+      {
+        return ProductNumber;
+      }
+      set
+      {
+        ProductNumber = value;
+      }
+    }
+
+    public string makeFlag
+    {
+      get
+      {
+        return MakeFlag;
+      }
+      set
+      {
+        MakeFlag = value;
+      }
+    }
+
+    public string finishedGoodsFlag
+    {
+      get
+      {
+        return FinishedGoodsFlag;
+      }
+      set
+      {
+        FinishedGoodsFlag = value;
+      }
+    }
+
+    public string color
+    {
+      get
+      {
+        return Color;
+      }
+      set
+      {
+        Color = value;
+      }
+    }
+
+    public int safetyLockLevel
+    {
+      get
+      {
+        return SafetyStockLevel;
+      }
+      set
+      {
+        SafetyStockLevel = value;
+      }
+    }
+
+    public int reorderPoint
+    {
+      get
+      {
+        return ReorderPoint;
+      }
+      set
+      {
+        ReorderPoint = value;
+      }
+    }
+
+    public double standardCost
+    {
+      get
+      {
+        return StandardCost;
+      }
+      set
+      {
+        StandardCost = value;
+      }
+    }
+
+    public double listPrice
+    {
+      get
+      {
+        return ListPrice;
+      }
+      set
+      {
+        ListPrice = value;
+      }
+    }
+
+    public int daysToManufacture
+    {
+      get
+      {
+        return DaysToManufacture;
+      }
+      set
+      {
+        DaysToManufacture = value;
+      }
+    }
+
+    public string sellStartDate
+    {
+      get
+      {
+        return SellStartDate;
+      }
+      set
+      {
+        SellStartDate = value;
+      }
+    }
+
+    public string discontinuedDate
+    {
+      get
+      {
+        return DiscontinuedDate;
+      }
+      set
+      {
+        DiscontinuedDate = value;
+      }
+    }
+
+    #region IGFSerializable Members
+
+    public UInt32 ClassId
+    {
+      get
+      {
+        return 0x07;
+      }
+    }
+
+    public IGFSerializable FromData(DataInput input)
+    {
+      ProductID = input.ReadInt32();
+      Name = input.ReadUTF();
+      ProductNumber = input.ReadUTF();
+      MakeFlag = input.ReadUTF();
+      FinishedGoodsFlag = input.ReadUTF();
+      Color = input.ReadUTF();
+      SafetyStockLevel = input.ReadInt32();
+      ReorderPoint = input.ReadInt32();
+      StandardCost = input.ReadDouble();
+      ListPrice = input.ReadDouble();
+      DaysToManufacture = input.ReadInt32();
+      SellStartDate = input.ReadUTF();
+      DiscontinuedDate = input.ReadUTF();
+
+      return this;
+
+    }
+
+    public void ToData(DataOutput output)
+    {
+      output.WriteInt32(ProductID);
+      output.WriteUTF(Name);
+      output.WriteUTF(ProductNumber);
+      output.WriteUTF(MakeFlag);
+      output.WriteUTF(FinishedGoodsFlag);
+      output.WriteUTF(Color);
+      output.WriteInt32(SafetyStockLevel);
+      output.WriteInt32(ReorderPoint);
+      output.WriteDouble(StandardCost);
+      output.WriteDouble(ListPrice);
+      output.WriteInt32(DaysToManufacture);
+      output.WriteUTF(SellStartDate);
+      output.WriteUTF(DiscontinuedDate);
+    }
+
+    public UInt32 ObjectSize
+    {
+      get
+      {
+        UInt32 objectSize = 0;
+        objectSize += (UInt32)sizeof(Int32);
+        objectSize += GetStringSize(Name);
+        objectSize += GetStringSize(ProductNumber);
+        objectSize += GetStringSize(MakeFlag);
+        objectSize += GetStringSize(FinishedGoodsFlag);
+        objectSize += GetStringSize(Color);
+        objectSize += (UInt32)sizeof(Int32);
+        objectSize += (UInt32)sizeof(Int32);
+        objectSize += (UInt32)sizeof(double);
+        objectSize += (UInt32)sizeof(double);
+        objectSize += (UInt32)sizeof(double);
+        objectSize += GetStringSize(SellStartDate);
+        objectSize += GetStringSize(DiscontinuedDate);
+        return objectSize;
+      }
+    }
+
+    #endregion
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/ProductBrowser/ProductBrowser.csproj
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/ProductBrowser/ProductBrowser.csproj b/geode-client-native/examples/clicache/ProductBrowser/ProductBrowser.csproj
new file mode 100755
index 0000000..9f580a4
--- /dev/null
+++ b/geode-client-native/examples/clicache/ProductBrowser/ProductBrowser.csproj
@@ -0,0 +1,120 @@
+\ufeff<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{7C77A471-0334-49DF-ABE5-B1799428B8AC}</ProjectGuid>
+    <OutputType>WinExe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>GemStone.GemFire.Cache.Examples</RootNamespace>
+    <AssemblyName>ProductBrowser</AssemblyName>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>2.0</OldToolsVersion>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <IntermediateOutputPath>$(OSBUILDDIR)\examples\clicache\Debug\ProductBrowser\</IntermediateOutputPath>
+    <OutputPath>$(OSBUILDDIR)\examples\clicache\Debug\ProductBrowser\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x86</PlatformTarget>
+    <NoWarn>618</NoWarn>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <IntermediateOutputPath>$(OSBUILDDIR)\examples\clicache\ProductBrowser\</IntermediateOutputPath>
+    <OutputPath>$(OSBUILDDIR)\examples\clicache\ProductBrowser\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x86</PlatformTarget>
+    <NoWarn>618</NoWarn>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <IntermediateOutputPath>$(OSBUILDDIR)\examples\clicache\Debug\ProductBrowser\</IntermediateOutputPath>
+    <OutputPath>$(OSBUILDDIR)\examples\clicache\Debug\ProductBrowser\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <NoWarn>618</NoWarn>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <IntermediateOutputPath>$(OSBUILDDIR)\examples\clicache\ProductBrowser\</IntermediateOutputPath>
+    <OutputPath>$(OSBUILDDIR)\examples\clicache\ProductBrowser\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <NoWarn>618</NoWarn>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Deployment" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\..\vs_projects\gfclicache\gfclicache.vcproj">
+      <Project>{B274E3B1-6A09-4322-952B-8BDA712892CE}</Project>
+      <Name>gfclicache</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Form1.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="Form1.Designer.cs">
+      <DependentUpon>Form1.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Product.cs" />
+    <Compile Include="Program.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <EmbeddedResource Include="Form1.resx">
+      <SubType>Designer</SubType>
+      <DependentUpon>Form1.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Properties\Resources.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <Compile Include="Properties\Resources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Resources.resx</DependentUpon>
+      <DesignTime>True</DesignTime>
+    </Compile>
+    <None Include="Properties\Settings.settings">
+      <Generator>SettingsSingleFileGenerator</Generator>
+      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+    </None>
+    <Compile Include="Properties\Settings.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Settings.settings</DependentUpon>
+      <DesignTimeSharedInput>True</DesignTimeSharedInput>
+    </Compile>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/ProductBrowser/Program.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/ProductBrowser/Program.cs b/geode-client-native/examples/clicache/ProductBrowser/Program.cs
new file mode 100755
index 0000000..4d6c758
--- /dev/null
+++ b/geode-client-native/examples/clicache/ProductBrowser/Program.cs
@@ -0,0 +1,28 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *========================================================================
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Windows.Forms;
+
+namespace ProductBrowser
+{
+  static class Program
+  {
+    /// <summary>
+    /// The main entry point for the application.
+    /// </summary>
+    [STAThread]
+    static void Main()
+    {
+      Application.EnableVisualStyles();
+      Application.SetCompatibleTextRenderingDefault(false);
+      Application.Run(new ProductBrowser());
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/ProductBrowser/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/ProductBrowser/Properties/AssemblyInfo.cs b/geode-client-native/examples/clicache/ProductBrowser/Properties/AssemblyInfo.cs
new file mode 100755
index 0000000..64c4fa9
--- /dev/null
+++ b/geode-client-native/examples/clicache/ProductBrowser/Properties/AssemblyInfo.cs
@@ -0,0 +1,33 @@
+\ufeffusing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("ProductBrowser")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("GemStone Systems, Inc.")]
+[assembly: AssemblyProduct("ProductBrowser")]
+[assembly: AssemblyCopyright("Copyright � GemStone Systems, Inc. 2008")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("5f89d3ba-58b8-46d9-b61d-744b82704cf6")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+[assembly: AssemblyVersion("9.0.0.0")]
+[assembly: AssemblyFileVersion("9.0.0.0")]

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/ProductBrowser/Properties/Resources.Designer.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/ProductBrowser/Properties/Resources.Designer.cs b/geode-client-native/examples/clicache/ProductBrowser/Properties/Resources.Designer.cs
new file mode 100755
index 0000000..f27808e
--- /dev/null
+++ b/geode-client-native/examples/clicache/ProductBrowser/Properties/Resources.Designer.cs
@@ -0,0 +1,63 @@
+\ufeff//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:2.0.50727.3053
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace GemStone.GemFire.Cache.Examples.Properties {
+    using System;
+    
+    
+    /// <summary>
+    ///   A strongly-typed resource class, for looking up localized strings, etc.
+    /// </summary>
+    // This class was auto-generated by the StronglyTypedResourceBuilder
+    // class via a tool like ResGen or Visual Studio.
+    // To add or remove a member, edit your .ResX file then rerun ResGen
+    // with the /str option, or rebuild your VS project.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    internal class Resources {
+        
+        private static global::System.Resources.ResourceManager resourceMan;
+        
+        private static global::System.Globalization.CultureInfo resourceCulture;
+        
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal Resources() {
+        }
+        
+        /// <summary>
+        ///   Returns the cached ResourceManager instance used by this class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Resources.ResourceManager ResourceManager {
+            get {
+                if (object.ReferenceEquals(resourceMan, null)) {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("GemStone.GemFire.Cache.Examples.Properties.Resources", typeof(Resources).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+        
+        /// <summary>
+        ///   Overrides the current thread's CurrentUICulture property for all
+        ///   resource lookups using this strongly typed resource class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Globalization.CultureInfo Culture {
+            get {
+                return resourceCulture;
+            }
+            set {
+                resourceCulture = value;
+            }
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/ProductBrowser/Properties/Resources.resx
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/ProductBrowser/Properties/Resources.resx b/geode-client-native/examples/clicache/ProductBrowser/Properties/Resources.resx
new file mode 100755
index 0000000..af7dbeb
--- /dev/null
+++ b/geode-client-native/examples/clicache/ProductBrowser/Properties/Resources.resx
@@ -0,0 +1,117 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/ProductBrowser/Properties/Settings.Designer.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/ProductBrowser/Properties/Settings.Designer.cs b/geode-client-native/examples/clicache/ProductBrowser/Properties/Settings.Designer.cs
new file mode 100755
index 0000000..4ff0889
--- /dev/null
+++ b/geode-client-native/examples/clicache/ProductBrowser/Properties/Settings.Designer.cs
@@ -0,0 +1,26 @@
+\ufeff//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:2.0.50727.3053
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace GemStone.GemFire.Cache.Examples.Properties {
+    
+    
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")]
+    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+        
+        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+        
+        public static Settings Default {
+            get {
+                return defaultInstance;
+            }
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/ProductBrowser/Properties/Settings.settings
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/ProductBrowser/Properties/Settings.settings b/geode-client-native/examples/clicache/ProductBrowser/Properties/Settings.settings
new file mode 100755
index 0000000..abf36c5
--- /dev/null
+++ b/geode-client-native/examples/clicache/ProductBrowser/Properties/Settings.settings
@@ -0,0 +1,7 @@
+\ufeff<?xml version='1.0' encoding='utf-8'?>
+<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
+  <Profiles>
+    <Profile Name="(Default)" />
+  </Profiles>
+  <Settings />
+</SettingsFile>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/ProductBrowser/README.html
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/ProductBrowser/README.html b/geode-client-native/examples/clicache/ProductBrowser/README.html
new file mode 100644
index 0000000..bd2eed5
--- /dev/null
+++ b/geode-client-native/examples/clicache/ProductBrowser/README.html
@@ -0,0 +1,377 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"><HTML>
+<HEAD>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+<META NAME="GENERATOR" CONTENT="Adobe FrameMaker 7.0/HTML Export Filter">
+
+<TITLE>ProductBrowser: GemFire Native&#174; Client Example</TITLE>
+<style type="text/css">
+<!--
+.style1 {font-style: italic}
+-->
+</style>
+</HEAD>
+<BODY>
+ <IMG SRC="../../../docs/PIVOTAL_GemFire_190x81.png" BORDER="0">
+ <DIV>
+   <h1 align="center"><a name="Top" id="Top"></a>ProductBrowser</h1>
+   <h2 align="center">Pivotal GemFire&#174; Native Client</h2>
+   <h2 align="center">Programming Example</h2>
+</DIV>
+<DIV>
+<P>The <code>ProductBrowser</code> example demonstrates heterogeneous client access by using both a .NET client and a Java client to interact with a Java cache server and exchange data between the clients. Both clients have <code>Product</code> for their <code>DataSerializable</code> class, and the .NET client implements a cache listener to display events as they occur.
+<P>Use <code>ProductBrowser</code> to put product data into the cache server from one client, retrieve the data in another client, make modifications, then update the clients with the new data. The example is located in <code>examples/cli_ProductBrowser.<br>
+  </code><br>
+  <br>
+</DIV>
+ <DIV>
+<H2>
+Running ProductBrowser</H2>
+<P>
+The <code>ProductBrowser</code> example runs both a .NET client and a Java client with a GemFire Java cache server. The example uses <code><a href="./product.xml" target="_blank">product.xml</a></code> to configure the Java cache server. When the Java cache server starts, <code>product.xml</code> creates a <code>root</code> region named <code>product</code>.</P>
+<P>
+In the procedures, the lines you type are shown in a
+ <code> <strong>boldface fixed</strong></code> font. System output is in a <code>regular fixed</code> font.<br>
+ <br>
+ <br>
+</P> 
+</DIV>
+
+<DIV>
+<H2>
+<a name="configuring_environment" id="configuring_environment"></a>Configuring the Environment </H2>
+<P>
+Examples that interact with a Java cache server require specific environment configurations so the Java cache server will run properly. Follow the configuration steps listed below that apply to your operating system: </P>
+</DIV>
+ <DIV>
+<ol>
+  <li>From the GemFire product installation directory, configure your environment settings by following the steps in <code>examples/EnvSetup.html</code>. Refer to the developer's 
+      guide if you need help with this step.<br>
+      <br>
+  <li>Set the <code>JAVA_HOME</code> and <code>GF_JAVA_HOME</code>  environment variables to your installed Java JRE or JDK. See the Installation chapter of the   <em>GemFire User's Guide</em> for the versions of Java that are compatible with GemFire. The <code>JAVA_HOME</code> setting is for your applications, and  <code>GF_JAVA_HOME</code> is for the GemFire scripts.  You must have a compatible Java JRE or JDK installed and you must set <code>JAVA_HOME</code> and <code>GF_JAVA_HOME</code> to point to it.<br>
+      <br>
+  <li>Add <code>$JAVA_HOME/bin</code> to the start of your <code>PATH</code>. <br>
+</ol>
+<p>The following is a list of the environment configuration commands for the <code>ProductBrowser</code> example. Choose the set of commands that are appropriate for your operating system. The text that you type is shown in bold.
+  These configurations only need to be performed for the sessions that invoke the Java cache server.</p>
+<p><strong>Bourne and Korn shells (sh, ksh, bash)</strong></p>
+<blockquote>
+  <p>    <code>% <strong>cd GemFireInstallDirectory</strong><br>
+    % <strong>JAVA_HOME=&lt;installed JRE PATH&gt;; export JAVA_HOME</strong><br>
+    % <strong>GF_JAVA_HOME=$JAVA_HOME; export GF_JAVA_HOME</strong><br>
+    % <strong>PATH=$JAVA_HOME/bin:$PATH; export PATH</strong></code></p>
+</blockquote>
+<p><strong>Windows</strong></p>
+<blockquote>
+  <p><code>&gt; <strong>cd GemFireInstallDirectory</strong><br>
+&gt; <strong>set JAVA_HOME=&lt;installed JRE PATH&gt;</strong><br>
+&gt; <strong>set GF_JAVA_HOME=%JAVA_HOME%</strong><br>
+&gt; <strong>set PATH=%JAVA_HOME%\bin;%PATH%</strong> </code></p>
+</blockquote>
+</DIV>
+
+<DIV>
+<H2>
+<a name="starting_application_processes" id="starting_application_processes"></a>Starting the Cache Server </H2>
+<P>
+To start the cache server for the <code>ProductBrowser</code> example, create a session and complete the following steps. </P>
+</DIV>
+ <DIV>
+<OL>
+<LI CLASS="Numbered-1st">
+<p>Configure the session environment according to the steps listed in <a href="#configuring_environment">Configuring the Environment</a><a href="..\EnvSetup.html" target="_blank"></a>.</p>
+</LI>
+<LI CLASS="Numbered">
+Go to the <code>cli_ProductBrowser</code> directory:
+ <blockquote>
+   <p><strong>
+     <code>cd examples\cli_ProductBrowser</code></strong></p>
+   </blockquote>
+ </LI>
+<LI CLASS="Numbered">
+Start the cache server, specifying <code>product.xml</code> in the <code>defaultConfig</code> directory as its configuration file. Enter the entire <code>cacheserver start</code> command below on a single line, replacing the <code>xxxx</code> in <code>NativeClient_xxxx</code> with the actual four-digit product version:
+   <blockquote>
+     <p><strong><code>cacheserver start -dir=</code></strong><strong><code>defaultConfig cache-xml-file=product.xml</code></strong></p>
+   </blockquote>
+ <P>The cache server is initialized using the settings in the <code>product.xml</code> file. A message similar to the following appears, indicating that the cache server is running:</P>
+</LI>
+ <blockquote>
+   <p>
+     <code>Cacheserver pid: 2120 status: running</code></p>
+   </blockquote>
+</OL>
+</DIV>
+
+<DIV>
+<H2>
+<a name="starting_application_processes" id="starting_application_processes"></a>Starting the ProductBrowser Java client </H2>
+<P>
+The Java client uses <code>productClient.jar</code> in the <code>lib</code> directory. To start the </code>Java client:</P>
+</DIV>
+
+ <DIV>
+<OL>
+<LI CLASS="Numbered-1st">
+<p>Create another session and configure its environment
+  by entering the following command:
+</LI>
+  <blockquote>
+   <p><strong>
+     <code>bin\setenv.bat</code></strong></p>
+   </blockquote>
+ <LI CLASS="Numbered-1st">
+   <p>Add the classes for <code>productClient.jar</code> to your <code>CLASSPATH</code> by entering the following in a single line: </p>
+ </LI>
+  <blockquote>
+   <p><strong>
+     <code>set CLASSPATH=&lt;full path to NativeClient_xxxx&gt;\examples\cli_ProductBrowser\<br>
+     lib\productClient.jar;%CLASSPATH%</code></strong></p>
+   </blockquote>
+ <LI CLASS="Numbered">
+Start the <code> ProductBrowser</code>
+ Java client:
+     <blockquote>
+       <p><strong><code>java com.examples.gemfire.net.ProductBrowser</code></strong> </p>
+   </blockquote>
+ <P>The <code>ProductBrowser</code> Java client is initialized and connects with the cache server. In a moment, the following prompt appears:</P>
+</LI>
+ <blockquote>
+   <p>
+     <code>Enter the operation to execute.  'Get' to find an object, 'Put' to insert/update  an object, or 'Exit' to end:</code></p>
+   </blockquote>
+</OL>
+<br>
+</DIV>
+
+<DIV>
+<H2>Starting the ProductBrowser .NET Client</H2>
+<P>
+To complete the client setup, start the .NET client by following these steps:</P>
+</DIV>
+<DIV>
+  <OL>
+  <li>Create another session, then go to the <code>cli_ProductBrowser</code> directory.
+    <blockquote>
+   <p><strong><code>cd examples\cli_ProductBrowser</code></strong></p>
+   </blockquote>
+ </li>
+
+  <LI CLASS="Numbered">
+    Start the .NET client:
+      <blockquote>
+        <p><strong>
+          <code>ProductBrowser.exe</code></strong></p>
+      </blockquote>
+      <P>
+      The Product Browser form appears. The form consists of a set of fields where you enter product data. The Event Message area is a cache listener interface that displays events as they occur in the clients. </P>
+  </LI>
+  </OL>
+</DIV>
+<DIV>
+<H2>
+Entering Data in the Product Browser Form </H2>
+<P>
+Enter data in the Product Browser form and put the data into the cache.</P>
+</DIV>
+<DIV>
+<P CLASS="Head-D"><strong>
+In the Product Browser form: </strong></P>
+
+<OL>
+<LI CLASS="Numbered">
+Type the following data into each of the fields:</LI>
+<blockquote>
+  <table width="302" cellpadding="2" cellspacing="2">
+    <tr>
+      <td width="142"><code>Product Id </code></td>
+      <td width="150" bordercolor="#000000"><strong><code>101</code></strong></td>
+    </tr>
+    <tr>
+      <td><code>Product Name </code></td>
+      <td bordercolor="#000000"><strong><code>widget</code></strong></td>
+    </tr>
+    <tr>
+      <td><code>Product Number </code></td>
+      <td bordercolor="#000000"><strong><code>123</code></strong></td>
+    </tr>
+    <tr>
+      <td><code>Stock Amt </code></td>
+      <td bordercolor="#000000"><strong><code>15</code></strong></td>
+    </tr>
+    <tr>
+      <td><code>Reorder Amt </code></td>
+      <td bordercolor="#000000"><strong><code>10</code></strong></td>
+    </tr>
+    <tr>
+      <td><code>Cost</code></td>
+      <td bordercolor="#000000"><strong><code>1.5</code></strong></td>
+    </tr>
+    <tr>
+      <td><code>List Price </code></td>
+      <td bordercolor="#000000"><strong><code>5.0</code></strong></td>
+    </tr>
+    <tr>
+      <td><code>Days to Mfg </code></td>
+      <td bordercolor="#000000"><strong><code>5</code></strong></td>
+    </tr>
+    <tr>
+      <td><code>Sell Date </code></td>
+      <td bordercolor="#000000"><strong><code>3/15</code></strong></td>
+    </tr>
+    <tr>
+      <td><code>Discontinue Date </code></td>
+      <td bordercolor="#000000"><strong><code>9/12</code></strong></td>
+    </tr>
+  </table>
+  </blockquote>
+<li>
+  Click the <code>Put</code> button to enter the data into the cache server.</li>
+</OL>
+<br>
+</DIV>
+<DIV>
+<H2>
+<a name="managing_data"></a>Retrieving the Data in the Java Client</H2>
+<P>
+Next, specify the Product ID to update the Java client with the data you entered in the Product Browser form<code></code>.</P>
+</DIV>
+<DIV>
+<P CLASS="Head-D"><strong>
+In the Java client: </strong></P>
+  <OL>
+    <LI CLASS="Numbered">
+Get the product data previously entered into the Product Browser form:
+     <blockquote>
+       <p><strong><code>Get</code></strong></p>
+   </blockquote>
+    <li>When the following prompt appears, enter <code>101</code> for the Product ID that was defined in the Product Browser:
+      <blockquote>
+        <p><code>Enter the Product ID to search for:<strong> 101</strong></code></p>
+   </blockquote>
+        <p> The data associated with Product ID 101 is retrieved from the cacheserver:</p>
+        <blockquote>
+        <p><code>Product ID =            101<br>
+          Product Name =          widget<br>
+          Product Number =        123<br>
+          Color =                 Black<br>
+          Stock Level =           15<br>
+          Reorder Point =         10<br>
+          Product Cost =          1.5<br>
+          List Price =            5.0<br>
+          Available as of =       3/15<br>
+          Discontinue as of =     9/12</code></p>
+      </blockquote>
+  </li>
+  </OL>
+</DIV>
+<DIV>
+<H2>
+<a name="managing_data"></a>Modifying the Data With the Java Client</H2>
+<P>
+Enter some new product values into the Java client and see both the original and the new values displayed in the .NET client (Product Browser).</P>
+</DIV>
+<DIV>
+<P CLASS="Head-D"><strong>
+In the Java client: </strong></P>
+  <OL>
+<LI CLASS="Numbered-1st">Put new data into the cache. You're prompted with the same input fields as the Product Browser form:
+  <blockquote>
+    <p><strong><code>Put</code></strong></p>
+  </blockquote>
+  </LI>
+    <LI CLASS="Numbered">For each of the following prompts, enter the values shown:<br>
+      <br>
+    </LI>
+    <blockquote>
+      <table width="379" cellpadding="2" cellspacing="2">
+        <tr>
+          <td width="225"><code>ProductId: </code></td>
+          <td width="138" bordercolor="#000000"><strong><code>101</code></strong></td>
+        </tr>
+        <tr>
+          <td><code>Product Name: </code></td>
+          <td bordercolor="#000000"><strong><code>widget</code></strong></td>
+        </tr>
+        <tr>
+          <td><code>Product Number: </code></td>
+          <td bordercolor="#000000"><strong><code>123</code></strong></td>
+        </tr>
+        <tr>
+          <td><code>Color:</code></td>
+          <td bordercolor="#000000"><strong><code>Blue</code></strong></td>
+        </tr>
+        <tr>
+          <td><code>Stock Level (int): </code></td>
+          <td bordercolor="#000000"><strong><code>30</code></strong></td>
+        </tr>
+        <tr>
+          <td><code>Reorder Point (int): </code></td>
+          <td bordercolor="#000000"><strong><code>15</code></strong></td>
+        </tr>
+        <tr>
+          <td><code>Product Cost (double): </code></td>
+          <td bordercolor="#000000"><strong><code>2.0</code></strong></td>
+        </tr>
+        <tr>
+          <td><code>List Price (double): </code></td>
+          <td bordercolor="#000000"><strong><code>6.0</code></strong></td>
+        </tr>
+        <tr>
+          <td><code>Available as of (string):  </code></td>
+          <td bordercolor="#000000"><strong><code>6/15</code></strong></td>
+        </tr>
+        <tr>
+          <td><code>Discontinue as of (string): </code></td>
+          <td bordercolor="#000000"><strong><code>11/12</code></strong></td>
+        </tr>
+      </table>
+    </blockquote>
+  <LI CLASS="Numbered"><p>Look at the Product Browser. Its Event Message area displays the original values for Product ID 101, along with the updated values that you just entered in the Java client.</p></LI>
+
+    <LI CLASS="Numbered">In the cache server session, enter the following command to stop the cache server:
+      <blockquote>
+        <p><strong> <code>cacheserver stop -dir=defaultConfig </code></strong></p>
+      </blockquote>
+    </LI>
+<li>
+  <p>Now close the cache server session: </p>
+  <blockquote>
+    <p><strong> <code>exit</code></strong></p>
+  </blockquote>
+</li>
+<li>
+  <p>End the Java client, then close its session: </p>
+  <blockquote>
+    <p><strong> <code>exit</code></strong></p>
+    <p><strong><code>exit</code></strong></p>
+  </blockquote>
+</li>
+<li>
+  <p>Close the .NET client session: </p>
+  <blockquote>
+    <p><strong><code>exit</code></strong></p>
+  </blockquote>
+</li>
+  <LI CLASS="Numbered">
+    Close the Product Browser form by clicking the '<code>X</code>' button in the right part of its titlebar, or by clicking the icon in the left part of its titlebar and then clicking <code>Close</code>.</LI>
+</OL>
+  <br>
+</DIV>
+
+<DIV>
+<H2>
+Changing System Parameters</H2>
+<P>
+This product ships configured to run with default system properties. If you need to run in a non-default configuration, GemFire also takes a system-level configuration file. Copy the <code>gfcpp.properties</code> file into your <code>cli_ProductBrowser</code> directory from the <code>defaultSystem</code> directory. Edit the <code>gfcpp.properties</code> file in your <code>cli_ProductBrowser</code> directory as needed. For example, to change the name of the <code>cache.xml</code> file, uncomment this line and change the file name:</P>
+<P> <code>#cache-xml-file=cache.xml</code><br>
+  <br>
+  <br>
+</P>
+</DIV>
+<a href="#Top">Top</a>
+<P>&nbsp;</P>
+<P>
+<p>Copyright &#169; 2005-2014 Pivotal Software, Inc. All rights reserved.  This product is protected by U.S. and international copyright and intellectual property laws. Pivotal products are covered by one or more patents listed at http://www.pivotal.io/patents.</p>
+</BODY>
+</HTML>
+



[11/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/RegionM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/RegionM.cpp b/geode-client-native/src/clicache/RegionM.cpp
new file mode 100644
index 0000000..5f205f9
--- /dev/null
+++ b/geode-client-native/src/clicache/RegionM.cpp
@@ -0,0 +1,1280 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "RegionM.hpp"
+#include "CacheM.hpp"
+#include "CacheStatisticsM.hpp"
+#include "RegionAttributesM.hpp"
+#include "AttributesMutatorM.hpp"
+#include "RegionEntryM.hpp"
+#include "ISelectResults.hpp"
+#include "ResultSetM.hpp"
+#include "StructSetM.hpp"
+#include "impl/AuthenticatedCacheM.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      String^ Region::Name::get( )
+      {
+        return ManagedString::Get( NativePtr->getName( ) );
+      }
+
+      String^ Region::FullPath::get( )
+      {
+        return ManagedString::Get( NativePtr->getFullPath( ) );
+      }
+
+      Region^ Region::ParentRegion::get( )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::RegionPtr& nativeptr( NativePtr->getParentRegion( ) );
+
+          return Region::Create( nativeptr.ptr( ) );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      RegionAttributes^ Region::Attributes::get( )
+      {
+        gemfire::RegionAttributesPtr& nativeptr( NativePtr->getAttributes( ) );
+
+        return RegionAttributes::Create( nativeptr.ptr( ) );
+      }
+
+      AttributesMutator^ Region::GetAttributesMutator( )
+      {
+        gemfire::AttributesMutatorPtr& nativeptr(
+          NativePtr->getAttributesMutator( ) );
+
+        return AttributesMutator::Create( nativeptr.ptr( ) );
+      }
+
+      CacheStatistics^ Region::Statistics::get( )
+      {
+        gemfire::CacheStatisticsPtr& nativeptr( NativePtr->getStatistics( ) );
+
+        return CacheStatistics::Create( nativeptr.ptr( ) );
+      }
+
+      void Region::InvalidateRegion( IGFSerializable^ callback )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::UserDataPtr callbackptr(
+            SafeMSerializableConvert( callback ) );
+
+          NativePtr->invalidateRegion( callbackptr );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Region::LocalInvalidateRegion( IGFSerializable^ callback )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::UserDataPtr callbackptr(
+            SafeMSerializableConvert( callback ) );
+
+          NativePtr->localInvalidateRegion( callbackptr );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Region::DestroyRegion( IGFSerializable^ callback )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::UserDataPtr callbackptr(
+            SafeMSerializableConvert( callback ) );
+
+          NativePtr->destroyRegion( callbackptr );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Region::LocalDestroyRegion( IGFSerializable^ callback )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::UserDataPtr callbackptr(
+            SafeMSerializableConvert( callback ) );
+
+          NativePtr->localDestroyRegion( callbackptr );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      Region^ Region::GetSubRegion( String^ path )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          ManagedString mg_path( path );
+
+          gemfire::RegionPtr& nativeptr(
+            NativePtr->getSubregion( mg_path.CharPtr ) );
+          return Region::Create( nativeptr.ptr( ) );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      Region^ Region::CreateSubRegion( String^ subRegionName,
+        RegionAttributes^ attributes )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          ManagedString mg_subregionName( subRegionName );
+          gemfire::RegionAttributesPtr p_attrs(
+            GetNativePtr<gemfire::RegionAttributes>( attributes ) );
+
+          gemfire::RegionPtr& nativeptr( NativePtr->createSubregion(
+            mg_subregionName.CharPtr, p_attrs ) );
+          return Region::Create( nativeptr.ptr( ) );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      array<Region^>^ Region::SubRegions( bool recursive )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::VectorOfRegion vsr;
+          NativePtr->subregions( recursive, vsr );
+          array<Region^>^ subRegions =
+            gcnew array<Region^>( vsr.size( ) );
+
+          for( int32_t index = 0; index < vsr.size( ); index++ )
+          {
+            gemfire::RegionPtr& nativeptr( vsr[ index ] );
+            subRegions[ index ] = Region::Create( nativeptr.ptr( ) );
+          }
+          return subRegions;
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      RegionEntry^ Region::GetEntry( GemStone::GemFire::Cache::ICacheableKey^ key )
+      {
+        //TODO::hitesh
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheableKeyPtr keyptr( SafeMKeyConvert( key ) );
+          gemfire::RegionEntryPtr& nativeptr( NativePtr->getEntry( keyptr ) );
+
+          return RegionEntry::Create( nativeptr.ptr( ) );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      RegionEntry^ Region::GetEntry( CacheableKey^ key )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheableKeyPtr keyptr(
+            (gemfire::CacheableKey*)GetNativePtr2<gemfire::Cacheable>( key ) );
+          gemfire::RegionEntryPtr& nativeptr( NativePtr->getEntry( keyptr ) );
+
+          return RegionEntry::Create( nativeptr.ptr( ) );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      IGFSerializable^ Region::Get( GemStone::GemFire::Cache::ICacheableKey^ key,
+        IGFSerializable^ callback )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheableKeyPtr keyptr( SafeMKeyConvert( key ) );
+          gemfire::UserDataPtr callbackptr(
+            SafeMSerializableConvert( callback ) );
+
+          gemfire::CacheablePtr& nativeptr(
+            NativePtr->get( keyptr, callbackptr ) );
+          return SafeUMSerializableConvert( nativeptr.ptr( ) );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+      array<GemStone::GemFire::Cache::ICacheableKey^>^ Region::GetInterestList()
+      {
+        _GF_MG_EXCEPTION_TRY
+          gemfire::VectorOfCacheableKey vc;
+          NativePtr->getInterestList( vc );
+          array<GemStone::GemFire::Cache::ICacheableKey^>^ keyarr =
+            gcnew array<GemStone::GemFire::Cache::ICacheableKey^>( vc.size( ) );
+          for( int32_t index = 0; index < vc.size( ); index++ )
+          {
+            gemfire::CacheableKeyPtr& nativeptr( vc[ index ] );
+            keyarr[ index ] = SafeUMKeyConvert( nativeptr.ptr( ) );
+          }
+          return keyarr;
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      array<String^>^ Region::GetInterestListRegex()
+      {
+        _GF_MG_EXCEPTION_TRY
+          gemfire::VectorOfCacheableString vc;
+          NativePtr->getInterestListRegex( vc );
+          array<String^>^ strarr =
+            gcnew array<String^>( vc.size( ) );
+          for( int32_t index = 0; index < vc.size( ); index++ )
+          {
+              strarr[index] = ManagedString::Get( vc[index]->asChar());
+	  }
+	  return strarr;
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Region::Clear(IGFSerializable^ callback)
+      {
+        _GF_MG_EXCEPTION_TRY
+          gemfire::UserDataPtr callbackptr(
+            SafeMSerializableConvert( callback ) );
+          NativePtr->clear(callbackptr );
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Region::LocalClear(IGFSerializable^ callback)
+      {
+        _GF_MG_EXCEPTION_TRY
+          gemfire::UserDataPtr callbackptr(
+            SafeMSerializableConvert( callback ) );
+          NativePtr->localClear(callbackptr );
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      Boolean  Region::ContainsKeyOnServer( CacheableKey^ key )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheableKeyPtr keyptr(
+            (gemfire::CacheableKey*)GetNativePtr2<gemfire::Cacheable>( key ) );
+                   
+          return  NativePtr->containsKeyOnServer( keyptr );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      IGFSerializable^ Region::Get( CacheableKey^ key,
+        IGFSerializable^ callback )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheableKeyPtr keyptr(
+            (gemfire::CacheableKey*)GetNativePtr2<gemfire::Cacheable>( key ) );
+          gemfire::UserDataPtr callbackptr(
+            SafeMSerializableConvert( callback ) );
+
+          gemfire::CacheablePtr& nativeptr(
+            NativePtr->get( keyptr, callbackptr ) );
+          return SafeUMSerializableConvert( nativeptr.ptr( ) );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Region::Put( GemStone::GemFire::Cache::ICacheableKey^ key, IGFSerializable^ value,
+        IGFSerializable^ callback )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheableKeyPtr keyptr( SafeMKeyConvert( key ) );
+          gemfire::CacheablePtr valueptr( SafeMSerializableConvert( value ) );
+          gemfire::UserDataPtr callbackptr(
+            SafeMSerializableConvert( callback ) );
+
+          NativePtr->put( keyptr, valueptr, callbackptr );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Region::Put( CacheableKey^ key, IGFSerializable^ value,
+        IGFSerializable^ callback )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheableKeyPtr keyptr(
+            (gemfire::CacheableKey*)GetNativePtr2<gemfire::Cacheable>( key ) );
+          gemfire::CacheablePtr valueptr( SafeMSerializableConvert( value ) );
+          gemfire::UserDataPtr callbackptr(
+            SafeMSerializableConvert( callback ) );
+
+          NativePtr->put( keyptr, valueptr, callbackptr );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Region::Put( GemStone::GemFire::Cache::ICacheableKey^ key, Serializable^ value,
+        IGFSerializable^ callback )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheableKeyPtr keyptr( SafeMKeyConvert( key ) );
+          gemfire::CacheablePtr valueptr(
+            GetNativePtr2<gemfire::Cacheable>( value ) );
+          gemfire::UserDataPtr callbackptr(
+            SafeMSerializableConvert( callback ) );
+
+          NativePtr->put( keyptr, valueptr, callbackptr );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Region::PutAll( CacheableHashMap^ map)
+      {
+        return PutAll( map, DEFAULT_RESPONSE_TIMEOUT );
+      }
+
+      void Region::PutAll( CacheableHashMap^ map, uint32_t timeout)
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::HashMapOfCacheable nativeMap;
+          for each ( KeyValuePair<GemStone::GemFire::Cache::ICacheableKey^, IGFSerializable^> keyValPair in map )
+          {
+            gemfire::CacheableKeyPtr keyPtr( SafeMKeyConvert( keyValPair.Key ) );
+            gemfire::SerializablePtr valPtr( SafeMSerializableConvert( keyValPair.Value ) );
+            nativeMap.insert( keyPtr, valPtr );
+          }
+          NativePtr->putAll( nativeMap, timeout );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Region::Put( CacheableKey^ key, Serializable^ value,
+        IGFSerializable^ callback )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheableKeyPtr keyptr(
+            (gemfire::CacheableKey*)GetNativePtr2<gemfire::Cacheable>( key ) );
+          gemfire::CacheablePtr valueptr(
+            GetNativePtr2<gemfire::Cacheable>( value ) );
+          gemfire::UserDataPtr callbackptr(
+            SafeMSerializableConvert( callback ) );
+
+          NativePtr->put( keyptr, valueptr, callbackptr );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Region::LocalPut(GemStone::GemFire::Cache::ICacheableKey^ key, IGFSerializable^ value,
+        IGFSerializable^ callbackArg)
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheableKeyPtr keyPtr(SafeMKeyConvert(key));
+          gemfire::CacheablePtr valuePtr(SafeMSerializableConvert(value));
+          gemfire::UserDataPtr callbackArgPtr(
+            SafeMSerializableConvert(callbackArg));
+
+          NativePtr->localPut(keyPtr, valuePtr, callbackArgPtr);
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Region::LocalPut(CacheableKey^ key, IGFSerializable^ value,
+        IGFSerializable^ callbackArg)
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheableKeyPtr keyPtr(
+            (gemfire::CacheableKey*)GetNativePtr2<gemfire::Cacheable>(key));
+          gemfire::CacheablePtr valuePtr(SafeMSerializableConvert(value));
+          gemfire::UserDataPtr callbackArgPtr(
+            SafeMSerializableConvert(callbackArg));
+
+          NativePtr->localPut(keyPtr, valuePtr, callbackArgPtr);
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Region::LocalPut(GemStone::GemFire::Cache::ICacheableKey^ key, Serializable^ value,
+        IGFSerializable^ callbackArg)
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheableKeyPtr keyPtr(SafeMKeyConvert(key));
+          gemfire::CacheablePtr valuePtr(
+            GetNativePtr2<gemfire::Cacheable>(value));
+          gemfire::UserDataPtr callbackArgPtr(
+            SafeMSerializableConvert(callbackArg));
+
+          NativePtr->localPut(keyPtr, valuePtr, callbackArgPtr);
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Region::LocalPut(CacheableKey^ key, Serializable^ value,
+        IGFSerializable^ callbackArg)
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheableKeyPtr keyPtr(
+            (gemfire::CacheableKey*)GetNativePtr2<gemfire::Cacheable>(key));
+          gemfire::CacheablePtr valuePtr(
+            GetNativePtr2<gemfire::Cacheable>(value));
+          gemfire::UserDataPtr callbackArgPtr(
+            SafeMSerializableConvert(callbackArg));
+
+          NativePtr->localPut(keyPtr, valuePtr, callbackArgPtr);
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Region::Create( GemStone::GemFire::Cache::ICacheableKey^ key, IGFSerializable^ value,
+        IGFSerializable^ cacheWriterArg )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheableKeyPtr keyptr( SafeMKeyConvert( key ) );
+          gemfire::CacheablePtr valueptr( SafeMSerializableConvert( value ) );
+          gemfire::UserDataPtr callbackptr(
+            SafeMSerializableConvert( cacheWriterArg ) );
+
+          NativePtr->create( keyptr, valueptr, callbackptr );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Region::Create( CacheableKey^ key, IGFSerializable^ value,
+        IGFSerializable^ cacheWriterArg )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheableKeyPtr keyptr(
+            (gemfire::CacheableKey*)GetNativePtr2<gemfire::Cacheable>( key ) );
+          gemfire::CacheablePtr valueptr( SafeMSerializableConvert( value ) );
+          gemfire::UserDataPtr callbackptr(
+            SafeMSerializableConvert( cacheWriterArg ) );
+
+          NativePtr->create( keyptr, valueptr, callbackptr );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Region::Create( GemStone::GemFire::Cache::ICacheableKey^ key, Serializable^ value,
+        IGFSerializable^ cacheWriterArg )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheableKeyPtr keyptr( SafeMKeyConvert( key ) );
+          gemfire::CacheablePtr valueptr(
+            GetNativePtr2<gemfire::Cacheable>( value ) );
+          gemfire::UserDataPtr callbackptr(
+            SafeMSerializableConvert( cacheWriterArg ) );
+
+          NativePtr->create( keyptr, valueptr, callbackptr );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Region::Create( CacheableKey^ key, Serializable^ value,
+        IGFSerializable^ cacheWriterArg )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheableKeyPtr keyptr(
+            (gemfire::CacheableKey*)GetNativePtr2<gemfire::Cacheable>( key ) );
+          gemfire::CacheablePtr valueptr(
+            GetNativePtr2<gemfire::Cacheable>( value ) );
+          gemfire::UserDataPtr callbackptr(
+            SafeMSerializableConvert( cacheWriterArg ) );
+
+          NativePtr->create( keyptr, valueptr, callbackptr );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Region::LocalCreate(GemStone::GemFire::Cache::ICacheableKey^ key, IGFSerializable^ value,
+        IGFSerializable^ callbackArg)
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheableKeyPtr keyPtr(SafeMKeyConvert(key));
+          gemfire::CacheablePtr valuePtr(SafeMSerializableConvert(value));
+          gemfire::UserDataPtr callbackArgPtr(
+            SafeMSerializableConvert(callbackArg));
+
+          NativePtr->localCreate(keyPtr, valuePtr, callbackArgPtr);
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Region::LocalCreate(CacheableKey^ key, IGFSerializable^ value,
+        IGFSerializable^ callbackArg)
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheableKeyPtr keyPtr(
+            (gemfire::CacheableKey*)GetNativePtr2<gemfire::Cacheable>(key));
+          gemfire::CacheablePtr valuePtr(SafeMSerializableConvert(value));
+          gemfire::UserDataPtr callbackArgPtr(
+            SafeMSerializableConvert(callbackArg));
+
+          NativePtr->localCreate(keyPtr, valuePtr, callbackArgPtr);
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Region::LocalCreate(GemStone::GemFire::Cache::ICacheableKey^ key, Serializable^ value,
+        IGFSerializable^ callbackArg)
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheableKeyPtr keyPtr(SafeMKeyConvert(key));
+          gemfire::CacheablePtr valuePtr(
+            GetNativePtr2<gemfire::Cacheable>(value));
+          gemfire::UserDataPtr callbackArgPtr(
+            SafeMSerializableConvert(callbackArg));
+
+          NativePtr->localCreate(keyPtr, valuePtr, callbackArgPtr);
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Region::LocalCreate(CacheableKey^ key, Serializable^ value,
+        IGFSerializable^ callbackArg)
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheableKeyPtr keyPtr(
+            (gemfire::CacheableKey*)GetNativePtr2<gemfire::Cacheable>(key));
+          gemfire::CacheablePtr valuePtr(
+            GetNativePtr2<gemfire::Cacheable>(value));
+          gemfire::UserDataPtr callbackArgPtr(
+            SafeMSerializableConvert(callbackArg));
+
+          NativePtr->localCreate(keyPtr, valuePtr, callbackArgPtr);
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Region::Invalidate( GemStone::GemFire::Cache::ICacheableKey^ key,
+        IGFSerializable^ callback )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheableKeyPtr keyptr( SafeMKeyConvert( key ) );
+          gemfire::UserDataPtr callbackptr(
+            SafeMSerializableConvert( callback ) );
+
+          NativePtr->invalidate( keyptr, callbackptr );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Region::Invalidate( CacheableKey^ key,
+        IGFSerializable^ callback )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheableKeyPtr keyptr(
+            (gemfire::CacheableKey*)GetNativePtr2<gemfire::Cacheable>( key ) );
+          gemfire::UserDataPtr callbackptr(
+            SafeMSerializableConvert( callback ) );
+
+          NativePtr->invalidate( keyptr, callbackptr );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Region::LocalInvalidate( GemStone::GemFire::Cache::ICacheableKey^ key,
+        IGFSerializable^ callback )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheableKeyPtr keyptr( SafeMKeyConvert( key ) );
+          gemfire::UserDataPtr callbackptr(
+            SafeMSerializableConvert( callback ) );
+
+          NativePtr->localInvalidate( keyptr, callbackptr );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Region::LocalInvalidate( CacheableKey^ key,
+        IGFSerializable^ callback )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheableKeyPtr keyptr(
+            (gemfire::CacheableKey*)GetNativePtr2<gemfire::Cacheable>( key ) );
+          gemfire::UserDataPtr callbackptr(
+            SafeMSerializableConvert( callback ) );
+
+          NativePtr->localInvalidate( keyptr, callbackptr );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Region::Destroy( GemStone::GemFire::Cache::ICacheableKey^ key,
+        IGFSerializable^ cacheWriterArg )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheableKeyPtr keyptr( SafeMKeyConvert( key ) );
+          gemfire::UserDataPtr callbackptr(
+            SafeMSerializableConvert( cacheWriterArg ) );
+
+          NativePtr->destroy( keyptr, callbackptr );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Region::Destroy( CacheableKey^ key,
+        IGFSerializable^ cacheWriterArg )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheableKeyPtr keyptr(
+            (gemfire::CacheableKey*)GetNativePtr2<gemfire::Cacheable>( key ) );
+          gemfire::UserDataPtr callbackptr(
+            SafeMSerializableConvert( cacheWriterArg ) );
+
+          NativePtr->destroy( keyptr, callbackptr );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Region::LocalDestroy( GemStone::GemFire::Cache::ICacheableKey^ key,
+        IGFSerializable^ cacheListenerArg )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheableKeyPtr keyptr( SafeMKeyConvert( key ) );
+          gemfire::UserDataPtr callbackptr(
+            SafeMSerializableConvert( cacheListenerArg ) );
+
+          NativePtr->localDestroy( keyptr, callbackptr );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Region::LocalDestroy( CacheableKey^ key,
+        IGFSerializable^ cacheListenerArg )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheableKeyPtr keyptr(
+            (gemfire::CacheableKey*)GetNativePtr2<gemfire::Cacheable>( key ) );
+          gemfire::UserDataPtr callbackptr(
+            SafeMSerializableConvert( cacheListenerArg ) );
+
+          NativePtr->localDestroy( keyptr, callbackptr );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      array<GemStone::GemFire::Cache::ICacheableKey^>^ Region::GetKeys( )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::VectorOfCacheableKey vc;
+          NativePtr->keys( vc );
+          array<GemStone::GemFire::Cache::ICacheableKey^>^ keyarr =
+            gcnew array<GemStone::GemFire::Cache::ICacheableKey^>( vc.size( ) );
+
+          for( int32_t index = 0; index < vc.size( ); index++ )
+          {
+            gemfire::CacheableKeyPtr& nativeptr( vc[index] );
+            keyarr[ index ] = SafeUMKeyConvert( nativeptr.ptr( ) );
+          }
+          return keyarr;
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      array<GemStone::GemFire::Cache::ICacheableKey^>^ Region::GetServerKeys( )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::VectorOfCacheableKey vc;
+          NativePtr->serverKeys( vc );
+          array<GemStone::GemFire::Cache::ICacheableKey^>^ keyarr =
+            gcnew array<GemStone::GemFire::Cache::ICacheableKey^>( vc.size( ) );
+          for( int32_t index = 0; index < vc.size( ); index++ )
+          {
+            gemfire::CacheableKeyPtr& nativeptr( vc[ index ] );
+            keyarr[ index ] = SafeUMKeyConvert( nativeptr.ptr( ) );
+          }
+          return keyarr;
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      array<IGFSerializable^>^ Region::GetValues( )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::VectorOfCacheable vc;
+          NativePtr->values( vc );
+          array<IGFSerializable^>^ valarr =
+            gcnew array<IGFSerializable^>( vc.size( ) );
+          for( int32_t index = 0; index < vc.size( ); index++ )
+          {
+            gemfire::CacheablePtr& nativeptr( vc[ index ] );
+            valarr[ index ] = SafeUMSerializableConvert( nativeptr.ptr( ) );
+          }
+          return valarr;
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      array<RegionEntry^>^ Region::GetEntries( bool recursive )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::VectorOfRegionEntry vc;
+          NativePtr->entries( vc, recursive );
+          array<RegionEntry^>^ entryarr = gcnew array<RegionEntry^>( vc.size( ) );
+
+          for( int32_t index = 0; index < vc.size( ); index++ )
+          {
+            gemfire::RegionEntryPtr& nativeptr( vc[ index ] );
+            entryarr[ index ] = RegionEntry::Create( nativeptr.ptr( ) );
+          }
+          return entryarr;
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      uint32_t Region::Size::get()
+      {
+	    _GF_MG_EXCEPTION_TRY
+        return NativePtr->size();
+		_GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      GemStone::GemFire::Cache::Cache^ Region::Cache::get( )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CachePtr& nativeptr( NativePtr->getCache( ) );
+
+          return GemStone::GemFire::Cache::Cache::Create( nativeptr.ptr( ) );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      GemStone::GemFire::Cache::IRegionService^ Region::RegionService::get( )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::RegionServicePtr& nativeptr( NativePtr->getRegionService( ) );
+
+        gemfire::Cache* realCache = dynamic_cast<gemfire::Cache*>(nativeptr.ptr());
+
+        if(realCache != NULL)
+        {
+          return GemStone::GemFire::Cache::Cache::Create( ((gemfire::CachePtr)nativeptr).ptr( ) );
+        }
+        else
+        {
+          return GemStone::GemFire::Cache::AuthenticatedCache::Create( nativeptr.ptr( ) );
+        }
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      bool Region::IsDestroyed::get( )
+      {
+        return NativePtr->isDestroyed( );
+      }
+
+      bool Region::ContainsValueForKey( GemStone::GemFire::Cache::ICacheableKey^ key )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheableKeyPtr keyptr( SafeMKeyConvert( key ) );
+
+          return NativePtr->containsValueForKey( keyptr );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      bool Region::ContainsValueForKey( CacheableKey^ key )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheableKeyPtr keyptr(
+            (gemfire::CacheableKey*)GetNativePtr2<gemfire::Cacheable>( key ) );
+
+          return NativePtr->containsValueForKey( keyptr );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      bool Region::ContainsKey( GemStone::GemFire::Cache::ICacheableKey^ key )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheableKeyPtr keyptr( SafeMKeyConvert( key ) );
+
+          return NativePtr->containsKey( keyptr );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      bool Region::ContainsKey( CacheableKey^ key )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheableKeyPtr keyptr(
+            (gemfire::CacheableKey*)GetNativePtr2<gemfire::Cacheable>( key ) );
+
+          return NativePtr->containsKey( keyptr );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Region::RegisterKeys(array<GemStone::GemFire::Cache::ICacheableKey^>^ keys,
+        bool isDurable, bool getInitialValues, bool receiveValues)
+      {
+        if (keys != nullptr)
+        {
+          _GF_MG_EXCEPTION_TRY
+
+            gemfire::VectorOfCacheableKey vecKeys;
+
+            for (int32_t index = 0; index < keys->Length; index++)
+            {
+              vecKeys.push_back(gemfire::CacheableKeyPtr(
+                SafeMKeyConvert(keys[index])));
+            }
+            NativePtr->registerKeys(vecKeys, isDurable, getInitialValues, receiveValues);
+
+          _GF_MG_EXCEPTION_CATCH_ALL
+        }
+      }
+
+      void Region::RegisterKeys(array<CacheableKey^>^ keys,
+        bool isDurable, bool getInitialValues, bool receiveValues)
+      {
+        if (keys != nullptr)
+        {
+          _GF_MG_EXCEPTION_TRY
+
+            gemfire::VectorOfCacheableKey vecKeys;
+
+            for (int32_t index = 0; index < keys->Length; index++)
+            {
+              vecKeys.push_back(gemfire::CacheableKeyPtr(
+                (gemfire::CacheableKey*)GetNativePtr2<gemfire::Cacheable>(
+                keys[index])));
+            }
+            NativePtr->registerKeys(vecKeys, isDurable, getInitialValues, receiveValues);
+
+          _GF_MG_EXCEPTION_CATCH_ALL
+        }
+      }
+
+      void Region::UnregisterKeys(array<GemStone::GemFire::Cache::ICacheableKey^>^ keys)
+      {
+        if (keys != nullptr)
+        {
+          _GF_MG_EXCEPTION_TRY
+
+            gemfire::VectorOfCacheableKey vecKeys;
+
+            for (int32_t index = 0; index < keys->Length; index++)
+            {
+              vecKeys.push_back(gemfire::CacheableKeyPtr(
+                SafeMKeyConvert(keys[index])));
+            }
+            NativePtr->unregisterKeys(vecKeys);
+
+          _GF_MG_EXCEPTION_CATCH_ALL
+        }
+      }
+
+      void Region::UnregisterKeys(array<CacheableKey^>^ keys)
+      {
+        if (keys != nullptr)
+        {
+          _GF_MG_EXCEPTION_TRY
+
+            gemfire::VectorOfCacheableKey vecKeys;
+
+            for (int32_t index = 0; index < keys->Length; index++)
+            {
+              vecKeys.push_back(gemfire::CacheableKeyPtr(
+                (gemfire::CacheableKey*)GetNativePtr2<gemfire::Cacheable>(
+                keys[index])));
+            }
+            NativePtr->unregisterKeys(vecKeys);
+
+          _GF_MG_EXCEPTION_CATCH_ALL
+        }
+      }
+
+      void Region::RegisterAllKeys(bool isDurable,
+          List<GemStone::GemFire::Cache::ICacheableKey^>^ resultKeys, bool getInitialValues, bool receiveValues)
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          if (resultKeys != nullptr) {
+            gemfire::VectorOfCacheableKeyPtr mg_keys(
+              new gemfire::VectorOfCacheableKey());
+            NativePtr->registerAllKeys(isDurable, mg_keys, getInitialValues, receiveValues);
+            for (int32_t index = 0; index < mg_keys->size(); ++index) {
+              resultKeys->Add(SafeUMKeyConvert(
+                mg_keys->operator[](index).ptr()));
+            }
+          }
+          else {
+            NativePtr->registerAllKeys(isDurable, NULLPTR, getInitialValues, receiveValues);
+          }
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Region::UnregisterAllKeys( )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          NativePtr->unregisterAllKeys( );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Region::RegisterRegex(String^ regex, bool isDurable,
+          List<GemStone::GemFire::Cache::ICacheableKey^>^ resultKeys, bool getInitialValues, bool receiveValues)
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          ManagedString mg_regex( regex );
+          if (resultKeys != nullptr) {
+            gemfire::VectorOfCacheableKeyPtr mg_keys(
+              new gemfire::VectorOfCacheableKey());
+            NativePtr->registerRegex(mg_regex.CharPtr, isDurable,
+              mg_keys, getInitialValues, receiveValues);
+            for (int32_t index = 0; index < mg_keys->size(); ++index) {
+              resultKeys->Add(SafeUMKeyConvert(
+                mg_keys->operator [](index).ptr()));
+            }
+          }
+          else {
+            NativePtr->registerRegex(mg_regex.CharPtr, isDurable,
+              NULLPTR, getInitialValues, receiveValues);
+          }
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Region::UnregisterRegex( String^ regex )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          ManagedString mg_regex( regex );
+          NativePtr->unregisterRegex( mg_regex.CharPtr );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Region::GetAll(array<GemStone::GemFire::Cache::ICacheableKey^>^ keys,
+        Dictionary<GemStone::GemFire::Cache::ICacheableKey^, IGFSerializable^>^ values,
+        Dictionary<GemStone::GemFire::Cache::ICacheableKey^, System::Exception^>^ exceptions,
+        bool addToLocalCache)
+      {
+        if (keys != nullptr) {
+          _GF_MG_EXCEPTION_TRY
+
+            gemfire::VectorOfCacheableKey vecKeys;
+            for (int32_t index = 0; index < keys->Length; ++index) {
+              vecKeys.push_back(gemfire::CacheableKeyPtr(
+                SafeMKeyConvert(keys[index])));
+            }
+            gemfire::HashMapOfCacheablePtr valuesPtr(NULLPTR);
+            if (values != nullptr) {
+              valuesPtr = new gemfire::HashMapOfCacheable();
+            }
+            gemfire::HashMapOfExceptionPtr exceptionsPtr(NULLPTR);
+            if (exceptions != nullptr) {
+              exceptionsPtr = new gemfire::HashMapOfException();
+            }
+            NativePtr->getAll(vecKeys, valuesPtr, exceptionsPtr,
+              addToLocalCache);
+            if (values != nullptr) {
+              for (gemfire::HashMapOfCacheable::Iterator iter =
+                valuesPtr->begin(); iter != valuesPtr->end(); ++iter) {
+                  GemStone::GemFire::Cache::ICacheableKey^ key = SafeUMKeyConvert(iter.first().ptr());
+                  IGFSerializable^ val = SafeUMSerializableConvert(
+                    iter.second().ptr());
+                  values->Add(key, val);
+              }
+            }
+            if (exceptions != nullptr) {
+              for (gemfire::HashMapOfException::Iterator iter =
+                exceptionsPtr->begin(); iter != exceptionsPtr->end(); ++iter) {
+                  GemStone::GemFire::Cache::ICacheableKey^ key = SafeUMKeyConvert(iter.first().ptr());
+                  System::Exception^ ex = GemFireException::Get(*iter.second());
+                  exceptions->Add(key, ex);
+              }
+            }
+
+          _GF_MG_EXCEPTION_CATCH_ALL
+        }
+        else {
+          throw gcnew IllegalArgumentException("GetAll: null keys provided");
+        }
+      }
+
+      void Region::GetAll(array<CacheableKey^>^ keys,
+        Dictionary<GemStone::GemFire::Cache::ICacheableKey^, IGFSerializable^>^ values,
+        Dictionary<GemStone::GemFire::Cache::ICacheableKey^, System::Exception^>^ exceptions,
+        bool addToLocalCache)
+      {
+        if (keys != nullptr) {
+          _GF_MG_EXCEPTION_TRY
+
+            gemfire::VectorOfCacheableKey vecKeys;
+            for (int32_t index = 0; index < keys->Length; ++index) {
+              vecKeys.push_back(gemfire::CacheableKeyPtr(
+                (gemfire::CacheableKey*)GetNativePtr2<gemfire::Cacheable>(
+                keys[index])));
+            }
+            gemfire::HashMapOfCacheablePtr valuesPtr(NULLPTR);
+            if (values != nullptr) {
+              valuesPtr = new gemfire::HashMapOfCacheable();
+            }
+            gemfire::HashMapOfExceptionPtr exceptionsPtr(NULLPTR);
+            if (exceptions != nullptr) {
+              exceptionsPtr = new gemfire::HashMapOfException();
+            }
+            NativePtr->getAll(vecKeys, valuesPtr, exceptionsPtr,
+              addToLocalCache);
+            if (values != nullptr) {
+              for (gemfire::HashMapOfCacheable::Iterator iter =
+                valuesPtr->begin(); iter != valuesPtr->end(); ++iter) {
+                  GemStone::GemFire::Cache::ICacheableKey^ key = SafeUMKeyConvert(iter.first().ptr());
+                  IGFSerializable^ val = SafeUMSerializableConvert(
+                    iter.second().ptr());
+                  values->Add(key, val);
+              }
+            }
+            if (exceptions != nullptr) {
+              for (gemfire::HashMapOfException::Iterator iter =
+                exceptionsPtr->begin(); iter != exceptionsPtr->end(); ++iter) {
+                  GemStone::GemFire::Cache::ICacheableKey^ key = SafeUMKeyConvert(iter.first().ptr());
+                  System::Exception^ ex = GemFireException::Get(*iter.second());
+                  exceptions->Add(key, ex);
+              }
+            }
+
+          _GF_MG_EXCEPTION_CATCH_ALL
+        }
+        else {
+          throw gcnew IllegalArgumentException("GetAll: null keys provided");
+        }
+      }
+
+      ISelectResults^ Region::Query( String^ predicate )
+      {
+        return Query( predicate, DEFAULT_QUERY_RESPONSE_TIMEOUT );
+      }
+
+      ISelectResults^ Region::Query( String^ predicate, uint32_t timeout )
+      {
+        ManagedString mg_predicate( predicate );
+
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::SelectResultsPtr& nativeptr = NativePtr->query(
+            mg_predicate.CharPtr, timeout );
+          if ( nativeptr.ptr( ) == NULL ) return nullptr;
+
+          gemfire::ResultSet* resultptr = dynamic_cast<gemfire::ResultSet*>(
+            nativeptr.ptr( ) );
+          if ( resultptr == NULL )
+          {
+            gemfire::StructSet* structptr = dynamic_cast<gemfire::StructSet*>(
+              nativeptr.ptr( ) );
+            if ( structptr == NULL )
+            {
+              return nullptr;
+            }
+            return StructSet::Create(structptr);
+          }
+          else
+          {
+            return ResultSet::Create(resultptr);
+          }
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      bool Region::ExistsValue( String^ predicate )
+      {
+        return ExistsValue( predicate, DEFAULT_QUERY_RESPONSE_TIMEOUT );
+      }
+
+      bool Region::ExistsValue( String^ predicate, uint32_t timeout )
+      {
+        ManagedString mg_predicate( predicate );
+
+        _GF_MG_EXCEPTION_TRY
+
+          return NativePtr->existsValue( mg_predicate.CharPtr, timeout );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      IGFSerializable^ Region::SelectValue( String^ predicate )
+      {
+        return SelectValue( predicate, DEFAULT_QUERY_RESPONSE_TIMEOUT );
+      }
+
+      IGFSerializable^ Region::SelectValue( String^ predicate, uint32_t timeout )
+      {
+        ManagedString mg_predicate( predicate );
+
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheablePtr& nativeptr( NativePtr->selectValue(
+            mg_predicate.CharPtr, timeout ) );
+          return SafeUMSerializableConvert( nativeptr.ptr( ) );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      //--------------------------Remove api----------------------------------------------
+
+      bool Region::Remove( GemStone::GemFire::Cache::ICacheableKey^ key, IGFSerializable^ value,
+        IGFSerializable^ cacheWriterArg )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheableKeyPtr keyptr( SafeMKeyConvert( key ) );
+          gemfire::CacheablePtr valueptr( SafeMSerializableConvert( value ) );
+          gemfire::UserDataPtr callbackptr(
+            SafeMSerializableConvert( cacheWriterArg ) );
+
+          return NativePtr->remove( keyptr, valueptr, callbackptr );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      bool Region::Remove( CacheableKey^ key, IGFSerializable^ value,
+        IGFSerializable^ cacheWriterArg )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheableKeyPtr keyptr(
+            (gemfire::CacheableKey*)GetNativePtr2<gemfire::Cacheable>( key ) );
+          gemfire::CacheablePtr valueptr( SafeMSerializableConvert( value ) );
+          gemfire::UserDataPtr callbackptr(
+            SafeMSerializableConvert( cacheWriterArg ) );
+
+          return NativePtr->remove( keyptr, valueptr, callbackptr );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      bool Region::Remove( GemStone::GemFire::Cache::ICacheableKey^ key, Serializable^ value,
+        IGFSerializable^ cacheWriterArg )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheableKeyPtr keyptr( SafeMKeyConvert( key ) );
+          gemfire::CacheablePtr valuePtr ( GetNativePtr2<gemfire::Cacheable>(value));
+          gemfire::UserDataPtr callbackptr(
+            SafeMSerializableConvert( cacheWriterArg ) );
+
+          return NativePtr->remove( keyptr, valuePtr, callbackptr );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      bool Region::Remove( CacheableKey^ key, Serializable^ value,
+        IGFSerializable^ cacheWriterArg )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheableKeyPtr keyptr(
+            (gemfire::CacheableKey*)GetNativePtr2<gemfire::Cacheable>( key ) );          
+          gemfire::CacheablePtr valuePtr ( GetNativePtr2<gemfire::Cacheable>(value));          
+          gemfire::UserDataPtr callbackptr(
+            SafeMSerializableConvert( cacheWriterArg ) );
+
+          return NativePtr->remove( keyptr, valuePtr, callbackptr );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      bool Region::LocalRemove(GemStone::GemFire::Cache::ICacheableKey^ key, IGFSerializable^ value,
+        IGFSerializable^ callbackArg)
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheableKeyPtr keyPtr(SafeMKeyConvert(key));
+          gemfire::CacheablePtr valuePtr(SafeMSerializableConvert(value));
+          gemfire::UserDataPtr callbackArgPtr(
+            SafeMSerializableConvert(callbackArg));
+
+          return NativePtr->localRemove(keyPtr, valuePtr, callbackArgPtr);
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      bool Region::LocalRemove(CacheableKey^ key, IGFSerializable^ value,
+        IGFSerializable^ callbackArg)
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheableKeyPtr keyPtr(
+            (gemfire::CacheableKey*)GetNativePtr2<gemfire::Cacheable>(key));
+          gemfire::CacheablePtr valuePtr(SafeMSerializableConvert(value));
+          gemfire::UserDataPtr callbackArgPtr(
+            SafeMSerializableConvert(callbackArg));
+
+          return NativePtr->localRemove(keyPtr, valuePtr, callbackArgPtr);
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      bool Region::LocalRemove(GemStone::GemFire::Cache::ICacheableKey^ key, Serializable^ value,
+        IGFSerializable^ callbackArg)
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheableKeyPtr keyPtr(SafeMKeyConvert(key));
+          gemfire::CacheablePtr valuePtr ( GetNativePtr2<gemfire::Cacheable>(value));
+          gemfire::UserDataPtr callbackArgPtr(
+            SafeMSerializableConvert(callbackArg));
+
+          return NativePtr->localRemove(keyPtr, valuePtr, callbackArgPtr);
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      bool Region::LocalRemove(CacheableKey^ key, Serializable^ value,
+        IGFSerializable^ callbackArg)
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheableKeyPtr keyPtr(
+            (gemfire::CacheableKey*)GetNativePtr2<gemfire::Cacheable>(key));
+          gemfire::CacheablePtr valuePtr ( GetNativePtr2<gemfire::Cacheable>(value));
+          gemfire::UserDataPtr callbackArgPtr(
+            SafeMSerializableConvert(callbackArg));
+
+          return NativePtr->localRemove(keyPtr, valuePtr, callbackArgPtr);
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+    }
+  }
+}



[48/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/VS_Solutions_10/gfclicache/gfclicache.sln
----------------------------------------------------------------------
diff --git a/geode-client-native/VS_Solutions_10/gfclicache/gfclicache.sln b/geode-client-native/VS_Solutions_10/gfclicache/gfclicache.sln
new file mode 100644
index 0000000..63cd2df
--- /dev/null
+++ b/geode-client-native/VS_Solutions_10/gfclicache/gfclicache.sln
@@ -0,0 +1,610 @@
+\ufeff
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2013
+VisualStudioVersion = 12.0.40629.0
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "product", "product", "{6EC3B882-4C39-42B7-A8DB-59CDE849CD2D}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{DB2F0277-D3DB-45BA-8B62-944E1B04175B}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DUnitFramework", "..\..\src\tests\clicache\DUnitFramework\DUnitFramework.csproj", "{796727E8-3A6A-46BE-A2DB-584A4774CD51}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTests", "..\..\src\tests\clicache\UnitTests\UnitTests.csproj", "{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}"
+	ProjectSection(ProjectDependencies) = postProject
+		{10613802-A371-4C27-8F66-CE79BFCAC3F2} = {10613802-A371-4C27-8F66-CE79BFCAC3F2}
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FwkClient", "..\..\src\tests\clicache\FwkClient\FwkClient.csproj", "{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FwkLib", "..\..\src\tests\clicache\FwkLib\FwkLib.csproj", "{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FwkDriver", "..\..\src\tests\clicache\FwkDriver\FwkDriver.csproj", "{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GacInstall", "..\..\vs_projects_10\executables\GacInstall.csproj", "{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "QueryWrapper", "..\..\src\tests\clicache\QueryHelper\QueryWrapper.vcxproj", "{9462282E-A3D8-4192-885C-891E778D9A3F}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FwkBBClient", "..\..\src\tests\clicache\FwkBBClient\FwkBBClient.csproj", "{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FwkBBServer", "..\..\src\tests\clicache\FwkBBServer\FwkBBServer.csproj", "{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SecurityUtil", "..\..\src\tests\clicache\SecurityUtil\SecurityUtil.csproj", "{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NativeWrapper", "..\..\src\tests\clicache\NativeWrapper\NativeWrapper.vcxproj", "{028E234C-10E7-401F-9A35-0EF3BED05E65}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PkcsWrapper", "..\..\src\tests\clicache\PkcsWrapper\PkcsWrapper.vcxproj", "{64BE2358-E700-4909-8665-8B10E2626691}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NewFwkLib", "..\..\src\tests\clicache\NewFwkLib\NewFwkLib.csproj", "{9D51841C-4400-4BB4-95C9-15A8E6C14B38}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FwkUtil", "..\..\src\tests\clicache\FwkUtil\FwkUtil.csproj", "{0DDB5AAF-C707-4F65-9000-659A24504D36}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FwkLauncher", "..\..\src\tests\clicache\FwkLauncher\FwkLauncher.csproj", "{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PdxClassLibrary", "..\..\src\tests\clicache\PdxClassLibrary\PdxClassLibrary.csproj", "{10613802-A371-4C27-8F66-CE79BFCAC3F2}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PdxVersion1Lib", "..\..\src\tests\clicache\PdxVersion1Lib\PdxVersion1Lib.csproj", "{97F9965D-6B3D-44F6-92B3-5880A3C7178E}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PdxVersion2Lib", "..\..\src\tests\clicache\PdxVersion2Lib\PdxVersion2Lib.csproj", "{5055633B-6D1C-488D-B934-1AC482C915F7}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FwkUI", "..\..\src\tests\clicache\FwkUI\FwkUI.csproj", "{4C4235E5-DF5B-4C7A-91C3-1C3CDACF57D5}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "plugins", "plugins", "{0990975E-61ED-4178-88C7-4E965F7B1409}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SQLite", "..\..\vs_projects_10\plugins\SQLite\SQLite.csproj", "{FF9597E3-A4DD-4FDE-871D-B0C66088762F}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Templates", "..\..\vs_projects_10\gfclicache\templates\Templates.csproj", "{1B99F0C4-B241-45C7-BFAF-2009D0664901}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Debug|Mixed Platforms = Debug|Mixed Platforms
+		Debug|Win32 = Debug|Win32
+		Debug|x64 = Debug|x64
+		Debug|x86 = Debug|x86
+		Release|Any CPU = Release|Any CPU
+		Release|Mixed Platforms = Release|Mixed Platforms
+		Release|Win32 = Release|Win32
+		Release|x64 = Release|x64
+		Release|x86 = Release|x86
+		sanctionedBuildDebug|Any CPU = sanctionedBuildDebug|Any CPU
+		sanctionedBuildDebug|Mixed Platforms = sanctionedBuildDebug|Mixed Platforms
+		sanctionedBuildDebug|Win32 = sanctionedBuildDebug|Win32
+		sanctionedBuildDebug|x64 = sanctionedBuildDebug|x64
+		sanctionedBuildDebug|x86 = sanctionedBuildDebug|x86
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.Debug|x64.ActiveCfg = Debug|x64
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.Debug|x64.Build.0 = Debug|x64
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.Debug|x86.ActiveCfg = Debug|x64
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.Release|Any CPU.Build.0 = Release|Any CPU
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.Release|Win32.ActiveCfg = Release|Any CPU
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.Release|x64.ActiveCfg = Release|x64
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.Release|x64.Build.0 = Release|x64
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.Release|x86.ActiveCfg = Release|x64
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|Any CPU
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.sanctionedBuildDebug|Any CPU.Build.0 = Debug|Any CPU
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.sanctionedBuildDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|Any CPU
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x64
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.Debug|x64.ActiveCfg = Debug|x64
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.Debug|x64.Build.0 = Debug|x64
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.Debug|x86.ActiveCfg = Debug|x64
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.Release|Any CPU.Build.0 = Release|Any CPU
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.Release|Win32.ActiveCfg = Release|Any CPU
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.Release|x64.ActiveCfg = Release|x64
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.Release|x64.Build.0 = Release|x64
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.Release|x86.ActiveCfg = Release|x64
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|Any CPU
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.sanctionedBuildDebug|Any CPU.Build.0 = Debug|Any CPU
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.sanctionedBuildDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|Any CPU
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x64
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.Debug|x64.ActiveCfg = Debug|x64
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.Debug|x64.Build.0 = Debug|x64
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.Debug|x86.ActiveCfg = Debug|x64
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.Release|Any CPU.Build.0 = Release|Any CPU
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.Release|Win32.ActiveCfg = Release|Any CPU
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.Release|x64.ActiveCfg = Release|x64
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.Release|x64.Build.0 = Release|x64
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.Release|x86.ActiveCfg = Release|x64
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|Any CPU
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.sanctionedBuildDebug|Any CPU.Build.0 = Debug|Any CPU
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.sanctionedBuildDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|Any CPU
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x64
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.Debug|x64.ActiveCfg = Debug|x64
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.Debug|x64.Build.0 = Debug|x64
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.Debug|x86.ActiveCfg = Debug|x64
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.Release|Any CPU.Build.0 = Release|Any CPU
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.Release|Win32.ActiveCfg = Release|Any CPU
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.Release|x64.ActiveCfg = Release|x64
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.Release|x64.Build.0 = Release|x64
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.Release|x86.ActiveCfg = Release|x64
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|Any CPU
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.sanctionedBuildDebug|Any CPU.Build.0 = Debug|Any CPU
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.sanctionedBuildDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|Any CPU
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x64
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.Debug|x64.ActiveCfg = Debug|x64
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.Debug|x64.Build.0 = Debug|x64
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.Debug|x86.ActiveCfg = Debug|x64
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.Release|Any CPU.Build.0 = Release|Any CPU
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.Release|Win32.ActiveCfg = Release|Any CPU
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.Release|x64.ActiveCfg = Release|x64
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.Release|x64.Build.0 = Release|x64
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.Release|x86.ActiveCfg = Release|x64
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|Any CPU
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.sanctionedBuildDebug|Any CPU.Build.0 = Debug|Any CPU
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.sanctionedBuildDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|Any CPU
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x64
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.Debug|x64.ActiveCfg = Debug|x64
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.Debug|x64.Build.0 = Debug|x64
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.Debug|x86.ActiveCfg = Debug|x64
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.Release|Any CPU.Build.0 = Release|Any CPU
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.Release|Win32.ActiveCfg = Release|Any CPU
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.Release|x64.ActiveCfg = Release|x64
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.Release|x64.Build.0 = Release|x64
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.Release|x86.ActiveCfg = Release|x64
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|Any CPU
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.sanctionedBuildDebug|Any CPU.Build.0 = Debug|Any CPU
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.sanctionedBuildDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|Any CPU
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x64
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.Debug|Any CPU.ActiveCfg = Debug|Win32
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.Debug|Win32.ActiveCfg = Debug|Win32
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.Debug|Win32.Build.0 = Debug|Win32
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.Debug|x64.ActiveCfg = Debug|x64
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.Debug|x64.Build.0 = Debug|x64
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.Debug|x86.ActiveCfg = Debug|x64
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.Release|Any CPU.ActiveCfg = Release|Win32
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.Release|Mixed Platforms.Build.0 = Release|Win32
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.Release|Win32.ActiveCfg = Release|Win32
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.Release|Win32.Build.0 = Release|Win32
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.Release|x64.ActiveCfg = Release|x64
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.Release|x64.Build.0 = Release|x64
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.Release|x86.ActiveCfg = Release|x64
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|Win32
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|Win32
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.sanctionedBuildDebug|Mixed Platforms.Build.0 = Debug|Win32
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|Win32
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.sanctionedBuildDebug|Win32.Build.0 = Debug|Win32
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x64
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.Debug|x64.ActiveCfg = Debug|x64
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.Debug|x64.Build.0 = Debug|x64
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.Debug|x86.ActiveCfg = Debug|x64
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.Release|Any CPU.Build.0 = Release|Any CPU
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.Release|Win32.ActiveCfg = Release|Any CPU
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.Release|x64.ActiveCfg = Release|x64
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.Release|x64.Build.0 = Release|x64
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.Release|x86.ActiveCfg = Release|x64
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|Any CPU
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.sanctionedBuildDebug|Any CPU.Build.0 = Debug|Any CPU
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.sanctionedBuildDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|Any CPU
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x64
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.Debug|x64.ActiveCfg = Debug|x64
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.Debug|x64.Build.0 = Debug|x64
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.Debug|x86.ActiveCfg = Debug|x64
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.Release|Any CPU.Build.0 = Release|Any CPU
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.Release|Win32.ActiveCfg = Release|Any CPU
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.Release|x64.ActiveCfg = Release|x64
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.Release|x64.Build.0 = Release|x64
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.Release|x86.ActiveCfg = Release|x64
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|Any CPU
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.sanctionedBuildDebug|Any CPU.Build.0 = Debug|Any CPU
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.sanctionedBuildDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|Any CPU
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x64
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.Debug|x64.ActiveCfg = Debug|x64
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.Debug|x64.Build.0 = Debug|x64
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.Debug|x86.ActiveCfg = Debug|x64
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.Release|Any CPU.Build.0 = Release|Any CPU
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.Release|Win32.ActiveCfg = Release|Any CPU
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.Release|x64.ActiveCfg = Release|x64
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.Release|x64.Build.0 = Release|x64
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.Release|x86.ActiveCfg = Release|x64
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|Any CPU
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.sanctionedBuildDebug|Any CPU.Build.0 = Debug|Any CPU
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.sanctionedBuildDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|Any CPU
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x64
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.Debug|Any CPU.ActiveCfg = Debug|Win32
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.Debug|Win32.ActiveCfg = Debug|Win32
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.Debug|Win32.Build.0 = Debug|Win32
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.Debug|x64.ActiveCfg = Debug|x64
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.Debug|x64.Build.0 = Debug|x64
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.Debug|x86.ActiveCfg = Debug|x64
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.Release|Any CPU.ActiveCfg = Release|Win32
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.Release|Mixed Platforms.Build.0 = Release|Win32
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.Release|Win32.ActiveCfg = Release|Win32
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.Release|Win32.Build.0 = Release|Win32
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.Release|x64.ActiveCfg = Release|x64
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.Release|x64.Build.0 = Release|x64
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.Release|x86.ActiveCfg = Release|x64
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|Win32
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|Win32
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.sanctionedBuildDebug|Mixed Platforms.Build.0 = Debug|Win32
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|Win32
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.sanctionedBuildDebug|Win32.Build.0 = Debug|Win32
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x64
+		{64BE2358-E700-4909-8665-8B10E2626691}.Debug|Any CPU.ActiveCfg = Debug|Win32
+		{64BE2358-E700-4909-8665-8B10E2626691}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+		{64BE2358-E700-4909-8665-8B10E2626691}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+		{64BE2358-E700-4909-8665-8B10E2626691}.Debug|Win32.ActiveCfg = Debug|Win32
+		{64BE2358-E700-4909-8665-8B10E2626691}.Debug|Win32.Build.0 = Debug|Win32
+		{64BE2358-E700-4909-8665-8B10E2626691}.Debug|x64.ActiveCfg = Debug|x64
+		{64BE2358-E700-4909-8665-8B10E2626691}.Debug|x64.Build.0 = Debug|x64
+		{64BE2358-E700-4909-8665-8B10E2626691}.Debug|x86.ActiveCfg = Debug|x64
+		{64BE2358-E700-4909-8665-8B10E2626691}.Release|Any CPU.ActiveCfg = Release|Win32
+		{64BE2358-E700-4909-8665-8B10E2626691}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+		{64BE2358-E700-4909-8665-8B10E2626691}.Release|Mixed Platforms.Build.0 = Release|Win32
+		{64BE2358-E700-4909-8665-8B10E2626691}.Release|Win32.ActiveCfg = Release|Win32
+		{64BE2358-E700-4909-8665-8B10E2626691}.Release|Win32.Build.0 = Release|Win32
+		{64BE2358-E700-4909-8665-8B10E2626691}.Release|x64.ActiveCfg = Release|x64
+		{64BE2358-E700-4909-8665-8B10E2626691}.Release|x64.Build.0 = Release|x64
+		{64BE2358-E700-4909-8665-8B10E2626691}.Release|x86.ActiveCfg = Release|x64
+		{64BE2358-E700-4909-8665-8B10E2626691}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|x64
+		{64BE2358-E700-4909-8665-8B10E2626691}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|Win32
+		{64BE2358-E700-4909-8665-8B10E2626691}.sanctionedBuildDebug|Mixed Platforms.Build.0 = Debug|Win32
+		{64BE2358-E700-4909-8665-8B10E2626691}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|Win32
+		{64BE2358-E700-4909-8665-8B10E2626691}.sanctionedBuildDebug|Win32.Build.0 = Debug|Win32
+		{64BE2358-E700-4909-8665-8B10E2626691}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{64BE2358-E700-4909-8665-8B10E2626691}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{64BE2358-E700-4909-8665-8B10E2626691}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x64
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.Debug|x64.ActiveCfg = Debug|x64
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.Debug|x64.Build.0 = Debug|x64
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.Debug|x86.ActiveCfg = Debug|x86
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.Debug|x86.Build.0 = Debug|x86
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.Release|Any CPU.Build.0 = Release|Any CPU
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.Release|Win32.ActiveCfg = Release|Any CPU
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.Release|x64.ActiveCfg = Release|x64
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.Release|x64.Build.0 = Release|x64
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.Release|x86.ActiveCfg = Release|x86
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.Release|x86.Build.0 = Release|x86
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|Any CPU
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.sanctionedBuildDebug|Any CPU.Build.0 = Debug|Any CPU
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.sanctionedBuildDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|Any CPU
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x86
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.sanctionedBuildDebug|x86.Build.0 = Debug|x86
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.Debug|Mixed Platforms.Build.0 = Debug|x86
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.Debug|Win32.ActiveCfg = Debug|x86
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.Debug|x64.ActiveCfg = Debug|x64
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.Debug|x64.Build.0 = Debug|x64
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.Debug|x86.ActiveCfg = Debug|x86
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.Debug|x86.Build.0 = Debug|x86
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.Release|Any CPU.Build.0 = Release|Any CPU
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.Release|Mixed Platforms.ActiveCfg = Release|x86
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.Release|Mixed Platforms.Build.0 = Release|x86
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.Release|Win32.ActiveCfg = Release|x86
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.Release|x64.ActiveCfg = Release|x64
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.Release|x64.Build.0 = Release|x64
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.Release|x86.ActiveCfg = Release|x86
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.Release|x86.Build.0 = Release|x86
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|Any CPU
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.sanctionedBuildDebug|Any CPU.Build.0 = Debug|Any CPU
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|x86
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.sanctionedBuildDebug|Mixed Platforms.Build.0 = Debug|x86
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|x86
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x86
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.sanctionedBuildDebug|x86.Build.0 = Debug|x86
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.Debug|x64.ActiveCfg = Debug|x64
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.Debug|x64.Build.0 = Debug|x64
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.Debug|x86.ActiveCfg = Debug|x64
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.Release|Any CPU.Build.0 = Release|Any CPU
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.Release|Win32.ActiveCfg = Release|Any CPU
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.Release|x64.ActiveCfg = Release|x64
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.Release|x64.Build.0 = Release|x64
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.Release|x86.ActiveCfg = Release|x64
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|Any CPU
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.sanctionedBuildDebug|Any CPU.Build.0 = Debug|Any CPU
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.sanctionedBuildDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|Any CPU
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x64
+		{10613802-A371-4C27-8F66-CE79BFCAC3F2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{10613802-A371-4C27-8F66-CE79BFCAC3F2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{10613802-A371-4C27-8F66-CE79BFCAC3F2}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{10613802-A371-4C27-8F66-CE79BFCAC3F2}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{10613802-A371-4C27-8F66-CE79BFCAC3F2}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{10613802-A371-4C27-8F66-CE79BFCAC3F2}.Debug|x64.ActiveCfg = Debug|x64
+		{10613802-A371-4C27-8F66-CE79BFCAC3F2}.Debug|x64.Build.0 = Debug|x64
+		{10613802-A371-4C27-8F66-CE79BFCAC3F2}.Debug|x86.ActiveCfg = Debug|x64
+		{10613802-A371-4C27-8F66-CE79BFCAC3F2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{10613802-A371-4C27-8F66-CE79BFCAC3F2}.Release|Any CPU.Build.0 = Release|Any CPU
+		{10613802-A371-4C27-8F66-CE79BFCAC3F2}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{10613802-A371-4C27-8F66-CE79BFCAC3F2}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{10613802-A371-4C27-8F66-CE79BFCAC3F2}.Release|Win32.ActiveCfg = Release|Any CPU
+		{10613802-A371-4C27-8F66-CE79BFCAC3F2}.Release|x64.ActiveCfg = Release|x64
+		{10613802-A371-4C27-8F66-CE79BFCAC3F2}.Release|x64.Build.0 = Release|x64
+		{10613802-A371-4C27-8F66-CE79BFCAC3F2}.Release|x86.ActiveCfg = Release|x64
+		{10613802-A371-4C27-8F66-CE79BFCAC3F2}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|Any CPU
+		{10613802-A371-4C27-8F66-CE79BFCAC3F2}.sanctionedBuildDebug|Any CPU.Build.0 = Debug|Any CPU
+		{10613802-A371-4C27-8F66-CE79BFCAC3F2}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{10613802-A371-4C27-8F66-CE79BFCAC3F2}.sanctionedBuildDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{10613802-A371-4C27-8F66-CE79BFCAC3F2}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|Any CPU
+		{10613802-A371-4C27-8F66-CE79BFCAC3F2}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{10613802-A371-4C27-8F66-CE79BFCAC3F2}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{10613802-A371-4C27-8F66-CE79BFCAC3F2}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x64
+		{97F9965D-6B3D-44F6-92B3-5880A3C7178E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{97F9965D-6B3D-44F6-92B3-5880A3C7178E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{97F9965D-6B3D-44F6-92B3-5880A3C7178E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{97F9965D-6B3D-44F6-92B3-5880A3C7178E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{97F9965D-6B3D-44F6-92B3-5880A3C7178E}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{97F9965D-6B3D-44F6-92B3-5880A3C7178E}.Debug|x64.ActiveCfg = Debug|x64
+		{97F9965D-6B3D-44F6-92B3-5880A3C7178E}.Debug|x64.Build.0 = Debug|x64
+		{97F9965D-6B3D-44F6-92B3-5880A3C7178E}.Debug|x86.ActiveCfg = Debug|x64
+		{97F9965D-6B3D-44F6-92B3-5880A3C7178E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{97F9965D-6B3D-44F6-92B3-5880A3C7178E}.Release|Any CPU.Build.0 = Release|Any CPU
+		{97F9965D-6B3D-44F6-92B3-5880A3C7178E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{97F9965D-6B3D-44F6-92B3-5880A3C7178E}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{97F9965D-6B3D-44F6-92B3-5880A3C7178E}.Release|Win32.ActiveCfg = Release|Any CPU
+		{97F9965D-6B3D-44F6-92B3-5880A3C7178E}.Release|x64.ActiveCfg = Release|x64
+		{97F9965D-6B3D-44F6-92B3-5880A3C7178E}.Release|x64.Build.0 = Release|x64
+		{97F9965D-6B3D-44F6-92B3-5880A3C7178E}.Release|x86.ActiveCfg = Release|x64
+		{97F9965D-6B3D-44F6-92B3-5880A3C7178E}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|Any CPU
+		{97F9965D-6B3D-44F6-92B3-5880A3C7178E}.sanctionedBuildDebug|Any CPU.Build.0 = Debug|Any CPU
+		{97F9965D-6B3D-44F6-92B3-5880A3C7178E}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{97F9965D-6B3D-44F6-92B3-5880A3C7178E}.sanctionedBuildDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{97F9965D-6B3D-44F6-92B3-5880A3C7178E}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|Any CPU
+		{97F9965D-6B3D-44F6-92B3-5880A3C7178E}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{97F9965D-6B3D-44F6-92B3-5880A3C7178E}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{97F9965D-6B3D-44F6-92B3-5880A3C7178E}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x64
+		{5055633B-6D1C-488D-B934-1AC482C915F7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{5055633B-6D1C-488D-B934-1AC482C915F7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{5055633B-6D1C-488D-B934-1AC482C915F7}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{5055633B-6D1C-488D-B934-1AC482C915F7}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{5055633B-6D1C-488D-B934-1AC482C915F7}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{5055633B-6D1C-488D-B934-1AC482C915F7}.Debug|x64.ActiveCfg = Debug|x64
+		{5055633B-6D1C-488D-B934-1AC482C915F7}.Debug|x64.Build.0 = Debug|x64
+		{5055633B-6D1C-488D-B934-1AC482C915F7}.Debug|x86.ActiveCfg = Debug|x64
+		{5055633B-6D1C-488D-B934-1AC482C915F7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{5055633B-6D1C-488D-B934-1AC482C915F7}.Release|Any CPU.Build.0 = Release|Any CPU
+		{5055633B-6D1C-488D-B934-1AC482C915F7}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{5055633B-6D1C-488D-B934-1AC482C915F7}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{5055633B-6D1C-488D-B934-1AC482C915F7}.Release|Win32.ActiveCfg = Release|Any CPU
+		{5055633B-6D1C-488D-B934-1AC482C915F7}.Release|x64.ActiveCfg = Release|x64
+		{5055633B-6D1C-488D-B934-1AC482C915F7}.Release|x64.Build.0 = Release|x64
+		{5055633B-6D1C-488D-B934-1AC482C915F7}.Release|x86.ActiveCfg = Release|x64
+		{5055633B-6D1C-488D-B934-1AC482C915F7}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|Any CPU
+		{5055633B-6D1C-488D-B934-1AC482C915F7}.sanctionedBuildDebug|Any CPU.Build.0 = Debug|Any CPU
+		{5055633B-6D1C-488D-B934-1AC482C915F7}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{5055633B-6D1C-488D-B934-1AC482C915F7}.sanctionedBuildDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{5055633B-6D1C-488D-B934-1AC482C915F7}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|Any CPU
+		{5055633B-6D1C-488D-B934-1AC482C915F7}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{5055633B-6D1C-488D-B934-1AC482C915F7}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{5055633B-6D1C-488D-B934-1AC482C915F7}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x64
+		{4C4235E5-DF5B-4C7A-91C3-1C3CDACF57D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{4C4235E5-DF5B-4C7A-91C3-1C3CDACF57D5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{4C4235E5-DF5B-4C7A-91C3-1C3CDACF57D5}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{4C4235E5-DF5B-4C7A-91C3-1C3CDACF57D5}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{4C4235E5-DF5B-4C7A-91C3-1C3CDACF57D5}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{4C4235E5-DF5B-4C7A-91C3-1C3CDACF57D5}.Debug|x64.ActiveCfg = Debug|x64
+		{4C4235E5-DF5B-4C7A-91C3-1C3CDACF57D5}.Debug|x64.Build.0 = Debug|x64
+		{4C4235E5-DF5B-4C7A-91C3-1C3CDACF57D5}.Debug|x86.ActiveCfg = Debug|x64
+		{4C4235E5-DF5B-4C7A-91C3-1C3CDACF57D5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{4C4235E5-DF5B-4C7A-91C3-1C3CDACF57D5}.Release|Any CPU.Build.0 = Release|Any CPU
+		{4C4235E5-DF5B-4C7A-91C3-1C3CDACF57D5}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{4C4235E5-DF5B-4C7A-91C3-1C3CDACF57D5}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{4C4235E5-DF5B-4C7A-91C3-1C3CDACF57D5}.Release|Win32.ActiveCfg = Release|Any CPU
+		{4C4235E5-DF5B-4C7A-91C3-1C3CDACF57D5}.Release|x64.ActiveCfg = Release|x64
+		{4C4235E5-DF5B-4C7A-91C3-1C3CDACF57D5}.Release|x64.Build.0 = Release|x64
+		{4C4235E5-DF5B-4C7A-91C3-1C3CDACF57D5}.Release|x86.ActiveCfg = Release|x64
+		{4C4235E5-DF5B-4C7A-91C3-1C3CDACF57D5}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|Any CPU
+		{4C4235E5-DF5B-4C7A-91C3-1C3CDACF57D5}.sanctionedBuildDebug|Any CPU.Build.0 = Debug|Any CPU
+		{4C4235E5-DF5B-4C7A-91C3-1C3CDACF57D5}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{4C4235E5-DF5B-4C7A-91C3-1C3CDACF57D5}.sanctionedBuildDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{4C4235E5-DF5B-4C7A-91C3-1C3CDACF57D5}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|Any CPU
+		{4C4235E5-DF5B-4C7A-91C3-1C3CDACF57D5}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{4C4235E5-DF5B-4C7A-91C3-1C3CDACF57D5}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{4C4235E5-DF5B-4C7A-91C3-1C3CDACF57D5}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x64
+		{FF9597E3-A4DD-4FDE-871D-B0C66088762F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{FF9597E3-A4DD-4FDE-871D-B0C66088762F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{FF9597E3-A4DD-4FDE-871D-B0C66088762F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{FF9597E3-A4DD-4FDE-871D-B0C66088762F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{FF9597E3-A4DD-4FDE-871D-B0C66088762F}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{FF9597E3-A4DD-4FDE-871D-B0C66088762F}.Debug|x64.ActiveCfg = Debug|x64
+		{FF9597E3-A4DD-4FDE-871D-B0C66088762F}.Debug|x64.Build.0 = Debug|x64
+		{FF9597E3-A4DD-4FDE-871D-B0C66088762F}.Debug|x86.ActiveCfg = Debug|x64
+		{FF9597E3-A4DD-4FDE-871D-B0C66088762F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{FF9597E3-A4DD-4FDE-871D-B0C66088762F}.Release|Any CPU.Build.0 = Release|Any CPU
+		{FF9597E3-A4DD-4FDE-871D-B0C66088762F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{FF9597E3-A4DD-4FDE-871D-B0C66088762F}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{FF9597E3-A4DD-4FDE-871D-B0C66088762F}.Release|Win32.ActiveCfg = Release|Any CPU
+		{FF9597E3-A4DD-4FDE-871D-B0C66088762F}.Release|x64.ActiveCfg = Release|x64
+		{FF9597E3-A4DD-4FDE-871D-B0C66088762F}.Release|x64.Build.0 = Release|x64
+		{FF9597E3-A4DD-4FDE-871D-B0C66088762F}.Release|x86.ActiveCfg = Release|x64
+		{FF9597E3-A4DD-4FDE-871D-B0C66088762F}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|Any CPU
+		{FF9597E3-A4DD-4FDE-871D-B0C66088762F}.sanctionedBuildDebug|Any CPU.Build.0 = Debug|Any CPU
+		{FF9597E3-A4DD-4FDE-871D-B0C66088762F}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{FF9597E3-A4DD-4FDE-871D-B0C66088762F}.sanctionedBuildDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{FF9597E3-A4DD-4FDE-871D-B0C66088762F}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|Any CPU
+		{FF9597E3-A4DD-4FDE-871D-B0C66088762F}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{FF9597E3-A4DD-4FDE-871D-B0C66088762F}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{FF9597E3-A4DD-4FDE-871D-B0C66088762F}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x64
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.Debug|Mixed Platforms.Build.0 = Debug|x64
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.Debug|Win32.ActiveCfg = Debug|x64
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.Debug|x64.ActiveCfg = Debug|x64
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.Debug|x64.Build.0 = Debug|x64
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.Debug|x86.ActiveCfg = Debug|x64
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.Release|Any CPU.Build.0 = Release|Any CPU
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.Release|Mixed Platforms.ActiveCfg = Release|x64
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.Release|Mixed Platforms.Build.0 = Release|x64
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.Release|Win32.ActiveCfg = Release|x64
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.Release|x64.ActiveCfg = Release|x64
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.Release|x64.Build.0 = Release|x64
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.Release|x86.ActiveCfg = Release|x64
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|Any CPU
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.sanctionedBuildDebug|Any CPU.Build.0 = Debug|Any CPU
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|x64
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.sanctionedBuildDebug|Mixed Platforms.Build.0 = Debug|x64
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|x64
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x64
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(NestedProjects) = preSolution
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51} = {DB2F0277-D3DB-45BA-8B62-944E1B04175B}
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A} = {DB2F0277-D3DB-45BA-8B62-944E1B04175B}
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A} = {DB2F0277-D3DB-45BA-8B62-944E1B04175B}
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE} = {DB2F0277-D3DB-45BA-8B62-944E1B04175B}
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA} = {DB2F0277-D3DB-45BA-8B62-944E1B04175B}
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF} = {6EC3B882-4C39-42B7-A8DB-59CDE849CD2D}
+		{9462282E-A3D8-4192-885C-891E778D9A3F} = {DB2F0277-D3DB-45BA-8B62-944E1B04175B}
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6} = {DB2F0277-D3DB-45BA-8B62-944E1B04175B}
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47} = {DB2F0277-D3DB-45BA-8B62-944E1B04175B}
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F} = {DB2F0277-D3DB-45BA-8B62-944E1B04175B}
+		{028E234C-10E7-401F-9A35-0EF3BED05E65} = {DB2F0277-D3DB-45BA-8B62-944E1B04175B}
+		{64BE2358-E700-4909-8665-8B10E2626691} = {DB2F0277-D3DB-45BA-8B62-944E1B04175B}
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38} = {DB2F0277-D3DB-45BA-8B62-944E1B04175B}
+		{0DDB5AAF-C707-4F65-9000-659A24504D36} = {DB2F0277-D3DB-45BA-8B62-944E1B04175B}
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE} = {DB2F0277-D3DB-45BA-8B62-944E1B04175B}
+		{4C4235E5-DF5B-4C7A-91C3-1C3CDACF57D5} = {DB2F0277-D3DB-45BA-8B62-944E1B04175B}
+		{FF9597E3-A4DD-4FDE-871D-B0C66088762F} = {0990975E-61ED-4178-88C7-4E965F7B1409}
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901} = {6EC3B882-4C39-42B7-A8DB-59CDE849CD2D}
+	EndGlobalSection
+EndGlobal

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/bootstrap
----------------------------------------------------------------------
diff --git a/geode-client-native/bootstrap b/geode-client-native/bootstrap
new file mode 100755
index 0000000..534be5a
--- /dev/null
+++ b/geode-client-native/bootstrap
@@ -0,0 +1,44 @@
+#/bin/bash
+
+set -e
+
+src_name=cmake
+src_version=3.4.1
+src_hash=d41462bdd80dc37f0d5608167b354bb3af8c068eee640be04c907154c5c113e2
+
+build_dir="`pwd`/build-artifacts"
+
+src_filename=${src_name}-${src_version}
+src_dir=${build_dir}/${src_filename}
+src_archive=${build_dir}/${src_filename}.tar.gz
+src_url=https://cmake.org/files/v3.4/${src_filename}.tar.gz
+
+
+install_dir="${build_dir}/${src_name}-prefix"
+
+if [ -d "${build_dir}" ]; then
+    echo " ${build_dir} does not exist"; 
+else
+     mkdir "${build_dir}";
+fi
+
+if [ -x buildfiles/nprocs ]; then
+  nprocs=`buildfiles/nprocs`
+fi
+
+if [ ! -f ${src_archive} ]; then
+	curl ${src_url} -o ${src_archive} --insecure
+fi
+
+if (! echo "${src_hash}  ${src_archive}" | sha256sum -c -); then
+	rm ${src_archive}
+	exit 1;
+	#TODO retry
+fi
+
+tar -zxf ${src_archive} -C ${build_dir}
+
+cd ${src_dir}
+./bootstrap --prefix=${install_dir} --parallel=${nprocs}
+gmake -j${nprocs} all install
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/build.sh
----------------------------------------------------------------------
diff --git a/geode-client-native/build.sh b/geode-client-native/build.sh
new file mode 100755
index 0000000..dfd5d86
--- /dev/null
+++ b/geode-client-native/build.sh
@@ -0,0 +1,179 @@
+#!/bin/bash
+# Set BASEDIR to be the toplevel checkout directory.
+# We do this so that BASEDIR can be used elsewhere if needed
+#set -xv
+
+
+echo "deprecated"
+exit 1
+
+BASEDIR=`/usr/bin/dirname $0`
+OLDPWD=$PWD
+cd $BASEDIR
+#export BASEDIR=`/usr/bin/dirname $PWD`
+export BASEDIR=$PWD
+cd $OLDPWD
+
+ulimit -c 500000
+
+unset GEMFIRE
+export GEMFIRE
+
+GCMDIR="${GCMDIR:-/export/gcm}"
+THIRDPARTY_BASE="${THIRDPARTY_BASE:-${GCMDIR}/where/cplusplus/thirdparty}"
+THIRDPARTY_JAVA_BASE="${THIRDPARTY_BASE}/common/jdk1.7.0_79"
+CYGWIN=""
+
+if [ -f $BASEDIR/myBuild.sh ]
+then 
+  . $BASEDIR/myBuild.sh
+fi
+
+if [ -x $BASEDIR/buildfiles/nprocs ]; then
+  nprocs=`$BASEDIR/buildfiles/nprocs`
+  ANT_ARGS="${ANT_ARGS} -Dant.make.threads=-j${nprocs}"
+fi
+
+
+if [ `uname` = "SunOS" ]; then
+  _PLAT="solaris"
+  PING="/usr/sbin/ping -s ldap.pune.gemstone.com 56 1"
+  if [ `uname -p` = "sparc" ]; then
+    _ARCH="sparc"
+    export THIRDPARTY=${CPP_THIRDPARTY:-${THIRDPARTY_BASE}/solaris}
+    logfile=buildSol.log
+  else
+    _ARCH="x86"
+    export THIRDPARTY=${CPP_THIRDPARTY:-${THIRDPARTY_BASE}/solx86}
+    logfile=buildsolx86.log
+  fi
+
+  echo "Building for ${_PLAT} on ${_ARCH}"
+
+  export JAVA_HOME=${ALT_JAVA_HOME:-${THIRDPARTY_JAVA_BASE}/${_ARCH}.Solaris}
+  
+  export CC_HOME=${ALT_CC_HOME:-/export/gcm/where/cplusplus/compiler/solaris/${_ARCH}/sunstudio12.1/prod}
+  if [ -x "${CC_HOME}/bin/CC" ]; then
+    export SunCompilerDir=${CC_HOME}/bin
+  else
+    echo "Sun C++ compiler not found at ${CC_HOME}";
+    exit 1
+  fi
+
+  export PATH=$SunCompilerDir:$PATH
+
+#  RequiredVer2="CC: Sun C++ 5.10 SunOS_i386 128229-09 2010/06/24"
+  SunCompilerVer=`$SunCompilerDir/CC -V 2>&1 `
+  echo "Using Sun C++ from $SunCompilerDir "
+  echo "    version   $SunCompilerVer "
+
+elif [ `uname` = "Linux" ]; then
+
+  PING=`ping -c 1 ldap.pune.gemstone.com`
+  
+  export THIRDPARTY=${CPP_THIRDPARTY:-${THIRDPARTY_BASE}/linux}
+
+  #GCCBIN=${THIRDPARTY}/gcc3_2_3/bin
+  export GCCBIN=/usr/bin
+  export JAVA_HOME=${ALT_JAVA_HOME:-${THIRDPARTY_JAVA_BASE}/x86.linux}
+  export PATH=${GCCBIN}:$PATH
+  export GccCCompiler=${GCCBIN}/gcc
+  export GccCplusplusCompiler=${GCCBIN}/g++
+
+  GccCompilerVer=`$GccCCompiler --version | head -1  2>&1 `
+
+  echo "Using gcc version: $GccCompilerVer"
+  logfile=buildLinux.log
+  export PATH=`dirname $GccCplusplusCompiler`:$PATH
+else
+  echo "Defaulting to Windows build"
+  PING=`$SYSTEMROOT/system32/ping -n 1 ldap.pune.gemstone.com`
+  # suppress DOS path warnings
+  if [ -z "${CYGWIN}" ]; then
+    export CYGWIN="nodosfilewarning"
+  else
+    export CYGWIN="${CYGWIN} nodosfilewarning"
+  fi
+  THIRDPARTY_BASE=${THIRDPARTY_BASE:-${GCMDIR}/where/cplusplus/thirdparty}
+  export THIRDPARTY=${CPP_THIRDPARTY:-${THIRDPARTY_BASE}/windows}
+  export DXROOT=${THIRDPARTY}/sandcastle_2.7.1.0
+  export SHFBROOT=${THIRDPARTY}/SandcastleBuilder_1.9.5.0
+ 
+  . ./buildfiles/vcvars32_10.sh
+  
+  logfile=buildWin.log
+  NO_BUILD_LOG=1
+  # detect compiler version
+  CYGWIN=true
+fi
+
+export ANT_HOME=${ALT_ANT_HOME:-${THIRDPARTY_BASE}/common/ant/apache-ant-1.8.4}
+if [ -z "${CYGWIN}" ]; then
+  export PATH="${ANT_HOME}/bin:${JAVA_HOME}/bin:${PATH}"
+else
+  export JAVA_HOME=${ALT_JAVA_HOME:-${THIRDPARTY_JAVA_BASE}/x86.Windows_NT}
+  export PATH="`cygpath "${ANT_HOME}/bin"`:`cygpath "${JAVA_HOME}/bin"`:${PATH}"
+fi
+unset CLASSPATH
+
+export ANT_OPTS=-Xmx200M
+
+function logant {
+  if [[ `uname` == "SunOS" || `uname` == "Linux" ]]; then
+    rm -f .xbuildfailure
+    ( $ANT_HOME/bin/ant --noconfig -Dthirdparty.dir=${THIRDPARTY} -Dthirdparty_base.dir=${THIRDPARTY_BASE} -Dgcm.dir=${GCMDIR} ${ANT_ARGS} "$@" || echo "$?" > .xbuildfailure ) 2>&1 | tee $logfile
+    if [ -r .xbuildfailure ]; then
+      read stat <.xbuildfailure
+      rm -f .xbuildfailure
+      exit $stat
+    fi
+  else
+	# cygwin tee causes hang on windows
+    $ANT_HOME/bin/ant --noconfig -Dplatforms="Win32" -DVCVER=10 -Dthirdparty.dir=${THIRDPARTY} -Dthirdparty_base.dir=${THIRDPARTY_BASE} -Dgcm.dir=${GCMDIR} ${ANT_ARGS} "$@"
+  fi
+}
+
+echo "JAVA_HOME = $JAVA_HOME"
+echo "ANT_HOME = $ANT_HOME"
+date "+%a %D %H.%M.%S"
+
+# setup the LDAP server for Pune/Beaverton networks;
+
+if [ -z "${LDAP_SERVER}" ]; then
+  # Solaris ping returns extra character so trim this off for that platform only
+  if [ `uname` = "SunOS" ]; then
+    PINGTEMP=`echo $PING | sed -n 's/^.* time[^ ]\([0-9\.]*\).*$/\1/p'`
+    echo PINGTEMP | grep \. >/dev/null
+    if [ $? -eq 0 ]; then
+      PING=`echo $PINGTEMP | sed s'/.$//'`
+    else
+      PING=$PINGTEMP
+    fi
+    if expr `echo $PING '<' 50` >/dev/null 2>/dev/null; then
+      LDAP_SERVER="ldap.pune.gemstone.com"
+    else
+      LDAP_SERVER="ldap.gemstone.com"
+    fi
+  else
+    if expr `echo $PING | sed -n 's/^.* time[^ ]\([0-9\.]*\).*$/\1/p'` '<' 50 >/dev/null 2>/dev/null; then
+      LDAP_SERVER="ldap.pune.gemstone.com"
+    else
+      LDAP_SERVER="ldap.gemstone.com"
+    fi
+  fi
+fi
+
+export LDAP_SERVER
+echo "Using LDAP server: $LDAP_SERVER"
+
+# ant likes to be in the directory that build.xml is in
+{ cd "${BASEDIR}" &&
+if [[ "x$NO_BUILD_LOG" = "x" ]]; then
+  logant "$@"
+else
+  echo "running $ANT_HOME/bin/ant "
+  $ANT_HOME/bin/ant --noconfig -Dplatforms="Win32" -DVCVER=10 -Dthirdparty.dir=${THIRDPARTY} -Dthirdparty_base.dir=${THIRDPARTY_BASE} -Dgcm.dir=${GCMDIR} "$@"
+fi; }
+result=$?
+date "+%a %D %H.%M.%S"
+exit $result


[09/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/RegionShortcutM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/RegionShortcutM.hpp b/geode-client-native/src/clicache/RegionShortcutM.hpp
new file mode 100755
index 0000000..0ee8f91
--- /dev/null
+++ b/geode-client-native/src/clicache/RegionShortcutM.hpp
@@ -0,0 +1,66 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+
+using namespace System;
+using namespace System::Runtime::InteropServices;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {    
+    /// <summary> 
+    /// Each enum represents a predefined <see cref="RegionAttributes" /> in a <see cref="Cache" />.
+    /// These enum values can be used to create regions using a <see cref="RegionFactory" />
+    /// obtained by calling <see cref="Cache.CreateRegionFactory(RegionShortcut) />.
+    /// <p>Another way to use predefined region attributes is in cache.xml by setting
+    /// the refid attribute on a region element or region-attributes element to the
+    /// string of each value.
+    /// </summary>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public enum class RegionShortcut {
+
+        /// <summary>
+        /// A PROXY region has no local state and forwards all operations to a server.
+        /// </summary>
+        PROXY,
+
+        /// <summary>
+        /// A CACHING_PROXY region has local state but can also send operations to a server.
+        /// If the local state is not found then the operation is sent to the server
+        /// and the local state is updated to contain the server result.
+        /// </summary>
+        CACHING_PROXY,
+          
+        /// <summary>
+        /// A CACHING_PROXY_ENTRY_LRU region has local state but can also send operations to a server.
+        /// If the local state is not found then the operation is sent to the server
+        /// and the local state is updated to contain the server result.
+        /// It will also destroy entries once it detects that the number of enteries crossing default limit of #100000.
+        /// </summary>
+        CACHING_PROXY_ENTRY_LRU,
+        
+        /// <summary>
+        /// A LOCAL region only has local state and never sends operations to a server.
+        /// </summary>
+        LOCAL,
+
+       /// <summary>
+       /// A LOCAL_ENTRY_LRU region only has local state and never sends operations to a server.
+       /// It will also destroy entries once it detects once it detects that the number of enteries crossing default limit of #100000.
+       /// </summary>
+       LOCAL_ENTRY_LRU
+      } ;
+    }
+  }
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/ResultCollectorM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/ResultCollectorM.cpp b/geode-client-native/src/clicache/ResultCollectorM.cpp
new file mode 100644
index 0000000..b2e81ba
--- /dev/null
+++ b/geode-client-native/src/clicache/ResultCollectorM.cpp
@@ -0,0 +1,63 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "ResultCollectorM.hpp"
+#include "ExceptionTypesM.hpp"
+#include "impl/SafeConvert.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      void ResultCollector::AddResult( IGFSerializable^ rs )
+      {
+	  _GF_MG_EXCEPTION_TRY
+	  
+      gemfire::Serializable * result = SafeMSerializableConvert(rs);
+      NativePtr->addResult( result==NULL ? (NULLPTR) : (gemfire::CacheablePtr(result)) );
+	  
+         _GF_MG_EXCEPTION_CATCH_ALL
+      }
+      array<IGFSerializable^>^  ResultCollector::GetResult()
+      {
+	return GetResult( DEFAULT_QUERY_RESPONSE_TIMEOUT );
+      }
+      array<IGFSerializable^>^  ResultCollector::GetResult(UInt32 timeout)
+      {
+	  _GF_MG_EXCEPTION_TRY
+	  gemfire::CacheableVectorPtr results = NativePtr->getResult(timeout);
+	  array<IGFSerializable^>^ rs =
+	       gcnew array<IGFSerializable^>( results->size( ) );
+	  for( int32_t index = 0; index < results->size( ); index++ )
+	  {
+	        gemfire::CacheablePtr& nativeptr(results->operator[](index));
+
+                rs[ index] =  SafeUMSerializableConvert( nativeptr.ptr( ) );
+          }
+          return rs;
+         _GF_MG_EXCEPTION_CATCH_ALL
+      }
+      void ResultCollector::EndResults()
+      {
+	_GF_MG_EXCEPTION_TRY
+	 NativePtr->endResults();
+	_GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void ResultCollector::ClearResults()
+      {
+      }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/ResultCollectorM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/ResultCollectorM.hpp b/geode-client-native/src/clicache/ResultCollectorM.hpp
new file mode 100644
index 0000000..45ed417
--- /dev/null
+++ b/geode-client-native/src/clicache/ResultCollectorM.hpp
@@ -0,0 +1,105 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "IResultCollector.hpp"
+#include "cppcache/ResultCollector.hpp"
+#include "impl/NativeWrapper.hpp"
+
+
+using namespace System;
+using namespace System::Collections::Generic;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+	interface class IResultCollector;
+
+      /// <summary>
+      /// collect function execution results, default collector
+      /// </summary>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class ResultCollector
+        : public Internal::SBWrap<gemfire::ResultCollector>, public IResultCollector
+      {
+      public:
+
+        /// <summary>
+        /// add result from a single function execution
+        /// </summary>
+        virtual void AddResult( IGFSerializable^ rs );
+
+        /// <summary>
+        /// get result 
+        /// </summary>
+	virtual array<IGFSerializable^>^  GetResult(); 
+
+        /// <summary>
+        /// get result 
+        /// </summary>
+	virtual array<IGFSerializable^>^  GetResult(UInt32 timeout); 
+
+        /// <summary>
+        ///Call back provided to caller, which is called after function execution is
+	///complete and caller can retrieve results using getResult()
+        /// </summary>
+	virtual void EndResults(); 
+
+  virtual void ClearResults();
+
+      internal:
+
+        /// <summary>
+        /// Default constructor.
+        /// </summary>
+        inline ResultCollector( ):
+           SBWrap( ){ }
+
+        //inline ~ResultCollector( ) { }
+
+        /// <summary>
+        /// Internal constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline ResultCollector( gemfire::ResultCollector* nativeptr ):
+          SBWrap( nativeptr ){ }
+
+        /// <summary>
+        /// Used to assign the native Serializable pointer to a new object.
+        /// </summary>
+        /// <remarks>
+        /// Note the order of preserveSB() and releaseSB(). This handles the
+        /// corner case when <c>m_nativeptr</c> is same as <c>nativeptr</c>.
+        /// </remarks>
+        inline void AssignSP( gemfire::ResultCollector* nativeptr )
+        {
+          AssignPtr( nativeptr );
+        }
+
+        /// <summary>
+        /// Used to assign the native CqListener pointer to a new object.
+        /// </summary>
+        inline void SetSP( gemfire::ResultCollector* nativeptr )
+        {
+          if ( nativeptr != nullptr ) {
+            nativeptr->preserveSB( );
+          }
+          _SetNativePtr( nativeptr );
+        }
+
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/ResultSetM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/ResultSetM.cpp b/geode-client-native/src/clicache/ResultSetM.cpp
new file mode 100644
index 0000000..c6207e6
--- /dev/null
+++ b/geode-client-native/src/clicache/ResultSetM.cpp
@@ -0,0 +1,66 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "ResultSetM.hpp"
+#include "SelectResultsIteratorM.hpp"
+#include "impl/SafeConvert.hpp"
+#include "ExceptionTypesM.hpp"
+
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      bool ResultSet::IsModifiable::get( )
+      {
+        return NativePtr->isModifiable( );
+      }
+
+      int32_t ResultSet::Size::get( )
+      {
+        return NativePtr->size( );
+      }
+
+      IGFSerializable^ ResultSet::default::get( size_t index )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          return SafeUMSerializableConvert(NativePtr->operator[](static_cast<int32_t>(index)).ptr());
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      SelectResultsIterator^ ResultSet::GetIterator( )
+      {
+        gemfire::SelectResultsIterator* nativeptr =
+          new gemfire::SelectResultsIterator( NativePtr->getIterator( ) );
+
+        return SelectResultsIterator::Create( nativeptr );
+      }
+
+      System::Collections::Generic::IEnumerator<IGFSerializable^>^
+        ResultSet::GetEnumerator( )
+      {
+        return GetIterator( );
+      }
+
+      System::Collections::IEnumerator^ ResultSet::GetIEnumerator( )
+      {
+        return GetIterator( );
+      }
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/ResultSetM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/ResultSetM.hpp b/geode-client-native/src/clicache/ResultSetM.hpp
new file mode 100644
index 0000000..5f31659
--- /dev/null
+++ b/geode-client-native/src/clicache/ResultSetM.hpp
@@ -0,0 +1,111 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/ResultSet.hpp"
+#include "impl/NativeWrapper.hpp"
+#include "ISelectResults.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      ref class SelectResultsIterator;
+      interface class IGFSerializable;
+
+      /// <summary>
+      /// Encapsulates a query result set.
+      /// It specifies the interface for the resultset obtained from the
+      /// Gemfire cache server
+      /// </summary>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class ResultSet sealed
+        : public Internal::SBWrap<gemfire::ResultSet>, public ISelectResults
+      {
+      public:
+
+        /// <summary>
+        /// True if this <c>ResultSet</c> is modifiable.
+        /// </summary>
+        virtual property bool IsModifiable
+        {
+          virtual bool get( );
+        }
+
+        /// <summary>
+        /// The size of the <c>ResultSet</c>.
+        /// </summary>
+        virtual property int32_t Size
+        {
+          virtual int32_t get( );
+        }
+
+        /// <summary>
+        /// Get an object at the given index.
+        /// </summary>
+        virtual property IGFSerializable^ GFINDEXER( size_t )
+        {
+          virtual IGFSerializable^ get( size_t index );
+        }
+
+        /// <summary>
+        /// Get an iterator for the result set.
+        /// </summary>
+        virtual SelectResultsIterator^ GetIterator( );
+
+        /// <summary>
+        /// Returns an enumerator that iterates through the collection.
+        /// </summary>
+        /// <returns>
+        /// A <c>System.Collections.Generic.IEnumerator</c> that
+        /// can be used to iterate through the <c>ResultSet</c>.
+        /// </returns>
+        virtual System::Collections::Generic::IEnumerator<IGFSerializable^>^
+          GetEnumerator( );
+
+
+      internal:
+
+        /// <summary>
+        /// Internal factory function to wrap a native object pointer inside
+        /// this managed class with null pointer check.
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        /// <returns>
+        /// The managed wrapper object; null if the native pointer is null.
+        /// </returns>
+        inline static ResultSet^ Create(gemfire::ResultSet* nativeptr)
+        {
+          return (nativeptr != nullptr ? gcnew ResultSet(nativeptr) : nullptr);
+        }
+
+
+      private:
+
+        virtual System::Collections::IEnumerator^ GetIEnumerator( ) sealed
+          = System::Collections::IEnumerable::GetEnumerator;
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline ResultSet(gemfire::ResultSet* nativeptr)
+          : SBWrap(nativeptr) { }
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/ScopeTypeM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/ScopeTypeM.hpp b/geode-client-native/src/clicache/ScopeTypeM.hpp
new file mode 100644
index 0000000..b1c3500
--- /dev/null
+++ b/geode-client-native/src/clicache/ScopeTypeM.hpp
@@ -0,0 +1,134 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/ScopeType.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      /// <summary>
+      /// Enumerated type for region distribution scope.
+      /// Contains values for setting <c>Scope</c>.
+      /// Local scope is invalid (it is a non-native client local region), and
+      /// DistributedAck and DistributedNoAck have the same behavior.
+      /// </summary>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public enum class ScopeType
+      {
+        /// <summary>No distribution.</summary>
+        Local = 0,
+
+        /// <summary>
+        /// Distribute without waiting for acknowledgement.
+        /// </summary>
+        DistributedNoAck,
+
+        /// <summary>
+        /// Distribute and wait for all peers to acknowledge.
+        /// </summary>
+        DistributedAck,
+
+        /// <summary>
+        /// Distribute with full interprocess synchronization
+        /// -- NOT IMPLEMENTED.
+        /// </summary>
+        Global,
+
+        /// <summary>Invalid scope.</summary>
+        Invalid
+      };
+
+
+      /// <summary>
+      /// Static class containing convenience methods for <c>ScopeType</c>.
+      /// </summary>
+      /// <seealso cref="RegionAttributes.Scope" />
+      /// <seealso cref="AttributesFactory.SetScope" />
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]        
+      public ref class Scope STATICCLASS
+      {
+      public:
+
+        /// <summary>
+        /// True if the given scope is local.
+        /// </summary>
+        /// <param name="type">scope</param>
+        /// <returns>true if <c>Local</c></returns>
+        inline static bool IsLocal( ScopeType type )
+        {
+          return (type == ScopeType::Local);
+        }
+
+        /// <summary>
+        /// True if the given scope is one of the distributed scopes.
+        /// </summary>
+        /// <param name="type">scope</param>
+        /// <returns>
+        /// true if other than <c>Local</c>; could be <c>Invalid</c>
+        /// </returns>
+        inline static bool IsDistributed( ScopeType type ) 
+        {
+          return (type != ScopeType::Local);
+        }
+
+        /// <summary>
+        /// True if the given scope is distributed-no-ack.
+        /// </summary>
+        /// <param name="type">scope</param>
+        /// <returns>true if <c>DistributedNoAck</c></returns>
+        inline static bool IsDistributedNoAck( ScopeType type ) 
+        {
+          return (type == ScopeType::DistributedNoAck);
+        }
+
+        /// <summary>
+        /// True if the given scope is distributed-ack.
+        /// </summary>
+        /// <param name="type">scope</param>
+        /// <returns>true if <c>DistributedAck</c></returns>
+        inline static bool IsDistributedAck( ScopeType type ) 
+        {
+          return (type == ScopeType::DistributedAck);
+        }
+
+        ///// <summary>
+        ///// True if the given scope is global.
+        ///// </summary>
+        ///// <param name="type">scope</param>
+        ///// <returns>true if <c>Global</c></returns>
+        //inline static bool IsGlobal( ScopeType type ) 
+        //{
+        //  return (type == ScopeType::Global);
+        //}
+
+        /// <summary>
+        /// True if acknowledgements are required for the given scope.
+        /// </summary>
+        /// <param name="type">scope</param>
+        /// <returns>
+        /// true if <c>DistributedAck</c>, false otherwise
+        /// </returns>
+        inline static bool IsAck( ScopeType type )
+        {
+          return (type == ScopeType::DistributedAck);
+        }
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/SelectResultsIteratorM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/SelectResultsIteratorM.cpp b/geode-client-native/src/clicache/SelectResultsIteratorM.cpp
new file mode 100644
index 0000000..fdd4899
--- /dev/null
+++ b/geode-client-native/src/clicache/SelectResultsIteratorM.cpp
@@ -0,0 +1,50 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "SelectResultsIteratorM.hpp"
+#include "impl/SafeConvert.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      IGFSerializable^ SelectResultsIterator::Current::get( )
+      {
+        return SafeUMSerializableConvert( NativePtr->current( ).ptr( ) );
+      }
+
+      bool SelectResultsIterator::MoveNext( )
+      {
+        return NativePtr->moveNext( );
+      }
+
+      void SelectResultsIterator::Reset( )
+      {
+        NativePtr->reset( );
+      }
+
+      IGFSerializable^ SelectResultsIterator::Next( )
+      {
+        return SafeUMSerializableConvert( NativePtr->next( ).ptr( ) );
+      }
+
+      bool SelectResultsIterator::HasNext::get( )
+      {
+        return NativePtr->hasNext( );
+      }
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/SelectResultsIteratorM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/SelectResultsIteratorM.hpp b/geode-client-native/src/clicache/SelectResultsIteratorM.hpp
new file mode 100644
index 0000000..ec40a51
--- /dev/null
+++ b/geode-client-native/src/clicache/SelectResultsIteratorM.hpp
@@ -0,0 +1,120 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/SelectResultsIterator.hpp"
+#include "impl/NativeWrapper.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      interface class IGFSerializable;
+
+      /// <summary>
+      /// Iterator for a query result.
+      /// </summary>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class SelectResultsIterator sealed
+        : public Internal::UMWrap<gemfire::SelectResultsIterator>,
+        public System::Collections::Generic::IEnumerator<IGFSerializable^>
+      {
+      public:
+
+        /// <summary>
+        /// Gets the element in the collection at the current
+        /// position of the enumerator.
+        /// </summary>
+        /// <returns>
+        /// The element in the collection at the current position
+        /// of the enumerator.
+        /// </returns>
+        virtual property IGFSerializable^ Current
+        {
+          virtual IGFSerializable^ get( );
+        }
+
+        /// <summary>
+        /// Advances the enumerator to the next element of the collection.
+        /// </summary>
+        /// <returns>
+        /// true if the enumerator was successfully advanced to the next
+        /// element; false if the enumerator has passed the end of
+        /// the collection.
+        /// </returns>
+        virtual bool MoveNext( );
+
+        /// <summary>
+        /// Sets the enumerator to its initial position, which is before
+        /// the first element in the collection.
+        /// </summary>
+        virtual void Reset( );
+
+        /// <summary>
+        /// Get the current element and move to the next one.
+        /// </summary>
+        IGFSerializable^ Next( );
+
+        /// <summary>
+        /// Check if there is a next element.
+        /// </summary>
+        property bool HasNext
+        {
+          bool get( );
+        }
+
+
+      internal:
+
+        /// <summary>
+        /// Internal factory function to wrap a native object pointer inside
+        /// this managed class with null pointer check.
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        /// <returns>
+        /// The managed wrapper object; null if the native pointer is null.
+        /// </returns>
+        inline static SelectResultsIterator^ Create(
+          gemfire::SelectResultsIterator* nativeptr )
+        {
+          return ( nativeptr != nullptr ?
+            gcnew SelectResultsIterator( nativeptr ) : nullptr );
+        }
+
+
+      private:
+
+        virtual property Object^ ICurrent
+        {
+          virtual Object^ get( ) sealed
+            = System::Collections::IEnumerator::Current::get
+          {
+            return Current;
+          }
+        }
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline SelectResultsIterator(
+          gemfire::SelectResultsIterator* nativeptr )
+          : UMWrap( nativeptr, true ) { }
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/SerializableM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/SerializableM.cpp b/geode-client-native/src/clicache/SerializableM.cpp
new file mode 100644
index 0000000..bee2e06
--- /dev/null
+++ b/geode-client-native/src/clicache/SerializableM.cpp
@@ -0,0 +1,279 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "cppcache/impl/SerializationRegistry.hpp"
+
+#include "gf_includes.hpp"
+#include "SerializableM.hpp"
+#include "impl/DelegateWrapper.hpp"
+#include "com/vmware/impl/DelegateWrapperN.hpp"
+#include "DataOutputM.hpp"
+#include "DataInputM.hpp"
+#include "CacheableStringM.hpp"
+#include "CacheableStringArrayM.hpp"
+
+#include "LogM.hpp"
+
+#include "CacheableBuiltinsM.hpp"
+#include "ExceptionTypesM.hpp"
+#include "impl/SafeConvert.hpp"
+#include <cppcache/impl/GemfireTypeIdsImpl.hpp>
+#include "com/vmware/CacheableHashMapMN.hpp"
+#include "com/vmware/CacheableHashTableMN.hpp"
+#include "CacheableArrayListM.hpp" 
+#include "PropertiesM.hpp"
+
+using namespace System;
+//using namespace System::Collections::Generic;
+
+using namespace gemfire;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      void GemStone::GemFire::Cache::Serializable::ToData(GemStone::GemFire::Cache::DataOutput^ output)
+      {
+        gemfire::DataOutput* nativeOutput =
+          GetNativePtr<gemfire::DataOutput>(output);
+        NativePtr->toData(*nativeOutput);        
+      }
+      GemStone::GemFire::Cache::IGFSerializable^ GemStone::GemFire::Cache::Serializable::FromData(GemStone::GemFire::Cache::DataInput^ input)
+      {
+        gemfire::DataInput* nativeInput =
+          GetNativePtr<gemfire::DataInput>(input);
+        AssignSP(NativePtr->fromData(*nativeInput));
+        return this;
+      }
+
+      uint32_t GemStone::GemFire::Cache::Serializable::ObjectSize::get()
+      {
+        return NativePtr->objectSize();
+      }
+
+      uint32_t GemStone::GemFire::Cache::Serializable::ClassId::get()
+      {
+        int8_t typeId = NativePtr->typeId();
+        if (typeId == gemfire::GemfireTypeIdsImpl::CacheableUserData ||
+             typeId == gemfire::GemfireTypeIdsImpl::CacheableUserData2 ||
+             typeId == gemfire::GemfireTypeIdsImpl::CacheableUserData4) {
+          return NativePtr->classId();
+        } else {
+          return typeId + 0x80000000 + (0x20000000 * NativePtr->DSFID());
+        }
+      }
+
+      String^ GemStone::GemFire::Cache::Serializable::ToString()
+      {
+        gemfire::CacheableStringPtr& cStr = NativePtr->toString();
+        if (cStr->isWideString()) {
+          return ManagedString::Get(cStr->asWChar());
+        } else {
+          return ManagedString::Get(cStr->asChar());
+        }
+      }
+
+      GemStone::GemFire::Cache::Serializable::operator GemStone::GemFire::Cache::Serializable^ (Byte value)
+      {
+        return (GemStone::GemFire::Cache::Serializable^) GemStone::GemFire::Cache::CacheableByte::Create(value);
+      }
+
+      GemStone::GemFire::Cache::Serializable::operator GemStone::GemFire::Cache::Serializable^ (bool value)
+      {
+        return (GemStone::GemFire::Cache::Serializable^)GemStone::GemFire::Cache::CacheableBoolean::Create(value);
+      }
+
+      GemStone::GemFire::Cache::Serializable::operator GemStone::GemFire::Cache::Serializable^ (array<bool>^ value)
+      {
+        return (GemStone::GemFire::Cache::Serializable^)GemStone::GemFire::Cache::BooleanArray::Create(value);
+      }
+
+      GemStone::GemFire::Cache::Serializable::operator GemStone::GemFire::Cache::Serializable^ (array<Byte>^ value)
+      {
+        return (GemStone::GemFire::Cache::Serializable^)GemStone::GemFire::Cache::CacheableBytes::Create(value);
+      }
+
+      GemStone::GemFire::Cache::Serializable::operator GemStone::GemFire::Cache::Serializable^ (Char value)
+      {
+        return (GemStone::GemFire::Cache::Serializable^)CacheableCharacter::Create(value);
+      }
+
+      GemStone::GemFire::Cache::Serializable::operator GemStone::GemFire::Cache::Serializable^ (array<Char>^ value)
+      {
+        return (GemStone::GemFire::Cache::Serializable^)GemStone::GemFire::Cache::CharArray::Create(value);
+      }
+
+      GemStone::GemFire::Cache::Serializable::operator GemStone::GemFire::Cache::Serializable^ (Double value)
+      {
+        return (GemStone::GemFire::Cache::Serializable^)GemStone::GemFire::Cache::CacheableDouble::Create(value);
+      }
+
+      GemStone::GemFire::Cache::Serializable::operator GemStone::GemFire::Cache::Serializable^ (array<Double>^ value)
+      {
+        return (GemStone::GemFire::Cache::Serializable^)GemStone::GemFire::Cache::CacheableDoubleArray::Create(value);
+      }
+
+      GemStone::GemFire::Cache::Serializable::operator GemStone::GemFire::Cache::Serializable^ (Single value)
+      {
+        return (GemStone::GemFire::Cache::Serializable^)GemStone::GemFire::Cache::CacheableFloat::Create(value);
+      }
+
+      GemStone::GemFire::Cache::Serializable::operator GemStone::GemFire::Cache::Serializable^ (array<Single>^ value)
+      {
+        return (GemStone::GemFire::Cache::Serializable^)GemStone::GemFire::Cache::CacheableFloatArray::Create(value);
+      }
+
+      GemStone::GemFire::Cache::Serializable::operator GemStone::GemFire::Cache::Serializable^ (int16_t value)
+      {
+        return (GemStone::GemFire::Cache::Serializable^)GemStone::GemFire::Cache::CacheableInt16::Create(value);
+      }
+
+      GemStone::GemFire::Cache::Serializable::operator GemStone::GemFire::Cache::Serializable^ (array<int16_t>^ value)
+      {
+        return (GemStone::GemFire::Cache::Serializable^)GemStone::GemFire::Cache::CacheableInt16Array::Create(value);
+      }
+
+      GemStone::GemFire::Cache::Serializable::operator GemStone::GemFire::Cache::Serializable^ (int32_t value)
+      {
+        return (GemStone::GemFire::Cache::Serializable^)CacheableInt32::Create(value);
+      }
+
+      GemStone::GemFire::Cache::Serializable::operator GemStone::GemFire::Cache::Serializable^ (array<int32_t>^ value)
+      {
+        return (GemStone::GemFire::Cache::Serializable^)GemStone::GemFire::Cache::CacheableInt32Array::Create(value);
+      }
+
+      GemStone::GemFire::Cache::Serializable::operator GemStone::GemFire::Cache::Serializable^ (int64_t value)
+      {
+        return (GemStone::GemFire::Cache::Serializable^)GemStone::GemFire::Cache::CacheableInt64::Create(value);
+      }
+
+      /*GemStone::GemFire::Cache::*/Serializable::operator /*GemStone::GemFire::Cache::*/Serializable^ (array<int64_t>^ value)
+      {
+        return (GemStone::GemFire::Cache::Serializable^)GemStone::GemFire::Cache::CacheableInt64Array::Create(value);
+      }
+
+      GemStone::GemFire::Cache::Serializable::operator GemStone::GemFire::Cache::Serializable^ (String^ value)
+      {
+        return (GemStone::GemFire::Cache::Serializable^)GemStone::GemFire::Cache::CacheableString::Create(value);
+      }
+
+      GemStone::GemFire::Cache::Serializable::operator GemStone::GemFire::Cache::Serializable^ (array<String^>^ value)
+      {
+        return (GemStone::GemFire::Cache::Serializable^)GemStone::GemFire::Cache::CacheableStringArray::Create(value);
+      }
+
+      void GemStone::GemFire::Cache::Serializable::RegisterType(TypeFactoryMethod^ creationMethod)
+      {
+        if (creationMethod == nullptr) {
+          throw gcnew IllegalArgumentException("Serializable.RegisterType(): "
+            "null TypeFactoryMethod delegate passed");
+        }
+
+        //--------------------------------------------------------------
+        
+        //adding user type as well in global builtin hashmap
+        int64_t classId = ((int64_t)creationMethod()->ClassId);
+        if (!ManagedDelegates->ContainsKey(classId))
+          ManagedDelegates->Add(classId, creationMethod);
+
+        DelegateWrapper^ delegateObj = gcnew DelegateWrapper(creationMethod);
+        TypeFactoryNativeMethod^ nativeDelegate =
+          gcnew TypeFactoryNativeMethod(delegateObj,
+          &DelegateWrapper::NativeDelegate);
+
+        // this is avoid object being Gced
+        NativeDelegates->Add(nativeDelegate);
+        
+        // register the type in the DelegateMap, this is pure c# for create domain object 
+        IGFSerializable^ tmp = creationMethod();
+        Log::Fine("Registering serializable class ID " + tmp->ClassId +
+          ", AppDomain ID " + System::Threading::Thread::GetDomainID());
+        DelegateMap[tmp->ClassId] = creationMethod;
+
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::Serializable::registerType((gemfire::TypeFactoryMethod)
+            System::Runtime::InteropServices::Marshal::
+            GetFunctionPointerForDelegate(nativeDelegate).ToPointer());
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void GemStone::GemFire::Cache::Serializable::RegisterType(Byte typeId,
+        TypeFactoryMethod^ creationMethod)
+      {
+        if (creationMethod == nullptr) {
+          throw gcnew IllegalArgumentException("Serializable.RegisterType(): "
+            "null TypeFactoryMethod delegate passed");
+        }
+        DelegateWrapper^ delegateObj = gcnew DelegateWrapper(creationMethod);
+        TypeFactoryNativeMethod^ nativeDelegate =
+          gcnew TypeFactoryNativeMethod(delegateObj,
+          &DelegateWrapper::NativeDelegate);
+
+        BuiltInDelegates[typeId] = nativeDelegate;
+
+          //This is hashmap for manged builtin objects
+        if (!ManagedDelegates->ContainsKey(typeId + 0x80000000))
+          ManagedDelegates->Add(typeId + 0x80000000, creationMethod);
+
+        // register the type in the DelegateMap
+        IGFSerializable^ tmp = creationMethod();
+        Log::Finer("Registering(,) serializable class ID " + tmp->ClassId +
+          ", AppDomain ID " + System::Threading::Thread::GetDomainID());
+        DelegateMap[tmp->ClassId] = creationMethod;
+
+        try
+        {
+          gemfire::SerializationRegistry::addType(typeId,
+            (gemfire::TypeFactoryMethod)System::Runtime::InteropServices::
+            Marshal::GetFunctionPointerForDelegate(
+            nativeDelegate).ToPointer());
+
+        }catch(gemfire::IllegalStateException&)
+        {
+          //ignore it as this is internal only
+        }
+      }
+
+      void GemStone::GemFire::Cache::Serializable::UnregisterType(Byte typeId)
+      {
+        BuiltInDelegates->Remove(typeId);
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::SerializationRegistry::removeType(typeId);
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void GemStone::GemFire::Cache::Serializable::RegisterWrapper(WrapperDelegate^ wrapperMethod,
+        Byte typeId)
+      {
+        if (typeId < 0 || typeId > WrapperEnd)
+        {
+          throw gcnew GemFireException("The TypeID (" + typeId + ") being "
+            "registered is beyond acceptable range of 0-" + WrapperEnd);
+        }
+        NativeWrappers[typeId] = wrapperMethod;
+      }
+
+      void GemStone::GemFire::Cache::Serializable::UnregisterNatives()
+      {
+        BuiltInDelegates->Clear();
+        for (Byte typeId = 0; typeId <= WrapperEnd; ++typeId) {
+          NativeWrappers[typeId] = nullptr;
+        }
+         //TODO::Hitesh unregister from managed hashmap as well.
+      //  ManagedDelegates->Clear();
+      }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/SerializableM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/SerializableM.hpp b/geode-client-native/src/clicache/SerializableM.hpp
new file mode 100644
index 0000000..885cf9a
--- /dev/null
+++ b/geode-client-native/src/clicache/SerializableM.hpp
@@ -0,0 +1,631 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/CacheableKey.hpp"
+#include "cppcache/CacheableBuiltins.hpp"
+#include "IGFSerializable.hpp"
+#include "IGFDelta.hpp"
+#include "impl/ManagedString.hpp"
+#include "impl/NativeWrapper.hpp"
+#include "LogM.hpp"
+#include <vcclr.h>
+
+using namespace System;
+using namespace System::Collections::Generic;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      /// <summary>
+      /// Signature of native function delegates passed to native
+      /// <c>gemfire::Serializable::registerType</c>.
+      /// Such functions should return an empty instance of the type they
+      /// represent. The instance will typically be initialized immediately
+      /// after creation by a call to native
+      /// <c>gemfire::Serializable::fromData</c>.
+      /// </summary>
+      delegate gemfire::Serializable* TypeFactoryNativeMethod();
+
+      /// <summary>
+      /// Signature of function delegates passed to
+      /// <see cref="Serializable.RegisterType" />. Such functions should
+      /// return an empty instance of the type they represent.
+      /// The delegate shall be stored in the internal <c>DelegateWrapper</c>
+      /// class and an instance will be initialized in the
+      /// <c>DelegateWrapper.NativeDelegate</c> method by a call to
+      /// <see cref="IGFSerializable.FromData" />.
+      /// </summary>
+      public delegate GemStone::GemFire::Cache::IGFSerializable^ TypeFactoryMethod();
+      /// <summary>
+      /// Delegate to wrap a native <c>gemfire::Serializable</c> type.
+      /// </summary>
+      /// <remarks>
+      /// This delegate should return an object of type <c>IGFSerializable</c>
+      /// given a native object.
+      /// </remarks>
+      delegate GemStone::GemFire::Cache::IGFSerializable^ WrapperDelegate(gemfire::Serializable* obj);
+
+      /// <summary>
+      /// This class wraps the native C++ <c>gemfire::Serializable</c> objects
+      /// as managed <see cref="IGFSerializable" /> objects.
+      /// </summary>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class Serializable
+        : public Internal::SBWrap<gemfire::Serializable>,
+        public /*GemStone::GemFire::Cache::*/IGFSerializable
+      {
+      public:
+        /// <summary>
+        /// Serializes this native (C++) object.
+        /// </summary>
+        /// <param name="output">
+        /// the DataOutput object to use for serializing the object
+        /// </param>
+        virtual void ToData(GemStone::GemFire::Cache::DataOutput^ output);
+
+        /// <summary>
+        /// Deserializes the native (C++) object -- returns an instance of the
+        /// <c>Serializable</c> class with the native object wrapped inside.
+        /// </summary>
+        /// <param name="input">
+        /// the DataInput stream to use for reading the object data
+        /// </param>
+        /// <returns>the deserialized object</returns>
+        virtual GemStone::GemFire::Cache::IGFSerializable^ FromData(GemStone::GemFire::Cache::DataInput^ input);
+        
+        /// <summary>
+        /// return the size of this object in bytes
+        /// </summary>
+        virtual property uint32_t ObjectSize
+        {
+          virtual uint32_t get(); 
+        }
+
+        /// <summary>
+        /// Returns the classId of the instance being serialized.
+        /// This is used by deserialization to determine what instance
+        /// type to create and deserialize into.
+        /// </summary>
+        /// <returns>the classId</returns>
+        virtual property uint32_t ClassId
+        {
+          virtual uint32_t get();
+        }
+
+        /// <summary>
+        /// Return a string representation of the object.
+        /// It simply returns the string representation of the underlying
+        /// native object by calling its <c>toString()</c> function.
+        /// </summary>
+        virtual String^ ToString() override;
+
+        // Static conversion function from primitive types string, integer
+        // and byte array.
+
+        /// <summary>
+        /// Implicit conversion operator from a boolean
+        /// to a <c>Serializable</c>.
+        /// </summary>
+        static operator GemStone::GemFire::Cache::Serializable^ (bool value);
+
+        /// <summary>
+        /// Implicit conversion operator from a byte
+        /// to a <c>Serializable</c>.
+        /// </summary>
+        static operator GemStone::GemFire::Cache::Serializable^ (Byte value);
+
+        /// <summary>
+        /// Implicit conversion operator from an array of bytes
+        /// to a <c>Serializable</c>.
+        /// </summary>
+        static operator GemStone::GemFire::Cache::Serializable^ (array<Byte>^ value);
+
+        /// <summary>
+        /// Implicit conversion operator from an boolean array
+        /// to a <c>Serializable</c>.
+        /// </summary>
+        static operator GemStone::GemFire::Cache::Serializable^ (array<bool>^ value);
+
+        /// <summary>
+        /// Implicit conversion operator from a double
+        /// to a <c>Serializable</c>.
+        /// </summary>
+        static operator GemStone::GemFire::Cache::Serializable^ (Double value);
+
+        /// <summary>
+        /// Implicit conversion operator from a double array
+        /// to a <c>Serializable</c>.
+        /// </summary>
+        static operator GemStone::GemFire::Cache::Serializable^ (array<Double>^ value);
+
+        /// <summary>
+        /// Implicit conversion operator from a float
+        /// to a <c>Serializable</c>.
+        /// </summary>
+        static operator GemStone::GemFire::Cache::Serializable^ (Single value);
+
+        /// <summary>
+        /// Implicit conversion operator from a float array
+        /// to a <c>Serializable</c>.
+        /// </summary>
+        static operator GemStone::GemFire::Cache::Serializable^ (array<Single>^ value);
+
+        /// <summary>
+        /// Implicit conversion operator from a 16-bit integer
+        /// to a <c>Serializable</c>.
+        /// </summary>
+        static operator GemStone::GemFire::Cache::Serializable^ (int16_t value);
+
+        /// <summary>
+        /// Implicit conversion operator from a character
+        /// to a <c>Serializable</c>.
+        /// </summary>
+        static operator GemStone::GemFire::Cache::Serializable^ (Char value);
+
+        /// <summary>
+        /// Implicit conversion operator from a character array
+        /// to a <c>Serializable</c>.
+        /// </summary>
+        static operator GemStone::GemFire::Cache::Serializable^ (array<Char>^ value);
+
+        /// <summary>
+        /// Implicit conversion operator from a 16-bit integer array
+        /// to a <c>Serializable</c>.
+        /// </summary>
+        static operator GemStone::GemFire::Cache::Serializable^ (array<int16_t>^ value);
+
+        /// <summary>
+        /// Implicit conversion operator from a 32-bit integer
+        /// to a <c>Serializable</c>.
+        /// </summary>
+        static operator GemStone::GemFire::Cache::Serializable^ (int32_t value);
+
+        /// <summary>
+        /// Implicit conversion operator from a 32-bit integer array
+        /// to a <c>Serializable</c>.
+        /// </summary>
+        static operator GemStone::GemFire::Cache::Serializable^ (array<int32_t>^ value);
+
+        /// <summary>
+        /// Implicit conversion operator from a 64-bit integer
+        /// to a <c>Serializable</c>.
+        /// </summary>
+        static operator /*GemStone::GemFire::Cache::*/Serializable^ (int64_t value);
+
+        /// <summary>
+        /// Implicit conversion operator from a 64-bit integer array
+        /// to a <c>Serializable</c>.
+        /// </summary>
+        static operator GemStone::GemFire::Cache::Serializable^ (array<int64_t>^ value);
+
+        /// <summary>
+        /// Implicit conversion operator from a string
+        /// to a <c>Serializable</c>.
+        /// </summary>
+        static operator GemStone::GemFire::Cache::Serializable^ (String^ value);
+
+        /// <summary>
+        /// Implicit conversion operator from a string array
+        /// to a <c>Serializable</c>.
+        /// </summary>
+        static operator GemStone::GemFire::Cache::Serializable^ (array<String^>^ value);
+
+        /// <summary>
+        /// Register an instance factory method for a given type.
+        /// This should be used when registering types that implement
+        /// IGFSerializable.
+        /// </summary>
+        /// <param name="creationMethod">
+        /// the creation function to register
+        /// </param>
+        /// <exception cref="IllegalArgumentException">
+        /// if the method is null
+        /// </exception>
+        /// <exception cref="IllegalStateException">
+        /// if the typeId has already been registered, or there is an error
+        /// in registering the type; check <c>Utils::LastError</c> for more
+        /// information in the latter case.
+        /// </exception>
+        static void RegisterType(TypeFactoryMethod^ creationMethod);
+
+      internal:
+
+        // These are the new static methods to get/put data from c++
+
+        //byte
+        static Byte getByte(gemfire::SerializablePtr nativeptr)
+        {
+          gemfire::CacheableByte* ci = static_cast<gemfire::CacheableByte*>(nativeptr.ptr());
+          return ci->value();
+        }
+
+        static gemfire::CacheableKeyPtr getCacheableByte(Byte val)
+        {
+          return gemfire::CacheableByte::create(val);
+        }
+
+        //boolean
+        static bool getBoolean(gemfire::SerializablePtr nativeptr)
+        {
+          gemfire::CacheableBoolean* ci = static_cast<gemfire::CacheableBoolean*>(nativeptr.ptr());
+          return ci->value();
+        }
+
+        static gemfire::CacheableKeyPtr getCacheableBoolean(bool val)
+        {
+          return gemfire::CacheableBoolean::create(val);
+        }
+
+        //widechar
+        static Char getChar(gemfire::SerializablePtr nativeptr)
+        {
+          gemfire::CacheableWideChar* ci = static_cast<gemfire::CacheableWideChar*>(nativeptr.ptr());
+          return ci->value();
+        }
+
+        static gemfire::CacheableKeyPtr getCacheableWideChar(Char val)
+        {
+          return gemfire::CacheableWideChar::create(val);
+        }
+
+        //double
+        static double getDouble(gemfire::SerializablePtr nativeptr)
+        {
+          gemfire::CacheableDouble* ci = static_cast<gemfire::CacheableDouble*>(nativeptr.ptr());
+          return ci->value();
+        }
+
+        static gemfire::CacheableKeyPtr getCacheableDouble(double val)
+        {
+          return gemfire::CacheableDouble::create(val);
+        }
+
+        //float
+        static float getFloat(gemfire::SerializablePtr nativeptr)
+        {
+          gemfire::CacheableFloat* ci = static_cast<gemfire::CacheableFloat*>(nativeptr.ptr());
+          return ci->value();
+        }
+
+        static gemfire::CacheableKeyPtr getCacheableFloat(float val)
+        {
+          return gemfire::CacheableFloat::create(val);
+        }
+
+        //int16
+        static int16 getInt16(gemfire::SerializablePtr nativeptr)
+        {
+          gemfire::CacheableInt16* ci = static_cast<gemfire::CacheableInt16*>(nativeptr.ptr());
+          return ci->value();
+        }
+
+        static gemfire::CacheableKeyPtr getCacheableInt16(int val)
+        {
+          return gemfire::CacheableInt16::create(val);
+        }
+
+        //int32
+        static int32 getInt32(gemfire::SerializablePtr nativeptr)
+        {
+          gemfire::CacheableInt32* ci = static_cast<gemfire::CacheableInt32*>(nativeptr.ptr());
+          return ci->value();
+        }
+
+        static gemfire::CacheableKeyPtr getCacheableInt32(int32 val)
+        {
+          return gemfire::CacheableInt32::create(val);
+        }
+
+        //int64
+        static int64 getInt64(gemfire::SerializablePtr nativeptr)
+        {
+          gemfire::CacheableInt64* ci = static_cast<gemfire::CacheableInt64*>(nativeptr.ptr());
+          return ci->value();
+        }
+
+        static gemfire::CacheableKeyPtr getCacheableInt64(int64 val)
+        {
+          return gemfire::CacheableInt64::create(val);
+        }
+
+        //cacheable ascii string
+        static String^ getASCIIString(gemfire::SerializablePtr nativeptr)
+        {
+          //gemfire::CacheableString* ci = static_cast<gemfire::CacheableString*>(nativeptr.ptr());          
+          //return GetString(ci);
+          return GetString(nativeptr->toString());
+        }
+
+        static gemfire::CacheableKeyPtr getCacheableASCIIString(String^ val)
+        {
+          return GetCacheableString(val);
+        }
+
+        //cacheable ascii string huge
+        static String^ getASCIIStringHuge(gemfire::SerializablePtr nativeptr)
+        {
+          //gemfire::CacheableString* ci = static_cast<gemfire::CacheableString*>(nativeptr.ptr());          
+          //return GetString(ci);
+          return GetString(nativeptr->toString());
+        }
+
+        static gemfire::CacheableKeyPtr getCacheableASCIIStringHuge(String^ val)
+        {
+          return GetCacheableString(val);
+        }
+
+        //cacheable string
+        static String^ getUTFString(gemfire::SerializablePtr nativeptr)
+        {
+          //gemfire::CacheableString* ci = static_cast<gemfire::CacheableString*>(nativeptr.ptr());          
+          //return GetString(ci);
+          return GetString(nativeptr->toString());
+        }
+
+        static gemfire::CacheableKeyPtr getCacheableUTFString(String^ val)
+        {
+          return GetCacheableString(val);
+        }
+
+        //cacheable string huge
+        static String^ getUTFStringHuge(gemfire::SerializablePtr nativeptr)
+        {
+          //gemfire::CacheableString* ci = static_cast<gemfire::CacheableString*>(nativeptr.ptr());
+          //return GetString(ci);
+          return GetString(nativeptr->toString());
+        }
+
+        static gemfire::CacheableKeyPtr getCacheableUTFStringHuge(String^ val)
+        {
+          return GetCacheableString(val);
+        }
+
+       static gemfire::CacheableStringPtr GetCacheableString(String^ value)
+       {
+          gemfire::CacheableStringPtr cStr;
+          size_t len = 0;
+          if (value != nullptr) {
+            len = value->Length;
+            pin_ptr<const wchar_t> pin_value = PtrToStringChars(value);
+            cStr = gemfire::CacheableString::create(pin_value, static_cast<int32_t> (len));
+          }
+          else {
+            cStr = (gemfire::CacheableString*)
+              gemfire::CacheableString::createDeserializable();
+          }
+
+          return cStr;
+        }
+
+        static String^ GetString(gemfire::CacheableStringPtr cStr)//gemfire::CacheableString*
+        {
+          if (cStr == NULLPTR) {
+            return nullptr;
+          }
+          else if (cStr->isWideString()) {
+            return ManagedString::Get(cStr->asWChar());
+          }
+          else {
+            return ManagedString::Get(cStr->asChar());
+          }
+        }
+
+        static array<Byte>^ getSByteArray(array<SByte>^ sArray)
+        {
+          array<Byte>^ dArray = gcnew array<Byte>(sArray->Length);
+          for (int index = 0; index < dArray->Length; index++) 
+          {
+            dArray[index] = sArray[index];
+          }          
+          return dArray;
+        }
+
+        static array<int16_t>^ getInt16Array(array<uint16_t>^ sArray)
+        {
+          array<int16_t>^ dArray = gcnew array<int16_t>(sArray->Length);
+          for (int index = 0; index < dArray->Length; index++) 
+          {
+            dArray[index] = sArray[index];
+          }          
+          return dArray;
+        }
+
+        static array<int32_t>^ getInt32Array(array<uint32_t>^ sArray)
+        {
+          array<int32_t>^ dArray = gcnew array<int32_t>(sArray->Length);
+          for (int index = 0; index < dArray->Length; index++) 
+          {
+            dArray[index] = sArray[index];
+          }          
+          return dArray;
+        }
+
+        static array<int64_t>^ getInt64Array(array<uint64_t>^ sArray)
+        {
+          array<int64_t>^ dArray = gcnew array<int64_t>(sArray->Length);
+          for (int index = 0; index < dArray->Length; index++) 
+          {
+            dArray[index] = sArray[index];
+          }          
+          return dArray;
+        }
+
+        /// <summary>
+        /// Default constructor.
+        /// </summary>
+        inline GemStone::GemFire::Cache::Serializable()
+          : SBWrap() { }
+
+        /// <summary>
+        /// Internal constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline GemStone::GemFire::Cache::Serializable(gemfire::Serializable* nativeptr)
+          : SBWrap(nativeptr) { }
+
+        /// <summary>
+        /// Register an instance factory method for a given type and typeId.
+        /// This should be used when registering types that implement
+        /// IGFSerializable.
+        /// </summary>
+        /// <param name="typeId">typeId of the type being registered.</param>
+        /// <param name="creationMethod">
+        /// the creation function to register
+        /// </param>
+        /// <exception cref="IllegalArgumentException">
+        /// if the method is null
+        /// </exception>
+        static void RegisterType(Byte typeId,
+          TypeFactoryMethod^ creationMethod);
+
+        /// <summary>
+        /// Unregister the type with the given typeId
+        /// </summary>
+        /// <param name="typeId">typeId of the type to unregister.</param>
+        static void UnregisterType(Byte typeId);
+
+        /// <summary>
+        /// Used to assign the native Serializable pointer to a new object.
+        /// </summary>
+        /// <remarks>
+        /// Note the order of preserveSB() and releaseSB(). This handles the
+        /// corner case when <c>m_nativeptr</c> is same as <c>nativeptr</c>.
+        /// </remarks>
+        inline void AssignSP(gemfire::Serializable* nativeptr)
+        {
+          AssignPtr(nativeptr);
+        }
+
+        /// <summary>
+        /// Used to assign the native Serializable pointer to a new object.
+        /// </summary>
+        inline void SetSP(gemfire::Serializable* nativeptr)
+        {
+          if (nativeptr != nullptr) {
+            nativeptr->preserveSB();
+          }
+          _SetNativePtr(nativeptr);
+        }
+
+        /// <summary>
+        /// Static list of <c>TypeFactoryNativeMethod</c> delegates created
+        /// from registered managed <c>TypeFactoryMethod</c> delegates.
+        /// This is so that the underlying managed objects do not get GCed.
+        /// </summary>
+        static List<TypeFactoryNativeMethod^>^ NativeDelegates =
+          gcnew List<TypeFactoryNativeMethod^>();
+
+        /// <summary>
+        /// Static map of <c>TypeFactoryMethod</c> delegates created
+        /// from registered managed <c>TypeFactoryMethod</c> delegates.
+        /// This is for cross AppDomain object creations.
+        /// </summary>
+        static Dictionary<UInt32, TypeFactoryMethod^>^ DelegateMap =
+          gcnew Dictionary<UInt32, TypeFactoryMethod^>();
+
+        static Dictionary<UInt32, TypeFactoryMethod^>^ InternalDelegateMap =
+          gcnew Dictionary<UInt32, TypeFactoryMethod^>();
+
+        static TypeFactoryMethod^ GetTypeFactoryMethod(UInt32 classid)
+        {
+          Log::Fine("TypeFactoryMethod type id " + classid + " domainid :" + System::Threading::Thread::GetDomainID() );
+          if(DelegateMap->ContainsKey(classid) )
+            return DelegateMap[classid];
+          else
+            return InternalDelegateMap[classid];//builtin types
+        }
+
+        /// <summary>
+        /// Static map of <c>TypeFactoryNativeMethod</c> delegates created
+        /// for builtin managed <c>TypeFactoryMethod</c> delegates.
+        /// This is so that the underlying managed objects do not get GCed.
+        /// </summary>
+        static Dictionary<Byte, TypeFactoryNativeMethod^>^ BuiltInDelegates =
+          gcnew Dictionary<Byte, TypeFactoryNativeMethod^>();
+
+        /// <summary>
+        /// Static map of <c>TypeFactoryMethod</c> delegates created
+        /// for managed <c>TypeFactoryMethod</c> delegates.
+        /// </summary>
+        static Dictionary<int64_t, TypeFactoryMethod^>^ ManagedDelegates =
+          gcnew Dictionary<int64_t, TypeFactoryMethod^>();
+
+        /// <summary>
+        /// This is to get manged delegates.
+        /// </summary>
+        static TypeFactoryMethod^ GetManagedDelegate(int64_t typeId)
+        {
+          if (ManagedDelegates->ContainsKey(typeId))
+            return (TypeFactoryMethod^)ManagedDelegates[typeId];
+          else
+            return nullptr;
+        }
+
+        /// <summary>
+        /// Static array of managed <c>WrapperDelegate</c> delegates that
+        /// maintains a mapping of built-in native typeIds to their corresponding
+        /// wrapper type delegates.
+        /// </summary>
+        /// <remarks>
+        /// This is as an array to make lookup as fast as possible, taking
+        /// advantage of the fact that the range of wrapped built-in typeIds is
+        /// small. <b>IMPORTANT:</b> If the built-in native typeIds encompass a
+        /// greater range then change <c>WrapperEnd</c> in this accordingly
+        /// or move to using a Dictionary instead.
+        /// </remarks>
+        static array<WrapperDelegate^>^ NativeWrappers =
+          gcnew array<WrapperDelegate^>(WrapperEnd + 1);
+        literal Byte WrapperEnd = 128;
+
+        /// <summary>
+        /// Static method to register a managed wrapper for a native
+        /// <c>gemfire::Serializable</c> type.
+        /// </summary>
+        /// <param name="wrapperMethod">
+        /// A factory delegate of the managed wrapper class that returns the
+        /// managed object given the native object.
+        /// </param>
+        /// <param name="typeId">The typeId of the native type.</param>
+        /// <seealso cref="NativeWrappers" />
+        static void RegisterWrapper(WrapperDelegate^ wrapperMethod,
+          Byte typeId);
+
+        /// <summary>
+        /// Internal static method to remove managed artifacts created by
+        /// RegisterType and RegisterWrapper methods when
+        /// <see cref="DistributedSystem.Disconnect" /> is called.
+        /// </summary>
+        static void UnregisterNatives();
+
+        /// <summary>
+        /// Static method to lookup the wrapper delegate for a given typeId.
+        /// </summary>
+        /// <param name="typeId">
+        /// The typeId of the native <c>gemfire::Serializable</c> type.
+        /// </param>
+        /// <returns>
+        /// If a managed wrapper is registered for the given typeId then the
+        /// wrapper delegate is returned, else this returns null.
+        /// </returns>
+        inline static WrapperDelegate^ GetWrapper(Byte typeId)
+        {
+          if (typeId >= 0 && typeId <= WrapperEnd) {
+            return NativeWrappers[typeId];
+          }
+          return nullptr;
+        }
+      };
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/StatisticDescriptorM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/StatisticDescriptorM.cpp b/geode-client-native/src/clicache/StatisticDescriptorM.cpp
new file mode 100644
index 0000000..7ec4182
--- /dev/null
+++ b/geode-client-native/src/clicache/StatisticDescriptorM.cpp
@@ -0,0 +1,51 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "StatisticDescriptorM.hpp"
+#include "impl/ManagedString.hpp"
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      int32_t StatisticDescriptor::ID::get( )
+      {
+        return  NativePtr->getId();
+      }
+
+      String^ StatisticDescriptor::Name::get( )
+      {
+        return ManagedString::Get( NativePtr->getName() );
+      }
+
+      String^ StatisticDescriptor::Description::get( )
+      {
+        return ManagedString::Get( NativePtr->getDescription() );
+      }
+
+      int8_t StatisticDescriptor::IsCounter::get( )
+      {
+        return NativePtr->isCounter();
+      }
+
+      int8_t StatisticDescriptor::IsLargerBetter::get( )
+      {
+        return NativePtr->isLargerBetter();
+      }
+
+      String^ StatisticDescriptor::Unit::get( )
+      {
+        return ManagedString::Get( NativePtr->getUnit() );
+      }
+    }
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/StatisticDescriptorM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/StatisticDescriptorM.hpp b/geode-client-native/src/clicache/StatisticDescriptorM.hpp
new file mode 100644
index 0000000..8b747f0
--- /dev/null
+++ b/geode-client-native/src/clicache/StatisticDescriptorM.hpp
@@ -0,0 +1,116 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "impl/NativeWrapper.hpp"
+#include "cppcache/statistics/StatisticDescriptor.hpp"
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      /// <summary>
+      /// A class that describes an individual statistic whose value is updated by an
+      /// application and may be archived by GemFire. These descriptions are gathered
+      /// together in a <see cref="StatisticsType" /> class.
+      /// </summary>
+      /// <para>
+      /// To get an instance of this interface use an instance of
+      /// <see cref="StatisticsFactory" /> class.
+      /// </para>
+      /// <para>
+      /// StatisticDescriptors are naturally ordered by their name.
+      /// </para>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class StatisticDescriptor sealed
+        : public Internal::UMWrap<gemfire_statistics::StatisticDescriptor>
+       {
+         public:
+           /// <summary>
+           /// Returns the id of this statistic in a <see cref="StatisticsType" /> class.
+           /// The id is initialized when its statistics
+           /// type is created.
+           /// </summary>
+           virtual property int32_t ID
+           {
+             virtual int32_t get( );
+           }
+
+           /// <summary>
+           /// Returns the name of this statistic
+           /// </summary>
+           virtual property String^ Name
+           {
+             virtual String^ get( );
+           }
+
+           /// <summary>
+           /// Returns the description of this statistic
+           /// </summary>
+           virtual property String^ Description
+           {
+             virtual String^ get( );
+           }
+
+           /// <summary>
+           /// Returns true if this statistic is a counter; false if its a gauge.
+           /// Counter statistics have values that always increase.
+           /// Gauge statistics have unconstrained values.
+           /// </summary>
+           virtual property int8_t IsCounter
+           {
+             virtual int8_t get( );
+           }
+
+           /// <summary>
+           /// Returns true if a larger statistic value indicates better performance.
+           /// </summary>
+           virtual property int8_t IsLargerBetter
+           {
+             virtual int8_t get( );
+           }
+
+           /// <summary>
+           /// Returns the unit in which this statistic is measured.
+           /// </summary>
+           virtual property String^ Unit
+           {
+             virtual String^ get( );
+           }
+
+           internal:
+           /// <summary>
+           /// Internal factory function to wrap a native object pointer inside
+           /// this managed class, with null pointer check.
+           /// </summary>
+           /// <param name="nativeptr">native object pointer</param>
+           /// <returns>
+           /// the managed wrapper object, or null if the native pointer is null.
+           /// </returns>
+           inline static StatisticDescriptor^ Create(
+           gemfire_statistics::StatisticDescriptor* nativeptr )
+           {
+             return ( nativeptr != nullptr ?
+             gcnew StatisticDescriptor( nativeptr ) : nullptr );
+           }
+           
+           private:
+           /// <summary>
+           /// Private constructor to wrap a native object pointer
+           /// </summary>
+           /// <param name="nativeptr">The native object pointer</param>
+           inline StatisticDescriptor( gemfire_statistics::StatisticDescriptor* nativeptr )
+           : UMWrap( nativeptr, false ) { }
+       };      
+    }
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/StatisticsFactoryM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/StatisticsFactoryM.cpp b/geode-client-native/src/clicache/StatisticsFactoryM.cpp
new file mode 100644
index 0000000..0352d4e
--- /dev/null
+++ b/geode-client-native/src/clicache/StatisticsFactoryM.cpp
@@ -0,0 +1,240 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "StatisticsFactoryM.hpp"
+#include "StatisticsTypeM.hpp"
+#include "StatisticDescriptorM.hpp"
+#include "StatisticsM.hpp"
+#include "impl/SafeConvert.hpp"
+#include "ExceptionTypesM.hpp"
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      StatisticsFactory^ StatisticsFactory::GetExistingInstance()
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          return GemStone::GemFire::Cache::StatisticsFactory::Create(gemfire_statistics::StatisticsFactory::getExistingInstance());
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      StatisticDescriptor^ StatisticsFactory::CreateIntCounter( String^ name, String^ description,String^ units )
+      {
+        return CreateIntCounter(name,description,units,true);
+      }
+
+      StatisticDescriptor^ StatisticsFactory::CreateIntCounter(String^ name, String^ description,String^ units, int8_t largerBetter)
+      {
+        ManagedString mg_name( name );
+        ManagedString mg_description( description );
+        ManagedString mg_units( units );
+        _GF_MG_EXCEPTION_TRY
+
+          return GemStone::GemFire::Cache::StatisticDescriptor::Create(NativePtr->createIntCounter(mg_name.CharPtr, mg_description.CharPtr, mg_units.CharPtr, largerBetter));
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      StatisticDescriptor^ StatisticsFactory::CreateLongCounter( String^ name, String^ description,String^ units )
+      {
+        return CreateLongCounter(name,description,units,true);
+      }
+
+      StatisticDescriptor^ StatisticsFactory::CreateLongCounter( String^ name, String^ description,String^ units, int8_t largerBetter )
+      {
+        ManagedString mg_name( name );
+        ManagedString mg_description( description );
+        ManagedString mg_units( units );
+        _GF_MG_EXCEPTION_TRY
+
+          return GemStone::GemFire::Cache::StatisticDescriptor::Create(NativePtr->createLongCounter(mg_name.CharPtr, mg_description.CharPtr, mg_units.CharPtr, largerBetter));
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }      
+        
+      StatisticDescriptor^ StatisticsFactory::CreateDoubleCounter( String^ name, String^ description, String^ units )
+      {
+        return CreateDoubleCounter(name,description,units,true);
+      }
+
+      StatisticDescriptor^ StatisticsFactory::CreateDoubleCounter( String^ name, String^ description, String^ units, int8_t largerBetter )
+      {
+        ManagedString mg_name( name );
+        ManagedString mg_description( description );
+        ManagedString mg_units( units );
+        _GF_MG_EXCEPTION_TRY
+
+          return GemStone::GemFire::Cache::StatisticDescriptor::Create(NativePtr->createDoubleCounter(mg_name.CharPtr, mg_description.CharPtr, mg_units.CharPtr, largerBetter));
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      
+      StatisticDescriptor^ StatisticsFactory::CreateIntGauge( String^ name, String^ description, String^ units )
+      {
+        return CreateIntGauge(name,description,units,false);
+      }
+
+      StatisticDescriptor^ StatisticsFactory::CreateIntGauge( String^ name, String^ description, String^ units, int8_t largerBetter )
+      {
+        ManagedString mg_name( name );
+        ManagedString mg_description( description );
+        ManagedString mg_units( units );
+        _GF_MG_EXCEPTION_TRY
+
+          return GemStone::GemFire::Cache::StatisticDescriptor::Create(NativePtr->createIntGauge(mg_name.CharPtr, mg_description.CharPtr, mg_units.CharPtr, largerBetter));
+
+        _GF_MG_EXCEPTION_CATCH_ALL      
+      }
+
+      StatisticDescriptor^ StatisticsFactory::CreateLongGauge( String^ name, String^ description, String^ units )
+      {
+        return CreateLongGauge(name,description,units,false);
+      }
+
+      StatisticDescriptor^ StatisticsFactory::CreateLongGauge( String^ name, String^ description, String^ units, int8_t largerBetter )
+      {
+        ManagedString mg_name( name );
+        ManagedString mg_description( description );
+        ManagedString mg_units( units );
+        _GF_MG_EXCEPTION_TRY
+
+          return GemStone::GemFire::Cache::StatisticDescriptor::Create(NativePtr->createLongGauge(mg_name.CharPtr, mg_description.CharPtr, mg_units.CharPtr, largerBetter));
+
+        _GF_MG_EXCEPTION_CATCH_ALL      
+      }
+      
+      StatisticDescriptor^ StatisticsFactory::CreateDoubleGauge( String^ name, String^ description, String^ units )
+      {
+        return CreateDoubleGauge(name,description,units,false);
+      }
+
+      StatisticDescriptor^ StatisticsFactory::CreateDoubleGauge( String^ name, String^ description, String^ units,int8_t largerBetter )
+      {
+        ManagedString mg_name( name );
+        ManagedString mg_description( description );
+        ManagedString mg_units( units );
+        _GF_MG_EXCEPTION_TRY
+
+          return GemStone::GemFire::Cache::StatisticDescriptor::Create(NativePtr->createDoubleGauge(mg_name.CharPtr, mg_description.CharPtr, mg_units.CharPtr, largerBetter));
+
+        _GF_MG_EXCEPTION_CATCH_ALL      
+      }
+
+      StatisticsType^ StatisticsFactory::CreateType( String^ name, String^ description,
+                                   array<StatisticDescriptor^>^ stats, int32 statsLength)
+      {
+        ManagedString mg_name( name );
+        ManagedString mg_description( description );
+        _GF_MG_EXCEPTION_TRY
+                
+          gemfire_statistics::StatisticDescriptor ** nativedescriptors = new gemfire_statistics::StatisticDescriptor*[statsLength];
+          for (int32_t index = 0; index < statsLength; index++)
+          {
+            nativedescriptors[index] = GetNativePtr<gemfire_statistics::StatisticDescriptor>(stats[index]);
+          }
+          return GemStone::GemFire::Cache::StatisticsType::Create(NativePtr->createType(mg_name.CharPtr, mg_description.CharPtr, nativedescriptors, statsLength));
+          
+        _GF_MG_EXCEPTION_CATCH_ALL     
+      }
+
+      StatisticsType^ StatisticsFactory::FindType(String^ name)
+      {
+        ManagedString mg_name( name );
+        _GF_MG_EXCEPTION_TRY
+
+          return GemStone::GemFire::Cache::StatisticsType::Create(NativePtr->findType(mg_name.CharPtr));
+
+        _GF_MG_EXCEPTION_CATCH_ALL     
+      }
+
+      Statistics^ StatisticsFactory::CreateStatistics(StatisticsType^ type)
+      {
+        _GF_MG_EXCEPTION_TRY
+         
+          return GemStone::GemFire::Cache::Statistics::Create(NativePtr->createStatistics(GetNativePtr<gemfire_statistics::StatisticsType>(type)));
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      Statistics^ StatisticsFactory::CreateStatistics(StatisticsType^ type, String^ textId)
+      {
+        ManagedString mg_text( textId );
+        _GF_MG_EXCEPTION_TRY
+
+          return GemStone::GemFire::Cache::Statistics::Create(NativePtr->createStatistics(GetNativePtr<gemfire_statistics::StatisticsType>(type),(char*)mg_text.CharPtr));
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      Statistics^ StatisticsFactory::CreateStatistics(StatisticsType^ type, String^ textId, int64_t numericId)
+      {
+        ManagedString mg_text( textId );
+        _GF_MG_EXCEPTION_TRY
+
+          return GemStone::GemFire::Cache::Statistics::Create(NativePtr->createStatistics(GetNativePtr<gemfire_statistics::StatisticsType>(type),(char*)mg_text.CharPtr, numericId));
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      Statistics^ StatisticsFactory::CreateAtomicStatistics(StatisticsType^ type)
+      {
+        _GF_MG_EXCEPTION_TRY
+         
+          return GemStone::GemFire::Cache::Statistics::Create(NativePtr->createAtomicStatistics(GetNativePtr<gemfire_statistics::StatisticsType>(type)));
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      Statistics^ StatisticsFactory::CreateAtomicStatistics(StatisticsType^ type, String^ textId)
+      {
+        ManagedString mg_text( textId );
+        _GF_MG_EXCEPTION_TRY
+
+          return GemStone::GemFire::Cache::Statistics::Create(NativePtr->createAtomicStatistics(GetNativePtr<gemfire_statistics::StatisticsType>(type),(char*)mg_text.CharPtr));
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      Statistics^ StatisticsFactory::CreateAtomicStatistics(StatisticsType^ type, String^ textId, int64_t numericId)
+      {
+        ManagedString mg_text( textId );
+        _GF_MG_EXCEPTION_TRY
+
+          return GemStone::GemFire::Cache::Statistics::Create(NativePtr->createAtomicStatistics(GetNativePtr<gemfire_statistics::StatisticsType>(type),(char*)mg_text.CharPtr, numericId));
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+      Statistics^ StatisticsFactory::FindFirstStatisticsByType( StatisticsType^ type )
+      {
+        _GF_MG_EXCEPTION_TRY
+         
+          return GemStone::GemFire::Cache::Statistics::Create(NativePtr->findFirstStatisticsByType(GetNativePtr<gemfire_statistics::StatisticsType>(type)));
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      String^ StatisticsFactory::Name::get( )
+      {
+        return ManagedString::Get( NativePtr->getName() );
+      }
+
+      int64_t StatisticsFactory::ID::get( )
+      {
+        return  NativePtr->getId();
+      }
+    }
+  }
+}
+


[14/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/ICqEvent.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/ICqEvent.hpp b/geode-client-native/src/clicache/ICqEvent.hpp
new file mode 100644
index 0000000..73d675e
--- /dev/null
+++ b/geode-client-native/src/clicache/ICqEvent.hpp
@@ -0,0 +1,108 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+
+#include "ICacheableKey.hpp"
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      ref class CqQuery;
+      //ref class CqOperationType;
+      interface class ICacheableKey;
+      interface class IGFSerializable;
+
+      /// <summary>
+      /// An application plug-in that can be installed on a region.
+      /// Listener change notifications are invoked <c>after</c>
+      /// the change has occured.
+      /// </summary>
+      /// <remarks>
+      /// Listeners receive notifications when entries in a region change or changes occur to the
+      /// region attributes themselves.
+      /// <para>
+      /// A cache listener is defined in the <see cref="RegionAttributes" />.
+      /// </para>
+      /// The methods on a <c>ICacheListener</c>
+      /// are invoked asynchronously. Multiple events can cause concurrent invocation
+      /// of <c>ICacheListener</c> methods.  If event A occurs before event B,
+      /// there is no guarantee that their corresponding <c>ICacheListener</c>
+      /// method invocations will occur in the same order.  Any exceptions thrown by
+      /// the listener are caught by GemFire and logged. 
+      ///
+      /// Listeners are user callbacks that
+      /// are invoked by GemFire. It is important to ensure that minimal work is done in the
+      /// listener before returning control back to GemFire. For example, a listener
+      /// implementation may choose to hand off the event to a thread pool that then processes
+      /// the event on its thread rather than the listener thread
+      /// </remarks>
+      /// <seealso cref="AttributesFactory.SetCacheListener" />
+      /// <seealso cref="RegionAttributes.CacheListener" />
+      /// <seealso cref="ICacheLoader" />
+      /// <seealso cref="ICacheWriter" />
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public interface class ICqEvent
+      {
+      public:
+
+        /// <summary>
+        /// Handles the event of a new key being added to a region.
+        /// </summary>
+        /// <remarks>
+        /// The entry did not previously exist in this region in the local cache
+        /// (even with a null value).
+        /// <para>
+        /// This function does not throw any exception.
+        /// </para>
+        /// </remarks>
+        /// <seealso cref="Region.Create" />
+        /// <seealso cref="Region.Put" />
+        /// <seealso cref="Region.Get" />
+        CqQuery^ getCq();
+
+        /// <summary>
+        /// Handles the event of an entry's value being modified in a region.
+        /// </summary>
+        /// <remarks>
+        /// This entry previously existed in this region in the local cache,
+        /// but its previous value may have been null.
+        /// </remarks>
+        /// <seealso cref="Region.Put" />
+        CqOperationType getBaseOperation();
+
+        CqOperationType getQueryOperation();
+
+        /// <summary>
+        /// Called when the region containing this callback is destroyed, when
+        /// the cache is closed.
+        /// </summary>
+        /// <remarks>
+        /// Implementations should clean up any external resources,
+        /// such as database connections. Any runtime exceptions this method
+        /// throws will be logged.
+        /// <para>
+        /// It is possible for this method to be called multiple times on a single
+        /// callback instance, so implementations must be tolerant of this.
+        /// </para>
+        /// </remarks>
+        /// <seealso cref="Cache.Close" />
+        /// <seealso cref="Region.DestroyRegion" />
+        ICacheableKey^ getKey();
+        IGFSerializable^ getNewValue();
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/ICqListener.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/ICqListener.hpp b/geode-client-native/src/clicache/ICqListener.hpp
new file mode 100644
index 0000000..3cb311e
--- /dev/null
+++ b/geode-client-native/src/clicache/ICqListener.hpp
@@ -0,0 +1,108 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+
+using namespace System;
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      ref class CqEvent;
+
+      /// <summary>
+      /// An application plug-in that can be installed on a region.
+      /// Listener change notifications are invoked <c>after</c>
+      /// the change has occured.
+      /// </summary>
+      /// <remarks>
+      /// Listeners receive notifications when entries in a region change or changes occur to the
+      /// region attributes themselves.
+      /// <para>
+      /// A cache listener is defined in the <see cref="RegionAttributes" />.
+      /// </para>
+      /// The methods on a <c>ICacheListener</c>
+      /// are invoked asynchronously. Multiple events can cause concurrent invocation
+      /// of <c>ICacheListener</c> methods.  If event A occurs before event B,
+      /// there is no guarantee that their corresponding <c>ICacheListener</c>
+      /// method invocations will occur in the same order.  Any exceptions thrown by
+      /// the listener are caught by GemFire and logged. 
+      ///
+      /// Listeners are user callbacks that
+      /// are invoked by GemFire. It is important to ensure that minimal work is done in the
+      /// listener before returning control back to GemFire. For example, a listener
+      /// implementation may choose to hand off the event to a thread pool that then processes
+      /// the event on its thread rather than the listener thread
+      /// </remarks>
+      /// <seealso cref="AttributesFactory.SetCacheListener" />
+      /// <seealso cref="RegionAttributes.CacheListener" />
+      /// <seealso cref="ICacheLoader" />
+      /// <seealso cref="ICacheWriter" />
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public interface class ICqListener
+      {
+      public:
+
+        /// <summary>
+        /// Handles the event of a new key being added to a region.
+        /// </summary>
+        /// <remarks>
+        /// The entry did not previously exist in this region in the local cache
+        /// (even with a null value).
+        /// <para>
+        /// This function does not throw any exception.
+        /// </para>
+        /// </remarks>
+        /// <param name="ev">
+        /// Denotes the event object associated with the entry creation.
+        /// </param>
+        /// <seealso cref="Region.Create" />
+        /// <seealso cref="Region.Put" />
+        /// <seealso cref="Region.Get" />
+        void OnEvent( CqEvent^ ev );
+
+        /// <summary>
+        /// Handles the event of an entry's value being modified in a region.
+        /// </summary>
+        /// <remarks>
+        /// This entry previously existed in this region in the local cache,
+        /// but its previous value may have been null.
+        /// </remarks>
+        /// <param name="ev">
+        /// EntryEvent denotes the event object associated with updating the entry.
+        /// </param>
+        /// <seealso cref="Region.Put" />
+        void OnError( CqEvent^ ev );
+
+
+        /// <summary>
+        /// Called when the region containing this callback is destroyed, when
+        /// the cache is closed.
+        /// </summary>
+        /// <remarks>
+        /// Implementations should clean up any external resources,
+        /// such as database connections. Any runtime exceptions this method
+        /// throws will be logged.
+        /// <para>
+        /// It is possible for this method to be called multiple times on a single
+        /// callback instance, so implementations must be tolerant of this.
+        /// </para>
+        /// </remarks>
+        /// <seealso cref="Cache.Close" />
+        /// <seealso cref="Region.DestroyRegion" />
+        void Close();
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/ICqResults.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/ICqResults.hpp b/geode-client-native/src/clicache/ICqResults.hpp
new file mode 100755
index 0000000..3f501d3
--- /dev/null
+++ b/geode-client-native/src/clicache/ICqResults.hpp
@@ -0,0 +1,39 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/SelectResults.hpp"
+#include "impl/NativeWrapper.hpp"
+#include "ISelectResults.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      ref class SelectResultsIterator;
+
+      /// <summary>
+      /// Interface to encapsulate a select query result set.
+      /// </summary>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public interface class ICqResults
+        : public ISelectResults
+      {
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/ICqStatusListener.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/ICqStatusListener.hpp b/geode-client-native/src/clicache/ICqStatusListener.hpp
new file mode 100644
index 0000000..4246846
--- /dev/null
+++ b/geode-client-native/src/clicache/ICqStatusListener.hpp
@@ -0,0 +1,44 @@
+/*=========================================================================
+* Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+*=========================================================================
+*/
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "ICqListener.hpp"
+
+using namespace System;
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      /// <summary>
+      /// Extension of CqListener. Adds two new methods to CqListener, one that
+      /// is called when the cq is connected and one that is called when
+      /// the cq is disconnected.
+      /// </summary>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public interface class ICqStatusListener : public ICqListener
+      {
+      public:
+
+        /// <summary>
+        /// Called when the cq loses connection with all servers.
+        /// </summary>
+        virtual void OnCqDisconnected();
+
+        /// <summary>
+        /// Called when the cq establishes a connection with a server
+        /// </summary>
+        virtual void OnCqConnected();
+
+      };
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/IFixedPartitionResolver.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/IFixedPartitionResolver.hpp b/geode-client-native/src/clicache/IFixedPartitionResolver.hpp
new file mode 100644
index 0000000..4871867
--- /dev/null
+++ b/geode-client-native/src/clicache/IFixedPartitionResolver.hpp
@@ -0,0 +1,86 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "IPartitionResolver.hpp"
+#include "CacheableHashSetM.hpp"
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      ref class EntryEvent;
+      interface class IGFSerializable;
+ 
+      /// Implementers of interface <code>FixedPartitionResolver</code> helps to
+      /// achieve explicit mapping of a "user defined" partition to a data member node.
+      /// <p>
+      /// GemFire uses the partition name returned by {@link FixedPartitionResolver#getPartitionName(EntryEvent, vector)}
+      /// to determine on which member the data is being managed. Say, for example, you want to
+      /// partition all Trades according to quarters. You can implement
+      /// FixedPartitionResolver to get the name of the quarter based on the date given
+      /// as part of {@link EntryEvent}.
+      /// </p>
+      ///  
+      /// public class QuarterPartitionResolver implements FixedPartitionResolver{<br>
+      /// &nbsp &nbsp public String getPartitionName(EntryOperation opDetails, Set
+      /// allAvailablePartitions) {<br>
+      /// &nbsp &nbsp Date date = sdf.parse((String)opDetails.getKey());<br>
+      /// &nbsp &nbsp Calendar cal = Calendar.getInstance();<br>
+      /// &nbsp &nbsp cal.setTime(date);<br>
+      /// &nbsp &nbsp int month = cal.get(Calendar.MONTH);<br>
+      /// &nbsp &nbsp if (month == 0 || month == 1 || month == 2) {<br>
+      /// &nbsp &nbsp &nbsp return "Quarter1";<br>
+      /// &nbsp &nbsp }<br>
+      /// &nbsp &nbsp else if (month == 3 || month == 4 || month == 5) {<br>
+      /// &nbsp &nbsp &nbsp return "Quarter2";<br>
+      /// &nbsp &nbsp }<br>
+      /// &nbsp &nbsp else if (month == 6 || month == 7 || month == 8) {<br>
+      /// &nbsp &nbsp &nbsp return "Quarter3";<br>
+      /// &nbsp &nbsp }<br>
+      /// &nbsp &nbsp else if (month == 9 || month == 10 || month == 11) {<br>
+      /// &nbsp &nbsp &nbsp return "Quarter4";<br>
+      /// &nbsp &nbsp }<br>
+      /// &nbsp &nbsp else {<br>
+      /// &nbsp &nbsp &nbsp return "Invalid Quarter";<br>
+      /// &nbsp &nbsp }<br>
+      /// &nbsp }<br>
+      ///
+      /// @see PartitionResolver
+      ///
+      /// </remarks>
+      /// <seealso cref="AttributesFactory.SetPartitionResolver" />
+      /// <seealso cref="RegionAttributes.PartitionResolver" />
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public interface class IFixedPartitionResolver: public IPartitionResolver
+      {
+      public:
+
+       /// <summary>
+       /// This method is used to get the name of the partition for the given entry
+       /// operation.
+       /// </summary> 
+       /// <param name="opDetails"> 
+       /// the details of the entry event e.g. {@link Region#get(Object)}
+       /// </param>
+       /// <param name="targetPartitions">
+       /// represents all the available primary partitions on the nodes
+       /// </param> 
+       /// <return> partition-name associated with node which allows mapping of given
+       /// data to user defined partition
+       /// </return>         
+       String^ GetPartitionName(EntryEvent^ opDetails, CacheableHashSet^ targetPartitions);
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/IGFDelta.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/IGFDelta.hpp b/geode-client-native/src/clicache/IGFDelta.hpp
new file mode 100644
index 0000000..f491c84
--- /dev/null
+++ b/geode-client-native/src/clicache/IGFDelta.hpp
@@ -0,0 +1,70 @@
+/*=========================================================================
+ * Copyright (c) 2010-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * one or more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+#pragma once
+
+#include "gf_defs.hpp"
+
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      ref class DataOutput;
+      ref class DataInput;
+      //ref class Serializable;
+
+      /// <summary>
+      /// This interface is used for delta propagation.
+      /// To use delta propagation, an application class must implement interfaces <c>IGFDelta</c> as well as <c>IGFSerializable</c>.
+      /// The <c>IGFDelta</c> interface methods <c>HasDelta( ), ToDelta( )</c> and <c>FromDelta( )</c> must be implemented by the class, as these methods are used by GemFire
+      /// to detect the presence of delta in an object, to serialize the delta, and to apply a serialized delta to an existing object
+      /// of the class.
+      /// If a customized cloning method is required, the class must also implement the interface <c>System.ICloneable</c>.
+      /// To use cloning in delta propagation for a region, the region attribute for cloning must be enabled.
+      /// </summary>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public interface class IGFDelta
+      {
+      public:
+        
+        /// <summary>
+        /// Writes out delta information to out in a user-defined format. This is
+        /// invoked on an application object after GemFire determines the presence
+        /// of delta in it by calling <c>HasDelta()</c> on the object.
+        /// </summary>
+        /// <exception cref="GemFireIOException">
+        /// </exception>
+        void ToDelta( DataOutput^ out );
+
+        /// <summary>
+        /// Reads in delta information to this object in a user-defined format. This is
+        /// invoked on an existing application object after GemFire determines the
+        /// presence of delta in <c>DataInput</c> instance.
+        /// </summary>
+        /// <exception cref="InvalidDeltaException">
+        /// if the delta in the <c>DataInput</c> instance cannot be applied
+        /// to this instance (possible causes may include mismatch of Delta version or logic error).
+        /// </exception>
+        /// <exception cref="GemFireIOException">
+        /// </exception>
+        void FromDelta( DataInput^ in );
+       
+        /// <summary>
+        /// <c>HasDelta( )</c> is invoked by GemFire during <c>Region.Put( ICacheableKey, IGFSerializable )</c> to determine if the object contains a delta.
+        /// If <c>HasDelta( )</c> returns true, the delta in the object is serialized by invoking <c>ToDelta( DataOutput )</c>.
+        /// If <c>HasDelta( )</c> returns false, the object is serialized by invoking <c>IGFSerializable.ToData( DataOutput )</c>.
+        /// </summary>
+        bool HasDelta( );
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/IGFSerializable.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/IGFSerializable.hpp b/geode-client-native/src/clicache/IGFSerializable.hpp
new file mode 100644
index 0000000..f5871aa
--- /dev/null
+++ b/geode-client-native/src/clicache/IGFSerializable.hpp
@@ -0,0 +1,95 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/gf_types.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      ref class DataOutput;
+      ref class DataInput;
+      ref class Serializable;
+
+      /// <summary>
+      /// This interface class is the superclass of all user objects 
+      /// in the cache that can be serialized.
+      /// </summary>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public interface class IGFSerializable
+      {
+      public:
+
+        /// <summary>
+        /// Serializes this object.
+        /// </summary>
+        /// <param name="output">
+        /// the DataOutput object to use for serializing the object
+        /// </param>
+        void ToData( GemStone::GemFire::Cache::DataOutput^ output );
+
+        //bool HasDelta();
+
+        /// <summary>
+        /// Deserialize this object, typical implementation should return
+        /// the 'this' pointer.
+        /// </summary>
+        /// <param name="input">
+        /// the DataInput stream to use for reading the object data
+        /// </param>
+        /// <returns>the deserialized object</returns>
+        GemStone::GemFire::Cache::IGFSerializable^ FromData( GemStone::GemFire::Cache::DataInput^ input );
+
+        /// <summary>
+        /// Get the size of this object in bytes.
+        /// This is only needed if you use the HeapLRU feature.
+        /// </summary>
+        /// <remarks>
+        /// Note that you can simply return zero if you are not using the HeapLRU feature.
+        /// </remarks>
+        /// <returns>the size of this object in bytes.</returns>
+        property uint32_t ObjectSize
+        {
+          uint32_t get( );
+        }
+
+        /// <summary>
+        /// Returns the classId of the instance being serialized.
+        /// This is used by deserialization to determine what instance
+        /// type to create and deserialize into.
+        /// </summary>
+        /// <remarks>
+        /// The classId must be unique within an application suite
+        /// and in the range 0 to ((2^31)-1) both inclusive. An application can
+        /// thus define upto 2^31 custom <c>IGFSerializable</c> classes.
+        /// Returning a value greater than ((2^31)-1) may result in undefined
+        /// behaviour.
+        /// </remarks>
+        /// <returns>the classId</returns>
+        property uint32_t ClassId
+        {
+          uint32_t get( );
+        }
+
+        /// <summary>
+        /// Return a string representation of the object.
+        /// </summary>
+        String^ ToString( );
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/IGemFireCache.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/IGemFireCache.hpp b/geode-client-native/src/clicache/IGemFireCache.hpp
new file mode 100755
index 0000000..22be19c
--- /dev/null
+++ b/geode-client-native/src/clicache/IGemFireCache.hpp
@@ -0,0 +1,80 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "IRegionService.hpp"
+#include "DistributedSystemM.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      /// <summary>
+      /// GemFireCache represents the singleton cache that must be created
+      /// in order to connect to Gemfire server.
+      /// </summary>
+      /// <remarks>
+      /// Caches are obtained from Crest methods on the
+      /// <see cref="CacheFactory.Create"/> class.
+      /// <para>
+      /// When a cache is created a <see cref="DistributedSystem" />
+      /// must be specified.
+      /// </para><para>
+      /// When a cache will no longer be used, call <see cref="Cache.Close" />.
+      /// Once it <see cref="Cache.IsClosed" /> any attempt to use it
+      /// will cause a <c>CacheClosedException</c> to be thrown.
+      /// </para><para>
+      /// A cache can have multiple root regions, each with a different name.
+      /// </para>
+      /// </remarks>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public interface class IGemFireCache : IRegionService
+      {
+      public:        
+        
+        /// <summary>
+        /// Returns the name of this cache.
+        /// </summary>
+        /// <remarks>
+        /// This method does not throw
+        /// <c>CacheClosedException</c> if the cache is closed.
+        /// </remarks>
+        /// <returns>the string name of this cache</returns>
+        property String^ Name
+        {
+          String^ get( );
+        }
+
+        /// <summary>
+        /// Initializes the cache from an XML file.
+        /// </summary>
+        /// <param name="cacheXml">pathname of a <c>cache.xml</c> file</param>
+        void InitializeDeclarativeCache( String^ cacheXml );
+
+        /// <summary>
+        /// Returns the distributed system used to
+        /// <see cref="CacheFactory.Create" /> this cache.
+        /// </summary>
+        /// <remarks>
+        /// This method does not throw
+        /// <c>CacheClosedException</c> if the cache is closed.
+        /// </remarks>
+        property DistributedSystem^ DistributedSystem
+        {
+          GemStone::GemFire::Cache::DistributedSystem^ get( );
+        } 
+      };
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/IPartitionResolver.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/IPartitionResolver.hpp b/geode-client-native/src/clicache/IPartitionResolver.hpp
new file mode 100644
index 0000000..a5c2cf3
--- /dev/null
+++ b/geode-client-native/src/clicache/IPartitionResolver.hpp
@@ -0,0 +1,93 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "ICacheableKey.hpp"
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      ref class EntryEvent;
+      interface class IGFSerializable;
+       /// Implementers of interface <code>PartitionResolver</code> enable custom
+       /// partitioning on the <code>PartitionedRegion</code>.
+       /// 1. The Key class or callback arg can implement PartitionResolver interface to
+       /// enable custom partitioning OR
+       /// 2. Configure your own PartitionResolver class in partition attributes (For
+       /// instance when the Key is a primitive type or String) Implement the
+       /// appropriate equals - For all implementations, you need to be sure to code the
+       /// class equals method so it properly verifies equality for the
+       /// PartitionResolver implementation. This might mean verifying that class names
+       /// are the same or that the returned routing objects are the same etc.. When you
+       /// initiate the partitioned region on multiple nodes, GemFire uses the equals
+       /// method to ensure you are using the same PartitionResolver implementation for
+       /// all of the nodes for the region.
+       /// GemFire uses the routing object's hashCode to determine where the data is
+       /// being managed. Say, for example, you want to colocate all Trades by month and
+       /// year.The key is implemented by TradeKey class which also implements the
+       /// PartitionResolver interface.
+       /// public class TradeKey implements PartitionResolver {<br>
+       /// &nbsp &nbsp private String tradeID;<br>
+       /// &nbsp &nbsp private Month month ;<br>
+       /// &nbsp &nbsp private Year year ;<br>
+       ///
+       /// &nbsp &nbsp public TradingKey(){ } <br>
+       /// &nbsp &nbsp public TradingKey(Month month, Year year){<br>
+       /// &nbsp &nbsp &nbsp &nbsp this.month = month;<br>
+       /// &nbsp &nbsp &nbsp &nbsp this.year = year;<br>
+       /// &nbsp &nbsp } <br>
+       /// &nbsp &nbsp public Serializable getRoutingObject(EntryOperation key){<br>
+       /// &nbsp &nbsp &nbsp &nbsp return this.month + this.year;<br>
+       /// &nbsp &nbsp }<br> }<br>
+       ///
+       /// In the example above, all trade entries with the same month and year are
+       /// guaranteed to be colocated.
+      /// </remarks>
+      /// <seealso cref="AttributesFactory.SetPartitionResolver" />
+      /// <seealso cref="RegionAttributes.PartitionResolver" />
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public interface class IPartitionResolver
+      {
+      public:
+
+        /// <summary>
+        /// Returns the name of the PartitionResolver.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// This function does not throw any exception.
+        /// </para>
+         /// <returns>
+        /// the name of the PartitionResolver
+        /// </returns>
+        /// </remarks>
+        String^ GetName();       
+
+        /// <summary>
+        /// return object associated with entry event which allows the Partitioned Region to store associated data together.
+        /// </summary>
+        /// <remarks>
+        /// throws RuntimeException - any exception thrown will terminate the operation and the exception will be passed to the
+        /// calling thread.
+        /// </remarks>
+        /// <param name="key">
+        /// key the detail of the entry event.
+        /// </param>
+
+        GemStone::GemFire::Cache::ICacheableKey^ GetRoutingObject(EntryEvent^ key) ;
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/IRegionService.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/IRegionService.hpp b/geode-client-native/src/clicache/IRegionService.hpp
new file mode 100755
index 0000000..7d8efe8
--- /dev/null
+++ b/geode-client-native/src/clicache/IRegionService.hpp
@@ -0,0 +1,104 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "gf_includes.hpp"
+#include "QueryServiceM.hpp"
+#include "RegionM.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      /// <summary>
+      /// A RegionService provides access to existing regions that exist
+      /// in a <see cref="Cache" />.
+      /// Regions can be obtained using <see cref="Cache.GetRegion" />
+      /// and queried using <see cref="Cache.GetQueryService/>.
+      /// </summary>
+      /// <remarks>
+      /// Caches are obtained from  methods on the
+      /// <see cref="CacheFactory.Create"/> class.
+      /// <para>
+      /// When a cache will no longer be used, call <see cref="Cache.Close" />.
+      /// Once it <see cref="Cache.IsClosed" /> any attempt to use it
+      /// will cause a <c>CacheClosedException</c> to be thrown.
+      /// </para><para>
+      /// A cache can have multiple root regions, each with a different name.
+      /// </para>
+      /// </remarks>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public interface class IRegionService 
+      {
+      public:
+
+        /// <summary>
+        /// True if this cache has been closed.
+        /// </summary>
+        /// <remarks>
+        /// After a new cache object is created, this method returns false.
+        /// After <see cref="Close" /> is called on this cache object, this method
+        /// returns true.
+        /// </remarks>
+        /// <returns>true if this cache is closed, otherwise false</returns>
+        property bool IsClosed
+        {
+          bool get( );
+        }        
+
+        /// <summary>
+        /// Terminates this object cache and releases all the local resources.
+        /// If RegionService is created from <see cref="Cache.CreateAuthenticatedView" />, then it clears user related security data.
+        /// </summary>
+        /// <remarks>
+        /// After this cache is closed, any further
+        /// method call on this cache or any region object will throw
+        /// <c>CacheClosedException</c>, unless otherwise noted.
+        /// </remarks>
+        /// <exception cref="CacheClosedException">
+        /// if the cache is already closed.
+        /// </exception>
+        void Close( );
+
+        /// <summary>
+        /// Returns an existing region given the full path from root, or null 
+        /// if no such region exists.
+        /// </summary>
+        /// <param name="name">the name of the region</param>
+        /// <returns>the region</returns>
+        Region^ GetRegion( String^ name );
+
+        /// <summary>
+        /// Get a query service object to be able to query the cache.
+        /// </summary>
+        /// <remarks>
+        /// Currently only works against the java server in native mode, and
+        /// at least some endpoints must have been defined in some regions
+        /// before actually firing a query.
+        /// </remarks>
+        QueryService^ GetQueryService( );
+
+        /// <summary>
+        /// Returns an array of root regions in the cache. This set is a
+        /// snapshot and is not backed by the cache.
+        /// </summary>
+        /// <remarks>
+        /// It is not supported when Cache is created from Pool.
+        /// </remarks>
+        /// <returns>array of regions</returns>
+        array<Region^>^ RootRegions( );
+      };
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/IResultCollector.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/IResultCollector.hpp b/geode-client-native/src/clicache/IResultCollector.hpp
new file mode 100644
index 0000000..9740b77
--- /dev/null
+++ b/geode-client-native/src/clicache/IResultCollector.hpp
@@ -0,0 +1,64 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+
+using namespace System;
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      interface class IGFSerializable;
+      ref class ResultCollector;
+
+      /// <summary>
+      /// collect function execution results, can be overriden 
+      /// </summary>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public interface class IResultCollector
+      {
+      public:
+
+        /// <summary>
+        /// add result from a single function execution
+        /// </summary>
+        void AddResult( IGFSerializable^ rs );
+
+        /// <summary>
+        /// get result 
+        /// </summary>
+	array<IGFSerializable^>^  GetResult(); 
+
+        /// <summary>
+        /// get result 
+        /// </summary>
+	array<IGFSerializable^>^  GetResult(UInt32 timeout); 
+
+        /// <summary>
+        ///Call back provided to caller, which is called after function execution is
+	///complete and caller can retrieve results using getResult()
+        /// </summary>
+	void EndResults(); 
+
+  /// <summary>
+  ///GemFire will invoke this method before re-executing function (in case of
+  /// Function Execution HA) This is to clear the previous execution results from
+   /// the result collector
+  /// @since 6.5
+  /// </summary>
+  void ClearResults();
+
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/ISelectResults.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/ISelectResults.hpp b/geode-client-native/src/clicache/ISelectResults.hpp
new file mode 100644
index 0000000..506bbeb
--- /dev/null
+++ b/geode-client-native/src/clicache/ISelectResults.hpp
@@ -0,0 +1,68 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/SelectResults.hpp"
+#include "impl/NativeWrapper.hpp"
+#include "IGFSerializable.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      ref class SelectResultsIterator;
+
+      /// <summary>
+      /// Interface to encapsulate a select query result set.
+      /// </summary>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public interface class ISelectResults
+        : public System::Collections::Generic::IEnumerable<IGFSerializable^>
+      {
+      public:
+
+        /// <summary>
+        /// True if this <c>ISelectResults</c> is modifiable.
+        /// </summary>
+        property bool IsModifiable
+        {
+          bool get( );
+        }
+
+        /// <summary>
+        /// The size of the <c>ISelectResults</c>.
+        /// </summary>
+        property int32_t Size
+        {
+          int32_t get( );
+        }
+
+        /// <summary>
+        /// Get an object at the given index.
+        /// </summary>
+        property IGFSerializable^ GFINDEXER( size_t )
+        {
+          IGFSerializable^ get( size_t index );
+        }
+
+        /// <summary>
+        /// Get an iterator for the result set.
+        /// </summary>
+        SelectResultsIterator^ GetIterator( );
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/ITransactionListener.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/ITransactionListener.hpp b/geode-client-native/src/clicache/ITransactionListener.hpp
new file mode 100644
index 0000000..8edea43
--- /dev/null
+++ b/geode-client-native/src/clicache/ITransactionListener.hpp
@@ -0,0 +1,38 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+#ifdef CSTX_COMMENTED
+#pragma once
+
+#include "gf_defs.hpp"
+
+#include "TransactionEventM.hpp"
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      
+      public interface class ITransactionListener
+      {
+      public:
+
+        void AfterCommit(TransactionEvent^ ev);
+
+        void AfterFailedCommit(TransactionEvent^ ev);
+
+        void AfterRollback(TransactionEvent^ ev);
+
+        void Close();
+      };
+
+    }
+  }
+}
+#endif
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/ITransactionWriter.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/ITransactionWriter.hpp b/geode-client-native/src/clicache/ITransactionWriter.hpp
new file mode 100644
index 0000000..8eeb18e
--- /dev/null
+++ b/geode-client-native/src/clicache/ITransactionWriter.hpp
@@ -0,0 +1,31 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+#ifdef CSTX_COMMENTED
+#pragma once
+
+#include "gf_defs.hpp"
+
+#include "TransactionEventM.hpp"
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      public interface class ITransactionWriter
+      {
+      public:
+
+        void BeforeCommit(GemStone::GemFire::Cache::TransactionEvent^ te);
+      };
+
+    }
+  }
+}
+#endif
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/LogM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/LogM.cpp b/geode-client-native/src/clicache/LogM.cpp
new file mode 100644
index 0000000..76e228a
--- /dev/null
+++ b/geode-client-native/src/clicache/LogM.cpp
@@ -0,0 +1,114 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "LogM.hpp"
+#include "impl/ManagedString.hpp"
+#include "impl/SafeConvert.hpp"
+#include "ExceptionTypesM.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      void Log::Init( LogLevel level, String^ logFileName )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          ManagedString mg_lfname( logFileName );
+          gemfire::Log::init( static_cast<gemfire::Log::LogLevel>( level ),
+            mg_lfname.CharPtr );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Log::Init( LogLevel level, String^ logFileName, int32_t logFileLimit )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          ManagedString mg_lfname( logFileName );
+          gemfire::Log::init( static_cast<gemfire::Log::LogLevel>( level ),
+            mg_lfname.CharPtr, logFileLimit );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Log::Close( )
+      {
+        gemfire::Log::close( );
+      }
+
+      LogLevel Log::Level( )
+      {
+        return static_cast<LogLevel>( gemfire::Log::logLevel( ) );
+      }
+
+      void Log::SetLevel( LogLevel level )
+      {
+        gemfire::Log::setLogLevel(
+          static_cast<gemfire::Log::LogLevel>( level ) );
+      }
+
+      String^ Log::LogFileName( )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          return ManagedString::Get( gemfire::Log::logFileName( ) );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      bool Log::Enabled( LogLevel level )
+      {
+        return gemfire::Log::enabled(
+          static_cast<gemfire::Log::LogLevel>( level ) );
+      }
+
+      void Log::Write( LogLevel level, String^ msg )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          ManagedString mg_msg( msg );
+          gemfire::Log::log( static_cast<gemfire::Log::LogLevel>( level ),
+            mg_msg.CharPtr );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Log::LogThrow( LogLevel level, String^ msg, System::Exception^ ex )
+      {
+        if ( ex != nullptr )
+        {
+          String^ logMsg = String::Format(
+            System::Globalization::CultureInfo::CurrentCulture,
+            "GemFire exception {0} thrown: {1}{2}{3}", ex->GetType( ),
+            ex->Message, Environment::NewLine, msg );
+          Log::Write( level, logMsg );
+        }
+      }
+
+      void Log::LogCatch( LogLevel level, String^ msg, System::Exception^ ex )
+      {
+        if ( ex != nullptr )
+        {
+          String^ logMsg = String::Format(
+            System::Globalization::CultureInfo::CurrentCulture,
+            "GemFire exception {0} caught: {1}{2}{3}", ex->GetType( ),
+            ex->Message, Environment::NewLine, msg );
+          Log::Write( level, logMsg );
+        }
+      }
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/LogM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/LogM.hpp b/geode-client-native/src/clicache/LogM.hpp
new file mode 100644
index 0000000..a4126f4
--- /dev/null
+++ b/geode-client-native/src/clicache/LogM.hpp
@@ -0,0 +1,301 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/Log.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      /// <summary>
+      /// Logging levels.
+      /// </summary>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public enum class LogLevel
+      {
+        /// <summary>
+        /// No log.
+        /// </summary>
+        Null = 0,
+
+        /// <summary>
+        /// Indicates serious failure.
+        /// </summary>
+        Error,
+        /// <summary>
+        /// Indicates potential problem.
+        /// </summary>
+        Warning,
+        /// <summary>
+        /// For informational purpose.
+        /// </summary>
+        Info,
+
+        /// <summary>
+        /// The default logging level.
+        /// </summary>
+        Default,
+
+        /// <summary>
+        /// For Static configuration messages.
+        /// </summary>
+        Config,
+
+        /// <summary>
+        /// For tracing information.
+        /// </summary>
+        Fine,
+        /// <summary>
+        /// For moderately detailed tracing information.
+        /// </summary>
+        Finer,
+        /// <summary>
+        /// For very detailed tracing information.
+        /// </summary>
+        Finest,
+
+        /// <summary>
+        /// For highly detailed tracing information.
+        /// </summary>
+        Debug,
+
+        /// <summary>
+        /// All the log messages.
+        /// </summary>
+        All,
+      };
+
+
+      /// <summary>
+      /// Defines methods available to clients that want to write a log message
+      /// to their GemFire system's shared log file.
+      /// </summary>
+      /// <remarks>
+      /// Any attempt to use an instance after its connection is disconnected
+      /// will throw a <c>NotConnectedException</c>.
+      /// <para>
+      /// For any logged message the log file will contain:
+      /// <ul>
+      /// <li> The message's log level.</li>
+      /// <li> The time the message was logged.</li>
+      /// <li> The ID of the connection and thread that logged the message.</li>
+      /// <li> The message itself, perhaps with
+      /// an exception including the exception's stack trace.</li>
+      /// </ul>
+      /// </para><para>
+      /// A message always has a level.
+      /// Logging levels are ordered. Enabling logging at a given level also
+      /// enables logging at higher levels. The higher the level the more
+      /// important and urgent the message.
+      /// </para><para>
+      /// The levels, in descending order of severity, are:
+      /// <ul>
+      ///
+      /// <li> <c>Error</c> (highest severity) is a message level
+      /// indicating a serious failure.  In general <c>error</c>
+      /// messages should describe events that are of considerable
+      /// importance and which will prevent normal program execution. They
+      /// should be reasonably intelligible to end users and to system
+      /// administrators.</li>
+      ///
+      /// <li> <c>Warning</c> is a message level indicating a
+      /// potential problem.  In general <c>warning</c> messages
+      /// should describe events that will be of interest to end users or
+      /// system managers, or which indicate potential problems.</li>
+      ///
+      /// <li> <c>Info</c> is a message level for informational
+      /// messages.  Typically <c>info</c> messages should be
+      /// reasonably significant and should make sense to end users and
+      /// system administrators.</li>
+      ///
+      /// <li> <c>Config</c> is a message level for static
+      /// configuration messages.  <c>config</c> messages are intended
+      /// to provide a variety of static configuration information, to
+      /// assist in debugging problems that may be associated with
+      /// particular configurations.</li>
+      ///
+      /// <li> <c>Fine</c> is a message level providing tracing
+      /// information.  In general the <c>fine</c> level should be
+      /// used for information that will be broadly interesting to
+      /// developers. This level is for the lowest volume, and most
+      /// important, tracing messages.</li>
+      ///
+      /// <li> <c>Finer</c> indicates a moderately detailed tracing
+      /// message.  This is an intermediate level between <c>fine</c>
+      /// and <c>finest</c>.</li>
+      ///
+      /// <li> <c>Finest</c> indicates a very detailed tracing
+      /// message.  Logging calls for entering, returning, or throwing an
+      /// exception are traced at the <c>finest</c> level.</li>
+      ///
+      /// <li> <c>Debug</c> (lowest severity) indicates a highly
+      /// detailed tracing message.  In general the <c>debug</c> level
+      /// should be used for the most voluminous detailed tracing messages.</li>
+      /// </ul>
+      ///
+      /// </para>
+      /// </remarks>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class Log STATICCLASS
+      {
+      public:
+
+        /// <summary>
+        /// Initializes the logging facility with the given level and filename.
+        /// </summary>
+        /// <param name="level">the logging level</param>
+        /// <param name="logFileName">the log file name</param>
+        static void Init( LogLevel level, String^ logFileName );
+
+        /// <summary>
+        /// Initializes logging facility with given level, filename, and file size limit.
+        /// </summary>
+        /// <param name="level">the logging level</param>
+        /// <param name="logFileName">the log file name</param>
+        /// <param name="logFileLimit">maximum allowable size of the log file, in bytes, 
+        ///        or 0 for the default (1 Gbyte)</param>
+        static void Init( LogLevel level, String^ logFileName, int32_t logFileLimit );
+
+        /// <summary>
+        /// Closes logging facility (until next init).
+        /// </summary>
+        static void Close( );
+
+        /// <summary>
+        /// Returns the current log level.
+        /// </summary>
+        static LogLevel Level( );
+
+        /// <summary>
+        /// Sets the current log level.
+        /// </summary>
+        static void SetLevel( LogLevel level );
+
+        /// <summary>
+        /// Returns the name of the current log file.
+        /// NOTE: This function is for debugging only, as it is not completely
+        /// thread-safe!
+        /// </summary>
+        static String^ LogFileName( );
+
+        /// <summary>
+        /// True if log messages at the given level are enabled.
+        /// </summary>
+        static bool Enabled( LogLevel level );
+
+        /// <summary>
+        /// Logs a message at the given level.
+        /// </summary>
+        static void Write( LogLevel level, String^ msg );
+
+        /// <summary>
+        /// Logs both a message and a thrown exception.
+        /// </summary>
+        static void LogThrow( LogLevel level, String^ msg, System::Exception^ ex );
+
+        /// <summary>
+        /// Logs both a message and a caught exception.
+        /// </summary>
+        static void LogCatch( LogLevel level, String^ msg, System::Exception^ ex );
+
+        // Convenience functions with variable number of arguments
+        // as in String.Format
+
+        /// <summary>
+        /// Error level logging with variable number of arguments using
+        /// format as in <c>System.String.Format</c>.
+        /// </summary>
+        inline static void Error( String^ format, ... array<Object^>^ args )
+        {
+          Log::Write( LogLevel::Error, String::Format(
+            System::Globalization::CultureInfo::CurrentCulture, format, args ) );
+        }
+
+        /// <summary>
+        /// Warning level logging with variable number of arguments using
+        /// format as in <c>System.String.Format</c>.
+        /// </summary>
+        inline static void Warning( String^ format, ... array<Object^>^ args )
+        {
+          Log::Write( LogLevel::Warning, String::Format(
+            System::Globalization::CultureInfo::CurrentCulture, format, args ) );
+        }
+
+        /// <summary>
+        /// Info level logging with variable number of arguments using
+        /// format as in <c>System.String.Format</c>.
+        /// </summary>
+        inline static void Info( String^ format, ... array<Object^>^ args )
+        {
+          Log::Write( LogLevel::Info, String::Format(
+            System::Globalization::CultureInfo::CurrentCulture, format, args ) );
+        }
+
+        /// <summary>
+        /// Config level logging with variable number of arguments using
+        /// format as in <c>System.String.Format</c>.
+        /// </summary>
+        inline static void Config( String^ format, ... array<Object^>^ args )
+        {
+          Log::Write( LogLevel::Config, String::Format(
+            System::Globalization::CultureInfo::CurrentCulture, format, args ) );
+        }
+
+        /// <summary>
+        /// Fine level logging with variable number of arguments using
+        /// format as in <c>System.String.Format</c>.
+        /// </summary>
+        inline static void Fine( String^ format, ... array<Object^>^ args )
+        {
+          Log::Write( LogLevel::Fine, String::Format(
+            System::Globalization::CultureInfo::CurrentCulture, format, args ) );
+        }
+
+        /// <summary>
+        /// Finer level logging with variable number of arguments using
+        /// format as in <c>System.String.Format</c>.
+        /// </summary>
+        inline static void Finer( String^ format, ... array<Object^>^ args )
+        {
+          Log::Write( LogLevel::Finer, String::Format(
+            System::Globalization::CultureInfo::CurrentCulture, format, args ) );
+        }
+
+        /// <summary>
+        /// Finest level logging with variable number of arguments using
+        /// format as in <c>System.String.Format</c>.
+        /// </summary>
+        inline static void Finest( String^ format, ... array<Object^>^ args )
+        {
+          Log::Write( LogLevel::Finest, String::Format(
+            System::Globalization::CultureInfo::CurrentCulture, format, args ) );
+        }
+
+        /// <summary>
+        /// Debug level logging with variable number of arguments using
+        /// format as in <c>System.String.Format</c>.
+        /// </summary>
+        inline static void Debug( String^ format, ... array<Object^>^ args )
+        {
+          Log::Write( LogLevel::Debug, String::Format(
+            System::Globalization::CultureInfo::CurrentCulture, format, args ) );
+        }
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/PoolFactoryM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/PoolFactoryM.cpp b/geode-client-native/src/clicache/PoolFactoryM.cpp
new file mode 100755
index 0000000..1db34c2
--- /dev/null
+++ b/geode-client-native/src/clicache/PoolFactoryM.cpp
@@ -0,0 +1,250 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_includes.hpp"
+#include "PoolM.hpp"
+#include "PoolFactoryM.hpp"
+#include "impl/ManagedString.hpp"
+//#include "impl/SafeConvert.hpp"
+#include "ExceptionTypesM.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      PoolFactory^ PoolFactory::SetFreeConnectionTimeout( Int32 connectionTimeout )
+		  {
+			  _GF_MG_EXCEPTION_TRY
+
+			  NativePtr->setFreeConnectionTimeout( connectionTimeout );
+
+			  _GF_MG_EXCEPTION_CATCH_ALL
+          return this;
+		  }
+
+		  PoolFactory^ PoolFactory::SetLoadConditioningInterval( Int32 loadConditioningInterval )
+		  {
+			  _GF_MG_EXCEPTION_TRY
+
+			  NativePtr->setLoadConditioningInterval( loadConditioningInterval );
+
+			  _GF_MG_EXCEPTION_CATCH_ALL
+          return this;
+		  }
+
+		  PoolFactory^ PoolFactory::SetSocketBufferSize( Int32 bufferSize )
+      {
+			  _GF_MG_EXCEPTION_TRY
+
+			  NativePtr->setSocketBufferSize( bufferSize );
+
+			  _GF_MG_EXCEPTION_CATCH_ALL
+          return this;
+		  }
+
+		  PoolFactory^ PoolFactory::SetReadTimeout( Int32 timeout )
+      {
+			  _GF_MG_EXCEPTION_TRY
+
+			  NativePtr->setReadTimeout( timeout );
+
+			  _GF_MG_EXCEPTION_CATCH_ALL
+          return this;
+		  }
+
+		  PoolFactory^ PoolFactory::SetMinConnections( Int32 minConnections )
+      {
+			  _GF_MG_EXCEPTION_TRY
+
+			  NativePtr->setMinConnections( minConnections );
+
+			  _GF_MG_EXCEPTION_CATCH_ALL
+          return this;
+		  }
+
+		  PoolFactory^ PoolFactory::SetMaxConnections( Int32 maxConnections )
+      {
+			  _GF_MG_EXCEPTION_TRY
+
+			  NativePtr->setMaxConnections( maxConnections );
+
+			  _GF_MG_EXCEPTION_CATCH_ALL
+          return this;
+		  }
+
+		  PoolFactory^ PoolFactory::SetIdleTimeout( Int32 idleTimeout )
+      {
+			  _GF_MG_EXCEPTION_TRY
+
+			  NativePtr->setIdleTimeout( idleTimeout );
+
+			  _GF_MG_EXCEPTION_CATCH_ALL
+          return this;
+		  }
+
+		  PoolFactory^ PoolFactory::SetRetryAttempts( Int32 retryAttempts )
+      {
+			  _GF_MG_EXCEPTION_TRY
+
+			  NativePtr->setRetryAttempts( retryAttempts );
+
+			  _GF_MG_EXCEPTION_CATCH_ALL
+          return this;
+		  }
+
+		  PoolFactory^ PoolFactory::SetPingInterval( Int32 pingInterval )
+      {
+			  _GF_MG_EXCEPTION_TRY
+
+			  NativePtr->setPingInterval( pingInterval );
+
+			  _GF_MG_EXCEPTION_CATCH_ALL
+          return this;
+		  }
+
+      PoolFactory^ PoolFactory::SetStatisticInterval( Int32 statisticInterval )
+      {
+			  _GF_MG_EXCEPTION_TRY
+
+			  NativePtr->setStatisticInterval( statisticInterval );
+
+			  _GF_MG_EXCEPTION_CATCH_ALL
+          return this;
+		  }
+
+      PoolFactory^ PoolFactory::SetServerGroup( String^ group )
+      {
+			  _GF_MG_EXCEPTION_TRY
+
+        ManagedString mg_servergroup( group );
+			  NativePtr->setServerGroup( mg_servergroup.CharPtr );
+
+			  _GF_MG_EXCEPTION_CATCH_ALL
+          return this;
+		  }
+
+		  PoolFactory^ PoolFactory::AddLocator( String^ host, Int32 port )
+      {
+			  _GF_MG_EXCEPTION_TRY
+
+        ManagedString mg_host( host );
+			  NativePtr->addLocator( mg_host.CharPtr, port );
+
+			  _GF_MG_EXCEPTION_CATCH_ALL
+          return this;
+		  }
+
+      PoolFactory^ PoolFactory::AddServer( String^ host, Int32 port )
+      {
+			  _GF_MG_EXCEPTION_TRY
+
+			  ManagedString mg_host( host );
+			  NativePtr->addServer( mg_host.CharPtr, port );
+
+			  _GF_MG_EXCEPTION_CATCH_ALL
+          return this;
+		  }
+
+		  PoolFactory^ PoolFactory::SetSubscriptionEnabled( Boolean enabled )
+      {
+			  _GF_MG_EXCEPTION_TRY
+
+			  NativePtr->setSubscriptionEnabled( enabled );
+
+			  _GF_MG_EXCEPTION_CATCH_ALL
+          return this;
+		  }
+
+      PoolFactory^ PoolFactory::SetPRSingleHopEnabled( Boolean enabled )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          NativePtr->setPRSingleHopEnabled(enabled);
+
+         _GF_MG_EXCEPTION_CATCH_ALL
+           return this;
+      }
+
+		  PoolFactory^ PoolFactory::SetSubscriptionRedundancy( Int32 redundancy )
+      {
+			  _GF_MG_EXCEPTION_TRY
+
+			  NativePtr->setSubscriptionRedundancy( redundancy );
+
+			  _GF_MG_EXCEPTION_CATCH_ALL
+          return this;
+		  }
+
+		  PoolFactory^ PoolFactory::SetSubscriptionMessageTrackingTimeout( Int32 messageTrackingTimeout )
+      {
+			  _GF_MG_EXCEPTION_TRY
+
+			  NativePtr->setSubscriptionMessageTrackingTimeout( messageTrackingTimeout );
+
+			  _GF_MG_EXCEPTION_CATCH_ALL
+          return this;
+		  }
+
+		  PoolFactory^ PoolFactory::SetSubscriptionAckInterval( Int32 ackInterval )
+      {
+			  _GF_MG_EXCEPTION_TRY
+
+			  NativePtr->setSubscriptionAckInterval( ackInterval );
+
+			  _GF_MG_EXCEPTION_CATCH_ALL
+          return this;
+		  }
+       PoolFactory^ PoolFactory::SetThreadLocalConnections( Boolean enabled )
+      {
+			  _GF_MG_EXCEPTION_TRY
+
+			  NativePtr->setThreadLocalConnections( enabled );
+
+			  _GF_MG_EXCEPTION_CATCH_ALL
+          return this;
+	  }
+      PoolFactory^ PoolFactory::SetMultiuserAuthentication( bool multiuserAuthentication )
+      {
+			  _GF_MG_EXCEPTION_TRY
+
+          NativePtr->setMultiuserAuthentication( multiuserAuthentication );
+
+			  _GF_MG_EXCEPTION_CATCH_ALL
+          return this;
+	   }
+
+		  PoolFactory^ PoolFactory::Reset()
+      {
+			  _GF_MG_EXCEPTION_TRY
+
+			  NativePtr->reset( );
+
+			  _GF_MG_EXCEPTION_CATCH_ALL
+          return this;
+		  }
+
+		  Pool^ PoolFactory::Create( String^ name )
+      {
+			  _GF_MG_EXCEPTION_TRY
+
+        ManagedString mg_name( name );
+        gemfire::PoolPtr & pool = NativePtr->create(mg_name.CharPtr);
+        return Pool::Create(pool.ptr());
+
+			  _GF_MG_EXCEPTION_CATCH_ALL
+		  }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/PoolFactoryM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/PoolFactoryM.hpp b/geode-client-native/src/clicache/PoolFactoryM.hpp
new file mode 100755
index 0000000..295d840
--- /dev/null
+++ b/geode-client-native/src/clicache/PoolFactoryM.hpp
@@ -0,0 +1,398 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/PoolFactory.hpp"
+#include "impl/NativeWrapper.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      ref class Pool;
+
+      /// <summary>
+      /// This interface provides for the configuration and creation of instances of Pool.
+      /// </summary>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class PoolFactory sealed
+        : public Internal::SBWrap<gemfire::PoolFactory>
+      {
+      public:
+
+		  /// <summary>
+		  /// Sets the free connection timeout for this pool.
+		  /// </summary>
+		  /// <remarks>
+		  /// If the pool has a max connections setting, operations will block
+		  /// if all of the connections are in use. The free connection timeout
+		  /// specifies how long those operations will block waiting for
+		  /// a free connection before receiving an AllConnectionsInUseException.
+		  /// If max connections is not set this setting has no effect.
+          /// </remarks>
+		  /// <param>
+		  /// connectionTimeout the connection timeout in milliseconds
+		  /// </param>
+		  /// <exception>
+		  /// IllegalArgumentException if connectionTimeout 
+		  /// is less than or equal to 0.
+		  /// </exception>
+		  PoolFactory^ SetFreeConnectionTimeout( Int32 connectionTimeout );
+
+		  /// <summary>
+		  /// Sets the load conditioning interval for this pool.
+		  /// </summary>
+		  /// <remarks>
+		  /// This interval controls how frequently the pool will check to see if
+		  /// a connection to a given server should be moved to a different
+		  /// server to improve the load balance.
+		  /// </remarks>
+		  /// <param>
+		  /// loadConditioningInterval the connection lifetime in milliseconds
+		  /// A value of -1 disables load conditioning.
+		  /// </param>
+		  /// <exception>
+		  /// throws IllegalArgumentException if connectionLifetime
+		  /// is less than -1.
+		  /// </exception>
+      PoolFactory^ SetLoadConditioningInterval( Int32 loadConditioningInterval );
+
+		  /// <summary>
+		  /// Sets the socket buffer size for each connection made in this pool.
+		  /// </summary>
+		  /// <remarks>
+		  /// Large messages can be received and sent faster when this buffer is larger.
+		  /// Larger buffers also optimize the rate at which servers can send events
+		  /// for client subscriptions.
+		  /// </remarks>
+		  /// <param>
+		  /// bufferSize the size of the socket buffers used for reading and
+		  /// writing on each connection in this pool.
+		  /// </param>
+		  /// <exception>
+		  /// throws IllegalArgumentException if bufferSize
+		  /// is less than or equal to 0.
+		  /// </exception>
+		  PoolFactory^ SetSocketBufferSize( Int32 bufferSize );
+
+		  /// <summary>
+		  /// Sets the number of milliseconds to wait for a response from a server before
+		  /// timing out the operation and trying another server (if any are available).
+		  /// </summary>
+		  /// <param>
+		  /// timeout number of milliseconds to wait for a response from a server
+		  /// </param>
+		  /// <exception>
+		  /// throws IllegalArgumentException if timeout
+		  /// is less than or equal to 0.
+		  /// </exception>
+		  PoolFactory^ SetReadTimeout( Int32 timeout );
+
+		  /// <summary>
+		  /// Set the minimum number of connections to keep available at all times.
+		  /// </summary>
+		  /// <remarks>
+		  /// When the pool is created, it will create this many connections.
+		  /// If 0 then connections will not be made until an actual operation
+		  /// is done that requires client-to-server communication.
+		  /// </remarks>
+		  /// <param>
+		  /// minConnections the initial number of connections this pool will create.
+		  /// </param>
+		  /// <exception>
+		  /// throws IllegalArgumentException if minConnections is less than 0.
+		  /// </exception>
+		  PoolFactory^ SetMinConnections( Int32 minConnections );
+
+		  /// <summary>
+		  /// Set the max number of client to server connections that the pool will create.
+		  /// </summary>
+		  /// <remarks>
+		  /// If all of the connections are in use, an operation requiring a client to
+		  /// server connection will block until a connection is available.
+		  /// see setFreeConnectionTimeout(int)
+		  /// </remarks>
+		  /// <param>
+		  /// maxConnections the maximum number of connections in the pool.
+		  /// -1 indicates that there is no maximum number of connections.
+		  /// </param>
+		  /// <exception>
+		  /// throws IllegalArgumentException if maxConnections is less than minConnections.
+		  /// </exception>
+		  PoolFactory^ SetMaxConnections( Int32 maxConnections );
+
+		  /// <summary>
+		  /// Set the amount of time a connection can be idle before expiring the connection.
+		  /// </summary>
+		  /// <remarks>
+		  /// If the pool size is greater than the minimum specified, connections which have
+		  /// been idle for longer than the idleTimeout will be closed.
+		  /// </remarks>
+		  /// <param>
+		  /// idleTimeout The amount of time in milliseconds that an idle connection
+		  /// should live before expiring. -1 indicates that connections should never expire.
+		  /// </param>
+		  /// <exception>
+		  /// throws IllegalArgumentException if idleTimout is less than 0.
+		  /// </exception>
+		  PoolFactory^ SetIdleTimeout( Int32 idleTimeout );
+
+		  /// <summary>
+		  /// Set the number of times to retry a request after timeout/exception.
+		  /// </summary>
+		  /// <param>
+		  /// retryAttempts The number of times to retry a request
+		  /// after timeout/exception. -1 indicates that a request should be
+		  /// tried against every available server before failing.
+		  /// </param>
+		  /// <exception>
+		  /// throws IllegalArgumentException if idleTimout is less than 0.
+		  /// </exception>
+		  PoolFactory^ SetRetryAttempts( Int32 retryAttempts );
+
+		  /// <summary>
+		  /// Set how often to ping servers to verify that they are still alive.
+		  /// </summary>
+		  /// <remarks>
+		  /// Each server will be sent a ping every pingInterval if there has not
+		  /// been any other communication with the server.
+		  /// These pings are used by the server to monitor the health of
+		  /// the client. Make sure that the pingInterval is less than the
+		  /// maximum time between pings allowed by the bridge server.
+		  /// see in CacheServer: setMaximumTimeBetweenPings(int)
+		  /// </remarks>
+		  /// <param>
+		  /// pingInterval The amount of time in milliseconds between pings.
+		  /// </param>
+		  /// <exception>
+		  /// throws IllegalArgumentException if pingInterval is less than 0.
+		  /// </exception>
+		  PoolFactory^ SetPingInterval( Int32 pingInterval );
+
+		  /// <summary>
+		  /// Set how often to send client statistics to the server.
+		  /// </summary>
+		  /// <remarks>
+		  /// Doing this allows gfmon to monitor clients.
+		  /// A value of -1 disables the sending of client statistics
+		  /// to the server.
+          /// </remarks>
+		  /// <param>
+		  /// statisticInterval The amount of time in milliseconds between
+		  /// sends of client statistics to the server.
+		  /// </param>
+		  /// <exception>
+		  /// throws IllegalArgumentException if statisticInterval
+		  /// is less than -1.
+		  /// </exception>
+      PoolFactory^ SetStatisticInterval( Int32 statisticInterval);
+
+		  /// <summary>
+		  /// Configures the group that all servers this pool connects to must belong to.
+		  /// </summary>
+		  /// <param>
+		  /// group the server group that this pool will connect to.
+		  /// If null or "" then all servers will be connected to.
+		  /// </param>
+      PoolFactory^ SetServerGroup( String^ group );
+
+		  /// <summary>
+		  /// Add a locator, given its host and port, to this factory.
+		  /// </summary>
+		  /// <remarks>
+		  /// The locator must be a server locator and will be used to discover other running
+		  /// bridge servers and locators.
+		  /// </remarks>
+		  /// <param>
+		  /// host the host name or ip address that the locator is listening on.
+		  /// </param>
+		  /// <param>
+		  /// port the port that the locator is listening on
+		  /// </param>
+		  /// <exception>
+		  /// throws IllegalArgumentException if host is an unknown host
+		  /// or if port is outside the valid range of [1..65535] inclusive.
+		  /// </exception>
+		  /// <exception>
+		  /// throws IllegalStateException if a locator has already been added to this factory.
+		  /// </exception>
+		  PoolFactory^ AddLocator( String^ host, Int32 port );
+
+		  /// <summary>
+		  /// Add a server, given its host and port, to this factory.
+		  /// </summary>
+		  /// <remarks>
+		  /// The server must be a bridge server and this client will
+		  /// directly connect to without consulting a server locator.
+		  /// </remarks>
+		  /// <param>
+		  /// host the host name or ip address that the server is listening on.
+		  /// </param>
+		  /// <param>
+		  /// port the port that the server is listening on
+		  /// </param>
+          /// <exception>
+		  /// throws IllegalArgumentException if host is an unknown host
+		  /// or if port is outside the valid range of [1..65535] inclusive.
+		  /// </exception>
+		  /// <exception>
+		  /// throws IllegalStateException if a server has already been added to this factory.
+		  /// </exception>
+      PoolFactory^ AddServer( String^ host, Int32 port );
+
+		  /// <summary>
+		  /// Enable subscriptions.
+		  /// </summary>
+		  /// <remarks>
+		  /// If set to true then the created pool will have server-to-client
+		  /// subscriptions enabled. If set to false then all Subscription*
+		  /// attributes are ignored at create time.
+		  /// </remarks>
+		  PoolFactory^ SetSubscriptionEnabled( Boolean enabled );
+
+           /// <summary>
+		  /// By default SetPRSingleHopEnabled is true.
+		  /// </summary>
+		  /// <remarks>
+		  /// The client is aware of location of partitions on servers hosting
+          /// Using this information, the client routes the client cache operations
+		  /// directly to the server which is hosting the required partition for the
+		  /// cache operation. 
+          /// If SetPRSingleHopEnabled is false the client can do an extra hop on servers
+          /// to go to the required partition for that cache operation.
+          /// The SetPRSingleHopEnabled avoids extra hops only for following cache operations :
+          /// put, get & destroy operations.
+		  /// </remarks>
+		  PoolFactory^ SetPRSingleHopEnabled( Boolean enabled );
+
+		  /// <summary>
+		  /// Sets the redundancy level for this pools server-to-client subscriptions.
+		  /// </summary>
+		  /// <remarks>
+		  /// If 0 then no redundant copies will be kept on the servers.
+		  /// Otherwise an effort will be made to maintain the requested number of
+		  /// copies of the server-to-client subscriptions. At most one copy per server will
+		  /// be made up to the requested level.
+		  /// </remarks>
+		  /// <param>
+		  /// redundancy the number of redundant servers for this client's subscriptions.
+		  /// </param>
+		  /// <exception>
+		  /// throws IllegalArgumentException if redundancyLevel is less than -1.
+		  /// </exception>
+		  PoolFactory^ SetSubscriptionRedundancy( Int32 redundancy );
+
+		  /// <summary>
+		  /// Sets the messageTrackingTimeout attribute which is the time-to-live period,
+		  /// in milliseconds, for subscription events the client has received from the server.
+		  /// </summary>
+		  /// <remarks>
+		  /// It's used to minimize duplicate events. Entries that have not been modified
+		  /// for this amount of time are expired from the list.
+		  /// </remarks>
+		  /// <param>
+		  /// messageTrackingTimeout number of milliseconds to set the timeout to.
+		  /// </param>
+		  /// <exception>
+		  /// throws IllegalArgumentException if messageTrackingTimeout is less than or equal to 0.
+		  /// </exception>
+		  PoolFactory^ SetSubscriptionMessageTrackingTimeout( Int32 messageTrackingTimeout );
+
+		  /// <summary>
+		  /// Sets the is the interval in milliseconds to wait before sending
+		  /// acknowledgements to the bridge server for events received from the server subscriptions.
+		  /// </summary>
+		  /// <param>
+		  /// ackInterval number of milliseconds to wait before sending event acknowledgements.
+		  /// </param>
+		  /// <exception>
+		  /// throws IllegalArgumentException if ackInterval is less than or equal to 0.
+		  /// </exception>
+		  PoolFactory^ SetSubscriptionAckInterval( Int32 ackInterval );
+		  
+		  /// <summary>
+		  /// Enable ThreadLocalConnection.
+		  /// </summary>
+		  /// <remarks>
+		  /// Sets the thread local connections policy for this pool.
+		  /// If true then any time a thread goes to use a connection
+		  /// from this pool it will check a thread local cache and see if it already
+		  /// has a connection in it. If so it will use it. If not it will get one from
+		  /// this pool and cache it in the thread local. This gets rid of thread contention
+		  /// for the connections but increases the number of connections the servers see.
+		  /// If false then connections are returned to the pool as soon
+		  /// as the operation being done with the connection completes. This allows
+		  /// connections to be shared amonst multiple threads keeping the number of
+		  /// connections down.
+		  /// </remarks>
+		  PoolFactory^ SetThreadLocalConnections( Boolean enabled );
+
+
+      /// <summary>
+		  /// Sets whether pool is in multiuser mode
+      /// If its in multiuser mode then app needs to get instance of cache from pool.getCache("creds"), to do the operations on cache.
+		  /// </summary>
+		  /// <param>
+		  /// multiuserAuthentication should be true/false. Default value is false;
+		  /// </param>
+      PoolFactory^ SetMultiuserAuthentication( bool multiuserAuthentication );
+
+		  /// <summary>
+		  /// Resets the configuration of this factory to its defaults.
+		  /// </summary>
+		  PoolFactory^ Reset();
+
+		  /// <summary>
+		  /// Create a new Pool for connecting a client to a set of GemFire Cache Servers.
+		  /// using this factory's settings for attributes.
+		  /// </summary>
+		  /// <param>
+		  /// name the name of the pool, used when connecting regions to it
+		  /// </param>
+		  /// <exception>
+		  /// throws IllegalStateException if a pool with name already exists
+		  /// throws IllegalStateException if a locator or server has not been added.
+                  /// </exception>
+		  Pool^ Create( String^ name );
+
+    internal:
+
+      /// <summary>
+      /// Internal factory function to wrap a native object pointer inside
+      /// this managed class with null pointer check.
+      /// </summary>
+      /// <param name="nativeptr">The native object pointer</param>
+      /// <returns>
+      /// The managed wrapper object; null if the native pointer is null.
+      /// </returns>
+      inline static PoolFactory^ Create( gemfire::PoolFactory* nativeptr )
+      {
+        return ( nativeptr != nullptr ?
+          gcnew PoolFactory( nativeptr ) : nullptr );
+      }
+
+	  private:
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline PoolFactory( gemfire::PoolFactory* nativeptr )
+          : SBWrap( nativeptr ) { }
+      };
+
+    }
+  }
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/PoolM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/PoolM.cpp b/geode-client-native/src/clicache/PoolM.cpp
new file mode 100755
index 0000000..f26e0fc
--- /dev/null
+++ b/geode-client-native/src/clicache/PoolM.cpp
@@ -0,0 +1,182 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "PoolM.hpp"
+#include "QueryServiceM.hpp"
+#include "CacheableStringM.hpp"
+#include "CacheM.hpp"
+#include "PropertiesM.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      String^ Pool::Name::get( )
+      {
+        return ManagedString::Get( NativePtr->getName( ) );
+      }
+
+      Int32 Pool::FreeConnectionTimeout::get()
+      {
+        return NativePtr->getFreeConnectionTimeout();
+      }
+
+      Int32 Pool::LoadConditioningInterval::get()
+      {
+        return NativePtr->getLoadConditioningInterval();
+      }
+
+      Int32 Pool::SocketBufferSize::get()
+      {
+        return NativePtr->getSocketBufferSize();
+      }
+
+      Int32 Pool::ReadTimeout::get()
+      {
+        return NativePtr->getReadTimeout();
+      }
+
+      Int32 Pool::MinConnections::get()
+      {
+        return NativePtr->getMinConnections();
+      }
+
+      Int32 Pool::MaxConnections::get()
+      {
+        return NativePtr->getMaxConnections();
+      }
+
+      Int32 Pool::IdleTimeout::get()
+      {
+        return NativePtr->getIdleTimeout();
+      }
+
+      Int32 Pool::PingInterval::get()
+      {
+        return NativePtr->getPingInterval();
+      }
+
+      Int32 Pool::StatisticInterval::get()
+      {
+        return NativePtr->getStatisticInterval();
+      }
+
+      Int32 Pool::RetryAttempts::get()
+      {
+        return NativePtr->getRetryAttempts();
+      }
+
+      Boolean Pool::SubscriptionEnabled::get()
+      {
+        return NativePtr->getSubscriptionEnabled();
+      }
+
+      Boolean Pool::PRSingleHopEnabled::get()
+      {
+        return NativePtr->getPRSingleHopEnabled();
+      }
+
+      Int32 Pool::SubscriptionRedundancy::get()
+      {
+        return NativePtr->getSubscriptionRedundancy();
+      }
+
+      Int32 Pool::SubscriptionMessageTrackingTimeout::get()
+      {
+        return NativePtr->getSubscriptionMessageTrackingTimeout();
+      }
+
+      Int32 Pool::SubscriptionAckInterval::get()
+      {
+        return NativePtr->getSubscriptionAckInterval();
+      }
+
+      String^ Pool::ServerGroup::get( )
+      {
+        return ManagedString::Get( NativePtr->getServerGroup( ) );
+      }
+
+      array<String^>^ Pool::Locators::get()
+      {
+        gemfire::CacheableStringArrayPtr locators = NativePtr->getLocators();
+        int length = locators->length();
+        if (length > 0)
+        {
+          array<String^>^ result = gcnew array<String^>(length);
+          for (int item = 0; item < length; item++)
+          {
+            result[item] = CacheableString::GetString(locators[item].ptr());
+          }
+          return result;
+        }
+        else
+        {
+          return nullptr;
+        }
+      }
+
+      array<String^>^ Pool::Servers::get()
+      {
+        gemfire::CacheableStringArrayPtr servers = NativePtr->getServers();
+        int length = servers->length();
+        if (length > 0)
+        {
+          array<String^>^ result = gcnew array<String^>(length);
+          for (int item = 0; item < length; item++)
+          {
+            result[item] = CacheableString::GetString(servers[item].ptr());
+          }
+          return result;
+        }
+        else
+        {
+          return nullptr;
+        }
+      }
+
+      Boolean Pool::ThreadLocalConnections::get()
+      {
+        return NativePtr->getThreadLocalConnections();
+      }
+
+      bool Pool::MultiuserAuthentication::get()
+      {
+        return NativePtr->getMultiuserAuthentication();    
+      }
+      
+      void Pool::Destroy(Boolean KeepAlive)
+      {
+        NativePtr->destroy(KeepAlive);
+      }
+
+      void Pool::Destroy()
+      {
+        NativePtr->destroy();
+      }
+
+      Boolean Pool::Destroyed::get()
+      {
+        return NativePtr->isDestroyed();
+      }
+
+      QueryService^ Pool::GetQueryService()
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          return GemStone::GemFire::Cache::QueryService::Create( NativePtr->getQueryService( ).ptr( ) );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+    }
+  }
+}


[40/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cacheRunner/CacheRunner.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cacheRunner/CacheRunner.cpp b/geode-client-native/examples/dist/cacheRunner/CacheRunner.cpp
new file mode 100644
index 0000000..faf3a47
--- /dev/null
+++ b/geode-client-native/examples/dist/cacheRunner/CacheRunner.cpp
@@ -0,0 +1,1641 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+/**
+ * @file cacheRunner.cpp
+ * @since   1.0
+ * @version 1.0
+ * @see
+ *
+ * This program demonstrates the functionality offered by the Gemfire
+ * Native Client C++ API.
+ */
+
+#ifdef WIN32
+#define _GS_ENABLE_WIN_MEMORY_LEAK_CHECK
+
+#ifdef _GS_ENABLE_WIN_MEMORY_LEAK_CHECK
+#include <crtdbg.h>
+#include <stdio.h>
+#endif
+
+#endif
+
+#define _GS_CACHE_RUNNER_SYSTEM     "theSystemTest"
+#define _GS_CACHE_RUNNER_CACHE      "theCache"
+#define _GS_CACHE_RUNNER_WITH_LLW     "listenerWriterLoader"
+
+#include <gfcpp/GemfireCppCache.hpp>
+#include <gfcpp/AttributesMutator.hpp>
+#include <gfcpp/AttributesFactory.hpp>
+#include <gfcpp/ScopeType.hpp>
+#include <gfcpp/Query.hpp>
+#include <gfcpp/QueryService.hpp>
+#include <gfcpp/SelectResults.hpp>
+#include <gfcpp/ResultSet.hpp>
+#include <gfcpp/StructSet.hpp>
+#include <gfcpp/Struct.hpp>
+#include <gfcpp/SelectResultsIterator.hpp>
+
+
+#include <typeinfo>
+
+#include "CacheRunner.hpp"
+#include "TestCacheListener.hpp"
+#include "TestCacheLoader.hpp"
+#include "TestCacheWriter.hpp"
+#include "ExampleObject.hpp"
+#include "Position.hpp"
+#include "Portfolio.hpp"
+#include "User.hpp"
+#include <assert.h>
+
+#ifdef WIN32
+#include <io.h>
+#define access _access
+#define F_OK 0
+#define R_OK 04
+#define atoll _atoi64
+#else
+#include <unistd.h>
+#endif
+
+// ----------------------------------------------------------------------------
+/**
+  * @brief ExampleObject class for testing the put functionality for object
+  * @brief User          class for testing the put functionality for object
+  */
+// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+/**
+  * Test Parses the command line and runs the <code>CacheRunner</code> example.
+  */
+// ----------------------------------------------------------------------------
+using namespace std;
+using namespace testobject;
+
+int main (int argc, char **argv)
+{
+  std::string sXmlFileName;
+#ifdef _GS_ENABLE_WIN_MEMORY_LEAK_CHECK
+  _CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
+#endif
+
+  if (argc != 2) {
+    printf("Usage: CacheRunner <cache.xml>\n");
+    exit(1);
+  }
+
+  sXmlFileName = argv[1];
+
+  // Does the cache file exist?
+  if (access(sXmlFileName.c_str(), F_OK) == -1){
+    printf("Supplied Cache config file <cache.xml> does not exist\n");
+    exit(1);
+  }
+  // Can we access the cache file?
+  if (access(sXmlFileName.c_str(), R_OK) == -1){
+    printf("Supplied Cache config file <cache.xml> can not be accessed\n");
+    exit(1);
+  }
+
+
+try{
+    CacheRunnerPtr cacheRunnerPtr = CacheRunner::create_Runner();
+
+    cacheRunnerPtr->setXmlFile(sXmlFileName);
+    cacheRunnerPtr->initialize();
+
+    cacheRunnerPtr->go();
+  } catch(OutOfMemoryException& ex)
+  {
+    printf("Out of Memory exception in main [%s]\n", ex.getMessage());
+    exit(1);
+  }
+
+  return 0;
+}
+
+// ----------------------------------------------------------------------------
+/**
+  * Connect to distributed system and set properties
+  * returns true if success, false if failed
+  */
+// ----------------------------------------------------------------------------
+
+bool CacheRunner::connectDistributedSystem(const char* pszCacheXmlFileName)
+{
+  bool bSuccess = false;
+  disconnectDistributedSystem( );
+
+  try {
+    Serializable::registerType( ExampleObject::createInstance);
+    Serializable::registerType( User::createInstance);
+    Serializable::registerType( Position::createDeserializable);
+    Serializable::registerType( Portfolio::createDeserializable);
+    bSuccess = true;
+  } catch (IllegalArgumentException& ex)
+  {
+     fprintf(stderr, "Exception IllegalArgumentException in CacheRunner::initialize [%s]\n", ex.getMessage());
+     exit(1);
+  } catch (AlreadyConnectedException& ex)
+  {
+     fprintf(stderr, "Exception AlreadyConnectedException in CacheRunner::initialize [%s]\n", ex.getMessage());
+     exit(1);
+  }
+  catch (Exception& ex) {
+     fprintf(stderr, "Exception in CacheRunner::connectDistributedSystem [%s]\n", ex.getMessage());
+     exit(1);
+  }
+
+  if (bSuccess){
+    try{
+      PropertiesPtr systemProp = Properties::create();
+      systemProp->insert("cache-xml-file",pszCacheXmlFileName);
+      CacheFactoryPtr cacheFactory = CacheFactory::createCacheFactory(systemProp);
+      m_cachePtr =  cacheFactory->create();
+      VectorOfRegion vrp;
+      m_cachePtr->rootRegions(vrp);
+      m_currRegionPtr = m_cachePtr->getRegion(vrp.at(vrp.size() - 1)->getName());
+      m_currRegionAttributesPtr = m_currRegionPtr->getAttributes();
+
+      RegionFactoryPtr rgnFac = m_cachePtr->createRegionFactory(CACHING_PROXY);
+      if (m_currRegionAttributesPtr->getCacheListener() == NULLPTR) {
+        rgnFac->setCacheListener(CacheListenerPtr(new TestCacheListener()));
+      }
+      if (m_currRegionAttributesPtr->getCacheLoader() == NULLPTR) {
+        rgnFac->setCacheLoader(CacheLoaderPtr(new TestCacheLoader()));
+      }
+      if (m_currRegionAttributesPtr->getCacheWriter() == NULLPTR) {
+        rgnFac->setCacheWriter(CacheWriterPtr(new TestCacheWriter()));
+      }
+    }
+    catch (Exception& ex) {
+      fprintf(stderr, "Exception in CacheRunner::connectDistributedSystem [%s]\n", ex.getMessage());
+      exit(1);
+    }
+  }
+
+  return bSuccess;
+}
+
+// ----------------------------------------------------------------------------
+/**
+  * Disconnect to distributed system and set properties
+  *   return true if success
+  *   return false if failed
+  */
+// ----------------------------------------------------------------------------
+
+void CacheRunner::disconnectDistributedSystem( )
+{
+  if (m_cachePtr != NULLPTR) {
+      m_cachePtr->close();
+      m_cachePtr=NULLPTR;
+  }
+}
+
+// ----------------------------------------------------------------------------
+/**
+  * Initializes the <code>Cache</code> for this example program.
+  * Uses the {@link TestCacheListener}, {@link TestCacheLoader},
+  * {@link TestCacheWriter}, and {@link TestCapacityController}.
+  */
+// ----------------------------------------------------------------------------
+
+void CacheRunner::initialize( )
+{
+  if (connectDistributedSystem(m_sCacheXmlFileName.c_str())== false) {
+    exit(-1);
+  }
+}
+
+// ----------------------------------------------------------------------------
+/**
+  * Sets the <code>cache.xml</code> file used to declaratively
+  * initialize the cache in this example.
+  */
+// ----------------------------------------------------------------------------
+
+void CacheRunner::setXmlFile( std::string cacheXmlFileName )
+{
+  m_sCacheXmlFileName = cacheXmlFileName;
+}
+
+// ----------------------------------------------------------------------------
+/**
+  * Prompts the user for input and executes the command accordingly.
+  *
+  */
+// ----------------------------------------------------------------------------
+
+void CacheRunner::go( )
+{
+  CommandReader commandReader;
+
+  printf("Enter 'help' or '?' for help at the Command prompt.\n");
+  printf("\n");
+
+  while (true) {
+    try {
+
+      printf("%s> ", m_currRegionPtr->getFullPath());
+      fflush(stdout);
+      commandReader.readCommandLineFromStdin();
+
+        if (commandReader.isCommandStartsWith("exit") ||
+          commandReader.isCommandStartsWith("quit"))
+        {
+          if(m_cachePtr != NULLPTR){
+            m_cachePtr->close();
+            m_cachePtr=NULLPTR;
+          }
+          exit(0);
+  	    }
+        else if (commandReader.isCommandStartsWith("set")) {
+          setRgnAttr(commandReader);
+        }
+        else if (commandReader.isCommandStartsWith("putAll")) {
+          putAll(commandReader);
+        }
+        else if (commandReader.isCommandStartsWith("put")) {
+          put(commandReader);
+        }
+        else if (commandReader.isCommandStartsWith("create")) {
+          create(commandReader);
+        }
+        else if (commandReader.isCommandStartsWith("get")) {
+          get(commandReader);
+        }
+        else if (commandReader.isCommandStartsWith("run")) {
+          run(commandReader);
+        }
+        else if (commandReader.isCommand("reg")) {
+          registerKeys(commandReader);
+        }
+        else if (commandReader.isCommand("unreg")) {
+          unregisterKeys(commandReader);
+        }
+        else if (commandReader.isCommand("regex")) {
+          registerRegex(commandReader);
+        }
+        else if (commandReader.isCommand("unregex")) {
+          unregisterRegex(commandReader);
+        }
+        else if (commandReader.isCommandStartsWith("inv")) {
+          inv(commandReader);
+        }
+        else if (commandReader.isCommandStartsWith("des")) {
+          des(commandReader);
+        }
+        else if (commandReader.isCommandStartsWith("lsAttrs")) {
+  	      attr(commandReader);
+        }
+        else if (commandReader.isCommand("ls")) {
+          ls(commandReader);
+        }
+        else if (commandReader.isCommandStartsWith("mkrgn")) {
+          mkrgn(commandReader);
+        }
+        else if (commandReader.isCommandStartsWith("chrgn")) {
+          chrgn(commandReader);
+        }
+        else if (commandReader.isCommandStartsWith("load")) {
+          load(commandReader);
+        }
+        else if (commandReader.isCommandStartsWith("exec")) {
+          exec(commandReader);
+        }
+        else if (commandReader.isCommandStartsWith("query")) {
+          query(commandReader);
+        }
+        else if (commandReader.isCommandStartsWithNoCase("existsValue")) {
+          existsValue(commandReader);
+        }
+        else if (commandReader.isCommandStartsWithNoCase("selectValue")) {
+          selectValue(commandReader);
+        }
+        else if (commandReader.isCommandStartsWith("help") ||
+          commandReader.isCommandStartsWith("?"))
+        {
+          showHelp();
+        }
+        else if (commandReader.isCommand("lsrgn"))
+        {
+          cacheInfo();
+        }
+        else if (commandReader.getCommandString().size() != 0) {
+          printf("Unrecognized command. Enter 'help' or '?' to get a list of commands.\n");
+        }
+    }
+    catch (Exception& ex) {
+      fprintf(stderr, "Exception in CacheRunner [%s]\n", ex.getMessage());
+    }
+  }
+}
+
+// ----------------------------------------------------------------------------
+// ************ Command implementation methods ****************************
+// ----------------------------------------------------------------------------
+void CacheRunner::cacheInfo()
+{
+  VectorOfRegion vrp;
+  m_cachePtr->rootRegions(vrp);
+  printf("\nNumber of regions in Cache: %d\n", vrp.size());
+  int count = 1;
+  for (int rgnCnt = 0; rgnCnt < vrp.size(); rgnCnt++) {
+    printf("Region Name %d: %s\n", count++, vrp.at(rgnCnt)->getName());
+  }
+
+}
+// ----------------------------------------------------------------------------
+/**
+  * Creates a new region
+  * @see RegionFactory#create
+  */
+// ----------------------------------------------------------------------------
+
+void CacheRunner::mkrgn(CommandReader& commandReader) throw ( Exception )
+{
+  std::string sName = commandReader.getTokenString(1); // read second token from command string
+
+  if (sName.size() > 0) {
+    PoolFactoryPtr poolFactPtr = PoolManager::createFactory();
+    poolFactPtr->addServer("localhost", 50505);
+    if((PoolManager::find("examplePool"))== NULLPTR ) {// Pool does not exist with the same name.
+      PoolPtr pptr = poolFactPtr->create("examplePool");
+    }
+    RegionFactoryPtr regionFactory = m_cachePtr->createRegionFactory(CACHING_PROXY);
+    RegionPtr regionPtr = regionFactory
+         ->setCachingEnabled(true)
+         ->setPoolName("examplePool")
+         ->create(sName.c_str());
+  }
+}
+
+//----------------------------------------------------------------------------
+void CacheRunner::exec(CommandReader& commandReader) throw ( Exception )
+{
+  std::string sName = commandReader.getTokenString(1,true);
+  printf(" query string is %s\n",sName.c_str());
+  try {
+    QueryServicePtr qs = m_cachePtr->getQueryService("examplePool");
+    QueryPtr q = qs->newQuery(sName.c_str());
+    SelectResultsPtr sptr = q->execute();
+    SelectResultsIterator iptr = sptr->getIterator();
+    ResultSetPtr rsptr;
+    StructSetPtr ssptr;
+    StructPtr siptr;
+    CacheableStringPtr cStrptr;
+    printf("Query results : Found %d row \n",sptr->size());
+    for( int32_t rows = 0; rows < sptr->size(); rows++)
+    {
+      SerializablePtr tmps = (*sptr)[rows];
+      if (instanceOf<StructPtr>(tmps)) {
+        siptr = staticCast<StructPtr>(tmps);
+        printf("Struct with %d fields \n",siptr->length());
+        for(int32_t cols = 0; cols < siptr->length(); cols++)
+        {
+          SerializablePtr field = (*siptr)[cols];
+          if (field == NULLPTR) {
+            printf("we got null fields here, probably we have NULL data\n");
+            continue;
+          }
+          printStructSet(field, siptr, cols);
+        }
+      }
+      else{
+          printResultset(tmps);
+      }
+    }
+  } catch(Exception& ex)
+  {
+    printf("Exception in CacheRunner::exec [%s]\n", ex.getMessage());
+  }
+}
+
+//----------------------------------------------------------------------------
+void CacheRunner::query(CommandReader& commandReader) throw ( Exception )
+{
+  std::string sName = commandReader.getTokenString(1,true);
+  printf(" query predicate is %s\n",sName.c_str());
+  try {
+    SelectResultsPtr sptr = m_currRegionPtr->query(sName.c_str(), 123);
+    SelectResultsIterator iptr = sptr->getIterator();
+    ResultSetPtr rsptr;
+    StructSetPtr ssptr;
+    StructPtr siptr;
+    printf("Query results : Found %d row \n",sptr->size());
+    for( int32_t rows = 0; rows < sptr->size(); rows++)
+    {
+      SerializablePtr tmps = (*sptr)[rows];
+      if (instanceOf<StructPtr>(tmps)) {
+        siptr = staticCast<StructPtr>(tmps);
+        printf("Struct with %d fields \n",siptr->length());
+        for(int32_t cols = 0; cols < siptr->length(); cols++)
+        {
+          SerializablePtr field = (*siptr)[cols];
+          if (field == NULLPTR) {
+            printf("we got null fields here, probably we have NULL data\n");
+            continue;
+          }
+          printStructSet(field, siptr, cols);
+        }
+      }
+      else{
+          printResultset(tmps);
+      }
+    }
+  } catch(Exception& ex)
+  {
+    printf("Exception in CacheRunner::query [%s]\n", ex.getMessage());
+  }
+}
+
+//----------------------------------------------------------------------------
+void CacheRunner::existsValue(CommandReader& commandReader) throw ( Exception )
+{
+  std::string sName = commandReader.getTokenString(1,true);
+  printf(" query predicate is %s\n",sName.c_str());
+  try {
+    bool result = m_currRegionPtr->existsValue(sName.c_str());
+    if (result)
+    {
+      printf("Query result is TRUE\n");
+    }
+    else
+    {
+      printf("Query result is FALSE\n");
+    }
+  } catch(Exception& ex)
+  {
+    printf("Exception in CacheRunner::existsValue [%s]\n", ex.getMessage());
+  }
+}
+
+//----------------------------------------------------------------------------
+void CacheRunner::selectValue(CommandReader& commandReader) throw ( Exception )
+{
+  std::string sName = commandReader.getTokenString(1,true);
+  printf(" query predicate is %s\n",sName.c_str());
+  try {
+    SerializablePtr sptr = m_currRegionPtr->selectValue(sName.c_str());
+    ResultSetPtr rsptr;
+    StructSetPtr ssptr;
+    StructPtr siptr;
+    if (instanceOf<StructPtr>(sptr)) {
+      siptr = staticCast<StructPtr>(sptr);
+      printf("Struct with %d fields \n",siptr->length());
+      for(int32_t cols = 0; cols < siptr->length(); cols++)
+      {
+        SerializablePtr field = (*siptr)[cols];
+        if (field == NULLPTR) {
+          printf("we got null fields here, probably we have NULL data\n");
+          continue;
+        }
+        printStructSet(field, siptr, cols);
+      }
+    }
+    else{
+        printResultset(sptr);
+    }
+  } catch(Exception& ex)
+  {
+    printf("Exception in CacheRunner::selectValue [%s]\n", ex.getMessage());
+  }
+}
+
+void CacheRunner::printStructSet(CacheablePtr field, StructPtr ssptr,
+		int32_t& fields)
+{
+  CacheableStringArrayPtr strArr = NULLPTR;
+  CacheableHashMapPtr map = NULLPTR;
+  StructPtr structimpl = NULLPTR;
+
+  if (field != NULLPTR) {
+    if (instanceOf<CacheableStringArrayPtr> (field)) {
+      strArr = staticCast<CacheableStringArrayPtr> (field);
+      for (int stri = 0; stri < strArr->length(); stri++)
+        printf("%s(%d) - %s \n", ssptr->getFieldName(fields), stri,
+            strArr->operator[](stri)->asChar());
+    }
+    else if (instanceOf<CacheableHashMapPtr> (field)) {
+      map = staticCast<CacheableHashMapPtr> (field);
+      int index = 0;
+      for (CacheableHashMap::Iterator iter = map->begin(); iter != map->end();
+        ++iter) {
+        printf("hashMap %d of %d ... \n", ++index, map->size());
+        printStructSet(iter.first(), ssptr, fields);
+        printStructSet(iter.second(), ssptr, fields);
+      }
+      printf("end of map \n");
+    }
+    else if (instanceOf<StructPtr> (field)) {
+      structimpl = staticCast<StructPtr> (field);
+      printf("structImpl %s {\n", ssptr->getFieldName(fields));
+      for (int32_t inner_fields = 0; inner_fields < structimpl->length();
+        ++inner_fields) {
+        SerializablePtr field = (*structimpl)[inner_fields];
+        if (field == NULLPTR) {
+          printf("we got null fields here, probably we have NULL data\n");
+          continue;
+        }
+
+        printStructSet(field, structimpl, inner_fields);
+
+      } //end of field iterations
+      printf("   } //end of %s\n", ssptr->getFieldName(fields));
+    }
+    else
+      printf("%s : %s\n", ssptr->getFieldName(fields),
+          field->toString()->asChar());
+  }
+  else {
+    printf("unknown field data.. couldn't even convert it to "
+      "Cacheable variants\n");
+  }
+}
+
+void CacheRunner::printResultset(SerializablePtr field)
+{
+  CacheableStringArrayPtr strArr;
+  CacheableHashMapPtr map;
+  if (field != NULLPTR) {
+    if (instanceOf<CacheableStringArrayPtr> (field)) {
+      strArr = staticCast<CacheableStringArrayPtr> (field);
+      for (int stri = 0; stri < strArr->length(); ++stri)
+        printf("(%d) - %s \n", stri, strArr->operator[](stri)->asChar());
+    }
+    else if (instanceOf<CacheableHashMapPtr> (field)) {
+      map = staticCast<CacheableHashMapPtr> (field);
+      int index = 0;
+      for (CacheableHashMap::Iterator iter = map->begin(); iter != map->end();
+        ++iter) {
+        printf("hashMap %d of %d ... \n", ++index, map->size());
+        printResultset(field);
+        printResultset(field);
+      }
+      printf("end of map \n");
+    }
+    else {
+      printf("%s\n", field->toString()->asChar());
+    }
+  }
+  else {
+    printf("unknown field data.. couldn't even convert it to "
+      "Cacheable variants\n");
+  }
+}
+
+// ----------------------------------------------------------------------------
+/**
+  * Changes the current region to another as specified by
+  * <code>command</code>.
+  *
+  * @see Cache#getRegion
+  * @see Region#getSubregion
+  * @see Region#getParentRegion
+  */
+// ----------------------------------------------------------------------------
+
+void CacheRunner::chrgn(CommandReader& commandReader) throw ( Exception )
+{
+  VectorOfRegion vrp;
+  if (commandReader.getNumberOfTokens() == 1) { // if only the command token exists
+    m_cachePtr->rootRegions(vrp);
+    RegionPtr regPtr1 = vrp.at(vrp.size()-1);
+
+    m_currRegionPtr = m_cachePtr->getRegion(vrp.at(vrp.size()-1)->getName());
+    return;
+  }
+  m_cachePtr->rootRegions(vrp);
+  std::string sName = commandReader.getTokenString(1); // read second token from command string
+
+  if (sName.size() == 0)
+    return;
+
+  RegionPtr tmpRgnPtr;
+
+  tmpRgnPtr = m_cachePtr->getRegion(sName.c_str());
+
+  if (tmpRgnPtr != NULLPTR) {
+    m_currRegionPtr = tmpRgnPtr;
+  }
+  else {
+    printf("Region %s not found\n", sName.c_str());
+  }
+}
+
+// ----------------------------------------------------------------------------
+/**
+  * Invalidates (either local or distributed) a region or region
+  * entry depending on the contents of <code>command</code>.
+  *
+  * @see Region#invalidateRegion
+  * @see Region#invalidate
+  */
+// ----------------------------------------------------------------------------
+
+void CacheRunner::inv(CommandReader& commandReader) throw ( Exception )
+{
+  std::string arg1;
+  std::string arg2;
+  bool inv_l = false;
+
+  switch (commandReader.getNumberOfTokens()) {
+    case 1:
+      // inv followed by nothing invalidates the current region
+      m_currRegionPtr->invalidateRegion();
+      break;
+    case 2:
+      arg1 = commandReader.getTokenString(1);
+      inv_l = (arg1 == "-l") ? true : false;
+      if (inv_l) {
+        // inv -l local invalidates current region
+        m_currRegionPtr->localInvalidateRegion();
+      }
+      else {
+        // inv name invalidate the entry name in current region
+        m_currRegionPtr->invalidate(createKey( arg1.c_str() ));
+
+      }
+      break;
+    case 3:
+      // inv -l name local invalidates name in current region
+      arg1 = commandReader.getTokenString(1);
+      arg2 = commandReader.getTokenString(2);
+      inv_l = (arg1 == "-l") ? true : false;
+      if (inv_l) {
+        m_currRegionPtr->localInvalidate(createKey( arg2.c_str() ));
+      }
+      break;
+    default:
+      break;
+  }
+}
+
+// ----------------------------------------------------------------------------
+/**
+  * Resets the current region attributes
+  */
+// ----------------------------------------------------------------------------
+
+void CacheRunner::reset() throw ( Exception )
+{
+  /** @todo could not find previously saved settings */
+  AttributesFactory* pAttributeFactory = new AttributesFactory( );
+  assert(pAttributeFactory != NULL);
+  if (pAttributeFactory){
+    m_currRegionAttributesPtr = pAttributeFactory->createRegionAttributes();
+    printf("attributes have been reset to defaults\n");
+
+    _GF_SAFE_DELETE(pAttributeFactory);
+  }
+}
+
+
+/**
+  * Gets a cached object from the current region and prints out its
+  * <code>String</code> value.
+  *
+  * @see Region#get
+  */
+// ----------------------------------------------------------------------------
+
+void CacheRunner::get(CommandReader& commandReader) throw (Exception)
+{
+  std::string sKey = commandReader.getTokenString(1); // read second token from command string
+
+  if (sKey.size() != 0) {
+    std::string sValue;
+    try {
+      CacheablePtr cacheablePtr = m_currRegionPtr->get(sKey.c_str());
+      CacheableKeyPtr sKeyPtr = CacheableString::create( sKey.c_str());
+
+      printEntry(sKeyPtr, cacheablePtr);
+    } catch ( const Exception& ex ) {
+      printf("Entry not found\n");
+    }
+
+  }
+}
+
+/**
+  * run a certain number of get() on the specified entry
+  *
+  * @see Region#get
+  */
+// ----------------------------------------------------------------------------
+
+int getUsedTime(struct timeval tv1, struct timeval tv2) {
+    int sec = tv2.tv_sec - tv1.tv_sec;
+    int usec = tv2.tv_usec - tv1.tv_usec;
+    if (usec < 0) {
+      sec--;
+      usec = 1000000-usec;
+    }
+    return(sec*1000000+usec);
+}
+
+void CacheRunner::run(CommandReader& commandReader) throw (Exception)
+{
+  int iTokenSize = commandReader.getNumberOfTokens();
+  std::string sValue = "null";
+  if (iTokenSize < 3 ) {
+    printf("Usage:run numberOfOp sizeOfData\n");
+    return;
+  }
+
+  sValue = commandReader.getTokenString(1);
+  int number = atoi(sValue.c_str());
+  sValue = commandReader.getTokenString(2);
+  int size = atoi(sValue.c_str());
+
+  // VectorOfCacheableKey keys;
+  std::string val(size,'a');
+  CacheablePtr value = CacheableBytes::create(( const unsigned char * )val.c_str(), val.length());
+
+  // for (int i=0; i<number; i++) {
+    // keys.push_back(CacheableKey::create( i ));
+  // }
+
+    // std::string val(10,'a');
+    HashMapOfCacheable map;
+    map.clear();
+#if defined(WIN32)
+    clock_t tv1 = clock();
+#else
+    struct timeval tv1;
+    gettimeofday(&tv1, NULL);
+#endif
+    for (int i=0; i<number; i++) {
+      CacheableKeyPtr keyPtr = CacheableKey::create( i );
+      if (size == 0) {
+        ExampleObjectPtr newObj(new ExampleObject(i));
+        map.insert(keyPtr, newObj);
+      } else {
+        CacheableBytesPtr valuePtr = CacheableBytes::create(
+            (const unsigned char *)val.c_str(), val.length());
+        map.insert(keyPtr, valuePtr);
+      }
+    }
+#if defined(WIN32)
+    clock_t tv2 = clock();
+#else
+    struct timeval tv2;
+    gettimeofday(&tv2, NULL);
+#endif
+    m_currRegionPtr->putAll(map);
+
+#if defined(WIN32)
+    clock_t tv3 = clock();
+    printf("prepare:%f, run:%f, %f\n", (tv2-tv1)*1.0/CLOCKS_PER_SEC, (tv3-tv2)*1.0/CLOCKS_PER_SEC, number*1.0*CLOCKS_PER_SEC/(tv3-tv2));
+#else
+    struct timeval tv3;
+    gettimeofday(&tv3, NULL);
+    int prep_t = getUsedTime(tv1, tv2);
+    int run_t = getUsedTime(tv1, tv3);
+    double run_tf = run_t/1000000.0;
+    printf("prepare:%d.%d, run:%d.%d, %f\n", prep_t/1000000, prep_t%1000000, run_t/1000000, run_t%1000000, number/run_tf);
+#endif
+
+#if 0
+  {
+    for (int i=0; i<number; i++) {
+      try {
+        m_currRegionPtr->put(keys[i], value);
+      } catch ( const Exception& ex ) {
+        printf("failed to put entry %d %s", i, ex.getMessage());
+      }
+    }
+    printf("Put: OpNum:%d, dataSize:%d\n", number, size);
+  }
+
+  {
+    for (int i=0; i<number; i++) {
+      try {
+        m_currRegionPtr->localInvalidate(keys[i]);
+      } catch ( const Exception& ex ) {
+        printf("localInvalidate failed\n");
+        return;
+      }
+    }
+  }
+
+  {
+    CacheablePtr valuePtr;
+    for (int i=0; i<number; i++) {
+      try {
+        valuePtr = m_currRegionPtr->get(keys[i]);
+      } catch ( const Exception& ex ) {
+        printf("Entry not found\n");
+        return;
+      }
+    }
+    printf("Get: OpNum:%d, dataSize:%d\n", number, size);
+  }
+
+  {
+    for (int i=0; i<number; i++) {
+      try {
+        m_currRegionPtr->localInvalidate(keys[i]);
+      } catch ( const Exception& ex ) {
+        printf("localInvalidate failed\n");
+      }
+    }
+  }
+
+  {
+    for (int i=0; i<number; i++) {
+      try {
+        m_currRegionPtr->destroy(keys[i]);
+      } catch ( const Exception& ex ) {
+        printf("failed to destroy entry %d %s", i, ex.getMessage());
+      }
+    }
+    printf("Destroy: OpNum:%d, dataSize:%d\n", number, size);
+  }
+#endif
+}
+
+/**
+  * register interested keys
+  *
+  * @see Region#registerKeys
+  */
+// ----------------------------------------------------------------------------
+
+void CacheRunner::registerKeys(CommandReader& commandReader) throw (Exception)
+{
+  int iTokenSize = commandReader.getNumberOfTokens();
+  std::string sValue = "null";
+  if (iTokenSize < 2 ) {
+    printf("Usage:reg k1 k2 ... kn\n");
+    return;
+  }
+
+  VectorOfCacheableKey keys;
+  for (int i=1; i<iTokenSize; i++)
+  {
+    sValue = commandReader.getTokenString(i);
+    keys.push_back(CacheableString::create( sValue.c_str() ));
+  }
+
+  try {
+    m_currRegionPtr->registerKeys(keys);
+  } catch ( const Exception& ex ) {
+    printf("failed to register keys %s", ex.getMessage());
+  }
+}
+
+/**
+  * register regular expression
+  *
+  * @see Region#registerRegex
+  */
+// ----------------------------------------------------------------------------
+
+void CacheRunner::registerRegex(CommandReader& commandReader) throw (Exception)
+{
+  int iTokenSize = commandReader.getNumberOfTokens();
+  std::string sValue = "null";
+  if (iTokenSize < 2 || iTokenSize > 2) {
+    printf("Usage:regex k.* or k-[2-3] ...Enter a regular expression string \n");
+    return;
+  }
+
+
+  try {
+    sValue = commandReader.getTokenString(1);
+    m_currRegionPtr->registerRegex(sValue.c_str());
+  } catch ( const Exception& ex ) {
+    printf("failed to register regular expression %s\n", ex.getMessage());
+  }
+}
+
+/**
+  * unregister interested keys
+  *
+  * @see Region#unregisterKeys
+  */
+// ----------------------------------------------------------------------------
+
+void CacheRunner::unregisterKeys(CommandReader& commandReader) throw (Exception)
+{
+  int iTokenSize = commandReader.getNumberOfTokens();
+  std::string sValue = "null";
+  if (iTokenSize < 2 ) {
+    printf("Usage:unreg k1 k2 ... kn\n");
+    return;
+  }
+
+  VectorOfCacheableKey keys;
+  for (int i=1; i<iTokenSize; i++)
+  {
+    sValue = commandReader.getTokenString(i);
+    keys.push_back(CacheableString::create( sValue.c_str() ));
+  }
+
+  try {
+    m_currRegionPtr->unregisterKeys(keys);
+  } catch ( const Exception& ex ) {
+    printf("failed to unregister keys %s", ex.getMessage());
+  }
+}
+
+/**
+  * unregister regular expression
+  *
+  * @see Region#unregisterRegex
+  */
+// ----------------------------------------------------------------------------
+
+void CacheRunner::unregisterRegex(CommandReader& commandReader) throw (Exception)
+{
+  int iTokenSize = commandReader.getNumberOfTokens();
+  std::string sValue = "null";
+  if (iTokenSize < 2 ) {
+    printf("Usage:unregex k.* or k-[2-3] ...Enter a regular expression string \n");
+    return;
+  }
+
+  try {
+    sValue = commandReader.getTokenString(1);
+    m_currRegionPtr->unregisterRegex(sValue.c_str());
+  } catch ( const Exception& ex ) {
+    printf("failed to unregister regular expression %s\n", ex.getMessage());
+  }
+}
+//----------------------------------------------------------------------------
+/**
+  * Creates a new entry in the current region
+  *
+  * @see Region#create
+  */
+// ----------------------------------------------------------------------------
+
+void CacheRunner::create(CommandReader& commandReader) throw ( Exception )
+{
+  int iTokenSize = commandReader.getNumberOfTokens();
+
+  if (iTokenSize < 2 ) {
+    printf("Error:create requires a name \n");
+  }
+  else {
+    std::string sKey = commandReader.getTokenString(1); // read second token from command string
+    if (iTokenSize > 2) {
+      std::string sValue = commandReader.getTokenString(2);
+      if (iTokenSize > 3) {
+        if (commandReader.isTokenNoCase("int", 3)){
+          /** @todo Could not find create for a integer */
+ 	  CacheableKeyPtr keyPtr = CacheableKey::create(sKey.c_str());
+          CacheableInt32Ptr ValuePtr = CacheableInt32::create( atoi(sValue.c_str()));
+          m_currRegionPtr->create(keyPtr,ValuePtr);
+        }
+        else if (commandReader.isTokenNoCase("long", 3)){
+          /** @todo Could not find create for a long long */
+ 	  CacheableKeyPtr keyPtr = CacheableKey::create(sKey.c_str());
+          CacheableInt64Ptr ValuePtr = CacheableInt64::create( atoll(sValue.c_str()));
+          m_currRegionPtr->create(keyPtr,ValuePtr);
+        }
+        else if (commandReader.isTokenNoCase("float", 3)){
+ 	  CacheableKeyPtr keyPtr = CacheableKey::create(sKey.c_str());
+	  CacheableFloatPtr ValuePtr = CacheableFloat::create(atof(sValue.c_str()));
+          m_currRegionPtr->create(keyPtr,ValuePtr);
+        }
+        else if (commandReader.isTokenNoCase("double", 3)){
+ 	  CacheableKeyPtr keyPtr = CacheableKey::create(sKey.c_str());
+	  CacheableDoublePtr ValuePtr = CacheableDouble::create(strtod(sValue.c_str(), NULL));
+          m_currRegionPtr->create(keyPtr,ValuePtr);
+        }
+        else if (commandReader.isTokenNoCase("str", 3)) {
+          CacheableKeyPtr keyPtr = CacheableKey::create(sKey.c_str());
+          CacheableStringPtr ValuePtr = CacheableString::create( sValue.c_str());
+          m_currRegionPtr->create(keyPtr, ValuePtr);
+        }
+	else if (commandReader.isTokenNoCase("obj", 3)) {
+          ExampleObjectPtr newObj(new ExampleObject(sValue));
+          CacheableKeyPtr keyPtr = CacheableKey::create(sKey.c_str());
+          m_currRegionPtr->put(keyPtr, newObj);
+        }
+        else if (commandReader.isTokenNoCase("usr", 3)) {
+          UserPtr newObj(new User(sValue.c_str(), ','));
+          CacheableKeyPtr keyPtr = CacheableKey::create(sKey.c_str());
+          m_currRegionPtr->put(keyPtr, newObj);
+        }
+        else if (commandReader.isTokenNoCase("portfolio",3)) {
+          PortfolioPtr newObj(new Portfolio(atoi(sValue.c_str()), 2));
+          CacheableKeyPtr keyPtr = CacheableKey::create(sKey.c_str());
+          m_currRegionPtr->put(keyPtr, newObj);
+        }
+      else if (commandReader.isTokenNoCase("position",3)) {
+          PositionPtr newObj(new Position(sValue.c_str(),atoi(sValue.c_str())));
+          CacheableKeyPtr keyPtr = CacheableKey::create(sKey.c_str());
+          m_currRegionPtr->put(keyPtr, newObj);
+      }
+        else {
+          printf("Invalid object type specified. Please see help.\n");
+        }
+      }
+      else {
+      	CacheableKeyPtr keyPtr = CacheableKey::create(sKey.c_str());
+	CacheableBytesPtr valuePtr = CacheableBytes::create(
+	    (uint8_t *)sValue.c_str(),sValue.size());
+        m_currRegionPtr->create(keyPtr, valuePtr);
+      }
+    }
+    else {
+      CacheableKeyPtr keyPtr = CacheableKey::create(sKey.c_str());
+      CacheablePtr valuePtr(NULLPTR);
+      m_currRegionPtr->create(keyPtr, valuePtr);
+
+    }
+  }
+}
+
+// ----------------------------------------------------------------------------
+/**
+  * Puts an entry into the current region
+  *
+  * @see Region#put
+  */
+// ----------------------------------------------------------------------------
+
+void CacheRunner::put(CommandReader& commandReader) throw ( Exception )
+{
+  int iTokenSize = commandReader.getNumberOfTokens();
+  std::string sValue = "null";
+  if (iTokenSize < 3 ) {
+    printf("Error:put requires a name and a value\n");
+  }
+  else {
+    std::string sKey = commandReader.getTokenString(1); // read second token from command string
+    sValue = commandReader.getTokenString(2);
+    if (iTokenSize > 3) {
+      if (commandReader.isTokenNoCase("int", 3)) {
+        /** put for integer values */
+	CacheableKeyPtr keyPtr = CacheableKey::create(sKey.c_str());
+	CacheableInt32Ptr ValuePtr = CacheableInt32::create(atoi(sValue.c_str()));
+        m_currRegionPtr->put(keyPtr,ValuePtr);
+      }
+      else if (commandReader.isTokenNoCase("long", 3)) {
+        /** put for long integer values */
+	CacheableKeyPtr keyPtr = CacheableKey::create(sKey.c_str());
+	CacheableInt64Ptr ValuePtr = CacheableInt64::create(atoll(sValue.c_str()));
+        m_currRegionPtr->put(keyPtr,ValuePtr);
+      }
+      else if (commandReader.isTokenNoCase("float", 3)) {
+        /** put for float values */
+	CacheableKeyPtr keyPtr = CacheableKey::create(sKey.c_str());
+	CacheableFloatPtr ValuePtr = CacheableFloat::create(atof(sValue.c_str()));
+        m_currRegionPtr->put(keyPtr,ValuePtr);
+      }
+      else if (commandReader.isTokenNoCase("double", 3)) {
+        /** put for double values */
+	CacheableKeyPtr keyPtr = CacheableKey::create(sKey.c_str());
+	CacheableDoublePtr ValuePtr = CacheableDouble::create(strtod(sValue.c_str(), NULL));
+        m_currRegionPtr->put(keyPtr,ValuePtr);
+      }
+      else if (commandReader.isTokenNoCase("date", 3)) {
+        /** put for date values */
+	CacheableKeyPtr keyPtr = CacheableKey::create(sKey.c_str());
+        struct tm tm_dt = { 0 };
+        tm_dt.tm_isdst = -1; //determine by itself.
+        time_t epochtime = 0;
+#ifdef WIN32
+        int yr=0, mon=0, dy=0;
+        if( sscanf(sValue.c_str(), "%d-%d-%d%*s", &yr, &mon, &dy) != 3) {
+          printf("invalid date format - date should be ISO format yyyy-mm-dd\n");
+          return;
+        }
+        tm_dt.tm_year=yr-1900;
+        tm_dt.tm_mon=mon-1;
+        tm_dt.tm_mday=dy;
+        epochtime = mktime(&tm_dt);
+#elif !defined(WIN32)
+        if(strptime(sValue.c_str(), "%Y-%m-%d", &tm_dt) == NULL) {
+          printf("invalid date format - date should be ISO format yyyy-mm-dd\n");
+          return;
+        }
+        epochtime = mktime( &tm_dt );
+#endif
+        if(epochtime == -1) { printf("ERROR: epoch time could not be computed.\n"); }
+	CacheableDatePtr ValuePtr = CacheableDate::create(epochtime);
+        m_currRegionPtr->put(keyPtr,ValuePtr);
+      }
+      else if (commandReader.isTokenNoCase("str", 3)) {
+        CacheableKeyPtr keyPtr = CacheableKey::create(sKey.c_str());
+        CacheableStringPtr ValuePtr = CacheableString::create( sValue.c_str());
+        m_currRegionPtr->put(keyPtr, ValuePtr);
+      }
+      else if (commandReader.isTokenNoCase("obj", 3)) {
+	// ExampleObjectPtr newObj = new ExampleObject(atoi(sValue.c_str()),(atoi(sValue.c_str()))*4);
+        ExampleObjectPtr newObj(new ExampleObject(sValue));
+	CacheableKeyPtr keyPtr = CacheableKey::create(sKey.c_str());
+	m_currRegionPtr->put(keyPtr, newObj);
+      }
+      else if (commandReader.isTokenNoCase("usr", 3)) {
+        // UserPtr newObj = new User(name_str, atoi(userId_str.c_str()));
+        UserPtr newObj(new User(sValue, atoi(sValue.c_str())));
+        CacheableKeyPtr keyPtr = CacheableKey::create(sKey.c_str());
+        m_currRegionPtr->put(keyPtr, newObj);
+      }
+      else if (commandReader.isTokenNoCase("portfolio",3)) {
+          PortfolioPtr newObj(new Portfolio(atoi(sValue.c_str()), 2));
+          CacheableKeyPtr keyPtr = CacheableKey::create(sKey.c_str());
+          m_currRegionPtr->put(keyPtr, newObj);
+      }
+      else if (commandReader.isTokenNoCase("position",3)) {
+          PositionPtr newObj(new Position(sValue.c_str(),atoi(sValue.c_str())));
+          CacheableKeyPtr keyPtr = CacheableKey::create(sKey.c_str());
+          m_currRegionPtr->put(keyPtr, newObj);
+      }
+      else {
+        printf("Invalid object type specified. Please see help.\n");
+      }
+    }
+    else {
+      /**  put for bytes */
+      CacheableKeyPtr keyPtr = CacheableKey::create(sKey.c_str());
+      CacheableBytesPtr ValuePtr = CacheableBytes::create((uint8_t*)sValue.c_str(),sValue.size());
+      m_currRegionPtr->put(keyPtr,ValuePtr);
+    }
+  }
+}
+
+void CacheRunner::putAll(CommandReader& commandReader) throw ( Exception )
+{
+  std::string sValue = "null";
+    std::string sKey = commandReader.getTokenString(1); // read second token from command string
+    sValue = commandReader.getTokenString(2);
+    int size = atoi(sValue.c_str());
+    char buf[20];
+    std::string val(10,'a');
+    HashMapOfCacheable map;
+    map.clear();
+    for (int i=0; i<size; i++) {
+      sprintf(buf,"%s%d", sKey.c_str(), i);
+      CacheableKeyPtr keyPtr = CacheableKey::create(buf);
+      CacheableBytesPtr valuePtr = CacheableBytes::create(( const unsigned char * )val.c_str(), val.length());
+      map.insert(keyPtr, valuePtr);
+      // ExampleObjectPtr newObj = new ExampleObject(i);
+      // map.insert(keyPtr, newObj);
+    }
+    for ( HashMapOfCacheable::Iterator iter = map.begin( ); iter != map.end( ); ++iter ) {
+      CacheableKeyPtr key = iter.first();
+      CacheablePtr value = iter.second();
+printf("%s, %s\n", key->toString()->asChar(), value->toString()->asChar());
+    }
+    m_currRegionPtr->putAll(map, 35);
+}
+
+// ----------------------------------------------------------------------------
+/**
+  * Destroys (local or distributed) a region or entry in the current
+  * region.
+  *
+  * @see Region#destroyRegion
+  */
+// ----------------------------------------------------------------------------
+
+void CacheRunner::des(CommandReader& commandReader) throw ( Exception )
+{
+  std::string arg1;
+  std::string arg2;
+  bool des_l= false;
+
+  switch (commandReader.getNumberOfTokens()) {
+    case 1:
+      // inv followed by nothing invalidates the current region
+      m_currRegionPtr->destroyRegion();
+      break;
+    case 2:
+      arg1 = commandReader.getTokenString(1); // read second token from command string
+      des_l= (arg1 == "-l") ? true : false;
+
+      if (des_l) {
+        // inv -l local invalidates current region
+        m_currRegionPtr->localDestroyRegion();
+      }
+      else {
+        // inv name invalidate the entry name in current region
+        m_currRegionPtr->destroy(createKey( arg1.c_str() ));
+      }
+      break;
+    case 3:
+      // inv -l name local invalidates name in current region
+      arg1 = commandReader.getTokenString(1); // read second token from command string
+      arg2 = commandReader.getTokenString(2); // read third token from command string
+      des_l = (arg1 == "-l") ? true : false;
+
+      if (des_l) {
+        m_currRegionPtr->localDestroy(createKey( arg2.c_str() ));
+      }
+      break;
+    default:
+      break;
+  }
+}
+
+// ----------------------------------------------------------------------------
+/**
+  * Lists the contents of the current region.
+  *
+  * @see Region#entries
+  */
+// ----------------------------------------------------------------------------
+void  CacheRunner::printAttribute(RegionAttributesPtr& attr)
+{
+  std::string scope("null");
+  int option = attr->getScope();
+  switch( option) {
+    case 0:
+      scope = "LOCAL";
+      break;
+    case 1:
+      scope = "DISTRIBUTED_NO_ACK";
+      break;
+    case 2:
+      scope = "DISTRIBUTED_ACK";
+      break;
+    case 3:
+      scope = "GLOBAL";
+      break;
+    case 4:
+      scope = "INVALID";
+      break;
+
+  }
+  printf("Scope: %s\n",scope.c_str());
+  printf("CachingEnable: %s\n",attr->getCachingEnabled() ?"enabled" : "disabled");
+  printf("InitialCapacity: %d\n",attr->getInitialCapacity());
+  printf("LoadFactor: %f\n",attr->getLoadFactor());
+  printf("ConcurencyLevel: %d\n",attr->getConcurrencyLevel());
+  printf("RegionTimeToLive: %d\n",attr->getRegionTimeToLive());
+  printf("RegionIdleTimeout: %d\n",attr->getRegionIdleTimeout());
+  printf("EntryTimeToLive: %d\n",attr->getEntryTimeToLive());
+  printf("EntryIdleTimeout: %d\n",attr->getEntryIdleTimeout());
+  printf("getLruEntriesLimit: %d\n",attr->getLruEntriesLimit());
+
+}
+
+void CacheRunner::attr(CommandReader& commandReader) throw ( Exception )
+{
+  RegionAttributesPtr regionAttributePtr = m_currRegionPtr->getAttributes();
+
+  if (regionAttributePtr == NULLPTR) {
+    printf("region attributes: RegionNotFound\n");
+  }
+  else {
+    printAttribute(regionAttributePtr);
+  }
+}
+
+void CacheRunner::ls(CommandReader& commandReader) throw ( Exception )
+{
+  bool ls_l = commandReader.isToken("-l", 1) ? true : false;
+  if (ls_l) {
+    printf("%s attributes:\n", m_currRegionPtr->getFullPath());
+    m_currRegionAttributesPtr = m_currRegionPtr->getAttributes();
+    printAttribute(m_currRegionAttributesPtr);
+  }
+
+  printf("Region Entries:\n");
+
+  VectorOfRegionEntry regionEntryVector;
+  m_currRegionPtr->entries(regionEntryVector, false);  // do not recurse
+
+  RegionEntryPtr  regionEntryPtr;
+  CacheableKeyPtr cacheableKeyPtr;
+  CacheablePtr    cacheablePtr;
+
+  for (int32_t ulIndex = 0; ulIndex < regionEntryVector.size(); ulIndex++){
+    regionEntryPtr = regionEntryVector.at(ulIndex);
+    cacheableKeyPtr = regionEntryPtr->getKey();
+    cacheablePtr = regionEntryPtr->getValue();
+
+    printEntry(cacheableKeyPtr,cacheablePtr);
+  }
+
+  printf("\n");
+}
+
+// ----------------------------------------------------------------------------
+/**
+  * Prints the key/value pair for an entry
+  * This method recognizes a subset of all possible object types.
+  */
+// ----------------------------------------------------------------------------
+
+void CacheRunner::printEntry(CacheableKeyPtr& sKey, CacheablePtr& valueBytes)
+{
+  std::string sValue = "null";
+   if (valueBytes != NULLPTR) {
+     int8_t typeId = valueBytes->typeId();
+     std::string objType;
+     if (typeId == GemfireTypeIds::CacheableBytes) {
+       objType = "Bytes: ";
+       CacheableBytesPtr cBytePtr = staticCast<CacheableBytesPtr>( valueBytes );
+       const uint8_t* bytType = cBytePtr->value();
+       const uint32_t len = cBytePtr->length();
+       char buff[1024];
+       sprintf(buff,"%s",(char*)bytType);
+       buff[len] = '\0';
+       std::string byteType(buff);
+       sValue = objType + byteType;
+     }
+     else {
+       switch (typeId)
+       {
+         case GemfireTypeIds::CacheableASCIIString: objType = "String: "; break;
+         case GemfireTypeIds::CacheableInt16: objType = "Int16: "; break;
+         case GemfireTypeIds::CacheableInt32: objType = "Int32: "; break;
+         case GemfireTypeIds::CacheableInt64: objType = "Int64: "; break;
+         case GemfireTypeIds::CacheableDouble: objType = "Double: "; break;
+         case GemfireTypeIds::CacheableFloat: objType = "Float: "; break;
+         case GemfireTypeIds::CacheableByte: objType = "Byte: "; break;
+         default: objType = ""; break;
+       }
+       sValue = objType + valueBytes->toString()->asChar();
+     }
+   }
+   else {
+     sValue = "No value in cache.";
+   }
+   printf("\n\t %s -> %s\n", sKey->toString()->asChar(), sValue.c_str());
+}
+
+// ----------------------------------------------------------------------------
+/**
+  * Sets an expiration attribute of the current region
+  *
+  * @see Region#getAttributesMutator
+  */
+// ----------------------------------------------------------------------------
+
+void CacheRunner::setExpirationAttr(CommandReader& commandReader) throw ( Exception )
+{
+  AttributesMutatorPtr attributesMutatorPtr = m_currRegionPtr->getAttributesMutator();
+  ExpirationAttributes* pExpirationAttributes = NULL;
+
+  bool bRegionIdle = false;
+  bool bEntryIdle = false;
+  bool bEntryTtl = false;
+  bool bRegionTtl = false;
+  int  iTime = 0;
+
+  //Item 0 is the command itself
+
+  std::string sAttrName   = commandReader.getTokenString(2);
+  std::string sAttrValue  = commandReader.getTokenString(3);
+  std::string sAttrAction = commandReader.getTokenString(4);
+
+  if (sAttrValue.size() != 0) {
+    iTime  = atoi(sAttrValue.c_str());
+  }
+
+  if (commandReader.isTokenStartsWith("regionIdleTime", 2)) {
+    if (sAttrValue.size() != 0)
+      bRegionIdle = true;
+  }
+  else if (commandReader.isTokenStartsWith("entryIdleTime", 2)) {
+    if (sAttrValue.size() != 0)
+      bEntryIdle = true;
+  }
+  else if (commandReader.isTokenStartsWith("entryTTL", 2)) {
+    if (sAttrValue.size() != 0)
+      bEntryTtl = true;
+  }
+  else if (commandReader.isTokenStartsWith("regionTTL", 2)) {
+    if (sAttrValue.size() != 0)
+      bRegionTtl = true;
+  }
+  else {
+    printf("Unrecognized attribute name: %s", sAttrName.c_str());
+  }
+
+  if (bRegionIdle || bEntryIdle || bEntryTtl || bRegionTtl) {
+    pExpirationAttributes = parseExpAction(iTime, sAttrAction);
+    if (pExpirationAttributes == NULL)
+      pExpirationAttributes = new ExpirationAttributes(iTime, ExpirationAction::INVALIDATE);
+  }
+
+  if (bRegionIdle){
+    attributesMutatorPtr->setRegionIdleTimeout(pExpirationAttributes->getTimeout());
+    attributesMutatorPtr->setRegionIdleTimeoutAction(pExpirationAttributes->getAction());
+  }
+  else if (bEntryIdle){
+    attributesMutatorPtr->setEntryIdleTimeout(pExpirationAttributes->getTimeout());
+    attributesMutatorPtr->setEntryIdleTimeoutAction(pExpirationAttributes->getAction());
+    }
+  else if (bEntryTtl){
+    attributesMutatorPtr->setEntryTimeToLive(pExpirationAttributes->getTimeout());
+    attributesMutatorPtr->setEntryTimeToLiveAction(pExpirationAttributes->getAction());
+    }
+  else if(bRegionTtl){
+    attributesMutatorPtr->setRegionTimeToLive(pExpirationAttributes->getTimeout());
+    attributesMutatorPtr->setRegionTimeToLiveAction(pExpirationAttributes->getAction());
+    }
+  _GF_SAFE_DELETE(pExpirationAttributes);
+}
+
+// ----------------------------------------------------------------------------
+/**
+  * Sets a region attribute of the current region
+  *
+  * @see #setExpirationAttr
+  * @see Region#getAttributesMutator
+  */
+// ----------------------------------------------------------------------------
+
+void CacheRunner::setRgnAttr(CommandReader& commandReader) throw ( Exception )
+{
+  std::string sName = commandReader.getTokenString(1); // read second token from command string
+
+  if (sName.size() == 0) {
+    printf("set argument is not provided, Please provide proper argument\n");
+    return;
+  }
+
+  if (sName == "expiration") {
+    setExpirationAttr(commandReader);
+    return;
+  }
+  else if(sName == "listener"){
+    std::string sValue;
+    sValue = commandReader.getTokenString(2);
+    AttributesMutatorPtr attrMutator = m_currRegionPtr->getAttributesMutator();
+    if(sValue == "null" || sValue == "NULL")
+      attrMutator->setCacheListener(NULLPTR);
+    else
+      attrMutator->setCacheListener(CacheListenerPtr(new TestCacheListener()));
+  }
+  else {
+    printf("Unrecognized attribute name: %s\n", sName.c_str());
+    return;
+  }
+
+}
+
+// ----------------------------------------------------------------------------
+/**
+  * Specifies the <code>cache.xml</code> file to use when creating
+  * the <code>Cache</code>.  If the <code>Cache</code> has already
+  * been open, then the existing one is closed.
+  *
+  * @see CacheFactory#create
+  */
+// ----------------------------------------------------------------------------
+
+void CacheRunner::load(CommandReader& commandReader) throw ( Exception )
+{
+  printf("This Functionality Is Not Implemented \n");
+}
+
+// ----------------------------------------------------------------------------
+/**
+  * Opens the <code>Cache</code> and sets the current region to the
+  * _GS_CACHE_RUNNER_REGION region.
+  *
+  * @see Cache#getRegion
+  */
+// ----------------------------------------------------------------------------
+
+void CacheRunner::open(CommandReader& commandReader) throw ( Exception )
+{
+  if (connectDistributedSystem(m_sCacheXmlFileName.c_str())){
+    reset();
+  }
+}
+
+// ----------------------------------------------------------------------------
+// ************************* Parsing methods **********************************
+// ----------------------------------------------------------------------------
+
+
+// ----------------------------------------------------------------------------
+/**
+  * Creates <code>ExpirationAttributes</code> from an expiration time
+  * and the name of an expiration action.
+  */
+// ----------------------------------------------------------------------------
+
+ExpirationAttributes* CacheRunner::parseExpAction( int iExpTime, std::string sActionName)
+{
+  ExpirationAttributes* pExpirationAttributes = NULL;
+
+  if (CommandReader::startsWith(sActionName.c_str(), "destroy")) {
+    pExpirationAttributes =
+      new ExpirationAttributes(iExpTime, ExpirationAction::DESTROY);
+  }
+  else if (CommandReader::startsWith(sActionName.c_str(), "inv")) {
+    pExpirationAttributes =
+      new ExpirationAttributes(iExpTime, ExpirationAction::INVALIDATE);
+  }
+  else if (CommandReader::startsWith(sActionName.c_str(), "localDes")) {
+    pExpirationAttributes =
+      new ExpirationAttributes(iExpTime, ExpirationAction::LOCAL_DESTROY);
+  }
+  else if (CommandReader::startsWith(sActionName.c_str(), "localInv")) {
+    pExpirationAttributes =
+      new ExpirationAttributes(iExpTime, ExpirationAction::LOCAL_INVALIDATE);
+  }
+  else {
+    printf("Expiration Action not understood: %s", sActionName.c_str());
+  }
+  return pExpirationAttributes;
+}
+
+// ----------------------------------------------------------------------------
+/* shows user help
+ */
+// ----------------------------------------------------------------------------
+
+void CacheRunner::showHelp( )
+{
+  printf("\nA distributed system is created with properties loaded from your gemfire.properties file.\n");
+  printf("You can specify alternative property files using -DgemfirePropertyFile=path.\n\n");
+
+  printf("load fileName - Re-initializes the cache based using a cache.xml file\n\n");
+
+  printf("Other commands:\n\n");
+
+  printf("ls - list all cache entries in current region and their stats.\n");
+  printf("lsAttrs - list the region attributes stored in the cache.\n\n");
+
+  printf("Entry creation and retrieval handles byte(default), String, Integer,\n");
+  printf("and a complex object generated using gfgen.\n\n");
+  printf("create name [value [str|int|long|float|double|obj|usr|portfolio] - define a new entry (see mkrgn create a region).\n");
+  printf("The complex object fields are filled based on the value provided.\n\n");
+  printf("put name value [str|int|long|float|double|date|obj|usr|portfolio|position] - associate a name with a value in the current region. Specify optionally the data type of the value \n");
+  printf("   As with create, the complex object fields are filled based on the value provided.\n\n");
+  printf("get name - get the value of a cache entry.\n\n");
+  printf("run number size - run a certain number of get() for this size.\n\n");
+  printf("putAll keyBase mapSize - putAll a map, each key is keyBase0, keyBase1, ...\n\n");
+  printf("reg k1 k2 ... kn - register the interested key list.\n\n");
+  printf("unreg k1 k2 ... kn - unregister the interested key list.\n\n");
+  printf("regex k.* or k-[2-3] - register the regular expression string.\n\n");
+  printf("unregex k.* or k-[2-3] - unregister the regular expression string.\n\n");
+  printf("des [-l] [name] - destroy an object or current region.  -l is for local destroy\n");
+  printf("inv [-l] [name] - invalidate a cache entry or current region.  -l is for local invalidation\n\n");
+
+  printf("mkrgn name - create a region with the current attributes settings\n");
+  printf("chrgn name - change current region (can use a local or global name)\n");
+  printf("chrgn - go to cache root level.\n\n");
+  printf("lsrgn - list all regions in cache.\n\n");
+  printf("exec queryExpr - Execute a query. All input after the exec command is considered the query string\n");
+  printf("query queryPredicate - Execute a standard query with the predicate on the current region. All input after the query command is considered the query predicate\n");
+  printf("existsValue queryPredicate - Execute a standard query with the predicate on the current region and check whether any result exists. All input after the query command is considered the query predicate\n");
+  printf("selectValue queryPredicate - Execute a standard query with the predicate on the current region and check for a single result item. All input after the query command is considered the query predicate\n");
+  printf("set expiration  <attribute [regionIdleTime | entryIdleTime | entryTTL | regionTTL ] > <value> <action [ destroy | inv | localDes | localInv ] > \n");
+  printf("set [listener] [null] - Add or remove a cache callback. Accepted values: listener. Use the optional null keyword to remove the cache callback");
+  printf("Usage:set expiration regionIdleTime 100 destroy - set regionIdleTimeout to 100 second and set the expiration action as destroy\n");
+  printf("\n");
+  printf("help or ? - list command descriptions\n");
+  printf("exit or quit: closes the current cache and exits\n\n");
+
+  printf("You have to use mkrgn and chrgn to create and descend into a region before using entry commands\n");
+
+  printf("\n");
+}
+
+void CacheRunner::showHelpForClientType( )
+{
+  printf("\nA distributed system is created with properties loaded from your gemfire.properties file.\n");
+  printf("You can specify alternative property files using -DgemfirePropertyFile=path.\n\n");
+
+  printf("load fileName - Re-initializes the cache based using a cache.xml file\n\n");
+
+  printf("Other commands:\n\n");
+
+  printf("ls - list all cache entries in current region and their stats.\n");
+
+  printf("Entry creation and retrieval handles byte(default), String, Integer,\n");
+  printf("and a complex object generated using gfgen.\n\n");
+  printf("create name [value [str|int|obj]] - define a new entry (see mkrgn create a region).\n");
+  printf("The complex object fields are filled based on the value provided.\n\n");
+  printf("put name value [str|int|obj|portfolio|position] - associate a name with a value in the current region\n");
+  printf("   As with create, the complex object fields are filled based on the value provided.\n\n");
+  printf("get name - get the value of a cache entry.\n\n");
+  printf("run number size - run a certain number of get() for this size.\n\n");
+  printf("reg k1 k2 ... kn - register the interested key list.\n\n");
+  printf("unreg k1 k2 ... kn - unregister the interested key list.\n\n");
+  printf("regex k.* or k-[2-3] - register the regular expression string.\n\n");
+  printf("unregex k.* or k-[2-3] - unregister the regular expression string.\n\n");
+  printf("set [listener] [null] - Add or remove a cache callback. Accepted values: listener. Use the optional null keyword to remove the cache callback");
+
+  printf("\n");
+  printf("help or ? - list command descriptions\n");
+  printf("exit or quit: closes the current cache and exits\n\n");
+
+  printf("You have to use mkrgn and chrgn to create and descend into a region before using entry commands\n");
+
+  printf("\n");
+}
+
+// ----------------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cacheRunner/CacheRunner.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cacheRunner/CacheRunner.hpp b/geode-client-native/examples/dist/cacheRunner/CacheRunner.hpp
new file mode 100644
index 0000000..b1acee8
--- /dev/null
+++ b/geode-client-native/examples/dist/cacheRunner/CacheRunner.hpp
@@ -0,0 +1,318 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+/**
+ * @file CacheRunner.hpp
+ * @since   1.0
+ * @version 1.0
+ * @see
+*/
+
+#ifndef __CACHE_RUNNER_HPP__
+#define __CACHE_RUNNER_HPP__
+
+#define _GF_SAFE_DELETE(PTR) if (PTR){ delete PTR; PTR = 0; }
+#define _GF_SAFE_DELETE_ARRAY(PTR) if (PTR){ delete []PTR; PTR = 0; }
+
+#ifndef NULL
+#define NULL 0
+#endif
+
+#include "CommandReader.hpp"
+
+#include <string>
+
+using namespace gemfire;
+
+// ----------------------------------------------------------------------------
+
+// forward declare
+class CacheRunner;
+
+// make a smart pointer for CacheRunner
+typedef SharedPtr< CacheRunner > CacheRunnerPtr;
+
+//typedef ACE_Hash_Map_Manager_Ex<CacheableKeyPtr, MapEntryPtr, ::ACE_Hash<CacheableKeyPtr>, ::ACE_Equal_To<CacheableKeyPtr>, ::ACE_Null_Mutex> CacheableKeyHashMap;
+
+// ----------------------------------------------------------------------------
+
+/**
+ * @class CacheRunner
+ *
+ * @brief This class is a command-line application that allows the user to
+ * exercise GemFire's eXtreme cache API}. The example allows the user
+ * to specify a <A HREF="{@docRoot}/../cacheRunner/cache.xml">cache.xml</A>
+ * file that specifies a parent region with certain properties and
+ * then allows the user to exercise the cache API
+ *
+ * @author GemStone Systems, Inc.
+ * @since 3.0
+ */
+
+class CacheRunner : public SharedBase
+{
+public:
+
+  CacheRunner( ) {}
+  ~CacheRunner( ) {}
+
+  /** @brief create an instance of CacheRunner.
+    * @throw OutOfMemoryException if not enough memory for the object creation.
+    */
+  inline static CacheRunnerPtr create_Runner( )
+      throw(OutOfMemoryException)
+    {
+      CacheRunnerPtr rptr;
+      rptr = NULLPTR;
+      CacheRunner* rp = new CacheRunner( );
+      if (!rp)
+      {
+        throw OutOfMemoryException("ReferenceCountedFactory::create_Runner: out of memory");
+      }
+      rptr = rp;
+      return rptr;
+  }
+
+  /**
+   * @brief Prints information on how this program should be used.
+   */
+  void showHelp( );
+  void showHelpForClientType( );
+
+  /**
+    * @brief Initializes the <code>Cache</code> for this example program.
+    * Uses the {@link TestCacheListener}, {@link TestCacheLoader},
+    * {@link TestCacheWriter}, and {@link TestCapacityController}.
+    */
+  void initialize( );
+
+  void setXmlFile( std::string cacheXmlFileName );
+  /**
+   * @brief Prints number of regions are created in the cache.
+   */
+  void cacheInfo();
+
+  /**
+    * @brief Prompts the user for input and executes the command accordingly.
+    */
+  void go( );
+
+
+private:
+  /**
+    * @brief Connect to distributed system and set properties
+    * @retval returns true if success, false if failed
+    */
+  bool connectDistributedSystem( const char* pszCacheXmlFileName = NULL);
+
+  /**
+    * @brief Disconnect to distributed system and set properties
+    * @retval returns true if success, false if failed
+    */
+  void disconnectDistributedSystem( );
+
+  /**
+    * @brief Prints out information about the current region
+    *
+    * @see Region#getStatistics
+    */
+  void status(CommandReader& commandReader) throw ( Exception );
+
+  /**
+    * @brief Creates a new subregion of the current region
+    *
+    * @see Region#createSubregion
+    */
+  void mkrgn(CommandReader& commandReader) throw ( Exception );
+
+  /**
+    * @brief Prints out information about the region entries that are
+    * currently locked.
+    */
+  void showlocks();
+
+  /**
+    * @brief Locks the current region or an entry in the current region based
+    * on the given <code>command</code>.
+    *
+    * @see Region#getRegionDistributedLock
+    * @see Region#getDistributedLock
+    */
+  void chrgn(CommandReader& commandReader) throw ( Exception );
+
+  /**
+    * @brief Invalidates (either local or distributed) a region or region
+    * entry depending on the contents of <code>command</code>.
+    *
+    * @see Region#invalidateRegion
+    * @see Region#invalidate
+    */
+  void inv(CommandReader& commandReader) throw ( Exception );
+
+  /**
+    * @brief Resets the current region attributes
+    */
+  void reset() throw ( Exception );
+
+  /**
+    * @brief Prints out the current region attributes
+    *
+    * @see Region#getAttributes
+    */
+  void attr(CommandReader& commandReader) throw ( Exception );
+
+  /**
+    * @brief Gets a cached object from the current region and prints out its
+    * <code>String</code> value.
+    *
+    * @see Region#get
+    */
+  void get(CommandReader& commandReader) throw ( Exception );
+
+  void run(CommandReader& commandReader) throw ( Exception );
+
+  void putAll(CommandReader& commandReader) throw ( Exception );
+
+  /**
+    * @brief Register keys in current region
+    *
+    * @see Region#registerKeys
+    */
+  void registerKeys(CommandReader& commandReader) throw ( Exception );
+
+  /**
+    * @brief unregister keys in current region
+    *
+    * @see Region#unregisterKeys
+    */
+  void unregisterKeys(CommandReader& commandReader) throw ( Exception );
+
+  /**
+    * @brief Register regular expression in current region
+    *
+    * @see Region#registerRegex
+    */
+  void registerRegex(CommandReader& commandReader) throw ( Exception );
+
+  /**
+    * @brief unregister regular expression in current region
+    *
+    * @see Region#unregisterRegex
+    */
+  void unregisterRegex(CommandReader& commandReader) throw ( Exception );
+
+  /**
+    * @brief Creates a new entry in the current region
+    *
+    * @see Region#create
+    */
+
+  void create(CommandReader& commandReader) throw ( Exception );
+
+  /**
+    * @brief Puts an entry into the current region
+    *
+    * @see Region#put
+    */
+  void put(CommandReader& commandReader) throw ( Exception );
+
+  /**
+    * @brief Destroys (local or distributed) a region or entry in the current
+    * region.
+    *
+    * @see Region#destroyRegion
+    */
+  void des(CommandReader& commandReader) throw ( Exception );
+
+  /**
+    * @brief Lists the contents of the current region.
+    *
+    * @see Region#entries
+    */
+  void ls(CommandReader& commandReader) throw ( Exception );
+
+  /**
+    * @brief Prints the key entry pair.
+    */
+
+  void  printEntry(CacheableKeyPtr& sKey, CacheablePtr& valueBytes);
+
+  /**
+    * @brief prints the region attributes.
+    */
+
+  void printAttribute(RegionAttributesPtr& attr);
+
+  /**
+    * @brief Sets an expiration attribute of the current region
+    *
+    * @see Region#getAttributesMutator
+    */
+  void setExpirationAttr(CommandReader& commandReader) throw ( Exception );
+
+  /**
+    * @brief Sets a region attribute of the current region
+    *
+    * @see #setExpirationAttr
+    * @see Region#getAttributesMutator
+    */
+  void setRgnAttr(CommandReader& commandReader) throw ( Exception );
+
+  /**
+    * @brief Specifies the <code>cache.xml</code> file to use when creating
+    * the <code>Cache</code>.  If the <code>Cache</code> has already
+    * been open, then the existing one is closed.
+    *
+    * @see CacheFactory#create
+    */
+  void load(CommandReader& commandReader) throw ( Exception );
+
+  /**
+    * @brief Opens the <code>Cache</code> and sets the current region to the
+    * _GS_CACHE_RUNNER_REGION region.
+    *
+    * @see Cache#getRegion
+    */
+  void open(CommandReader& commandReader) throw ( Exception );
+
+  /**
+    *  @brief Creates <code>ExpirationAttributes</code> from an expiration time
+    *  and the name of an expiration action.
+    */
+  ExpirationAttributes* parseExpAction( int iExpTime, std::string sActionName);
+
+  void exec(CommandReader& commandReader) throw ( Exception );
+  void query(CommandReader& commandReader) throw ( Exception );
+  void existsValue(CommandReader& commandReader) throw ( Exception );
+  void selectValue(CommandReader& commandReader) throw ( Exception );
+
+  void printStructSet(CacheablePtr field, StructPtr ssptr, int32_t& fields);
+  void printResultset(SerializablePtr field);
+
+private:
+  /** @brief Cache <code>Region</code> currently reviewed by this example  */
+  RegionPtr m_currRegionPtr;
+
+  /** @brief The cache used in the example */
+  CachePtr m_cachePtr;
+
+  /** @brief the attributes of the current region */
+  RegionAttributesPtr m_currRegionAttributesPtr;
+
+  /** @brief This example's connection to the distributed system */
+  DistributedSystemPtr m_distributedSystemPtr;
+
+  /** @brief The cache.xml file used to declaratively configure the cache */
+  std::string m_sCacheXmlFileName;
+
+};
+
+// ----------------------------------------------------------------------------
+
+#endif // __CACHE_RUNNER_HPP__
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cacheRunner/CommandReader.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cacheRunner/CommandReader.cpp b/geode-client-native/examples/dist/cacheRunner/CommandReader.cpp
new file mode 100644
index 0000000..7e19e71
--- /dev/null
+++ b/geode-client-native/examples/dist/cacheRunner/CommandReader.cpp
@@ -0,0 +1,322 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.  
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+/** 
+ * @file CommandReader.cpp
+ * @since   1.0
+ * @version 1.0
+ * @see
+*/
+
+#include "CommandReader.hpp"
+#include <string.h> 
+#include <stdio.h>
+
+// ----------------------------------------------------------------------------
+
+CommandReader::CommandReader(void) :
+  m_sCommand("")
+{
+}
+//----------------------------------------------------------------------------
+
+CommandReader::CommandReader( std::string command ) :
+  m_sCommand(command)
+{
+  parseStringToList(m_sCommand, m_commandList);
+}
+// ----------------------------------------------------------------------------
+
+CommandReader::~CommandReader()
+{
+}
+
+// ----------------------------------------------------------------------------
+/**
+ * clears current command list and command string
+ */
+// ----------------------------------------------------------------------------
+
+void CommandReader::clearCommand( )
+{
+  m_commandList.clear();
+  m_sCommand.clear();
+}
+
+// ----------------------------------------------------------------------------
+/**
+ * read command line from stdin up to 80 characters and stores value to 
+ * current command list and current command string
+ */
+// ----------------------------------------------------------------------------
+
+void CommandReader::readCommandLineFromStdin( )
+{
+	char szLine[1024];
+
+  // clear the current command 
+  clearCommand();
+
+  // read up to 80 characters from stdin
+  fgets(szLine, 1022, stdin);
+  char *p;
+  if( (p = strchr( szLine, '\n' )) != NULL )
+    *p = '\0';
+  if (strlen(szLine) >= 1){
+    m_sCommand = szLine;
+	  parseStringToList(m_sCommand, m_commandList);
+  }
+}
+
+// ----------------------------------------------------------------------------
+/**
+  * compares a command string to the current command 
+  * case is compared, length is compared
+  * return true if success, false if unsucessful
+  */
+// ----------------------------------------------------------------------------
+
+bool CommandReader::isCommand( const char* pszCommand )
+{
+  return isToken(pszCommand);
+}
+
+// ----------------------------------------------------------------------------
+/**
+  * compares a command string to the current command
+  * case is compared, length of input string is compared
+  * return true if success, false if unsucessful
+  */
+// ----------------------------------------------------------------------------
+
+bool CommandReader::isCommandStartsWith( const char* pszCommand)
+{
+  return isTokenStartsWith(pszCommand);
+}
+
+// ----------------------------------------------------------------------------
+/**
+  * compares a command string to the current command
+  * no case is compared, length is compared
+  * return true if success, false if unsucessful
+  */
+// ----------------------------------------------------------------------------
+
+bool CommandReader::isCommandNoCase( const char* pszCommand )
+{
+  return isTokenNoCase(pszCommand);
+}
+
+// ----------------------------------------------------------------------------
+/**
+  * compares a command string to the current token 
+  * no case is compared, length of input is compared
+  * return true if success, false if unsucessful
+  */
+// ----------------------------------------------------------------------------
+
+bool CommandReader::isCommandStartsWithNoCase( const char* pszCommand )
+{
+  return isTokenStartsWithNoCase(pszCommand);
+}
+
+// ----------------------------------------------------------------------------
+/**
+  * compares a token string to the current token
+  * case is compared, length is compared
+  * return true if success, false if unsucessful
+  */
+// ----------------------------------------------------------------------------
+
+bool CommandReader::isToken( const char* pszToken, int iIndex)
+{
+  bool bSuccess = false;
+
+  if (iIndex < (int)m_commandList.size() && pszToken){
+    if (!strcmp(pszToken, m_commandList[iIndex].c_str()))
+      bSuccess = true;
+  }
+
+  return bSuccess;
+}
+
+// ----------------------------------------------------------------------------
+/**
+  * compares a token string to the current token
+  * case is compared, length of input string is compared
+  * return true if success, false if unsucessful
+  */
+// ----------------------------------------------------------------------------
+
+bool CommandReader::isTokenStartsWith( const char* pszToken, int iIndex )
+{
+  bool bSuccess = false;
+
+  if (iIndex < (int)m_commandList.size() && pszToken){
+    if (!strncmp(pszToken, m_commandList[iIndex].c_str(), strlen(pszToken)))
+    {
+      bSuccess = true;
+    }
+  }
+
+  return bSuccess;
+}
+
+// ----------------------------------------------------------------------------
+/**
+  * compares a token string to the current token 
+  * no case is compared, length is compared
+  * return true if success, false if unsucessful
+  */
+// ----------------------------------------------------------------------------
+
+bool CommandReader::isTokenNoCase( const char* pszToken, int iIndex )
+{
+  bool bSuccess = false;
+
+  if (iIndex < (int)m_commandList.size() && pszToken){
+#ifdef _WIN32
+    if (!stricmp(pszToken, m_commandList[iIndex].c_str()))
+#else
+    if (!strcasecmp(pszToken, m_commandList[iIndex].c_str()))
+#endif
+      bSuccess = true;
+  }
+
+  return bSuccess;
+}
+
+// ----------------------------------------------------------------------------
+/**
+  * compares a token string to the current token
+  * no case is compared, length of input string is compared
+  * return true if success, false if unsucessful
+  */
+// ----------------------------------------------------------------------------
+
+bool CommandReader::isTokenStartsWithNoCase(const char* pszToken, int iIndex )
+{
+  bool bSuccess = false;
+
+  if (iIndex < (int)m_commandList.size() && pszToken){
+#ifdef _WIN32
+    if (!strnicmp(pszToken, m_commandList[iIndex].c_str(), strlen(pszToken)))
+#else
+    if (!strncasecmp(pszToken, m_commandList[iIndex].c_str(), strlen(pszToken)))
+#endif
+    {
+      bSuccess = true;
+    }
+  }
+
+  return bSuccess;
+}
+
+// ----------------------------------------------------------------------------
+/**
+ * return parameter from command line input
+ */
+// ----------------------------------------------------------------------------
+
+std::string CommandReader::getTokenString( int iIndex ,bool isQuery)
+{
+  std::string sParameter;
+  
+  
+  if(isQuery) {
+    for(int queryCnt = iIndex; queryCnt < (int)m_commandList.size(); queryCnt++)
+    {
+      sParameter += m_commandList[queryCnt]; 
+      sParameter += ' ';
+    }
+  } else {
+    if (iIndex < (int)m_commandList.size()){
+      sParameter = m_commandList[iIndex];
+    }
+  }
+  return sParameter;
+}
+
+// ----------------------------------------------------------------------------
+/**
+ * returns the number of tokens from command line input
+ */
+// ----------------------------------------------------------------------------
+
+int CommandReader::getNumberOfTokens( )
+{
+  return (int)m_commandList.size();
+}
+
+// ----------------------------------------------------------------------------
+/**
+  * returns the current command line text
+  */
+// ----------------------------------------------------------------------------
+
+std::string CommandReader::getCommandString( )
+{
+  return m_sCommand;
+}
+
+// ----------------------------------------------------------------------------
+/**
+  * parses a text string delimited by spaces into a vector array
+  */
+// ----------------------------------------------------------------------------
+
+void CommandReader::parseStringToList( const std::string& sText, tCommandReaderList& commandList )
+{
+  commandList.clear();  // make sure output string is cleared
+
+  size_t size = sText.size();
+
+  if (size){ // make sure input string has data
+    std::string sTmp;
+    char        cChar = 0;
+    size_t      index = 0;
+
+
+    while(index < size){
+      cChar = sText[index];
+
+      if (cChar == ' ') {
+	  if (sTmp.size())  // make sure there is data
+            commandList.push_back(sTmp);
+          sTmp.clear();
+      } else {
+          sTmp += cChar;
+      }
+      index++;
+    }
+
+    if (sTmp.size()) // add the last string if any
+      commandList.push_back(sTmp);
+  }
+}
+
+// ----------------------------------------------------------------------------
+/** helper function to compare strings
+ */
+// ----------------------------------------------------------------------------
+
+bool CommandReader::startsWith(const char* pszToken, const char* pszText)
+{
+  bool bSuccess = false;
+
+  if (pszToken && pszText){
+    if (!strncmp(pszToken, pszText, strlen(pszText)))
+    {
+      bSuccess = true;
+    }
+  }
+
+  return bSuccess;
+}
+
+// ----------------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cacheRunner/CommandReader.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cacheRunner/CommandReader.hpp b/geode-client-native/examples/dist/cacheRunner/CommandReader.hpp
new file mode 100644
index 0000000..16d928c
--- /dev/null
+++ b/geode-client-native/examples/dist/cacheRunner/CommandReader.hpp
@@ -0,0 +1,158 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.  
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+/** 
+ * @file CommandReader.hpp
+ * @since   1.0
+ * @version 1.0
+ * @see
+*/
+
+#ifndef __COMMAND_READER_HPP__
+#define __COMMAND_READER_HPP__
+
+#include <vector>
+#include <string>
+
+// ----------------------------------------------------------------------------
+
+typedef std::vector<std::string> tCommandReaderList;
+
+// ----------------------------------------------------------------------------
+
+/**
+ * @class CommandReader
+ *
+ * @brief Helper class for reading stdin and parsing commands 
+ */ 
+class CommandReader
+{
+public:
+  CommandReader(void);
+  CommandReader(std::string);
+  ~CommandReader();
+
+  /** 
+    * @brief helper function to compare strings 
+    * @param pszToken NULL terminated string token
+    * @param pszText NULL terminated string to compare token with
+    * @retval returns true if match, false if no match
+    */
+  static bool startsWith(const char* pszToken, const char* pszText);
+
+  /**
+    * @brief read command line from stdin up to 80 characters and stores value to 
+    * current command list and current command string
+    */
+  void readCommandLineFromStdin( );
+
+  /**
+    * @brief compares a command string to the current command, 
+    * case is compared, length is compared
+    * @param pszCommand NULL terminated string to search command
+    * @retval true if success, false if unsucessful
+    */
+  bool isCommand( const char* pszCommand);
+
+  /**
+    * @brief compares a command string to the current command, 
+    * case is compared, length of input string is compared
+    * @param pszCommand NULL terminated string to search command
+    * @retval true if success, false if unsucessful
+    */
+  bool isCommandStartsWith( const char* pszCommand);
+
+  /**
+    * @brief compares a command string to the current command, 
+    * no case is compared, length is compared
+    * @param pszCommand NULL terminated string to search command
+    * @retval true if success, false if unsucessful
+    */
+  bool isCommandNoCase( const char* pszCommand );
+
+  /**
+    * @brief compares a command string to the current token, 
+    * no case is compared, length of input is compared
+    * @param pszCommand NULL terminated string to search command
+    * @retval true if success, false if unsucessful
+    */
+  bool isCommandStartsWithNoCase( const char* pszCommand );
+
+  /**
+    * @brief compares a token string to the current token, 
+    * case is compared, length is compared
+    * @param pszToken NULL terminated string to search token
+    * @param iIndex index refenence of token
+    * @retval true if success, false if unsucessful
+    */
+  bool isToken( const char* pszToken, int iIndex = 0 );
+
+  /**
+    * @brief compares a token string to the current token, 
+    * case is compared, length of input string is compared
+    * @param pszToken NULL terminated string to search token
+    * @param iIndex index refenence of token
+    * @retval true if success, false if unsucessful
+    */
+  bool isTokenStartsWith( const char* pszToken, int iIndex = 0 );
+
+  /**
+    * @brief compares a token string to the current token, 
+    * no case is compared, length is compared
+    * @param pszToken NULL terminated string to search token
+    * @param iIndex index refenence of token
+    * @retval true if success, false if unsucessful
+    */
+  bool isTokenNoCase( const char* pszToken, int iIndex = 0);
+
+  /**
+    * @brief compares a token string to the current token, 
+    * no case is compared, length of input string is compared
+    * @param pszToken NULL terminated string to search token
+    * @param iIndex index refenence of token
+    * @retval true if success, false if unsucessful
+    */
+  bool isTokenStartsWithNoCase( const char* pszToken, int iIndex = 0 );
+
+  /**
+    * @brief gets command line string
+    * @retval returns the current command line string
+    */
+  std::string getCommandString( );
+  
+  /**
+    * @brief gets token of the command line string
+    * @retval returns a token from the command line string
+    */
+  std::string getTokenString( int iIndex , bool isQuery = false);
+
+  /**
+    * @brief returns the number of tokens, including the command token
+    * @retval returns the number of tokens from command line input
+    */
+  int getNumberOfTokens( );
+
+private:
+  /**
+    * @brief clears current command list and command string
+    */
+  void clearCommand( );
+  
+  /**
+    * @brief parses a text string delimited by spaces into a vector array
+    */
+  void parseStringToList( const std::string& sText, tCommandReaderList& commandList );
+
+private:
+  tCommandReaderList m_commandList;
+  std::string        m_sCommand;
+};
+
+// ----------------------------------------------------------------------------
+
+#endif // __COMMAND_READER_HPP__


[10/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/RegionM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/RegionM.hpp b/geode-client-native/src/clicache/RegionM.hpp
new file mode 100644
index 0000000..3b44a4e
--- /dev/null
+++ b/geode-client-native/src/clicache/RegionM.hpp
@@ -0,0 +1,5063 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/Cache.hpp"
+#include "impl/NativeWrapper.hpp"
+#include "CacheableHashMapM.hpp"
+#include "LogM.hpp"
+#include "ExceptionTypesM.hpp"
+
+using namespace System;
+using namespace System::Collections::Generic;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      ref class Cache;
+      ref class RegionEntry;
+      ref class RegionAttributes;
+      ref class AttributesMutator;
+      ref class CacheStatistics;
+      interface class IGFSerializable;
+      ref class Serializable;
+      ref class CacheableKey;
+      interface class ISelectResults;
+      interface class IRegionService;
+
+      /// <summary>
+      /// Encapsulates a concrete region of cached data.
+      /// </summary>
+      /// <remarks>
+      /// This class manages subregions and cached data. Each region
+      /// can contain multiple subregions and entries for data.
+      /// Regions provide a hierachical name space
+      /// within the cache. Also, a region can be used to group cached
+      /// objects for management purposes.
+      ///
+      /// Entries managed by the region are key-value pairs. A set of region attributes
+      /// is associated with the region when it is created.
+      ///
+      /// The Region interface basically contains two set of APIs: Region management
+      /// APIs and (potentially) distributed operations on entries. Non-distributed
+      /// operations on entries  are provided by <c>RegionEntry</c>.
+      ///
+      /// Each <c>Cache</c> defines regions called the root regions.
+      /// User applications can use the root regions to create subregions
+      /// for isolated name spaces and object grouping.
+      ///
+      /// A region's name can be any string, except that it must not contain
+      /// the region name separator, a forward slash (/).
+      ///
+      /// <c>Regions</c>  can be referenced by a relative path name from any region
+      /// higher in the hierarchy in <see cref="Region.GetSubRegion" />. You can get the relative
+      /// path from the root region with <see cref="Region.FullPath" />. The name separator
+      /// is used to concatenate all the region names together from the root, starting
+      /// with the root's subregions.
+      /// </remarks>
+      /// <see cref="RegionAttributes" />
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class Region
+        : public Internal::SBWrap<gemfire::Region>
+      {
+      public:
+
+        /// <summary>
+        /// Gets the region name.
+        /// </summary>
+        /// <returns>
+        /// region's name
+        /// </returns>
+        property String^ Name
+        {
+          String^ get( );
+        }
+
+        /// <summary>
+        /// Gets the region's full path, which can be used to get this region object
+        /// with <see cref="Cache.GetRegion" />.
+        /// </summary>
+        /// <returns>
+        /// region's pathname
+        /// </returns>
+        property String^ FullPath
+        {
+          String^ get( );
+        }
+
+        /// <summary>
+        /// Gets the parent region.
+        /// </summary>
+        /// <returns>
+        /// region's parent, if any, or null if this is a root region
+        /// </returns>
+        /// <exception cref="RegionDestroyedException">
+        /// if the region has been destroyed
+        /// </exception>
+        property Region^ ParentRegion
+        {
+          Region^ get( );
+        }
+
+        /// <summary>
+        /// Returns the attributes for this region, which can be used to create a new
+        /// region with <see cref="Cache.CreateRegion" />.
+        /// </summary>
+        /// <returns>
+        /// region's attributes
+        /// </returns>
+        property RegionAttributes^ Attributes
+        {
+          RegionAttributes^ get( );
+        }
+
+        /// <summary>
+        /// Return a mutator object for changing a subset of the
+        /// region attributes.
+        /// </summary>
+        /// <returns>
+        /// attribute mutator
+        /// </returns>
+        /// <exception cref="RegionDestroyedException">
+        /// if the region has been destroyed
+        /// </exception>
+        AttributesMutator^ GetAttributesMutator( );
+
+        /// <summary>
+        /// Returns the statistics for this region.
+        /// </summary>
+        /// <returns>the <c>CacheStatistics</c> for this region</returns>
+        /// <exception cref="StatisticsDisabledException">
+        /// if statistics have been disabled for this region
+        /// </exception>
+        property CacheStatistics^ Statistics
+        {
+          CacheStatistics^ get( );
+        }
+
+        /// <summary>
+        /// Invalidates this region.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// The invalidation will cascade to all the subregions and cached
+        /// entries. The region
+        /// and the entries in it will still exist.
+        /// </para>
+        /// <para>
+        /// This operation is not distributed for native clients
+        /// </para>
+        /// <para>
+        /// To remove all the
+        /// entries and the region, use <see cref="DestroyRegion" />.
+        /// </para><para>
+        /// Does not update any <c>CacheStatistics</c>.
+        /// </para>
+        /// </remarks>
+        /// <param name="callback">
+        /// user-defined parameter to pass to callback events triggered by this method
+        /// </param>
+        /// <exception cref="NotConnectedException">
+        /// if not connected to the GemFire system because the client cannot
+        /// establish usable connections to any of the servers given to it.
+        /// For pools configured with locators, if no locators are available, innerException
+        /// of NotConnectedException is set to NoAvailableLocatorsException.
+        /// </exception>
+        /// <exception cref="RegionDestroyedException">
+        /// if this region has been destroyed
+        /// </exception>
+        /// <seealso cref="LocalInvalidateRegion" />
+        /// <seealso cref="DestroyRegion" />
+        /// <seealso cref="ICacheListener.AfterRegionInvalidate" />
+        void InvalidateRegion( IGFSerializable^ callback );
+
+        /// <summary>
+        /// Invalidates this region.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// The invalidation will cascade to all the subregions and cached
+        /// entries. The region
+        /// and the entries in it will still exist.
+        /// </para>
+        /// <para>
+        /// This operation is not distributed for native clients
+        /// </para>
+        /// <para>
+        /// To remove all the
+        /// entries and the region, use <see cref="DestroyRegion" />.
+        /// </para><para>
+        /// Does not update any <c>CacheStatistics</c>.
+        /// </para>
+        /// </remarks>
+        /// <exception cref="CacheListenerException">
+        /// if CacheListener throws an exception; if this occurs some
+        /// subregions may have already been successfully invalidated
+        /// </exception>
+        /// <exception cref="NotConnectedException">
+        /// if not connected to the GemFire system because the client cannot
+        /// establish usable connections to any of the servers given to it.
+        /// For pools configured with locators, if no locators are available, innerException
+        /// of NotConnectedException is set to NoAvailableLocatorsException.
+        /// </exception>
+        /// <exception cref="RegionDestroyedException">
+        /// if this region has been destroyed
+        /// </exception>
+        /// <seealso cref="LocalInvalidateRegion" />
+        /// <seealso cref="DestroyRegion" />
+        /// <seealso cref="ICacheListener.AfterRegionInvalidate" />
+        inline void InvalidateRegion( )
+        {
+          InvalidateRegion( nullptr );
+        }
+
+        /// <summary>
+        /// Invalidates this region without distributing to other caches.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// The invalidation will cascade to all the local subregions and cached
+        /// entries. The region
+        /// and the entries in it will still exist.
+        /// </para><para>
+        /// To remove all the
+        /// entries and the region, use <see cref="LocalDestroyRegion" />.
+        /// </para><para>
+        /// Does not update any <c>CacheStatistics</c>.
+        /// </para>
+        /// </remarks>
+        /// <param name="callback">
+        /// a user-defined parameter to pass to callback events triggered by this method
+        /// </param>
+        /// <exception cref="CacheListenerException">
+        /// if CacheListener throws an exception; if this occurs some
+        /// subregions may have already been successfully invalidated
+        /// </exception>
+        /// <exception cref="RegionDestroyedException">
+        /// if the region is no longer valid
+        /// </exception>
+        /// <seealso cref="InvalidateRegion" />
+        /// <seealso cref="LocalDestroyRegion" />
+        /// <seealso cref="ICacheListener.AfterRegionInvalidate" />
+        void LocalInvalidateRegion( IGFSerializable^ callback );
+
+        /// <summary>
+        /// Invalidates this region without distributing to other caches.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// The invalidation will cascade to all the local subregions and cached
+        /// entries. The region
+        /// and the entries in it will still exist.
+        /// </para><para>
+        /// To remove all the
+        /// entries and the region, use <see cref="LocalDestroyRegion" />.
+        /// </para><para>
+        /// Does not update any <c>CacheStatistics</c>.
+        /// </para>
+        /// </remarks>
+        /// <exception cref="CacheListenerException">
+        /// if CacheListener throws an exception; if this occurs some
+        /// subregions may have already been successfully invalidated
+        /// </exception>
+        /// <exception cref="RegionDestroyedException">
+        /// if the region is no longer valid
+        /// </exception>
+        /// <seealso cref="InvalidateRegion" />
+        /// <seealso cref="LocalDestroyRegion" />
+        /// <seealso cref="ICacheListener.AfterRegionInvalidate" />
+        inline void LocalInvalidateRegion( )
+        {
+          LocalInvalidateRegion( nullptr );
+        }
+
+        /// <summary>
+        /// Destroys the whole distributed region and provides a user-defined parameter
+        /// object to any <c>ICacheWriter</c> invoked in the process.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// Destroy cascades to all entries and subregions. After the destroy,
+        /// this region object can not be used any more. Any attempt to use
+        /// this region object will get a <c>RegionDestroyedException</c>
+        /// The region destroy not only destroys the local region but also destroys the
+        /// server region.
+        /// </para><para>
+        /// Does not update any <c>CacheStatistics</c>.
+        /// </para>
+        /// </remarks>
+        /// <param name="callback">
+        /// a user-defined parameter to pass to callback events triggered by this call
+        /// </param>
+        /// <exception cref="CacheWriterException">
+        /// if a CacheWriter aborts the operation; if this occurs some
+        /// subregions may have already been successfully destroyed.
+        /// </exception>
+        /// <exception cref="CacheListenerException">
+        /// if CacheListener throws an exception; if this occurs some
+        /// subregions may have already been successfully invalidated
+        /// </exception>
+        /// <exception cref="CacheServerException">
+        /// If an exception is received from the Java cache server.
+        /// Only for Native Client regions.
+        /// </exception>
+        /// <exception cref="NotConnectedException">
+        /// if not connected to the GemFire system because the client cannot
+        /// establish usable connections to any of the servers given to it.
+        /// For pools configured with locators, if no locators are available, innerException
+        /// of NotConnectedException is set to NoAvailableLocatorsException.
+        /// </exception>
+        /// <exception cref="TimeoutException">
+        /// if the operation timed out
+        /// </exception>
+        /// <seealso cref="InvalidateRegion" />
+        void DestroyRegion( IGFSerializable^ callback );
+
+        /// <summary>
+        /// Destroys the whole distributed region and provides a user-defined parameter
+        /// object to any <c>ICacheWriter</c> invoked in the process.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// Destroy cascades to all entries and subregions. After the destroy,
+        /// this region object can not be used any more. Any attempt to use
+        /// this region object will get a <c>RegionDestroyedException</c>
+        /// The region destroy not only destroys the local region but also destroys the
+        /// server region.
+        /// </para><para>
+        /// Does not update any <c>CacheStatistics</c>.
+        /// </para>
+        /// </remarks>
+        /// <exception cref="CacheWriterException">
+        /// if a CacheWriter aborts the operation; if this occurs some
+        /// subregions may have already been successfully destroyed.
+        /// </exception>
+        /// <exception cref="CacheListenerException">
+        /// if CacheListener throws an exception; if this occurs some
+        /// subregions may have already been successfully invalidated
+        /// </exception>
+        /// <exception cref="CacheServerException">
+        /// If an exception is received from the Java cache server.
+        /// Only for Native Client regions.
+        /// </exception>
+        /// <exception cref="NotConnectedException">
+        /// if not connected to the GemFire system because the client cannot
+        /// establish usable connections to any of the servers given to it.
+        /// For pools configured with locators, if no locators are available, innerException
+        /// of NotConnectedException is set to NoAvailableLocatorsException.
+        /// </exception>
+        /// <exception cref="TimeoutException">
+        /// if the operation timed out
+        /// </exception>
+        /// <seealso cref="InvalidateRegion" />
+        inline void DestroyRegion( )
+        {
+          DestroyRegion( nullptr );
+        }
+
+        /// <summary>
+        /// Destroys the whole local region and provides a user-defined parameter
+        /// object to any <c>ICacheWriter</c> invoked in the process.
+        /// The region destroy is not distributed to other caches.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// Destroy cascades to all entries and subregions. After the destroy,
+        /// any attempt to use
+        /// this region object will get a <c>RegionDestroyedException</c>.
+        /// </para><para>
+        /// Does not update any <c>CacheStatistics</c>.
+        /// </para>
+        /// </remarks>
+        /// <param name="callback">
+        /// a user-defined parameter to pass to callback events triggered by this call
+        /// </param>
+        /// <exception cref="CacheWriterException">
+        /// if a CacheWriter aborts the operation; if this occurs some
+        /// subregions may have already been successfully destroyed.
+        /// </exception>
+        /// <exception cref="CacheListenerException">
+        /// if CacheListener throws an exception; if this occurs some
+        /// subregions may have already been successfully invalidated
+        /// </exception>
+        /// <seealso cref="DestroyRegion" />
+        /// <seealso cref="LocalInvalidateRegion" />
+        void LocalDestroyRegion( IGFSerializable^ callback );
+
+        /// <summary>
+        /// Destroys the whole local region and provides a user-defined parameter
+        /// object to any <c>ICacheWriter</c> invoked in the process.
+        /// The region destroy is not distributed to other caches.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// Destroy cascades to all entries and subregions. After the destroy,
+        /// any attempt to use
+        /// this region object will get a <c>RegionDestroyedException</c>.
+        /// </para><para>
+        /// Does not update any <c>CacheStatistics</c>.
+        /// </para>
+        /// </remarks>
+        /// <exception cref="CacheWriterException">
+        /// if a CacheWriter aborts the operation; if this occurs some
+        /// subregions may have already been successfully destroyed.
+        /// </exception>
+        /// <exception cref="CacheListenerException">
+        /// if CacheListener throws an exception; if this occurs some
+        /// subregions may have already been successfully invalidated
+        /// </exception>
+        /// <seealso cref="DestroyRegion" />
+        /// <seealso cref="LocalInvalidateRegion" />
+        inline void LocalDestroyRegion( ) { LocalDestroyRegion( nullptr ); }
+
+        /// <summary>
+        /// Returns the subregion identified by the path, null if no such subregion.
+        /// </summary>
+        /// <param name="path">path</param>
+        /// <returns>subregion, or null if none</returns>
+        /// <seealso cref="FullPath" />
+        /// <seealso cref="SubRegions" />
+        /// <seealso cref="ParentRegion" />
+        Region^ GetSubRegion( String^ path );
+
+        /// <summary>
+        /// Creates a subregion with the given name and attributes.
+        /// </summary>
+        /// <param name="subRegionName">new subregion name</param>
+        /// <param name="attributes">subregion attributes</param>
+        /// <returns>new subregion</returns>
+        /// <seealso cref="CreateServerSubRegion" />
+        Region^ CreateSubRegion( String^ subRegionName, RegionAttributes^ attributes );
+
+        /// <summary>
+        /// Returns the subregions of this region.
+        /// </summary>
+        /// <param name="recursive">if true, also return all nested subregions</param>
+        /// <returns>array of regions</returns>
+        /// <exception cref="RegionDestroyedException">
+        /// this region has already been destroyed
+        /// </exception>
+        array<Region^>^ SubRegions( bool recursive );
+
+        /// <summary>
+        /// Return the meta-object RegionEntry for the given key.
+        /// </summary>
+        /// <param name="key">key to use</param>
+        /// <returns>region entry object</returns>
+        /// <exception cref="IllegalArgumentException">key is null</exception>
+        /// <exception cref="RegionDestroyedException">
+        /// region has been destroyed
+        /// </exception>
+        RegionEntry^ GetEntry( GemStone::GemFire::Cache::ICacheableKey^ key );
+
+        /// <summary>
+        /// Return the meta-object RegionEntry for the given key.
+        /// </summary>
+        /// <param name="key">key to use</param>
+        /// <returns>region entry object</returns>
+        /// <exception cref="IllegalArgumentException">key is null</exception>
+        /// <exception cref="RegionDestroyedException">
+        /// region has been destroyed
+        /// </exception>
+        RegionEntry^ GetEntry( CacheableKey^ key );
+
+        /// <summary>
+        /// Returns the value for the given key, passing the callback argument
+        /// to any cache loaders or that are invoked in the operation.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// If the value is not present locally then it is requested from the java server.
+        /// If even that is unsuccessful then a local CacheLoader will be invoked if there is one.
+        /// </para>
+        /// <para>
+        /// The value returned by get is not copied, so multi-threaded applications
+        /// should not modify the value directly, but should use the update methods.
+        /// </para><para>
+        /// Updates the <see cref="CacheStatistics.LastAccessedTime" />
+        /// <see cref="CacheStatistics.HitCount" />, <see cref="CacheStatistics.MissCount" />,
+        /// and <see cref="CacheStatistics.LastModifiedTime" /> (if a new value is loaded)
+        /// for this region and the entry.
+        /// </para>
+        /// </remarks>
+        /// <param name="key">
+        /// key whose associated value is to be returned -- the key
+        /// object must implement the Equals and GetHashCode methods.
+        /// </param>
+        /// <param name="callback">
+        /// An argument passed into the CacheLoader if loader is used.
+        /// Has to be Serializable (i.e. implement <c>IGFSerializable</c>);
+        /// can be null.
+        /// </param>
+        /// <returns>
+        /// value, or null if the value is not found and can't be loaded
+        /// </returns>
+        /// <exception cref="IllegalArgumentException">
+        /// if key is null
+        /// </exception>
+        /// <exception cref="CacheLoaderException">
+        /// if CacheLoader throws an exception
+        /// </exception>
+        /// <exception cref="CacheServerException">
+        /// If an exception is received from the Java cache server.
+        /// Only for Native Client regions.
+        /// </exception>
+        /// <exception cref="NotConnectedException">
+        /// if not connected to the GemFire system because the client cannot
+        /// establish usable connections to any of the servers given to it.
+        /// For pools configured with locators, if no locators are available, innerException
+        /// of NotConnectedException is set to NoAvailableLocatorsException.
+        /// </exception>
+        /// <exception cref="MessageException">
+        /// If the message received from server could not be handled. This will
+        /// be the case when an unregistered typeId is received in the reply or
+        /// reply is not well formed. More information can be found in the log.
+        /// </exception>
+        /// <exception cref="TimeoutException">
+        /// if the operation timed out
+        /// </exception>
+        /// <exception cref="RegionDestroyedException">
+        /// if this region has been destroyed
+        /// </exception>
+        /// <seealso cref="Put" />
+        IGFSerializable^ Get( GemStone::GemFire::Cache::ICacheableKey^ key,
+          IGFSerializable^ callback );
+
+        /// <summary>
+        /// Returns the value for the given key, passing the callback argument
+        /// to any cache loaders or that are invoked in the operation.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// If the value is not present locally then it is requested from the java server.
+        /// If even that is unsuccessful then a local CacheLoader will be invoked if there is one.
+        /// </para>
+        /// <para>
+        /// The value returned by get is not copied, so multi-threaded applications
+        /// should not modify the value directly, but should use the update methods.
+        /// </para><para>
+        /// Updates the <see cref="CacheStatistics.LastAccessedTime" />
+        /// <see cref="CacheStatistics.HitCount" />, <see cref="CacheStatistics.MissCount" />,
+        /// and <see cref="CacheStatistics.LastModifiedTime" /> (if a new value is loaded)
+        /// for this region and the entry.
+        /// </para>
+        /// </remarks>
+        /// <param name="key">
+        /// key whose associated value is to be returned -- the key
+        /// object must implement the Equals and GetHashCode methods.
+        /// </param>
+        /// <param name="callback">
+        /// An argument passed into the CacheLoader if loader is used.
+        /// Has to be Serializable (i.e. implement <c>IGFSerializable</c>);
+        /// can be null.
+        /// </param>
+        /// <returns>
+        /// value, or null if the value is not found and can't be loaded
+        /// </returns>
+        /// <exception cref="IllegalArgumentException">
+        /// if key is null
+        /// </exception>
+        /// <exception cref="CacheLoaderException">
+        /// if CacheLoader throws an exception
+        /// </exception>
+        /// <exception cref="CacheServerException">
+        /// If an exception is received from the Java cache server.
+        /// Only for Native Client regions.
+        /// </exception>
+        /// <exception cref="NotConnectedException">
+        /// if not connected to the GemFire system because the client cannot
+        /// establish usable connections to any of the servers given to it.
+        /// For pools configured with locators, if no locators are available, innerException
+        /// of NotConnectedException is set to NoAvailableLocatorsException.
+        /// </exception>
+        /// <exception cref="MessageException">
+        /// If the message received from server could not be handled. This will
+        /// be the case when an unregistered typeId is received in the reply or
+        /// reply is not well formed. More information can be found in the log.
+        /// </exception>
+        /// <exception cref="TimeoutException">
+        /// if the operation timed out
+        /// </exception>
+        /// <exception cref="RegionDestroyedException">
+        /// if this region has been destroyed
+        /// </exception>
+        /// <seealso cref="Put" />
+        IGFSerializable^ Get( CacheableKey^ key,
+          IGFSerializable^ callback );
+
+        /// <summary>
+        /// Returns the value for the given key, passing the callback argument
+        /// to any cache loaders or that are invoked in the operation.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// If the value is not present locally then it is requested from the java server.
+        /// If even that is unsuccessful then a local CacheLoader will be invoked if there is one.
+        /// </para>
+        /// <para>
+        /// The value returned by get is not copied, so multi-threaded applications
+        /// should not modify the value directly, but should use the update methods.
+        /// </para><para>
+        /// Updates the <see cref="CacheStatistics.LastAccessedTime" />
+        /// <see cref="CacheStatistics.HitCount" />, <see cref="CacheStatistics.MissCount" />,
+        /// and <see cref="CacheStatistics.LastModifiedTime" /> (if a new value is loaded)
+        /// for this region and the entry.
+        /// </para>
+        /// </remarks>
+        /// <param name="key">
+        /// key whose associated value is to be returned -- the key
+        /// object must implement the Equals and GetHashCode methods.
+        /// </param>
+        /// <returns>
+        /// value, or null if the value is not found and can't be loaded
+        /// </returns>
+        /// <exception cref="IllegalArgumentException">
+        /// if key is null
+        /// </exception>
+        /// <exception cref="CacheLoaderException">
+        /// if CacheLoader throws an exception
+        /// </exception>
+        /// <exception cref="CacheServerException">
+        /// If an exception is received from the Java cache server.
+        /// Only for Native Client regions.
+        /// </exception>
+        /// <exception cref="NotConnectedException">
+        /// if not connected to the GemFire system because the client cannot
+        /// establish usable connections to any of the servers given to it.
+        /// For pools configured with locators, if no locators are available, innerException
+        /// of NotConnectedException is set to NoAvailableLocatorsException.
+        /// </exception>
+        /// <exception cref="MessageException">
+        /// If the message received from server could not be handled. This will
+        /// be the case when an unregistered typeId is received in the reply or
+        /// reply is not well formed. More information can be found in the log.
+        /// </exception>
+        /// <exception cref="TimeoutException">
+        /// if the operation timed out
+        /// </exception>
+        /// <exception cref="RegionDestroyedException">
+        /// if this region has been destroyed
+        /// </exception>
+        /// <seealso cref="Put" />
+        inline IGFSerializable^ Get( GemStone::GemFire::Cache::ICacheableKey^ key )
+        {
+          return Get( key, nullptr );
+        }
+        /// <summary>
+	/// check to see if the key is present on the server
+        /// </summary>
+
+        Boolean  ContainsKeyOnServer( CacheableKey^ key );
+
+
+        /// <summary>
+        /// Returns the value for the given key, passing the callback argument
+        /// to any cache loaders or that are invoked in the operation.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// If the value is not present locally then it is requested from the java server.
+        /// If even that is unsuccessful then a local CacheLoader will be invoked if there is one.
+        /// </para>
+        /// <para>
+        /// The value returned by get is not copied, so multi-threaded applications
+        /// should not modify the value directly, but should use the update methods.
+        /// </para><para>
+        /// Updates the <see cref="CacheStatistics.LastAccessedTime" />
+        /// <see cref="CacheStatistics.HitCount" />, <see cref="CacheStatistics.MissCount" />,
+        /// and <see cref="CacheStatistics.LastModifiedTime" /> (if a new value is loaded)
+        /// for this region and the entry.
+        /// </para>
+        /// </remarks>
+        /// <param name="key">
+        /// key whose associated value is to be returned -- the key
+        /// object must implement the Equals and GetHashCode methods.
+        /// </param>
+        /// <returns>
+        /// value, or null if the value is not found and can't be loaded
+        /// </returns>
+        /// <exception cref="IllegalArgumentException">
+        /// if key is null
+        /// </exception>
+        /// <exception cref="CacheLoaderException">
+        /// if CacheLoader throws an exception
+        /// </exception>
+        /// <exception cref="CacheServerException">
+        /// If an exception is received from the Java cache server.
+        /// Only for Native Client regions.
+        /// </exception>
+        /// <exception cref="NotConnectedException">
+        /// if not connected to the GemFire system because the client cannot
+        /// establish usable connections to any of the servers given to it.
+        /// For pools configured with locators, if no locators are available, innerException
+        /// of NotConnectedException is set to NoAvailableLocatorsException.
+        /// </exception>
+        /// <exception cref="MessageException">
+        /// If the message received from server could not be handled. This will
+        /// be the case when an unregistered typeId is received in the reply or
+        /// reply is not well formed. More information can be found in the log.
+        /// </exception>
+        /// <exception cref="TimeoutException">
+        /// if the operation timed out
+        /// </exception>
+        /// <exception cref="RegionDestroyedException">
+        /// if this region has been destroyed
+        /// </exception>
+        /// <seealso cref="Put" />
+        inline IGFSerializable^ Get( CacheableKey^ key )
+        {
+          return Get( key, nullptr );
+        }
+
+        /// <summary>
+        /// Puts a new value into an entry in this region with the specified key,
+        /// passing the callback argument to any cache writers and cache listeners
+        /// that are invoked in the operation.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// If there is already an entry associated with the specified key in
+        /// this region, the entry's previous value is overwritten.
+        /// The new put value is propogated to the java server to which it is connected with.
+        /// Put is intended for very simple caching situations. In general
+        /// it is better to create a <c>ICacheLoader</c> object and allow the
+        /// cache to manage the creation and loading of objects.
+        /// </para><para>
+        /// Updates the <see cref="CacheStatistics.LastAccessedTime" /> and
+        /// <see cref="CacheStatistics.LastModifiedTime" /> for this region and the entry.
+        /// </para><para>
+        /// If remote server put fails throwing back a <c>CacheServerException</c>
+        /// or security exception, then local put is tried to rollback. However,
+        /// if the entry has overflowed/evicted/expired then the rollback is
+        /// aborted since it may be due to a more recent notification or update
+        /// by another thread.
+        /// </para>
+        /// </remarks>
+        /// <param name="key">
+        /// a key object associated with the value to be put into this region.
+        /// </param>
+        /// <param name="value">the value to be put into this region</param>
+        /// <param name="callback">
+        /// argument that is passed to the callback functions
+        /// </param>
+        /// <exception cref="IllegalArgumentException">
+        /// if key is null
+        /// </exception>
+        /// <exception cref="CacheWriterException">
+        /// if CacheWriter aborts the operation
+        /// </exception>
+        /// <exception cref="CacheListenerException">
+        /// if CacheListener throws an exception
+        /// </exception>
+        /// <exception cref="RegionDestroyedException">
+        /// if region has been destroyed
+        /// </exception>
+        /// <exception cref="CacheServerException">
+        /// If an exception is received from the Java cache server.
+        /// Only for Native Client regions.
+        /// </exception>
+        /// <exception cref="NotConnectedException">
+        /// if not connected to the GemFire system because the client cannot
+        /// establish usable connections to any of the servers given to it.
+        /// For pools configured with locators, if no locators are available, innerException
+        /// of NotConnectedException is set to NoAvailableLocatorsException.
+        /// </exception>
+        /// <exception cref="TimeoutException">
+        /// if the operation timed out
+        /// </exception>
+        /// <exception cref="OutOfMemoryException">
+        /// if  there is not enough memory for the value
+        /// </exception>
+        /// <seealso cref="Get" />
+        /// <seealso cref="Create" />
+        void Put( GemStone::GemFire::Cache::ICacheableKey^ key, IGFSerializable^ value,
+          IGFSerializable^ callback );
+
+
+        /// <summary>
+        /// Puts a new value into an entry in this region with the specified key,
+        /// passing the callback argument to any cache writers and cache listeners
+        /// that are invoked in the operation.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// If there is already an entry associated with the specified key in
+        /// this region, the entry's previous value is overwritten.
+        /// The new put value is propogated to the java server to which it is connected with.
+        /// Put is intended for very simple caching situations. In general
+        /// it is better to create a <c>ICacheLoader</c> object and allow the
+        /// cache to manage the creation and loading of objects.
+        /// </para><para>
+        /// Updates the <see cref="CacheStatistics.LastAccessedTime" /> and
+        /// <see cref="CacheStatistics.LastModifiedTime" /> for this region and the entry.
+        /// </para><para>
+        /// If remote server put fails throwing back a <c>CacheServerException</c>
+        /// or security exception, then local put is tried to rollback. However,
+        /// if the entry has overflowed/evicted/expired then the rollback is
+        /// aborted since it may be due to a more recent notification or update
+        /// by another thread.
+        /// </para>
+        /// </remarks>
+        /// <param name="key">
+        /// a key object associated with the value to be put into this region.
+        /// </param>
+        /// <param name="value">the value to be put into this region</param>
+        /// <param name="callback">
+        /// argument that is passed to the callback functions
+        /// </param>
+        /// <exception cref="IllegalArgumentException">
+        /// if key is null
+        /// </exception>
+        /// <exception cref="CacheWriterException">
+        /// if CacheWriter aborts the operation
+        /// </exception>
+        /// <exception cref="CacheListenerException">
+        /// if CacheListener throws an exception
+        /// </exception>
+        /// <exception cref="RegionDestroyedException">
+        /// if region has been destroyed
+        /// </exception>
+        /// <exception cref="CacheServerException">
+        /// If an exception is received from the Java cache server.
+        /// Only for Native Client regions.
+        /// </exception>
+        /// <exception cref="NotConnectedException">
+        /// if not connected to the GemFire system because the client cannot
+        /// establish usable connections to any of the servers given to it.
+        /// For pools configured with locators, if no locators are available, innerException
+        /// of NotConnectedException is set to NoAvailableLocatorsException.
+        /// </exception>
+        /// <exception cref="TimeoutException">
+        /// if the operation timed out
+        /// </exception>
+        /// <exception cref="OutOfMemoryException">
+        /// if  there is not enough memory for the value
+        /// </exception>
+        /// <seealso cref="Get" />
+        /// <seealso cref="Create" />
+        void Put( CacheableKey^ key, IGFSerializable^ value,
+          IGFSerializable^ callback );
+
+
+        /// <summary>
+        /// Puts a new value into an entry in this region with the specified key,
+        /// passing the callback argument to any cache writers and cache listeners
+        /// that are invoked in the operation.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// If there is already an entry associated with the specified key in
+        /// this region, the entry's previous value is overwritten.
+        /// The new put value is propogated to the java server to which it is connected with.
+        /// Put is intended for very simple caching situations. In general
+        /// it is better to create a <c>ICacheLoader</c> object and allow the
+        /// cache to manage the creation and loading of objects.
+        /// </para><para>
+        /// Updates the <see cref="CacheStatistics.LastAccessedTime" /> and
+        /// <see cref="CacheStatistics.LastModifiedTime" /> for this region and the entry.
+        /// </para><para>
+        /// If remote server put fails throwing back a <c>CacheServerException</c>
+        /// or security exception, then local put is tried to rollback. However,
+        /// if the entry has overflowed/evicted/expired then the rollback is
+        /// aborted since it may be due to a more recent notification or update
+        /// by another thread.
+        /// </para>
+        /// </remarks>
+        /// <param name="key">
+        /// a key object associated with the value to be put into this region.
+        /// </param>
+        /// <param name="value">the value to be put into this region</param>
+        /// <param name="callback">
+        /// argument that is passed to the callback functions
+        /// </param>
+        /// <exception cref="IllegalArgumentException">
+        /// if key is null
+        /// </exception>
+        /// <exception cref="CacheWriterException">
+        /// if CacheWriter aborts the operation
+        /// </exception>
+        /// <exception cref="CacheListenerException">
+        /// if CacheListener throws an exception
+        /// </exception>
+        /// <exception cref="RegionDestroyedException">
+        /// if region has been destroyed
+        /// </exception>
+        /// <exception cref="CacheServerException">
+        /// If an exception is received from the Java cache server.
+        /// Only for Native Client regions.
+        /// </exception>
+        /// <exception cref="NotConnectedException">
+        /// if not connected to the GemFire system because the client cannot
+        /// establish usable connections to any of the servers given to it.
+        /// For pools configured with locators, if no locators are available, innerException
+        /// of NotConnectedException is set to NoAvailableLocatorsException.
+        /// </exception>
+        /// <exception cref="TimeoutException">
+        /// if the operation timed out
+        /// </exception>
+        /// <exception cref="OutOfMemoryException">
+        /// if  there is not enough memory for the value
+        /// </exception>
+        /// <seealso cref="Get" />
+        /// <seealso cref="Create" />
+        void Put( GemStone::GemFire::Cache::ICacheableKey^ key, GemStone::GemFire::Cache::Serializable^ value,
+          IGFSerializable^ callback );
+
+
+        /// <summary>
+        /// Puts a new value into an entry in this region with the specified key,
+        /// passing the callback argument to any cache writers and cache listeners
+        /// that are invoked in the operation.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// If there is already an entry associated with the specified key in
+        /// this region, the entry's previous value is overwritten.
+        /// The new put value is propogated to the java server to which it is connected with.
+        /// Put is intended for very simple caching situations. In general
+        /// it is better to create a <c>ICacheLoader</c> object and allow the
+        /// cache to manage the creation and loading of objects.
+        /// </para><para>
+        /// Updates the <see cref="CacheStatistics.LastAccessedTime" /> and
+        /// <see cref="CacheStatistics.LastModifiedTime" /> for this region and the entry.
+        /// </para><para>
+        /// If remote server put fails throwing back a <c>CacheServerException</c>
+        /// or security exception, then local put is tried to rollback. However,
+        /// if the entry has overflowed/evicted/expired then the rollback is
+        /// aborted since it may be due to a more recent notification or update
+        /// by another thread.
+        /// </para>
+        /// </remarks>
+        /// <param name="key">
+        /// a key object associated with the value to be put into this region.
+        /// </param>
+        /// <param name="value">the value to be put into this region</param>
+        /// <param name="callback">
+        /// argument that is passed to the callback functions
+        /// </param>
+        /// <exception cref="IllegalArgumentException">
+        /// if key is null
+        /// </exception>
+        /// <exception cref="CacheWriterException">
+        /// if CacheWriter aborts the operation
+        /// </exception>
+        /// <exception cref="CacheListenerException">
+        /// if CacheListener throws an exception
+        /// </exception>
+        /// <exception cref="RegionDestroyedException">
+        /// if region has been destroyed
+        /// </exception>
+        /// <exception cref="CacheServerException">
+        /// If an exception is received from the Java cache server.
+        /// Only for Native Client regions.
+        /// </exception>
+        /// <exception cref="NotConnectedException">
+        /// if not connected to the GemFire system because the client cannot
+        /// establish usable connections to any of the servers given to it.
+        /// For pools configured with locators, if no locators are available, innerException
+        /// of NotConnectedException is set to NoAvailableLocatorsException.
+        /// </exception>
+        /// <exception cref="TimeoutException">
+        /// if the operation timed out
+        /// </exception>
+        /// <exception cref="OutOfMemoryException">
+        /// if  there is not enough memory for the value
+        /// </exception>
+        /// <seealso cref="Get" />
+        /// <seealso cref="Create" />
+        void Put( CacheableKey^ key, GemStone::GemFire::Cache::Serializable^ value,
+          IGFSerializable^ callback );
+
+
+        /// <summary>
+        /// Puts a new value into an entry in this region with the specified key.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// If there is already an entry associated with the specified key in
+        /// this region, the entry's previous value is overwritten.
+        /// The new put value is propogated to the java server to which it is connected with.
+        /// Put is intended for very simple caching situations. In general
+        /// it is better to create a <c>ICacheLoader</c> object and allow the
+        /// cache to manage the creation and loading of objects.
+        /// </para><para>
+        /// Updates the <see cref="CacheStatistics.LastAccessedTime" /> and
+        /// <see cref="CacheStatistics.LastModifiedTime" /> for this region and the entry.
+        /// </para><para>
+        /// If remote server put fails throwing back a <c>CacheServerException</c>
+        /// or security exception, then local put is tried to rollback. However,
+        /// if the entry has overflowed/evicted/expired then the rollback is
+        /// aborted since it may be due to a more recent notification or update
+        /// by another thread.
+        /// </para>
+        /// </remarks>
+        /// <param name="key">
+        /// a key object associated with the value to be put into this region.
+        /// </param>
+        /// <param name="value">the value to be put into this region</param>
+        /// <exception cref="IllegalArgumentException">
+        /// if key is null
+        /// </exception>
+        /// <exception cref="CacheWriterException">
+        /// if CacheWriter aborts the operation
+        /// </exception>
+        /// <exception cref="CacheListenerException">
+        /// if CacheListener throws an exception
+        /// </exception>
+        /// <exception cref="RegionDestroyedException">
+        /// if region has been destroyed
+        /// </exception>
+        /// <exception cref="CacheServerException">
+        /// If an exception is received from the Java cache server.
+        /// Only for Native Client regions.
+        /// </exception>
+        /// <exception cref="NotConnectedException">
+        /// if not connected to the GemFire system because the client cannot
+        /// establish usable connections to any of the servers given to it.
+        /// For pools configured with locators, if no locators are available, innerException
+        /// of NotConnectedException is set to NoAvailableLocatorsException.
+        /// </exception>
+        /// <exception cref="TimeoutException">
+        /// if the operation timed out
+        /// </exception>
+        /// <exception cref="OutOfMemoryException">
+        /// if  there is not enough memory for the value
+        /// </exception>
+        /// <seealso cref="Get" />
+        /// <seealso cref="Create" />
+        inline void Put( GemStone::GemFire::Cache::ICacheableKey^ key, IGFSerializable^ value )
+        {
+          Put( key, value, nullptr );
+        }
+
+
+        /// <summary>
+        /// Puts a new value into an entry in this region with the specified key.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// If there is already an entry associated with the specified key in
+        /// this region, the entry's previous value is overwritten.
+        /// The new put value is propogated to the java server to which it is connected with.
+        /// Put is intended for very simple caching situations. In general
+        /// it is better to create a <c>ICacheLoader</c> object and allow the
+        /// cache to manage the creation and loading of objects.
+        /// </para><para>
+        /// Updates the <see cref="CacheStatistics.LastAccessedTime" /> and
+        /// <see cref="CacheStatistics.LastModifiedTime" /> for this region and the entry.
+        /// </para><para>
+        /// If remote server put fails throwing back a <c>CacheServerException</c>
+        /// or security exception, then local put is tried to rollback. However,
+        /// if the entry has overflowed/evicted/expired then the rollback is
+        /// aborted since it may be due to a more recent notification or update
+        /// by another thread.
+        /// </para>
+        /// </remarks>
+        /// <param name="key">
+        /// a key object associated with the value to be put into this region.
+        /// </param>
+        /// <param name="value">the value to be put into this region</param>
+        /// <exception cref="IllegalArgumentException">
+        /// if key is null
+        /// </exception>
+        /// <exception cref="CacheWriterException">
+        /// if CacheWriter aborts the operation
+        /// </exception>
+        /// <exception cref="CacheListenerException">
+        /// if CacheListener throws an exception
+        /// </exception>
+        /// <exception cref="RegionDestroyedException">
+        /// if region has been destroyed
+        /// </exception>
+        /// <exception cref="CacheServerException">
+        /// If an exception is received from the Java cache server.
+        /// Only for Native Client regions.
+        /// </exception>
+        /// <exception cref="NotConnectedException">
+        /// if not connected to the GemFire system because the client cannot
+        /// establish usable connections to any of the servers given to it.
+        /// For pools configured with locators, if no locators are available, innerException
+        /// of NotConnectedException is set to NoAvailableLocatorsException.
+        /// </exception>
+        /// <exception cref="TimeoutException">
+        /// if the operation timed out
+        /// </exception>
+        /// <exception cref="OutOfMemoryException">
+        /// if  there is not enough memory for the value
+        /// </exception>
+        /// <seealso cref="Get" />
+        /// <seealso cref="Create" />
+        inline void Put( CacheableKey^ key, IGFSerializable^ value )
+        {
+          Put( key, value, nullptr );
+        }
+
+
+        /// <summary>
+        /// Puts a new value into an entry in this region with the specified key.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// If there is already an entry associated with the specified key in
+        /// this region, the entry's previous value is overwritten.
+        /// The new put value is propogated to the java server to which it is connected with.
+        /// Put is intended for very simple caching situations. In general
+        /// it is better to create a <c>ICacheLoader</c> object and allow the
+        /// cache to manage the creation and loading of objects.
+        /// </para><para>
+        /// Updates the <see cref="CacheStatistics.LastAccessedTime" /> and
+        /// <see cref="CacheStatistics.LastModifiedTime" /> for this region and the entry.
+        /// </para><para>
+        /// If remote server put fails throwing back a <c>CacheServerException</c>
+        /// or security exception, then local put is tried to rollback. However,
+        /// if the entry has overflowed/evicted/expired then the rollback is
+        /// aborted since it may be due to a more recent notification or update
+        /// by another thread.
+        /// </para>
+        /// </remarks>
+        /// <param name="key">
+        /// a key object associated with the value to be put into this region.
+        /// </param>
+        /// <param name="value">the value to be put into this region</param>
+        /// <exception cref="IllegalArgumentException">
+        /// if key is null
+        /// </exception>
+        /// <exception cref="CacheWriterException">
+        /// if CacheWriter aborts the operation
+        /// </exception>
+        /// <exception cref="CacheListenerException">
+        /// if CacheListener throws an exception
+        /// </exception>
+        /// <exception cref="RegionDestroyedException">
+        /// if region has been destroyed
+        /// </exception>
+        /// <exception cref="CacheServerException">
+        /// If an exception is received from the Java cache server.
+        /// Only for Native Client regions.
+        /// </exception>
+        /// <exception cref="NotConnectedException">
+        /// if not connected to the GemFire system because the client cannot
+        /// establish usable connections to any of the servers given to it.
+        /// For pools configured with locators, if no locators are available, innerException
+        /// of NotConnectedException is set to NoAvailableLocatorsException.
+        /// </exception>
+        /// <exception cref="TimeoutException">
+        /// if the operation timed out
+        /// </exception>
+        /// <exception cref="OutOfMemoryException">
+        /// if  there is not enough memory for the value
+        /// </exception>
+        /// <seealso cref="Get" />
+        /// <seealso cref="Create" />
+        inline void Put( GemStone::GemFire::Cache::ICacheableKey^ key, GemStone::GemFire::Cache::Serializable^ value )
+        {
+          Put( key, value, nullptr );
+        }
+
+
+        /// <summary>
+        /// Puts a new value into an entry in this region with the specified key.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// If there is already an entry associated with the specified key in
+        /// this region, the entry's previous value is overwritten.
+        /// The new put value is propogated to the java server to which it is connected with.
+        /// Put is intended for very simple caching situations. In general
+        /// it is better to create a <c>ICacheLoader</c> object and allow the
+        /// cache to manage the creation and loading of objects.
+        /// </para><para>
+        /// Updates the <see cref="CacheStatistics.LastAccessedTime" /> and
+        /// <see cref="CacheStatistics.LastModifiedTime" /> for this region and the entry.
+        /// </para><para>
+        /// If remote server put fails throwing back a <c>CacheServerException</c>
+        /// or security exception, then local put is tried to rollback. However,
+        /// if the entry has overflowed/evicted/expired then the rollback is
+        /// aborted since it may be due to a more recent notification or update
+        /// by another thread.
+        /// </para>
+        /// </remarks>
+        /// <param name="key">
+        /// a key object associated with the value to be put into this region.
+        /// </param>
+        /// <param name="value">the value to be put into this region</param>
+        /// <exception cref="IllegalArgumentException">
+        /// if key is null
+        /// </exception>
+        /// <exception cref="CacheWriterException">
+        /// if CacheWriter aborts the operation
+        /// </exception>
+        /// <exception cref="CacheListenerException">
+        /// if CacheListener throws an exception
+        /// </exception>
+        /// <exception cref="RegionDestroyedException">
+        /// if region has been destroyed
+        /// </exception>
+        /// <exception cref="CacheServerException">
+        /// If an exception is received from the Java cache server.
+        /// Only for Native Client regions.
+        /// </exception>
+        /// <exception cref="NotConnectedException">
+        /// if not connected to the GemFire system because the client cannot
+        /// establish usable connections to any of the servers given to it.
+        /// For pools configured with locators, if no locators are available, innerException
+        /// of NotConnectedException is set to NoAvailableLocatorsException.
+        /// </exception>
+        /// <exception cref="TimeoutException">
+        /// if the operation timed out
+        /// </exception>
+        /// <exception cref="OutOfMemoryException">
+        /// if  there is not enough memory for the value
+        /// </exception>
+        /// <seealso cref="Get" />
+        /// <seealso cref="Create" />
+        inline void Put( CacheableKey^ key, GemStone::GemFire::Cache::Serializable^ value )
+        {
+          Put( key, value, nullptr );
+        }
+
+        /// <summary>
+        /// Puts a map of entries in this region.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// If there is already an entry associated with any key in the map in
+        /// this region, the entry's previous value is overwritten.
+        /// The new values are propogated to the java server to which it is connected with.
+        /// PutAll is intended for speed up large amount of put operation into
+        /// the same region.
+        /// </para>
+        /// </remarks>
+        /// <param name="map">
+        /// A hashmap contains entries, i.e. (key, value) pairs. Value should
+        /// not be null in any of the enties.
+        /// </param>
+        /// <param name="timeout">The time (in seconds) to wait for the PutAll
+        /// response. It should be less than or equal to 2^31/1000 i.e. 2147483.
+        /// Optional.
+        /// </param>
+        /// <exception cref="IllegalArgumentException">
+        /// If timeout is more than 2^31/1000 i.e. 2147483.
+        /// </exception>
+        /// <exception cref="NullPointerException">
+        /// if any value in the map is null
+        /// </exception>
+        /// <exception cref="RegionDestroyedException">
+        /// if region has been destroyed
+        /// </exception>
+        /// <exception cref="CacheServerException">
+        /// If an exception is received from the Java cache server.
+        /// Only for Native Client regions.
+        /// </exception>
+        /// <exception cref="NotConnectedException">
+        /// if not connected to the GemFire system because the client cannot
+        /// establish usable connections to any of the servers given to it.
+        /// For pools configured with locators, if no locators are available, innerException
+        /// of NotConnectedException is set to NoAvailableLocatorsException.
+        /// </exception>
+        /// <exception cref="TimeoutException">
+        /// if the operation timed out
+        /// </exception>
+        /// <exception cref="OutOfMemoryException">
+        /// if  there is not enough memory for the value
+        /// </exception>
+        /// <seealso cref="Put" />
+        void PutAll(CacheableHashMap^ map, uint32_t timeout);
+
+        /// <summary>
+        /// Puts a map of entries in this region.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// If there is already an entry associated with any key in the map in
+        /// this region, the entry's previous value is overwritten.
+        /// The new values are propogated to the java server to which it is connected with.
+        /// PutAll is intended for speed up large amount of put operation into
+        /// the same region.
+        /// </para>
+        /// </remarks>
+        /// <param name="map">
+        /// A hashmap contains entries, i.e. (key, value) pairs. Value should
+        /// not be null in any of the enties.
+        /// </param>
+        /// <exception cref="NullPointerException">
+        /// if any value in the map is null
+        /// </exception>
+        /// <exception cref="RegionDestroyedException">
+        /// if region has been destroyed
+        /// </exception>
+        /// <exception cref="CacheServerException">
+        /// If an exception is received from the Java cache server.
+        /// Only for Native Client regions.
+        /// </exception>
+        /// <exception cref="NotConnectedException">
+        /// if not connected to the GemFire system because the client cannot
+        /// establish usable connections to any of the servers given to it.
+        /// For pools configured with locators, if no locators are available, innerException
+        /// of NotConnectedException is set to NoAvailableLocatorsException.
+        /// </exception>
+        /// <exception cref="TimeoutException">
+        /// if the operation timed out
+        /// </exception>
+        /// <exception cref="OutOfMemoryException">
+        /// if  there is not enough memory for the value
+        /// </exception>
+        /// <seealso cref="Put" />
+        void PutAll(CacheableHashMap^ map);
+
+        /// <summary>
+        /// Puts a new value into an entry in this region with the specified
+        /// key in the local cache only, passing the callback argument to any
+        /// cache writers and cache listeners that are invoked in the operation.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// If there is already an entry associated with the specified key in
+        /// this region, the entry's previous value is overwritten.
+        /// </para><para>
+        /// Updates the <see cref="CacheStatistics.LastAccessedTime" /> and
+        /// <see cref="CacheStatistics.LastModifiedTime" /> for this region and the entry.
+        /// </para>
+        /// </remarks>
+        /// <param name="key">
+        /// a key object associated with the value to be put into this region.
+        /// </param>
+        /// <param name="value">the value to be put into this region</param>
+        /// <param name="callbackArg">
+        /// argument that is passed to the callback functions
+        /// </param>
+        /// <exception cref="IllegalArgumentException">
+        /// if key is null
+        /// </exception>
+        /// <exception cref="CacheWriterException">
+        /// if CacheWriter aborts the operation
+        /// </exception>
+        /// <exception cref="CacheListenerException">
+        /// if CacheListener throws an exception
+        /// </exception>
+        /// <exception cref="RegionDestroyedException">
+        /// if region has been destroyed
+        /// </exception>
+        /// <exception cref="OutOfMemoryException">
+        /// if  there is not enough memory for the value
+        /// </exception>
+        /// <seealso cref="Get" />
+        /// <seealso cref="Create" />
+        void LocalPut(GemStone::GemFire::Cache::ICacheableKey^ key, IGFSerializable^ value,
+          IGFSerializable^ callbackArg);
+
+        /// <summary>
+        /// Puts a new value into an entry in this region with the specified
+        /// key in the local cache only, passing the callback argument to any
+        /// cache writers and cache listeners that are invoked in the operation.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// If there is already an entry associated with the specified key in
+        /// this region, the entry's previous value is overwritten.
+        /// </para><para>
+        /// Updates the <see cref="CacheStatistics.LastAccessedTime" /> and
+        /// <see cref="CacheStatistics.LastModifiedTime" /> for this region and the entry.
+        /// </para>
+        /// </remarks>
+        /// <param name="key">
+        /// a key object associated with the value to be put into this region.
+        /// </param>
+        /// <param name="value">the value to be put into this region</param>
+        /// <param name="callbackArg">
+        /// argument that is passed to the callback functions
+        /// </param>
+        /// <exception cref="IllegalArgumentException">
+        /// if key is null
+        /// </exception>
+        /// <exception cref="CacheWriterException">
+        /// if CacheWriter aborts the operation
+        /// </exception>
+        /// <exception cref="CacheListenerException">
+        /// if CacheListener throws an exception
+        /// </exception>
+        /// <exception cref="RegionDestroyedException">
+        /// if region has been destroyed
+        /// </exception>
+        /// <exception cref="OutOfMemoryException">
+        /// if  there is not enough memory for the value
+        /// </exception>
+        /// <seealso cref="Get" />
+        /// <seealso cref="Create" />
+        void LocalPut(CacheableKey^ key, IGFSerializable^ value,
+          IGFSerializable^ callbackArg);
+
+        /// <summary>
+        /// Puts a new value into an entry in this region with the specified
+        /// key in the local cache only, passing the callback argument to any
+        /// cache writers and cache listeners that are invoked in the operation.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// If there is already an entry associated with the specified key in
+        /// this region, the entry's previous value is overwritten.
+        /// </para><para>
+        /// Updates the <see cref="CacheStatistics.LastAccessedTime" /> and
+        /// <see cref="CacheStatistics.LastModifiedTime" /> for this region and the entry.
+        /// </para>
+        /// </remarks>
+        /// <param name="key">
+        /// a key object associated with the value to be put into this region.
+        /// </param>
+        /// <param name="value">the value to be put into this region</param>
+        /// <param name="callbackArg">
+        /// argument that is passed to the callback functions
+        /// </param>
+        /// <exception cref="IllegalArgumentException">
+        /// if key is null
+        /// </exception>
+        /// <exception cref="CacheWriterException">
+        /// if CacheWriter aborts the operation
+        /// </exception>
+        /// <exception cref="CacheListenerException">
+        /// if CacheListener throws an exception
+        /// </exception>
+        /// <exception cref="RegionDestroyedException">
+        /// if region has been destroyed
+        /// </exception>
+        /// <exception cref="OutOfMemoryException">
+        /// if  there is not enough memory for the value
+        /// </exception>
+        /// <seealso cref="Get" />
+        /// <seealso cref="Create" />
+        void LocalPut(GemStone::GemFire::Cache::ICacheableKey^ key, GemStone::GemFire::Cache::Serializable^ value,
+          IGFSerializable^ callbackArg);
+
+        /// <summary>
+        /// Puts a new value into an entry in this region with the specified
+        /// key in the local cache only, passing the callback argument to any
+        /// cache writers and cache listeners that are invoked in the operation.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// If there is already an entry associated with the specified key in
+        /// this region, the entry's previous value is overwritten.
+        /// </para><para>
+        /// Updates the <see cref="CacheStatistics.LastAccessedTime" /> and
+        /// <see cref="CacheStatistics.LastModifiedTime" /> for this region and the entry.
+        /// </para>
+        /// </remarks>
+        /// <param name="key">
+        /// a key object associated with the value to be put into this region.
+        /// </param>
+        /// <param name="value">the value to be put into this region</param>
+        /// <param name="callbackArg">
+        /// argument that is passed to the callback functions
+        /// </param>
+        /// <exception cref="IllegalArgumentException">
+        /// if key is null
+        /// </exception>
+        /// <exception cref="CacheWriterException">
+        /// if CacheWriter aborts the operation
+        /// </exception>
+        /// <exception cref="CacheListenerException">
+        /// if CacheListener throws an exception
+        /// </exception>
+        /// <exception cref="RegionDestroyedException">
+        /// if region has been destroyed
+        /// </exception>
+        /// <exception cref="OutOfMemoryException">
+        /// if  there is not enough memory for the value
+        /// </exception>
+        /// <seealso cref="Get" />
+        /// <seealso cref="Create" />
+        void LocalPut(CacheableKey^ key, GemStone::GemFire::Cache::Serializable^ value,
+          IGFSerializable^ callbackArg);
+
+        /// <summary>
+        /// Puts a new value into an entry in this region with the specified key
+        /// in the local cache only.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// If there is already an entry associated with the specified key in
+        /// this region, the entry's previous value is overwritten.
+        /// </para><para>
+        /// Updates the <see cref="CacheStatistics.LastAccessedTime" /> and
+        /// <see cref="CacheStatistics.LastModifiedTime" /> for this region and the entry.
+        /// </para>
+        /// </remarks>
+        /// <param name="key">
+        /// a key object associated with the value to be put into this region.
+        /// </param>
+        /// <param name="value">the value to be put into this region</param>
+        /// <exception cref="IllegalArgumentException">
+        /// if key is null
+        /// </exception>
+        /// <exception cref="CacheWriterException">
+        /// if CacheWriter aborts the operation
+        /// </exception>
+        /// <exception cref="CacheListenerException">
+        /// if CacheListener throws an exception
+        /// </exception>
+        /// <exception cref="RegionDestroyedException">
+        /// if region has been destroyed
+        /// </exception>
+        /// <exception cref="OutOfMemoryException">
+        /// if  there is not enough memory for the value
+        /// </exception>
+        /// <seealso cref="Get" />
+        /// <seealso cref="Create" />
+        inline void LocalPut(GemStone::GemFire::Cache::ICacheableKey^ key, IGFSerializable^ value)
+        {
+          LocalPut(key, value, nullptr);
+        }
+
+        /// <summary>
+        /// Puts a new value into an entry in this region with the specified key
+        /// in the local cache only.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// If there is already an entry associated with the specified key in
+        /// this region, the entry's previous value is overwritten.
+        /// </para><para>
+        /// Updates the <see cref="CacheStatistics.LastAccessedTime" /> and
+        /// <see cref="CacheStatistics.LastModifiedTime" /> for this region and the entry.
+        /// </para>
+        /// </remarks>
+        /// <param name="key">
+        /// a key object associated with the value to be put into this region.
+        /// </param>
+        /// <param name="value">the value to be put into this region</param>
+        /// <exception cref="IllegalArgumentException">
+        /// if key is null
+        /// </exception>
+        /// <exception cref="CacheWriterException">
+        /// if CacheWriter aborts the operation
+        /// </exception>
+        /// <exception cref="CacheListenerException">
+        /// if CacheListener throws an exception
+        /// </exception>
+        /// <exception cref="RegionDestroyedException">
+        /// if region has been destroyed
+        /// </exception>
+        /// <exception cref="OutOfMemoryException">
+        /// if  there is not enough memory for the value
+        /// </exception>
+        /// <seealso cref="Get" />
+        /// <seealso cref="Create" />
+        inline void LocalPut(CacheableKey^ key, IGFSerializable^ value)
+        {
+          LocalPut(key, value, nullptr);
+        }
+
+        /// <summary>
+        /// Puts a new value into an entry in this region with the specified key
+        /// in the local cache only.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// If there is already an entry associated with the specified key in
+        /// this region, the entry's previous value is overwritten.
+        /// </para><para>
+        /// Updates the <see cref="CacheStatistics.LastAccessedTime" /> and
+        /// <see cref="CacheStatistics.LastModifiedTime" /> for this region and the entry.
+        /// </para>
+        /// </remarks>
+        /// <param name="key">
+        /// a key object associated with the value to be put into this region.
+        /// </param>
+        /// <param name="value">the value to be put into this region</param>
+        /// <exception cref="IllegalArgumentException">
+        /// if key is null
+        /// </exception>
+        /// <exception cref="CacheWriterException">
+        /// if CacheWriter aborts the operation
+        /// </exception>
+        /// <exception cref="CacheListenerException">
+        /// if CacheListener throws an exception
+        /// </exception>
+        /// <exception cref="RegionDestroyedException">
+        /// if region has been destroyed
+        /// </exception>
+        /// <exception cref="OutOfMemoryException">
+        /// if  there is not enough memory for the value
+        /// </exception>
+        /// <seealso cref="Get" />
+        /// <seealso cref="Create" />
+        inline void LocalPut(GemStone::GemFire::Cache::ICacheableKey^ key, GemStone::GemFire::Cache::Serializable^ value)
+        {
+          LocalPut(key, value, nullptr);
+        }
+
+        /// <summary>
+        /// Puts a new value into an entry in this region with the specified key
+        /// in the local cache only.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// If there is already an entry associated with the specified key in
+        /// this region, the entry's previous value is overwritten.
+        /// </para><para>
+        /// Updates the <see cref="CacheStatistics.LastAccessedTime" /> and
+        /// <see cref="CacheStatistics.LastModifiedTime" /> for this region and the entry.
+        /// </para>
+        /// </remarks>
+        /// <param name="key">
+        /// a key object associated with the value to be put into this region.
+        /// </param>
+        /// <param name="value">the value to be put into this region</param>
+        /// <exception cref="IllegalArgumentException">
+        /// if key is null
+        /// </exception>
+        /// <exception cref="CacheWriterException">
+        /// if CacheWriter aborts the operation
+        /// </exception>
+        /// <exception cref="CacheListenerException">
+        /// if CacheListener throws an exception
+        /// </exception>
+        /// <exception cref="RegionDestroyedException">
+        /// if region has been destroyed
+        /// </exception>
+        /// <exception cref="OutOfMemoryException">
+        /// if  there is not enough memory for the value
+        /// </exception>
+        /// <seealso cref="Get" />
+        /// <seealso cref="Create" />
+        inline void LocalPut(CacheableKey^ key, GemStone::GemFire::Cache::Serializable^ value)
+        {
+          LocalPut(key, value, nullptr);
+        }
+
+        /// <summary>
+        /// Creates a new entry in this region with the specified key and value,
+        /// passing the callback argument to any cache writers and cache listeners
+        /// that are invoked in the operation.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// Updates the <see cref="CacheStatistics.LastAccessedTime" /> and
+        /// <see cref="CacheStatistics.LastModifiedTime" /> for this region
+        /// and the entry.
+        /// </para>
+        /// <para>
+        /// The new entry is propogated to the java server to which it is connected with.
+        /// </para><para>
+        /// If remote server put fails throwing back a <c>CacheServerException</c>
+        /// or security exception, then local put is tried to rollback. However,
+        /// if the entry has overflowed/evicted/expired then the rollback is
+        /// aborted since it may be due to a more recent notification or update
+        /// by another thread.
+        /// </para>
+        /// </remarks>
+        /// <param name="key">
+        /// The key for which to create the entry in this region. The object is
+        /// created before the call, and the caller should not deallocate the object.
+        /// </param>
+        /// <param name="value">
+        /// The value for the new entry, which may be null to indicate that the new
+        /// entry starts as if it had been locally invalidated.
+        /// </param>
+        /// <param name="callbackArg">
+        /// a custome parameter to pass to the cache writer or cache listener
+        /// </param>
+        /// <exception cref="IllegalArgumentException">
+        /// if key is null
+        /// </exception>
+        /// <exception cref="CacheWriterException">
+        /// if CacheWriter aborts the operation
+        /// </exception>
+        /// <exception cref="CacheListenerException">
+        /// if CacheListener throws an exception
+        /// </exception>
+        /// <exception cref="CacheServerException">
+        /// If an exception is received from the Java cache server.
+        /// Only for Native Client regions.
+        /// </exception>
+        /// <exception cref="NotConnectedException">
+        /// if not connected to a GemFire system because the client cannot
+        /// establish usable connections to any of the servers given to it.
+        /// For pools configured with locators, if no locators are available, innerException
+        /// of NotConnectedException is set to NoAvailableLocatorsException.
+        /// </exception>
+        /// <exception cref="RegionDestroyedException">
+        /// if region has been destroyed
+        /// </exception>
+        /// <exception cref="TimeoutException">
+        /// if the operation timed out
+        /// </exception>
+        /// <exception cref="OutOfMemoryException">
+        /// if there is not enough memory for the new entry
+        /// </exception>
+        /// <exception cref="EntryExistsException">
+        /// if an entry with this key already exists
+        /// </exception>
+        /// <seealso cref="Put" />
+        /// <seealso cref="Get" />
+        void Create( GemStone::GemFire::Cache::ICacheableKey^ key, IGFSerializable^ value,
+          IGFSerializable^ callbackArg );
+
+        /// <summary>
+        /// Creates a new entry in this region with the specified key and value,
+        /// passing the callback argument to any cache writers and cache listeners
+        /// that are invoked in the operation.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// Updates the <see cref="CacheStatistics.LastAccessedTime" /> and
+        /// <see cref="CacheStatistics.LastModifiedTime" /> for this region
+        /// and the entry.
+        /// </para>
+        /// <para>
+        /// The new entry is propogated to the java server to which it is connected with.
+        /// </para><para>
+        /// If remote server put fails throwing back a <c>CacheServerException</c>
+        /// or security exception, then local put is tried to rollback. However,
+        /// if the entry has overflowed/evicted/expired then the rollback is
+        /// aborted since it may be due to a more recent notification or update
+        /// by another thread.
+        /// </para>
+        /// </remarks>
+        /// <param name="key">
+        /// The key for which to create the entry in this region. The object is
+        /// created before the call, and the caller should not deallocate the object.
+        /// </param>
+        /// <param name="value">
+        /// The value for the new entry, which may be null to indicate that the new
+        /// entry starts as if it had been locally invalidated.
+        /// </param>
+        /// <param name="callbackArg">
+        /// a custome parameter to pass to the cache writer or cache listener
+        /// </param>
+        /// <exception cref="IllegalArgumentException">
+        /// if key is null
+        /// </exception>
+        /// <exception cref="CacheWriterException">
+        /// if CacheWriter aborts the operation
+        /// </exception>
+        /// <exception cref="CacheListenerException">
+        /// if CacheListener throws an exception
+        /// </exception>
+        /// <exception cref="CacheServerException">
+        /// If an exception is received from the Java cache server.
+        /// Only for Native Client regions.
+        /// </exception>
+        /// <exception cref="NotConnectedException">
+        /// if not connected to a GemFire system because the client cannot
+        /// establish usable connections to any of the servers given to it.
+        /// For pools configured with locators, if no locators are available, innerException
+        /// of NotConnectedException is set to NoAvailableLocatorsException.
+        /// </exception>
+        /// <exception cref="RegionDestroyedException">
+        /// if region has been destroyed
+        /// </exception>
+        /// <exception cref="TimeoutException">
+        /// if the operation timed out
+        /// </exception>
+        /// <exception cref="OutOfMemoryException">
+        /// if there is not enough memory for the new entry
+        /// </exception>
+        /// <exception cref="EntryExistsException">
+        /// if an entry with this key already exists
+        /// </exception>
+        /// <seealso cref="Put" />
+        /// <seealso cref="Get" />
+        void Create( CacheableKey^ key, IGFSerializable^ value,
+          IGFSerializable^ callbackArg );
+
+        /// <summary>
+        /// Creates a new entry in this region with the specified key and value,
+        /// passing the callback argument to any cache writers and cache listeners
+        /// that are invoked in the operation.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// Updates the <see cref="CacheStatistics.LastAccessedTime" /> and
+        /// <see cref="CacheStatistics.LastModifiedTime" /> for this region
+        /// and the entry.
+        /// </para>
+        /// <para>
+        /// The new entry is propogated to the java server to which it is connected with.
+        /// </para><para>
+        /// If remote server put fails throwing back a <c>CacheServerException</c>
+        /// or security exception, then local put is tried to rollback. However,
+        /// if the entry has overflowed/evicted/expired then the rollback is
+        /// aborted since it may be due to a more recent notification or update
+        /// by another thread.
+        /// </para>
+        /// </remarks>
+        /// <param name="key">
+        /// The key for which to create the entry in this region. The object is
+        /// created before the call, and the caller should not deallocate the object.
+        /// </param>
+        /// <param name="value">
+        /// The value for the new entry, which may be null to indicate that the new
+        /// entry starts as if it had been locally invalidated.
+        /// </param>
+        /// <param name="callbackArg">
+        /// a custome parameter to pass to the cache writer or cache listener
+        /// </param>
+        /// <exception cref="IllegalArgumentException">
+        /// if key is null
+        /// </exception>
+        /// <exception cref="CacheWriterException">
+        /// if CacheWriter aborts the operation
+        /// </exception>
+        /// <exception cref="CacheListenerException">
+        /// if CacheListener throws an exception
+        /// </exception>
+        /// <exception cref="CacheServerException">
+        /// If an exception is received from the Java cache server.
+        /// Only for Native Client regions.
+        /// </exception>
+        /// <exception cref="NotConnectedException">
+        /// if not connected to a GemFire system because the client cannot
+        /// establish usable connections to any of the servers given to it.
+        /// For pools configured with locators, if no locators are available, innerException
+        /// of NotConnectedException is set to NoAvailableLocatorsException.
+        /// </exception>
+        /// <exception cref="RegionDestroyedException">
+        /// if region has been destroyed
+        /// </exception>
+        /// <exception cref="TimeoutException">
+        /// if the operation timed out
+        /// </exception>
+        /// <exception cref="OutOfMemoryException">
+        /// if there is not enough memory for the new entry
+        /// </exception>
+        /// <exception cref="EntryExistsException">
+        /// if an entry with this key already exists
+        /// </exception>
+        /// <seealso cref="Put" />
+        /// <seealso cref="Get" />
+        void Create( GemStone::GemFire::Cache::ICacheableKey^ key, GemStone::GemFire::Cache::Serializable^ value,
+          IGFSerializable^ callbackArg );
+
+        /// <summary>
+        /// Creates a new entry in this region with the specified key and value,
+        /// passing the callback argument to any cache writers and cache listeners
+        /// that are invoked in the operation.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// Updates the <see cref="CacheStatistics.LastAccessedTime" /> and
+        /// <see cref="CacheStatistics.LastModifiedTime" /> for this region
+        /// and the entry.
+        /// </para>
+        /// <para>
+        /// The new entry is propogated to the java server to which it is connected with.
+        /// </para><para>
+        /// If remote server put fails throwing back a <c>CacheServerException</c>
+        /// or security exception, then local put is tried to rollback. However,
+        /// if the entry has overflowed/evicted/expired then the rollback is
+        /// aborted since it may be due to a more recent notification or update
+        /// by another thread.
+        /// </para>
+        /// </remarks>
+        /// <param name="key">
+        /// The key for which to create the entry in this region. The object is
+        /// created before the call, and the caller should not deallocate the object.
+        /// </param>
+        /// <param name="value">
+        /// The value for the new entry, which may be null to indicate that the new
+        /// entry starts as if it had been locally invalidated.
+        /// </param>
+        /// <param name="callbackArg">
+        /// a custome parameter to pass to the cache writer or cache listener
+        /// </param>
+        /// <exception cref="IllegalArgumentException">
+        /// if key is null
+        /// </exception>
+        /// <exception cref="CacheWriterException">
+        /// if CacheWriter aborts the operation
+        /// </exception>
+        /// <exception cref="CacheListenerException">
+        /// if CacheListener throws an exception
+        /// </exception>
+        /// <exception cref="CacheServerException">
+        /// If an exception is received from the Java cache server.
+        /// Only for Native Client regions.
+        /// </exception>
+        /// <exception cref="NotConnectedException">
+        /// if not connected to a GemFire system because the client cannot
+        /// establish usable connections to any of the servers given to it.
+        /// For pools configured with locators, if no locators are available, innerException
+        /// of NotConnectedException is set to NoAvailableLocatorsException.
+        /// </exception>
+        /// <exception cref="RegionDestroyedException">
+        /// if region has been destroyed
+        /// </exception>
+        /// <exception cref="TimeoutException">
+        /// if the operation timed out
+        /// </exception>
+        /// <exception cref="OutOfMemoryException">
+        /// if there is not enough memory for the new entry
+        /// </exceptio

<TRUNCATED>


[12/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/RegionAttributesM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/RegionAttributesM.hpp b/geode-client-native/src/clicache/RegionAttributesM.hpp
new file mode 100644
index 0000000..9300215
--- /dev/null
+++ b/geode-client-native/src/clicache/RegionAttributesM.hpp
@@ -0,0 +1,504 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/RegionAttributes.hpp"
+#include "impl/NativeWrapper.hpp"
+#include "IGFSerializable.hpp"
+#include "ExpirationActionM.hpp"
+#include "ScopeTypeM.hpp"
+#include "DiskPolicyTypeM.hpp"
+#include "GemFireClassIdsM.hpp"
+
+#include "ICacheLoader.hpp"
+#include "ICacheWriter.hpp"
+#include "ICacheListener.hpp"
+#include "IPartitionResolver.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      ref class Properties;
+      //interface class ICacheLoader;
+      //interface class ICacheWriter;
+      //interface class ICacheListener;
+      //interface class IPartitionResolver;
+
+      /// <summary>
+      /// Defines attributes for configuring a region.
+      /// </summary>
+      /// <remarks>
+      /// These are
+      /// <c>ICacheListener</c>, <c>ICacheLoader</c>, <c>ICacheWriter</c>,
+      /// scope, mirroring, and expiration attributes
+      /// for the region itself; expiration attributes for the region entries;
+      /// and whether statistics are enabled for the region and its entries.
+      ///
+      /// To create an instance of this interface, use
+      /// <see cref="AttributesFactory.CreateRegionAttributes" />.
+      ///
+      /// For compatibility rules and default values, see <see cref="AttributesFactory" />.
+      /// <para>
+      /// Note that the <c>RegionAttributes</c> are not distributed with the region.
+      /// </para>
+      /// </remarks>
+      /// <seealso cref="AttributesFactory" />
+      /// <seealso cref="AttributesMutator" />
+      /// <seealso cref="Region.Attributes" />
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class RegionAttributes sealed
+        : public Internal::SBWrap<gemfire::RegionAttributes>, public IGFSerializable
+      {
+      public:
+
+        /// <summary>
+        /// Gets the cache loader for the region.
+        /// </summary>
+        /// <returns>
+        /// region's <c>ICacheLoader</c> or null if none
+        /// </returns>
+        property ICacheLoader^ CacheLoader
+        {
+          ICacheLoader^ get( );
+        }
+
+        /// <summary>
+        /// Gets the cache writer for the region.
+        /// </summary>
+        /// <returns>
+        /// region's <c>ICacheWriter</c> or null if none
+        /// </returns>
+        property ICacheWriter^ CacheWriter
+        {
+          ICacheWriter^ get( );
+        }
+
+        /// <summary>
+        /// Gets the cache listener for the region.
+        /// </summary>
+        /// <returns>
+        /// region's <c>ICacheListener</c> or null if none
+        /// </returns>
+        property ICacheListener^ CacheListener
+        {
+          ICacheListener^ get( );
+        }
+
+        /// <summary>
+        /// Gets the partition resolver for the region.
+        /// </summary>
+        /// <returns>
+        /// region's <c>IPartitionResolver</c> or null if none
+        /// </returns>
+        property IPartitionResolver^ PartitionResolver
+        {
+          IPartitionResolver^ get( );
+        }
+
+        /// <summary>
+        /// Gets the <c>timeToLive</c> value for the region as a whole.
+        /// </summary>
+        /// <returns>the timeToLive duration for this region, in seconds</returns>
+        property int32_t RegionTimeToLive
+        {
+          int32_t get( );
+        }
+
+        /// <summary>
+        /// Gets the <c>timeToLive</c> expiration action for the region as a whole.
+        /// </summary>
+        /// <returns>the timeToLive action for this region</returns>
+        property ExpirationAction RegionTimeToLiveAction
+        {
+          ExpirationAction get( );
+        }
+
+        /// <summary>
+        /// Gets the <c>idleTimeout</c> value for the region as a whole.
+        /// </summary>
+        /// <returns>the IdleTimeout duration for this region, in seconds</returns>
+        property int32_t RegionIdleTimeout
+        {
+          int32_t get( );
+        }
+
+        /// <summary>
+        /// Gets the <c>idleTimeout</c> expiration action for the region as a whole.
+        /// </summary>
+        /// <returns>the idleTimeout action for this region</returns>
+        property ExpirationAction RegionIdleTimeoutAction
+        {
+          ExpirationAction get( );
+        }
+
+        /// <summary>
+        /// Gets the <c>timeToLive</c> value for entries in this region.
+        /// </summary>
+        /// <returns>the timeToLive duration for entries in this region, in seconds</returns>
+        property int32_t EntryTimeToLive
+        {
+          int32_t get( );
+        }
+
+        /// <summary>
+        /// Gets the <c>timeToLive</c> expiration action for entries in this region.
+        /// </summary>
+        /// <returns>the timeToLive action for entries in this region</returns>
+        property ExpirationAction EntryTimeToLiveAction
+        {
+          ExpirationAction get( );
+        }
+
+        /// <summary>
+        /// Gets the <c>idleTimeout</c> value for entries in this region.
+        /// </summary>
+        /// <returns>the idleTimeout duration for entries in this region, in seconds</returns>
+        property int32_t EntryIdleTimeout
+        {
+          int32_t get( );
+        }
+
+        /// <summary>
+        /// Gets the <c>idleTimeout</c> expiration action for entries in this region.
+        /// </summary>
+        /// <returns>the idleTimeout action for entries in this region</returns>
+        property ExpirationAction EntryIdleTimeoutAction
+        {
+          ExpirationAction get( );
+        }
+
+        /// <summary>
+        /// Returns the scope of the region.
+        /// </summary>
+        /// <returns>the region's scope</returns>
+        property ScopeType Scope
+        {
+          ScopeType get( );
+        }
+
+        /// <summary>
+        /// If true, this region will store data in the current process.
+        /// </summary>
+        /// <returns>true if caching is enabled</returns>
+        property bool CachingEnabled
+        {
+          bool get( );
+        }
+
+
+        // MAP ATTRIBUTES
+
+        /// <summary>
+        /// Returns the initial capacity of the entry's local cache.
+        /// </summary>
+        /// <returns>the initial capacity</returns>
+        property int32_t InitialCapacity
+        {
+          int32_t get( );
+        }
+
+        /// <summary>
+        /// Returns the load factor of the entry's local cache.
+        /// </summary>
+        /// <returns>the load factor</returns>
+        property Single LoadFactor
+        {
+          Single get( );
+        }
+
+        /// <summary>
+        /// Returns the concurrency level of the entry's local cache.
+        /// </summary>
+        /// <returns>the concurrency level</returns>
+        /// <seealso cref="AttributesFactory" />
+        property int32_t ConcurrencyLevel
+        {
+          int32_t get( );
+        }
+
+        /// <summary>
+        /// Returns the maximum number of entries this cache will hold before
+        /// using LRU eviction. 
+        /// </summary>
+        /// <returns>the maximum LRU size, or 0 for no limit</returns>
+        property uint32_t LruEntriesLimit
+        {
+          uint32_t get( );
+        }
+
+        /// <summary>
+        /// Returns the disk policy type of the region.
+        /// </summary>
+        /// <returns>the disk policy type, default is null</returns>
+        property DiskPolicyType DiskPolicy
+        {
+          DiskPolicyType get( );
+        }
+
+        /// <summary>
+        /// Returns the ExpirationAction used for LRU Eviction, default is LOCAL_DESTROY.
+        /// </summary>
+        /// <returns>the LRU eviction action</returns>
+        property ExpirationAction LruEvictionAction
+        {
+          ExpirationAction get( );
+        }
+
+        /// <summary>
+        /// Returns the path of the library from which
+        /// the factory function will be invoked on a cache server.
+        /// </summary>
+        /// <returns>the CacheLoader library path</returns>
+        property String^ CacheLoaderLibrary
+        {
+          String^ get( );
+        }
+
+        /// <summary>
+        /// Rreturns the symbol name of the factory function from which
+        /// the loader will be created on a cache server.
+        /// </summary>
+        /// <returns>the CacheLoader factory function name</returns>
+        property String^ CacheLoaderFactory
+        {
+          String^ get( );
+        }
+
+        /// <summary>
+        /// Returns the path of the library from which
+        /// the factory function will be invoked on a cache server.
+        /// </summary>
+        /// <returns>the CacheListener library path</returns>
+        property String^ CacheListenerLibrary
+        {
+          String^ get( );
+        }
+
+        /// <summary>
+        /// Returns the path of the library from which
+        /// the factory function will be invoked on a cache server.
+        /// </summary>
+        /// <returns>the PartitionResolver library path</returns>
+        property String^ PartitionResolverLibrary
+        {
+          String^ get( );
+        }
+
+        /// <summary>
+        /// Returns the symbol name of the factory function from which
+        /// the loader will be created on a cache server.
+        /// </summary>
+        /// <returns>the CacheListener factory function name</returns>
+        property String^ CacheListenerFactory
+        {
+          String^ get( );
+        }
+
+        /// <summary>
+        /// Returns the symbol name of the factory function from which
+        /// the loader will be created on a cache server.
+        /// </summary>
+        /// <returns>the PartitionResolver factory function name</returns>
+        property String^ PartitionResolverFactory
+        {
+          String^ get( );
+        }
+
+        /// <summary>
+        /// Returns the path of the library from which
+        /// the factory function will be invoked on a cache server.
+        /// </summary>
+        /// <returns>the CacheWriter library path</returns>
+        property String^ CacheWriterLibrary
+        {
+          String^ get( );
+        }
+
+        /// <summary>
+        /// Returns the symbol name of the factory function from which
+        /// the loader will be created on a cache server.
+        /// </summary>
+        /// <returns>the CacheWriter factory function name</returns>
+        property String^ CacheWriterFactory
+        {
+          String^ get( );
+        }
+
+        /// <summary>
+        /// True if all the attributes are equal to those of <c>other</c>.
+        /// </summary>
+        /// <param name="other">attribute object to compare</param>
+        /// <returns>true if equal</returns>
+        bool Equals( RegionAttributes^ other );
+
+        /// <summary>
+        /// True if all the attributes are equal to those of <c>other</c>.
+        /// </summary>
+        /// <param name="other">attribute object to compare</param>
+        /// <returns>true if equal</returns>
+        virtual bool Equals( Object^ other ) override;
+
+        /// <summary>
+        /// Throws IllegalStateException if the attributes are not suited for serialization
+        /// such as those that have a cache callback (listener, loader, or writer) set
+        /// directly instead of providing the library path and factory function.
+        /// </summary>
+        /// <exception cref="IllegalStateException">if the attributes cannot be serialized</exception>
+        void ValidateSerializableAttributes( );
+
+        /// <summary>
+        /// This method returns the list of endpoints (servername:portnumber) separated by commas.
+        /// </summary>
+        /// <returns>list of endpoints</returns>
+        property String^ Endpoints
+        {
+          String^ get( );
+        }
+
+        /// <summary>
+        /// This method returns the name of the attached pool.
+        /// </summary>
+        /// <returns>pool name</returns>
+        property String^ PoolName
+        {
+          String^ get( );
+        }
+
+        /// <summary>
+        /// True if client notification is enabled.
+        /// </summary>
+        /// <returns>true if enabled</returns>
+        property bool ClientNotificationEnabled
+        {
+          bool get( );
+        }
+        /// <summary>
+        /// True if cloning is enabled for in case of delta.
+        /// </summary>
+        /// <returns>true if enabled</returns>
+
+        property bool CloningEnabled 
+        {
+          bool get( );
+        }
+
+        /// <summary>
+        /// Returns the path of the library from which
+        /// the factory function will be invoked on a cache server.
+        /// </summary>
+        /// <returns>the PersistenceManager library path</returns>
+        property String^ PersistenceLibrary
+        {
+          String^ get( );
+        }
+
+        /// <summary>
+        /// Returns the symbol name of the factory function from which
+        /// the persistence manager will be created on a cache server.
+        /// </summary>
+        /// <returns>the PersistenceManager factory function name</returns>
+        property String^ PersistenceFactory
+        {
+          String^ get( );
+        }
+
+        /// <summary>
+        /// Returns the properties set for persistence.
+        /// </summary>
+        /// <returns>properties for the PersistenceManager</returns>
+        property Properties^ PersistenceProperties
+        {
+          Properties^ get( );
+        }
+
+        /// <summary>
+        /// Returns the concurrency check enabled flag of the region
+        /// </summary>
+        /// <returns>the concurrency check enabled flag</returns>
+        /// <seealso cref="AttributesFactory" />
+        property bool ConcurrencyChecksEnabled
+        {
+          bool get( );
+        }
+
+        /// <summary>
+        /// Serializes this Properties object.
+        /// </summary>
+        /// <param name="output">the DataOutput stream to use for serialization</param>
+        virtual void ToData( DataOutput^ output );
+
+        /// <summary>
+        /// Deserializes this Properties object.
+        /// </summary>
+        /// <param name="input">the DataInput stream to use for reading data</param>
+        /// <returns>the deserialized Properties object</returns>
+        virtual IGFSerializable^ FromData( DataInput^ input );
+
+        /// <summary>
+        /// return the size of this object in bytes
+        /// </summary>
+        virtual property uint32_t ObjectSize
+        {
+          virtual uint32_t get( )
+          {
+            return 0;  //don't care
+          }
+        }
+
+        /// <summary>
+        /// Returns the classId of this class for serialization.
+        /// </summary>
+        /// <returns>classId of the Properties class</returns>
+        /// <seealso cref="IGFSerializable.ClassId" />
+        virtual property uint32_t ClassId
+        {
+          inline virtual uint32_t get( )
+          {
+            return GemFireClassIds::RegionAttributes;
+          }
+        }
+
+
+      internal:
+
+        /// <summary>
+        /// Internal factory function to wrap a native object pointer inside
+        /// this managed class with null pointer check.
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        /// <returns>
+        /// The managed wrapper object; null if the native pointer is null.
+        /// </returns>
+        inline static RegionAttributes^ Create( gemfire::RegionAttributes* nativeptr )
+        {
+          return ( nativeptr != nullptr ?
+            gcnew RegionAttributes( nativeptr ) : nullptr );
+        }
+
+
+      private:
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline RegionAttributes( gemfire::RegionAttributes* nativeptr )
+          : SBWrap( nativeptr ) { }
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/RegionEntryM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/RegionEntryM.cpp b/geode-client-native/src/clicache/RegionEntryM.cpp
new file mode 100644
index 0000000..1bd6fa1
--- /dev/null
+++ b/geode-client-native/src/clicache/RegionEntryM.cpp
@@ -0,0 +1,61 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "RegionEntryM.hpp"
+#include "RegionM.hpp"
+#include "CacheStatisticsM.hpp"
+#include "impl/SafeConvert.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      GemStone::GemFire::Cache::ICacheableKey^ RegionEntry::Key::get( )
+      {
+        gemfire::CacheableKeyPtr& nativeptr( NativePtr->getKey( ) );
+
+        return SafeUMKeyConvert( nativeptr.ptr( ) );
+      }
+
+      IGFSerializable^ RegionEntry::Value::get( )
+      {
+        gemfire::CacheablePtr& nativeptr( NativePtr->getValue( ) );
+
+        return SafeUMSerializableConvert( nativeptr.ptr( ) );
+      }
+
+      GemStone::GemFire::Cache::Region^ RegionEntry::Region::get( )
+      {
+        gemfire::RegionPtr rptr;
+
+        NativePtr->getRegion( rptr );
+        return GemStone::GemFire::Cache::Region::Create( rptr.ptr( ) );
+      }
+
+      CacheStatistics^ RegionEntry::Statistics::get( )
+      {
+        gemfire::CacheStatisticsPtr nativeptr;
+
+        NativePtr->getStatistics( nativeptr );
+        return CacheStatistics::Create( nativeptr.ptr( ) );
+      }
+
+      bool RegionEntry::IsDestroyed::get( )
+      {
+        return NativePtr->isDestroyed( );
+      }
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/RegionEntryM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/RegionEntryM.hpp b/geode-client-native/src/clicache/RegionEntryM.hpp
new file mode 100644
index 0000000..370b922
--- /dev/null
+++ b/geode-client-native/src/clicache/RegionEntryM.hpp
@@ -0,0 +1,172 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/RegionEntry.hpp"
+#include "impl/NativeWrapper.hpp"
+#include "ICacheableKey.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      interface class IGFSerializable;
+      ref class Region;
+      ref class CacheStatistics;
+
+      /// <summary>
+      /// An object in a region that represents an <em>entry</em>, that is, a key-value pair.
+      /// </summary>
+      /// <remarks>
+      /// This object's operations are not distributed, do not acquire any locks, and do not affect
+      /// <c>CacheStatistics</c>.
+      ///
+      /// Unless otherwise noted, all of these methods throw a
+      /// <c>CacheClosedException</c> if the cache is closed at the time of
+      /// invocation, or an <c>EntryDestroyedException</c> if the entry has been
+      /// destroyed.
+      ///
+      /// Call <see cref="IsDestroyed" /> to see if an entry has already been destroyed.
+      /// </remarks>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class RegionEntry sealed
+        : public Internal::SBWrap<gemfire::RegionEntry>
+      {
+      public:
+
+        /// <summary>
+        /// Returns the key for this entry.
+        /// </summary>
+        /// <returns>the key for this entry</returns>
+        /// <exception cref="CacheClosedException">
+        /// if the cache is closed at the time of invocation
+        /// </exception>
+        /// <exception cref="EntryDestroyedException">
+        /// if the entry has been destroyed
+        /// </exception>
+        property GemStone::GemFire::Cache::ICacheableKey^ Key
+        {
+          GemStone::GemFire::Cache::ICacheableKey^ get( );
+        }
+
+        /// <summary>
+        /// Returns the value of this entry in the local cache. Does not invoke
+        /// an <c>ICacheLoader</c>, does not do a netSearch, netLoad, etc.
+        /// </summary>
+        /// <returns>
+        /// the value, or null if this entry is invalid -- see <see cref="IsDestroyed" />
+        /// </returns>
+        /// <exception cref="CacheClosedException">
+        /// if the cache is closed at the time of invocation
+        /// </exception>
+        /// <exception cref="EntryDestroyedException">
+        /// if the entry has been destroyed
+        /// </exception>
+        property IGFSerializable^ Value
+        {
+          IGFSerializable^ get( );
+        }
+
+        /// <summary>
+        /// Returns the region that contains this entry.
+        /// </summary>
+        /// <returns>the region that contains this entry</returns>
+        /// <exception cref="CacheClosedException">
+        /// if the cache is closed at the time of invocation
+        /// </exception>
+        /// <exception cref="EntryDestroyedException">
+        /// if the entry has been destroyed
+        /// </exception>
+        property Region^ Region
+        {
+          GemStone::GemFire::Cache::Region^ get( );
+        }
+
+        /// <summary>
+        /// Returns the statistics for this entry.
+        /// </summary>
+        /// <returns>the CacheStatistics for this entry</returns>
+        /// <exception cref="StatisticsDisabledException">
+        /// if statistics have been disabled for this region
+        /// </exception>
+        property CacheStatistics^ Statistics
+        {
+          CacheStatistics^ get( );
+        }
+
+        ///// <summary>
+        ///// Returns the user attribute for this entry in the local cache.
+        ///// </summary>
+        ///// <returns>the user attribute for this entry</returns>
+        ////Object^ GetUserAttribute( );
+
+        ///// <summary>
+        ///// Sets the user attribute for this entry. Does not distribute the user
+        ///// attribute to other caches.
+        ///// </summary>
+        ///// <param name="uptr">a pointer to the user attribute for this entry</param>
+        ///// <returns>
+        ///// the previous user attribute or null if no user attributes have been
+        ///// set for this entry
+        ///// </returns>
+        ////void SetUserAttribute( Object^ uptr );
+
+        /// <summary>
+        /// True if this entry has been destroyed.
+        /// </summary>
+        /// <remarks>
+        /// Does not throw a <c>EntryDestroyedException</c> if this entry
+        /// has been destroyed.
+        /// </remarks>
+        /// <returns>true if this entry has been destroyed</returns>
+        /// <exception cref="CacheClosedException">
+        /// if the cache is closed at the time of invocation
+        /// </exception>
+        property bool IsDestroyed
+        {
+          bool get( );
+        }
+
+
+      internal:
+
+        /// <summary>
+        /// Internal factory function to wrap a native object pointer inside
+        /// this managed class with null pointer check.
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        /// <returns>
+        /// The managed wrapper object; null if the native pointer is null.
+        /// </returns>
+        inline static RegionEntry^ Create( gemfire::RegionEntry* nativeptr )
+        {
+          return ( nativeptr != nullptr ?
+            gcnew RegionEntry( nativeptr ) : nullptr );
+        }
+
+
+      private:
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline RegionEntry( gemfire::RegionEntry* nativeptr )
+          : SBWrap( nativeptr ) { }
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/RegionEventM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/RegionEventM.cpp b/geode-client-native/src/clicache/RegionEventM.cpp
new file mode 100644
index 0000000..7c4d5f1
--- /dev/null
+++ b/geode-client-native/src/clicache/RegionEventM.cpp
@@ -0,0 +1,60 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "RegionEventM.hpp"
+#include "RegionM.hpp"
+#include "impl/SafeConvert.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      RegionEvent::RegionEvent(GemStone::GemFire::Cache::Region^ region,
+        IGFSerializable^ aCallbackArgument, bool remoteOrigin)
+        : UMWrap( )
+      {
+        if ( region == nullptr ) {
+          throw gcnew IllegalArgumentException( "RegionEvent.ctor(): "
+            "null region passed" );
+        }
+
+        gemfire::UserDataPtr callbackptr(SafeMSerializableConvert(
+            aCallbackArgument));
+
+        SetPtr(new gemfire::RegionEvent(gemfire::RegionPtr(region->_NativePtr),
+          callbackptr, remoteOrigin), true);
+      }
+
+      GemStone::GemFire::Cache::Region^ RegionEvent::Region::get( )
+      {
+        gemfire::RegionPtr& regionptr( NativePtr->getRegion( ) );
+
+        return GemStone::GemFire::Cache::Region::Create( regionptr.ptr( ) );
+      }
+
+      IGFSerializable^ RegionEvent::CallbackArgument::get()
+      {
+        gemfire::UserDataPtr& valptr(NativePtr->getCallbackArgument());
+        return SafeUMSerializableConvert(valptr.ptr());
+      }
+
+      bool RegionEvent::RemoteOrigin::get( )
+      {
+        return NativePtr->remoteOrigin( );
+      }
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/RegionEventM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/RegionEventM.hpp b/geode-client-native/src/clicache/RegionEventM.hpp
new file mode 100644
index 0000000..d2a3673
--- /dev/null
+++ b/geode-client-native/src/clicache/RegionEventM.hpp
@@ -0,0 +1,84 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/RegionEvent.hpp"
+#include "impl/NativeWrapper.hpp"
+#include "IGFSerializable.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      ref class Region;
+
+      /// <summary>
+      /// This class encapsulates events that occur for a region.
+      /// </summary>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class RegionEvent sealed
+        : public Internal::UMWrap<gemfire::RegionEvent>
+      {
+      public:
+
+        /// <summary>
+        /// Constructor to create a <c>RegionEvent</c> for a given region.
+        /// </summary>
+        /// <exception cref="IllegalArgumentException">
+        /// if region is null
+        /// </exception>
+        RegionEvent(Region^ region, IGFSerializable^ aCallbackArgument,
+          bool remoteOrigin);
+
+        /// <summary>
+        /// Return the region this event occurred in.
+        /// </summary>
+        property Region^ Region
+        {
+          GemStone::GemFire::Cache::Region^ get( );
+        }
+
+        /// <summary>
+        /// Returns the callbackArgument passed to the method that generated
+        /// this event. See the <see cref="Region" /> interface methods
+        /// that take a callbackArgument parameter.
+        /// </summary>
+        property IGFSerializable^ CallbackArgument
+        {
+          IGFSerializable^ get();
+        }
+
+        /// <summary>
+        /// Returns true if the event originated in a remote process.
+        /// </summary>
+        property bool RemoteOrigin
+        {
+          bool get( );
+        }
+
+
+      internal:
+
+        /// <summary>
+        /// Internal constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline RegionEvent( const gemfire::RegionEvent* nativeptr )
+          : UMWrap( const_cast<gemfire::RegionEvent*>( nativeptr ), false ) { }
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/RegionFactoryM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/RegionFactoryM.cpp b/geode-client-native/src/clicache/RegionFactoryM.cpp
new file mode 100755
index 0000000..f46aa8a
--- /dev/null
+++ b/geode-client-native/src/clicache/RegionFactoryM.cpp
@@ -0,0 +1,272 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_includes.hpp"
+#include "RegionFactoryM.hpp"
+#include "AttributesFactoryM.hpp"
+#include "RegionM.hpp"
+#include "impl/ManagedCacheLoader.hpp"
+#include "impl/ManagedCacheWriter.hpp"
+#include "impl/ManagedCacheListener.hpp"
+#include "impl/ManagedPartitionResolver.hpp"
+#include "impl/ManagedFixedPartitionResolver.hpp"
+#include "RegionAttributesM.hpp"
+#include "PropertiesM.hpp"
+#include "ICacheLoader.hpp"
+#include "ICacheWriter.hpp"
+#include "ICacheListener.hpp"
+#include "IPartitionResolver.hpp"
+#include "IFixedPartitionResolver.hpp"
+#include "impl/SafeConvert.hpp"
+
+#include "com/vmware/impl/ManagedCacheLoaderN.hpp"
+#include "com/vmware/impl/ManagedCacheWriterN.hpp"
+#include "com/vmware/impl/ManagedCacheListenerN.hpp"
+#include "com/vmware/impl/ManagedPartitionResolverN.hpp"
+#include "com/vmware/impl/ManagedFixedPartitionResolverN.hpp"
+
+#include "com/vmware/impl/CacheLoaderMN.hpp"
+#include "com/vmware/impl/CacheWriterMN.hpp"
+#include "com/vmware/impl/CacheListenerMN.hpp"
+#include "com/vmware/impl/PartitionResolverMN.hpp"
+#include "com/vmware/impl/FixedPartitionResolverMN.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      Region^ RegionFactory::Create(String^ regionName)
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          ManagedString mg_name( regionName );
+          
+        gemfire::RegionPtr& nativeptr( NativePtr->create(
+            mg_name.CharPtr ) );
+          return Region::Create( nativeptr.ptr( ) );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+        RegionFactory^ RegionFactory::SetCacheLoader( ICacheLoader^ cacheLoader )
+      {
+        gemfire::CacheLoaderPtr loaderptr;
+        if ( cacheLoader != nullptr ) {
+          loaderptr = new gemfire::ManagedCacheLoader( cacheLoader );
+        }
+        NativePtr->setCacheLoader( loaderptr );
+        return this;
+      }
+
+      RegionFactory^ RegionFactory::SetCacheWriter( ICacheWriter^ cacheWriter )
+      {
+        gemfire::CacheWriterPtr writerptr;
+        if ( cacheWriter != nullptr ) {
+          writerptr = new gemfire::ManagedCacheWriter( cacheWriter );
+        }
+        NativePtr->setCacheWriter( writerptr );
+        return this;
+      }
+
+      RegionFactory^ RegionFactory::SetCacheListener( ICacheListener^ cacheListener )
+      {
+        gemfire::CacheListenerPtr listenerptr;
+        if ( cacheListener != nullptr ) {
+          listenerptr = new gemfire::ManagedCacheListener( cacheListener );
+        }
+        NativePtr->setCacheListener( listenerptr );
+        return this;
+      }
+
+      RegionFactory^ RegionFactory::SetPartitionResolver( IPartitionResolver^ partitionresolver )
+      {
+        gemfire::PartitionResolverPtr resolverptr;
+        if ( partitionresolver != nullptr ) {
+          IFixedPartitionResolver^ resolver = dynamic_cast<IFixedPartitionResolver^>(partitionresolver);
+          if (resolver != nullptr) {
+            resolverptr = new gemfire::ManagedFixedPartitionResolver( resolver );            
+          }
+          else {
+            resolverptr = new gemfire::ManagedPartitionResolver( partitionresolver );
+          }          
+        }
+        NativePtr->setPartitionResolver( resolverptr );
+        return this;
+      }
+
+      RegionFactory^ RegionFactory::SetCacheLoader( String^ libPath, String^ factoryFunctionName )
+      {        
+        ManagedString mg_libpath( libPath );
+        ManagedString mg_factoryFunctionName( factoryFunctionName );
+
+        NativePtr->setCacheLoader( mg_libpath.CharPtr,
+          mg_factoryFunctionName.CharPtr );
+        return this;
+      }
+
+      RegionFactory^ RegionFactory::SetCacheWriter( String^ libPath, String^ factoryFunctionName )
+      {        
+        ManagedString mg_libpath( libPath );
+        ManagedString mg_factoryFunctionName( factoryFunctionName );
+
+        NativePtr->setCacheWriter( mg_libpath.CharPtr,
+          mg_factoryFunctionName.CharPtr );
+        return this;
+      }
+
+      RegionFactory^ RegionFactory::SetCacheListener( String^ libPath, String^ factoryFunctionName )
+      {        
+        ManagedString mg_libpath( libPath );
+        ManagedString mg_factoryFunctionName( factoryFunctionName );
+
+        NativePtr->setCacheListener( mg_libpath.CharPtr,
+          mg_factoryFunctionName.CharPtr );
+        return this;
+      }
+
+      RegionFactory^ RegionFactory::SetPartitionResolver( String^ libPath, String^ factoryFunctionName )
+      {        
+        ManagedString mg_libpath( libPath );
+        ManagedString mg_factoryFunctionName( factoryFunctionName );
+
+        NativePtr->setPartitionResolver( mg_libpath.CharPtr,
+          mg_factoryFunctionName.CharPtr );
+        return this;
+      }
+
+      // EXPIRATION ATTRIBUTES
+
+      RegionFactory^ RegionFactory::SetEntryIdleTimeout( ExpirationAction action, uint32_t idleTimeout )
+      {
+        NativePtr->setEntryIdleTimeout(
+          static_cast<gemfire::ExpirationAction::Action>( action ), idleTimeout );
+        return this;
+      }
+
+      RegionFactory^ RegionFactory::SetEntryTimeToLive( ExpirationAction action, uint32_t timeToLive )
+      {
+        NativePtr->setEntryTimeToLive(
+          static_cast<gemfire::ExpirationAction::Action>( action ), timeToLive );
+        return this;
+      }
+
+      RegionFactory^ RegionFactory::SetRegionIdleTimeout( ExpirationAction action, uint32_t idleTimeout )
+      {
+        NativePtr->setRegionIdleTimeout(
+          static_cast<gemfire::ExpirationAction::Action>( action ), idleTimeout );
+        return this;
+      }
+
+      RegionFactory^ RegionFactory::SetRegionTimeToLive( ExpirationAction action, uint32_t timeToLive )
+      {
+        NativePtr->setRegionTimeToLive(
+          static_cast<gemfire::ExpirationAction::Action>( action ), timeToLive );
+        return this;
+      }
+
+      // PERSISTENCE
+
+      RegionFactory^ RegionFactory::SetPersistenceManager( String^ libPath,
+        String^ factoryFunctionName )
+      {        
+        SetPersistenceManager( libPath, factoryFunctionName, nullptr );
+        return this;
+      }
+
+      RegionFactory^ RegionFactory::SetPersistenceManager( String^ libPath,
+        String^ factoryFunctionName, Properties^ config )
+      {        
+        ManagedString mg_libpath( libPath );
+        ManagedString mg_factoryFunctionName( factoryFunctionName );
+        gemfire::PropertiesPtr configptr(
+          GetNativePtr<gemfire::Properties>( config ) );
+
+        NativePtr->setPersistenceManager( mg_libpath.CharPtr,
+          mg_factoryFunctionName.CharPtr, configptr );
+        return this;
+      }
+
+      RegionFactory^ RegionFactory::SetPoolName( String^ poolName )
+      {
+        ManagedString mg_poolName( poolName );
+
+        NativePtr->setPoolName( mg_poolName.CharPtr );
+        return this;
+      }
+
+      // MAP ATTRIBUTES
+
+      RegionFactory^ RegionFactory::SetInitialCapacity( int32_t initialCapacity )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          NativePtr->setInitialCapacity( initialCapacity );
+          return this;
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      RegionFactory^ RegionFactory::SetLoadFactor( Single loadFactor )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          NativePtr->setLoadFactor( loadFactor );
+          return this;
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      RegionFactory^ RegionFactory::SetConcurrencyLevel( int32_t concurrencyLevel )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          NativePtr->setConcurrencyLevel( concurrencyLevel );
+          return this;
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      RegionFactory^ RegionFactory::SetLruEntriesLimit( uint32_t entriesLimit )
+      {
+        NativePtr->setLruEntriesLimit( entriesLimit );
+        return this;
+      }
+
+      RegionFactory^ RegionFactory::SetDiskPolicy( DiskPolicyType diskPolicy )
+      {
+        NativePtr->setDiskPolicy(
+          static_cast<gemfire::DiskPolicyType::PolicyType>( diskPolicy ) );
+        return this;
+      }
+
+      RegionFactory^ RegionFactory::SetCachingEnabled( bool cachingEnabled )
+      {
+        NativePtr->setCachingEnabled( cachingEnabled );
+        return this;
+      }
+
+      RegionFactory^ RegionFactory::SetCloningEnabled( bool cloningEnabled )
+      {
+        NativePtr->setCloningEnabled( cloningEnabled );
+        return this;
+      }
+      
+      RegionFactory^ RegionFactory::SetConcurrencyChecksEnabled( bool concurrencyChecksEnabled )
+      {
+        NativePtr->setConcurrencyChecksEnabled( concurrencyChecksEnabled );
+        return this;
+      }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/RegionFactoryM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/RegionFactoryM.hpp b/geode-client-native/src/clicache/RegionFactoryM.hpp
new file mode 100755
index 0000000..5413ba4
--- /dev/null
+++ b/geode-client-native/src/clicache/RegionFactoryM.hpp
@@ -0,0 +1,410 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/AttributesFactory.hpp"
+#include "impl/NativeWrapper.hpp"
+#include "ExpirationActionM.hpp"
+#include "DiskPolicyTypeM.hpp"
+#include "ScopeTypeM.hpp"
+#include "cppcache/RegionFactory.hpp"
+#include "RegionM.hpp"
+#include "RegionShortcutM.hpp"
+
+#include "ICacheLoader.hpp"
+#include "ICacheWriter.hpp"
+#include "ICacheListener.hpp"
+#include "IPartitionResolver.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      ref class Properties;
+      //interface class ICacheLoader;
+      //interface class ICacheWriter;
+      //interface class ICacheListener;
+      //interface class IPartitionResolver;
+
+      /// <summary>
+      /// This interface provides for the configuration and creation of instances of Region.
+      /// </summary>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class RegionFactory sealed
+        : public Internal::SBWrap<gemfire::RegionFactory>
+      {
+      public:
+        /// <summary>
+        /// Creates a region with the given name. 
+        /// The region is just created locally. It is not created on the server
+        /// to which this client is connected with.
+        /// </summary>
+        /// <remarks>
+        /// If Pool attached with Region is in multiusersecure mode then don't use return instance of region as no credential are attached with this instance.
+        /// Get instance of region from <see cref="Cache.CreateAuthenticatedView" to do the operation on Cache. 
+        /// </remarks>
+        /// <param name="name">the name of the region to create</param>
+        /// <returns>new region</returns>
+        /// <exception cref="RegionExistsException">
+        /// if a region with the same name is already in this cache
+        /// </exception>
+        /// <exception cref="CacheClosedException">
+        /// if the cache is closed
+        /// </exception>
+        /// <exception cref="OutOfMemoryException">
+        /// if the memory allocation failed
+        /// </exception>
+        /// <exception cref="RegionCreationFailedException">
+        /// if the call fails due to incomplete mirror initialization
+        /// </exception>
+        /// <exception cref="InitFailedException">
+        /// if the optional PersistenceManager fails to initialize
+        /// </exception>
+        /// <exception cref="UnknownException">otherwise</exception>
+        Region^ Create(String^ regionName);
+
+		    /// <summary>
+        /// Sets the cache loader for the <c>RegionAttributes</c> being created.
+        /// </summary>
+        /// <param name="cacheLoader">
+        /// a user-defined cache loader, or null for no cache loader
+        /// </param>
+        /// <returns>the instance of RegionFactory</returns>
+        RegionFactory^ SetCacheLoader( ICacheLoader^ cacheLoader );
+
+        /// <summary>
+        /// Sets the cache writer for the <c>RegionAttributes</c> being created.
+        /// </summary>
+        /// <param name="cacheWriter">
+        /// user-defined cache writer, or null for no cache writer
+        /// </param>
+        /// <returns>the instance of RegionFactory</returns>
+        RegionFactory^ SetCacheWriter( ICacheWriter^ cacheWriter );
+
+        /// <summary>
+        /// Sets the CacheListener for the <c>RegionAttributes</c> being created.
+        /// </summary>
+        /// <param name="cacheListener">
+        /// user-defined cache listener, or null for no cache listener
+        /// </param>
+        /// <returns>the instance of RegionFactory</returns>
+        RegionFactory^ SetCacheListener( ICacheListener^ cacheListener );
+
+        /// <summary>
+        /// Sets the PartitionResolver for the <c>RegionAttributes</c> being created.
+        /// </summary>
+        /// <param name="partitionresolver">
+        /// user-defined partition resolver, or null for no partition resolver
+        /// </param>
+        /// <returns>the instance of RegionFactory</returns>
+        RegionFactory^ SetPartitionResolver( IPartitionResolver^ partitionresolver );
+
+        /// <summary>
+        /// Sets the library path for the library that will be invoked for the loader of the region.
+        /// </summary>
+        /// <param name="libPath">
+        /// library pathname containing the factory function.
+        /// </param>
+        /// <param name="factoryFunctionName">
+        /// Name of factory function that creates a <c>CacheLoader</c>
+        /// for a native library, or the name of the method in the form
+        /// {Namespace}.{Class Name}.{Method Name} that creates an
+        /// <c>ICacheLoader</c> for a managed library.
+        /// </param>
+        /// <returns>the instance of RegionFactory</returns>
+        RegionFactory^ SetCacheLoader( String^ libPath, String^ factoryFunctionName );
+
+        /// <summary>
+        /// Sets the library path for the library that will be invoked for the writer of the region.
+        /// </summary>
+        /// <param name="libPath">
+        /// library pathname containing the factory function.
+        /// </param>
+        /// <param name="factoryFunctionName">
+        /// Name of factory function that creates a <c>CacheWriter</c>
+        /// for a native library, or the name of the method in the form
+        /// {Namespace}.{Class Name}.{Method Name} that creates an
+        /// <c>ICacheWriter</c> for a managed library.
+        /// </param>
+        /// <returns>the instance of RegionFactory</returns>
+        RegionFactory^ SetCacheWriter( String^ libPath, String^ factoryFunctionName );
+
+        /// <summary>
+        /// Sets the library path for the library that will be invoked for the listener of the region.
+        /// </summary>
+        /// <param name="libPath">
+        /// library pathname containing the factory function.
+        /// </param>
+        /// <param name="factoryFunctionName">
+        /// Name of factory function that creates a <c>CacheListener</c>
+        /// for a native library, or the name of the method in the form
+        /// {Namespace}.{Class Name}.{Method Name} that creates an
+        /// <c>ICacheListener</c> for a managed library.
+        /// </param>
+        /// <returns>the instance of RegionFactory</returns>
+        RegionFactory^ SetCacheListener( String^ libPath, String^ factoryFunctionName );
+
+
+        /// <summary>
+        /// Sets the library path for the library that will be invoked for the partition resolver of the region.
+        /// </summary>
+        /// <param name="libPath">
+        /// library pathname containing the factory function.
+        /// </param>
+        /// <param name="factoryFunctionName">
+        /// Name of factory function that creates a <c>PartitionResolver</c>
+        /// for a native library, or the name of the method in the form
+        /// {Namespace}.{Class Name}.{Method Name} that creates an
+        /// <c>IPartitionResolver</c> for a managed library.
+        /// </param>
+        /// <returns>the instance of RegionFactory</returns>
+        RegionFactory^ SetPartitionResolver( String^ libPath, String^ factoryFunctionName );
+        
+        /// <summary>
+        /// Sets the idleTimeout expiration attributes for region entries for the next
+        /// <c>RegionAttributes</c> created.
+        /// </summary>
+        /// <param name="action">
+        /// The expiration action for which to set the timeout.
+        /// </param>
+        /// <param name="idleTimeout">
+        /// the idleTimeout in seconds for entries in this region.
+        /// </param>
+        /// <returns>the instance of RegionFactory</returns>
+        RegionFactory^ SetEntryIdleTimeout( ExpirationAction action, uint32_t idleTimeout );
+
+        /// <summary>
+        /// Sets the timeToLive expiration attributes for region entries for the next
+        /// <c>RegionAttributes</c> created.
+        /// </summary>
+        /// <param name="action">
+        /// The expiration action for which to set the timeout.
+        /// </param>
+        /// <param name="timeToLive">
+        /// the timeToLive in seconds for entries in this region.
+        /// </param>
+        /// <returns>the instance of RegionFactory</returns>
+        RegionFactory^ SetEntryTimeToLive( ExpirationAction action, uint32_t timeToLive );
+
+        /// <summary>
+        /// Sets the idleTimeout expiration attributes for the region itself for the
+        /// next <c>RegionAttributes</c> created.
+        /// </summary>
+        /// <param name="action">
+        /// The expiration action for which to set the timeout.
+        /// </param>
+        /// <param name="idleTimeout">
+        /// the idleTimeout in seconds for the region as a whole.
+        /// </param>
+        /// <returns>the instance of RegionFactory</returns>
+        RegionFactory^ SetRegionIdleTimeout( ExpirationAction action, uint32_t idleTimeout );
+
+        /// <summary>
+        /// Sets the timeToLive expiration attributes for the region itself for the
+        /// next <c>RegionAttributes</c> created.
+        /// </summary>
+        /// <param name="action">
+        /// The expiration action for which to set the timeout.
+        /// </param>
+        /// <param name="timeToLive">
+        /// the timeToLive in seconds for the region as a whole.
+        /// </param>
+        /// <returns>the instance of RegionFactory</returns>
+        RegionFactory^ SetRegionTimeToLive( ExpirationAction action, uint32_t timeToLive );
+
+
+        // PERSISTENCE
+
+        /// <summary>
+        /// Sets the library path for the library that will be invoked for the persistence of the region.
+        /// If the region is being created from a client on a server, or on a server directly, then
+        /// This must be used to set the PersistenceManager.
+        /// </summary>
+        /// <param name="libPath">The path of the PersistenceManager shared library.</param>
+        /// <param name="factoryFunctionName">
+        /// The name of the factory function to create an instance of PersistenceManager object.
+        /// </param>
+        /// <returns>the instance of RegionFactory</returns>
+        RegionFactory^ SetPersistenceManager( String^ libPath, String^ factoryFunctionName );
+
+        /// <summary>
+        /// Sets the library path for the library that will be invoked for the persistence of the region.
+        /// If the region is being created from a client on a server, or on a server directly, then
+        /// This must be used to set the PersistenceManager.
+        /// </summary>
+        /// <param name="libPath">The path of the PersistenceManager shared library.</param>
+        /// <param name="factoryFunctionName">
+        /// The name of the factory function to create an instance of PersistenceManager object.
+        /// </param>
+        /// <param name="config">
+        /// The configuration properties to use for the PersistenceManager.
+        /// </param>
+        /// <returns>the instance of RegionFactory</returns>
+        RegionFactory^ SetPersistenceManager( String^ libPath, String^ factoryFunctionName,
+          Properties^ config );
+
+        /// <summary>
+        /// Set the pool name for a Thin Client region.
+        /// </summary>
+        /// <remarks>
+        /// The pool with the name specified must be already created.
+        /// </remarks>
+        /// <param name="poolName">
+        /// The name of the pool to attach to this region.
+        /// </param>
+        /// <returns>the instance of RegionFactory</returns>
+        RegionFactory^ SetPoolName( String^ poolName );
+
+        // MAP ATTRIBUTES
+
+        /// <summary>
+        /// Sets the entry initial capacity for the <c>RegionAttributes</c>
+        /// being created. This value is used in initializing the map that
+        /// holds the entries.
+        /// </summary>
+        /// <param name="initialCapacity">the initial capacity of the entry map</param>
+        /// <exception cref="IllegalArgumentException">
+        /// if initialCapacity is nonpositive
+        /// </exception>
+        /// <returns>the instance of RegionFactory</returns>
+        RegionFactory^ SetInitialCapacity( int32_t initialCapacity );
+
+        /// <summary>
+        /// Sets the entry load factor for the next <c>RegionAttributes</c>
+        /// created. This value is
+        /// used in initializing the map that holds the entries.
+        /// </summary>
+        /// <param name="loadFactor">the load factor of the entry map</param>
+        /// <exception cref="IllegalArgumentException">
+        /// if loadFactor is nonpositive
+        /// </exception>
+        /// <returns>the instance of RegionFactory</returns>
+        RegionFactory^ SetLoadFactor( Single loadFactor );
+
+        /// <summary>
+        /// Sets the concurrency level of the next <c>RegionAttributes</c>
+        /// created. This value is used in initializing the map that holds the entries.
+        /// </summary>
+        /// <param name="concurrencyLevel">
+        /// the concurrency level of the entry map
+        /// </param>
+        /// <exception cref="IllegalArgumentException">
+        /// if concurrencyLevel is nonpositive
+        /// </exception>
+        /// <returns>the instance of RegionFactory</returns>
+        RegionFactory^ SetConcurrencyLevel( int32_t concurrencyLevel );
+
+        /// <summary>
+        /// Sets a limit on the number of entries that will be held in the cache.
+        /// If a new entry is added while at the limit, the cache will evict the
+        /// least recently used entry.
+        /// </summary>
+        /// <param name="entriesLimit">
+        /// The limit of the number of entries before eviction starts.
+        /// Defaults to 0, meaning no LRU actions will used.
+        /// </param>
+        /// <returns>the instance of RegionFactory</returns>
+        RegionFactory^ SetLruEntriesLimit( uint32_t entriesLimit );
+
+        /// <summary>
+        /// Sets the disk policy type for the next <c>RegionAttributes</c> created.
+        /// </summary>
+        /// <param name="diskPolicy">
+        /// the disk policy to use for the region
+        /// </param>
+        /// <returns>the instance of RegionFactory</returns>
+        RegionFactory^ SetDiskPolicy( DiskPolicyType diskPolicy );
+
+        /// <summary>
+        /// Set caching enabled flag for this region.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// If set to false, then no data is stored in the local process,
+        /// but events and distributions will still occur, and the region
+        /// can still be used to put and remove, etc...
+        /// </para><para>
+        /// The default if not set is 'true', 'false' is illegal for regions
+        /// of <c>ScopeType.Local</c> scope. 
+        /// </para>
+        /// </remarks>
+        /// <param name="cachingEnabled">
+        /// if true, cache data for this region in this process.
+        /// </param>
+        /// <returns>the instance of RegionFactory</returns>
+        RegionFactory^ SetCachingEnabled( bool cachingEnabled );
+        /// <summary>
+        /// Set cloning enabled flag for this region.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// If set to false, then there is no cloning will take place in case of delta.
+        /// Delta will be applied on the old value which will change old value in-place.
+        /// </para><para>
+        /// The default if not set is 'false'
+        /// of <c>ScopeType.Local</c> scope. 
+        /// </para>
+        /// </remarks>
+        /// <param name="cloningEnabled">
+        /// if true, clone old value before applying delta so that in-place change would not occour..
+        /// </param>
+        /// <returns>the instance of RegionFactory</returns>
+        RegionFactory^ SetCloningEnabled( bool cloningEnabled );
+
+        /// <summary>
+        /// Sets concurrency checks enabled flag for this region.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// If set to false, then the version checks will not occur.
+        /// </para><para>
+        /// The default if not set is 'true'
+        /// </para>
+        /// </remarks>
+        /// <param name="concurrencyChecksEnabled">
+        /// if true, version checks for region entries will occur.
+        /// </param>
+        /// <returns>the instance of RegionFactory</returns>
+        RegionFactory^ SetConcurrencyChecksEnabled( bool concurrencyChecksEnabled );
+
+    internal:
+
+      /// <summary>
+      /// Internal factory function to wrap a native object pointer inside
+      /// this managed class with null pointer check.
+      /// </summary>
+      /// <param name="nativeptr">The native object pointer</param>
+      /// <returns>
+      /// The managed wrapper object; null if the native pointer is null.
+      /// </returns>
+      inline static RegionFactory^ Create( gemfire::RegionFactory* nativeptr )
+      {
+        return ( nativeptr != nullptr ?
+          gcnew RegionFactory( nativeptr ) : nullptr );
+      }
+
+	  private:
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline RegionFactory( gemfire::RegionFactory* nativeptr )
+          : SBWrap( nativeptr ) { }
+      };
+
+    }
+  }
+}
+


[13/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/PoolM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/PoolM.hpp b/geode-client-native/src/clicache/PoolM.hpp
new file mode 100755
index 0000000..0b07f66
--- /dev/null
+++ b/geode-client-native/src/clicache/PoolM.hpp
@@ -0,0 +1,281 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/Pool.hpp"
+#include "impl/NativeWrapper.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      ref class QueryService;
+      ref class Cache;
+      ref class Properties;
+
+      /// <summary>
+      /// A pool of connections.
+      /// </summary>
+      /// <remarks>
+      /// A pool of connections from a GemFire client to a set of GemFire servers.
+      /// </remarks>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class Pool sealed
+        : public Internal::SBWrap<gemfire::Pool>
+      {
+      public:
+
+		/// <summary>
+	    /// Get the name of the pool
+		/// </summary>
+	    property String^ Name
+		{
+		  String^ get( );
+		}
+
+		/// <summary>
+		/// Returns the connection timeout of this pool.
+		/// </summary>
+		property Int32 FreeConnectionTimeout
+		{
+		  Int32 get( );
+		}
+
+		/// <summary>
+		/// Returns the load conditioning interval of this pool.
+		/// </summary>
+		property Int32 LoadConditioningInterval
+		{
+      Int32 get( );
+		}
+
+		/// <summary>
+		/// Returns the socket buffer size of this pool.
+		/// </summary>
+    property Int32 SocketBufferSize
+		{
+		  Int32 get( );
+		}
+ 
+		/// <summary>
+		/// Returns the read timeout of this pool.
+		/// </summary>
+    property Int32 ReadTimeout
+		{
+		  Int32 get( );
+		}
+
+		/// <summary>
+		/// Get the minimum connections for this pool.
+		/// </summary>
+    property Int32 MinConnections
+		{
+		  Int32 get( );
+		}
+
+		/// <summary>
+		/// Get the maximum connections for this pool.
+		/// </summary>
+		property Int32 MaxConnections
+		{
+		  Int32 get( );
+		}
+
+		/// <summary>
+		/// Get the Idle connection timeout for this pool.
+		/// </summary>
+    property Int32 IdleTimeout
+		{
+		  Int32 get( );
+		}
+
+		/// <summary>
+		/// Get the ping interval for this pool.
+		/// </summary>
+		property Int32 PingInterval
+		{
+		  Int32 get( );
+		}
+
+		/// <summary>
+		/// Get the statistic interval for this pool.
+		/// </summary>
+    property Int32 StatisticInterval
+		{
+		  Int32 get( );
+		}
+
+		/// <summary>
+		/// Get the retry attempts for this pool.
+		/// </summary>
+		property Int32 RetryAttempts
+		{
+		  Int32 get( );
+		}
+
+		/// <summary>
+		/// Returns the true if a server-to-client subscriptions are enabled on this pool.
+		/// </summary>
+		property Boolean SubscriptionEnabled
+		{
+		  Boolean get( );
+		}
+
+        /// <summary>
+		/// Returns the true if a pr-single-hop is set to true on this pool.
+		/// </summary>
+		property Boolean PRSingleHopEnabled
+		{
+		  Boolean get( );
+		}
+
+		/// <summary>
+		/// Returns the subscription redundancy level of this pool.
+		/// </summary>
+		property Int32 SubscriptionRedundancy
+		{
+		  Int32 get( );
+		}
+
+		/// <summary>
+		/// Returns the subscription message tracking timeout of this pool.
+		/// </summary>
+		property Int32 SubscriptionMessageTrackingTimeout
+		{
+		  Int32 get( );
+		}
+
+		/// <summary>
+		/// Returns the subscription ack interval of this pool.
+		/// </summary>
+    property Int32 SubscriptionAckInterval
+		{
+		  Int32 get( );
+		}
+
+		/// <summary>
+		/// Returns the server group of this pool.
+		/// </summary>
+		property String^ ServerGroup
+		{
+		  String^ get( );
+		}
+
+		/// <summary>
+		/// Returns an unmodifiable list of locators
+		/// this pool is using. Each locator is either one
+		/// added explicitly when the pool was created or
+		/// were discovered using the explicit locators.
+		/// </summary>
+		/// <remarks>
+		/// If a pool has no locators then it can not discover servers or locators at runtime.
+		/// </remarks>
+		property array< String^ >^ Locators
+		{
+		  array< String^ >^ get( );
+		}
+
+		/// <summary>
+		/// Returns an unmodifiable list of
+		/// servers this pool is using. These servers were added
+		/// explicitly when the pool was created.
+		property array< String^ >^ Servers
+		{
+		  array< String^ >^ get( );
+		}
+
+		/// <summary>
+		/// Returns the true if ThreadLocalConnections are enabled on this pool.
+		/// </summary>
+		property Boolean ThreadLocalConnections
+		{
+		  Boolean get( );
+		}
+
+		/// <summary>
+		/// Returns <code>true</code> if multiuser authentication is enabled on this pool.
+		/// <summary>
+    property bool MultiuserAuthentication
+    {
+      bool get( );
+    }
+		/// <summary>
+		/// Destroys this pool closing any connections it produced.
+		/// </summary>
+		/// <param name="keepAlive">
+		/// whether the server should keep the durable client's
+		/// subscriptions alive for the timeout period
+		/// </param>
+		/// <exception cref="IllegalStateException">
+		/// if the pool is still in use
+		/// </exception>
+		void Destroy( Boolean keepAlive );
+
+		/// <summary>
+		/// Destroys this pool closing any connections it produced.
+		/// </summary>
+		/// <exception cref="IllegalStateException">
+		/// if the pool is still in use
+		/// </exception>
+		void Destroy( );
+		
+		/// <summary>
+		/// Indicates whether this Pool has been
+		/// destroyed.
+		/// </summary>
+		property Boolean Destroyed
+		{
+		  Boolean get( );
+		}
+
+		/// <summary>
+		/// Returns the QueryService for this Pool.
+		/// </summary>
+		/// <remarks>
+		/// The query operations performed using this QueryService will be executed
+		/// on the servers that are associated with this pool.
+		/// To perform Query operation on the local cache obtain the QueryService
+		/// instance from the Cache.
+		/// </remarks>
+    GemStone::GemFire::Cache::QueryService^ GetQueryService();
+
+		  internal:
+      /// <summary>
+      /// Internal factory function to wrap a native object pointer inside
+      /// this managed class with null pointer check.
+      /// </summary>
+      /// <param name="nativeptr">The native object pointer</param>
+      /// <returns>
+      /// The managed wrapper object; null if the native pointer is null.
+      /// </returns>
+      inline static Pool^ Create( gemfire::Pool* nativeptr )
+      {
+        return ( nativeptr != nullptr ?
+          gcnew Pool( nativeptr ) : nullptr );
+      }
+
+      private:
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline Pool( gemfire::Pool* nativeptr )
+          : SBWrap( nativeptr ) { }
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/PoolManagerM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/PoolManagerM.cpp b/geode-client-native/src/clicache/PoolManagerM.cpp
new file mode 100755
index 0000000..75ee5b5
--- /dev/null
+++ b/geode-client-native/src/clicache/PoolManagerM.cpp
@@ -0,0 +1,72 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_includes.hpp"
+#include "RegionM.hpp"
+#include "PoolM.hpp"
+#include "PoolManagerM.hpp"
+#include "PoolFactoryM.hpp"
+#include "CacheableStringM.hpp"
+#include "impl/ManagedString.hpp"
+#include "impl/SafeConvert.hpp"
+#include "ExceptionTypesM.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      PoolFactory^ PoolManager::CreateFactory()
+      {
+        return PoolFactory::Create(gemfire::PoolManager::createFactory().ptr());
+      }
+
+      const Dictionary<String^, Pool^>^ PoolManager::GetAll()
+      {
+        gemfire::HashMapOfPools pools = gemfire::PoolManager::getAll();
+        Dictionary<String^, Pool^>^ result = gcnew Dictionary<String^, Pool^>();
+        for (gemfire::HashMapOfPools::Iterator iter = pools.begin(); iter != pools.end(); ++iter)
+        {
+          String^ key = CacheableString::GetString(iter.first().ptr());
+          Pool^ val = Pool::Create(iter.second().ptr());
+          result->Add(key, val);
+        }
+        return result;
+      }
+
+      Pool^ PoolManager::Find(String^ name)
+      {
+        ManagedString mg_name( name );
+        gemfire::PoolPtr pool = gemfire::PoolManager::find(mg_name.CharPtr);
+        return Pool::Create(pool.ptr());
+      }
+
+      Pool^ PoolManager::Find(Region^ region)
+      {
+        return Pool::Create(gemfire::PoolManager::find(gemfire::RegionPtr(GetNativePtr<gemfire::Region>(region))).ptr());
+      }
+
+      void PoolManager::Close(Boolean KeepAlive)
+      {
+        gemfire::PoolManager::close(KeepAlive);
+      }
+
+      void PoolManager::Close()
+      {
+        gemfire::PoolManager::close();
+      }
+    }
+  }
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/PoolManagerM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/PoolManagerM.hpp b/geode-client-native/src/clicache/PoolManagerM.hpp
new file mode 100755
index 0000000..f474e64
--- /dev/null
+++ b/geode-client-native/src/clicache/PoolManagerM.hpp
@@ -0,0 +1,69 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/PoolManager.hpp"
+#include "impl/NativeWrapper.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      ref class Pool;
+      ref class PoolFactory;
+      ref class Region;
+
+      /// <summary>
+      /// This interface provides for the configuration and creation of instances of PoolFactory.
+      /// </summary>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class PoolManager STATICCLASS
+      {
+      public:
+
+        /// <summary>
+        /// Creates a new PoolFactory which is used to configure and create Pools.
+        /// </summary>
+        static PoolFactory^ CreateFactory();
+
+        /// <summary>
+        /// Returns a map containing all the pools in this manager.
+        /// The keys are pool names and the values are Pool instances.
+        /// </summary>
+        static const Dictionary<String^, Pool^>^ GetAll();
+
+        /// <summary>
+        /// Find by name an existing connection pool.
+        /// </summary>
+        static Pool^ Find(String^ name);
+
+        /// <summary>
+        /// Find the pool used by the given region.
+        /// </summary>
+        static Pool^ Find(Region^ region);
+
+        /// <summary>
+        /// Destroys all created pools.
+        /// </summary>
+        static void Close(Boolean KeepAlive);
+
+        /// <summary>
+        /// Destroys all created pools.
+        /// </summary>
+        static void Close();
+      };
+    }
+  }
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/PropertiesM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/PropertiesM.cpp b/geode-client-native/src/clicache/PropertiesM.cpp
new file mode 100644
index 0000000..a2efcdb
--- /dev/null
+++ b/geode-client-native/src/clicache/PropertiesM.cpp
@@ -0,0 +1,525 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "PropertiesM.hpp"
+#include "impl/ManagedVisitor.hpp"
+#include "impl/ManagedString.hpp"
+#include "impl/SafeConvert.hpp"
+#include "ExceptionTypesM.hpp"
+
+
+using namespace System;
+
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      // Visitor class to get string representations of a property object
+      ref class PropertyToString
+      {
+      private:
+
+        String^ m_str;
+
+      public:
+
+        inline PropertyToString( ) : m_str( "{" )
+        { }
+
+        void Visit( GemStone::GemFire::Cache::ICacheableKey^ key, IGFSerializable^ value )
+        {
+          if ( m_str->Length > 1 ) {
+            m_str += ",";
+          }
+          m_str += key->ToString( ) + "=" + value;
+        }
+
+        virtual String^ ToString( ) override
+        {
+          return m_str;
+        }
+      };
+
+
+      String^ Properties::Find( String^ key)
+      {
+        ManagedString mg_key( key );
+
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheableStringPtr value = NativePtr->find( mg_key.CharPtr );
+          return CacheableString::GetString( value.ptr( ) );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      IGFSerializable^ Properties::Find( GemStone::GemFire::Cache::ICacheableKey^ key)
+      {
+        CacheableString^ cStr = dynamic_cast<CacheableString ^>(key);
+
+        if ( key != nullptr) {
+          _GF_MG_EXCEPTION_TRY
+          
+          gemfire::CacheableStringPtr csPtr;
+          
+          CacheableString::GetCacheableString(cStr->Value, csPtr);
+
+          gemfire::CacheablePtr& value = NativePtr->find( csPtr );
+
+          return ConvertCacheableString(value);
+
+          _GF_MG_EXCEPTION_CATCH_ALL
+        }
+        else {
+          gemfire::CacheableKeyPtr keyptr( SafeMKeyConvert( key ) );
+
+          _GF_MG_EXCEPTION_TRY
+
+            gemfire::CacheablePtr& value = NativePtr->find( keyptr );
+            return SafeUMSerializableConvert( value.ptr( ) );
+
+          _GF_MG_EXCEPTION_CATCH_ALL
+        }
+      }
+
+       IGFSerializable^ Properties::ConvertCacheableString(gemfire::CacheablePtr& value)
+       {
+          gemfire::CacheableString * cs =  dynamic_cast<gemfire::CacheableString *>( value.ptr() );
+          if ( cs == NULL) {
+            return SafeUMSerializableConvert( value.ptr( ) );
+          } 
+          else {
+            if(cs->typeId() == (int8_t)gemfire::GemfireTypeIds::CacheableASCIIString
+              || cs->typeId() == (int8_t)gemfire::GemfireTypeIds::CacheableASCIIStringHuge) {
+              String^ str = gcnew String(cs->asChar());
+              return CacheableString::Create(str);
+            }
+            else {
+              String^ str = gcnew String(cs->asWChar());
+              return CacheableString::Create(str);
+            }
+          }
+        }
+
+      IGFSerializable^ Properties::Find( CacheableKey^ key)
+      {
+        CacheableString^ cStr = dynamic_cast<CacheableString ^>(key);
+
+        if ( key != nullptr) {
+          _GF_MG_EXCEPTION_TRY
+          
+          gemfire::CacheableStringPtr csPtr;
+          
+          CacheableString::GetCacheableString(cStr->Value, csPtr);
+
+          gemfire::CacheablePtr& value = NativePtr->find( csPtr );
+
+          return ConvertCacheableString(value);
+
+          _GF_MG_EXCEPTION_CATCH_ALL
+        }
+        else {
+          gemfire::CacheableKeyPtr keyptr(
+            (gemfire::CacheableKey*)GetNativePtr<gemfire::Cacheable>( key ) );
+
+          _GF_MG_EXCEPTION_TRY
+
+            gemfire::CacheablePtr& value = NativePtr->find( keyptr );
+            return SafeUMSerializableConvert( value.ptr( ) );
+
+          _GF_MG_EXCEPTION_CATCH_ALL        
+        }
+      }
+
+      void Properties::Insert( String^ key, String^ value)
+      {
+        ManagedString mg_key( key );
+        ManagedString mg_value( value );
+
+        _GF_MG_EXCEPTION_TRY
+
+          NativePtr->insert( mg_key.CharPtr, mg_value.CharPtr );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Properties::Insert( String^ key, const int32_t value)
+      {
+        //TODO::hitesh
+        ManagedString mg_key( key );
+
+        _GF_MG_EXCEPTION_TRY
+
+          NativePtr->insert( mg_key.CharPtr, value );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Properties::Insert( GemStone::GemFire::Cache::ICacheableKey^ key, IGFSerializable^ value)
+      {
+        CacheableString^ cStr = dynamic_cast<CacheableString ^>(key);
+        if (cStr != nullptr) {
+           _GF_MG_EXCEPTION_TRY
+          gemfire::CacheableKeyPtr keyptr(ConvertCacheableStringKey(cStr));
+          CacheableString^ cValueStr = dynamic_cast<CacheableString ^>(value);
+
+          if (cValueStr != nullptr) {
+            gemfire::CacheablePtr valueptr(ConvertCacheableStringKey(cValueStr));
+            NativePtr->insert( keyptr, valueptr );
+          }
+          else {
+            gemfire::CacheablePtr valueptr( SafeMSerializableConvert( value ) );
+            NativePtr->insert( keyptr, valueptr );
+          }
+          _GF_MG_EXCEPTION_CATCH_ALL
+        }
+        else {
+          gemfire::CacheableKeyPtr keyptr( SafeMKeyConvert( key ) );
+          gemfire::CacheablePtr valueptr( SafeMSerializableConvert( value ) );
+
+          _GF_MG_EXCEPTION_TRY
+
+            NativePtr->insert( keyptr, valueptr );
+
+          _GF_MG_EXCEPTION_CATCH_ALL
+        }
+      }
+
+      void Properties::Insert( CacheableKey^ key, IGFSerializable^ value)
+      {
+        CacheableString^ cStr = dynamic_cast<CacheableString ^>(key);
+        if (cStr != nullptr) {
+           _GF_MG_EXCEPTION_TRY
+          gemfire::CacheableKeyPtr keyptr(ConvertCacheableStringKey(cStr));
+          CacheableString^ cValueStr = dynamic_cast<CacheableString ^>(value);
+
+          if (cValueStr != nullptr) {
+            gemfire::CacheablePtr valueptr(ConvertCacheableStringKey(cValueStr));
+            NativePtr->insert( keyptr, valueptr );
+          }
+          else {
+            gemfire::CacheablePtr valueptr( SafeMSerializableConvert( value ) );
+            NativePtr->insert( keyptr, valueptr );
+          }
+          _GF_MG_EXCEPTION_CATCH_ALL
+        }
+        else {
+          gemfire::CacheableKeyPtr keyptr(
+            (gemfire::CacheableKey*)GetNativePtr<gemfire::Cacheable>( key ) );
+          gemfire::CacheablePtr valueptr( SafeMSerializableConvert( value ) );
+
+          _GF_MG_EXCEPTION_TRY
+
+            NativePtr->insert( keyptr, valueptr );
+
+          _GF_MG_EXCEPTION_CATCH_ALL
+        }
+      }
+
+      gemfire::CacheableKey * Properties::ConvertCacheableStringKey(CacheableString^ cStr)
+      {
+        gemfire::CacheableStringPtr csPtr;
+        CacheableString::GetCacheableString(cStr->Value, csPtr);
+
+        return csPtr.ptr();
+      }
+
+      void Properties::Insert( GemStone::GemFire::Cache::ICacheableKey^ key, Serializable^ value)
+      {
+        CacheableString^ cStr = dynamic_cast<CacheableString ^>(key);
+        if (cStr != nullptr) {
+           _GF_MG_EXCEPTION_TRY
+          gemfire::CacheableKeyPtr keyptr(ConvertCacheableStringKey(cStr));
+          CacheableString^ cValueStr = dynamic_cast<CacheableString ^>(value);
+
+          if (cValueStr != nullptr) {
+            gemfire::CacheablePtr valueptr(ConvertCacheableStringKey(cValueStr));
+            NativePtr->insert( keyptr, valueptr );
+          }
+          else {
+            gemfire::CacheablePtr valueptr(
+              GetNativePtr<gemfire::Cacheable>( value ) );
+            NativePtr->insert( keyptr, valueptr );
+          }
+          _GF_MG_EXCEPTION_CATCH_ALL
+        }
+        else {
+          gemfire::CacheableKeyPtr keyptr( SafeMKeyConvert( key ) );
+          gemfire::CacheablePtr valueptr(
+            GetNativePtr<gemfire::Cacheable>( value ) );
+
+          _GF_MG_EXCEPTION_TRY
+
+            NativePtr->insert( keyptr, valueptr );
+
+          _GF_MG_EXCEPTION_CATCH_ALL
+        }
+      }
+
+      void Properties::Insert( CacheableKey^ key, Serializable^ value)
+      {
+        CacheableString^ cStr = dynamic_cast<CacheableString ^>(key);
+        if (cStr != nullptr) {
+           _GF_MG_EXCEPTION_TRY
+          gemfire::CacheableKeyPtr keyptr(ConvertCacheableStringKey(cStr));
+          CacheableString^ cValueStr = dynamic_cast<CacheableString ^>(value);
+
+          if (cValueStr != nullptr) {
+            gemfire::CacheablePtr valueptr(ConvertCacheableStringKey(cValueStr));
+            NativePtr->insert( keyptr, valueptr );
+          }
+          else {
+            gemfire::CacheablePtr valueptr(
+              GetNativePtr<gemfire::Cacheable>( value ) );
+            NativePtr->insert( keyptr, valueptr );
+          }
+          _GF_MG_EXCEPTION_CATCH_ALL
+        }
+        else {
+          gemfire::CacheableKeyPtr keyptr(
+            (gemfire::CacheableKey*)GetNativePtr<gemfire::Cacheable>( key ) );
+          gemfire::CacheablePtr valueptr(
+            GetNativePtr<gemfire::Cacheable>( value ) );
+
+          _GF_MG_EXCEPTION_TRY
+
+            NativePtr->insert( keyptr, valueptr );
+
+          _GF_MG_EXCEPTION_CATCH_ALL
+        }
+      }
+
+      void Properties::Remove( String^ key)
+      {
+        ManagedString mg_key( key );
+
+        _GF_MG_EXCEPTION_TRY
+
+          NativePtr->remove( mg_key.CharPtr );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Properties::Remove( GemStone::GemFire::Cache::ICacheableKey^ key)
+      {
+        CacheableString^ cStr = dynamic_cast<CacheableString ^>(key);
+        if (cStr != nullptr) {
+           _GF_MG_EXCEPTION_TRY
+          
+             gemfire::CacheableKeyPtr keyptr(ConvertCacheableStringKey(cStr));
+
+             NativePtr->remove( keyptr );
+          
+           _GF_MG_EXCEPTION_CATCH_ALL
+        }
+        else {
+          gemfire::CacheableKeyPtr keyptr( SafeMKeyConvert( key ) );
+
+          _GF_MG_EXCEPTION_TRY
+
+            NativePtr->remove( keyptr );
+
+          _GF_MG_EXCEPTION_CATCH_ALL
+        }
+      }
+
+      void Properties::Remove( CacheableKey^ key)
+      {
+        CacheableString^ cStr = dynamic_cast<CacheableString ^>(key);
+        if (cStr != nullptr) {
+           _GF_MG_EXCEPTION_TRY
+          
+             gemfire::CacheableKeyPtr keyptr(ConvertCacheableStringKey(cStr));
+
+             NativePtr->remove( keyptr );
+          
+           _GF_MG_EXCEPTION_CATCH_ALL
+        }
+        else {
+          gemfire::CacheableKeyPtr keyptr(
+            (gemfire::CacheableKey*)GetNativePtr<gemfire::Cacheable>( key ) );
+
+          _GF_MG_EXCEPTION_TRY
+
+            NativePtr->remove( keyptr );
+
+          _GF_MG_EXCEPTION_CATCH_ALL
+        }
+      }
+
+      void Properties::ForEach( PropertyVisitor^ visitor )
+      {
+        if (visitor != nullptr)
+        {
+          gemfire::ManagedVisitor mg_visitor( visitor );
+
+          _GF_MG_EXCEPTION_TRY
+
+            NativePtr->foreach( mg_visitor );
+
+          _GF_MG_EXCEPTION_CATCH_ALL
+        }
+      }
+
+      uint32_t Properties::Size::get( )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          return NativePtr->getSize( );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Properties::AddAll( Properties^ other )
+      {
+        gemfire::PropertiesPtr p_other(
+          GetNativePtr<gemfire::Properties>( other ) );
+
+        _GF_MG_EXCEPTION_TRY
+
+          NativePtr->addAll( p_other );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Properties::Load( String^ fileName )
+      {
+        ManagedString mg_fname( fileName );
+
+        _GF_MG_EXCEPTION_TRY
+
+          NativePtr->load( mg_fname.CharPtr );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      String^ Properties::ToString( )
+      {
+        PropertyToString^ propStr = gcnew PropertyToString( );
+        this->ForEach( gcnew PropertyVisitor( propStr,
+          &PropertyToString::Visit ) );
+        String^ str = propStr->ToString( );
+        return ( str + "}" );
+      }
+
+      // IGFSerializable methods
+
+      void Properties::ToData( DataOutput^ output )
+      {
+        if (output->IsManagedObject()) {
+        //TODO::hitesh??
+          output->WriteBytesToUMDataOutput();          
+        }
+        
+         gemfire::DataOutput* nativeOutput =
+            GetNativePtr<gemfire::DataOutput>(output);
+        
+        if (nativeOutput != nullptr)
+        {
+          _GF_MG_EXCEPTION_TRY
+
+            NativePtr->toData( *nativeOutput );
+
+          _GF_MG_EXCEPTION_CATCH_ALL
+        }
+
+        if (output->IsManagedObject()) {
+          output->SetBuffer();          
+        }
+      }
+
+      IGFSerializable^ Properties::FromData( DataInput^ input )
+      {
+        if(input->IsManagedObject()) {
+          input->AdvanceUMCursor();
+        }
+        //TODO::hitesh??
+        gemfire::DataInput* nativeInput =
+          GetNativePtr<gemfire::DataInput>( input );
+        if (nativeInput != nullptr)
+        {
+          _GF_MG_EXCEPTION_TRY
+
+            AssignPtr( static_cast<gemfire::Properties*>(
+              NativePtr->fromData( *nativeInput ) ) );
+
+          _GF_MG_EXCEPTION_CATCH_ALL
+        }
+        
+        if(input->IsManagedObject()) {
+          input->SetBuffer();
+        }
+
+        return this;
+      }
+
+      uint32_t Properties::ObjectSize::get( )
+      {
+        //TODO::hitesh
+        _GF_MG_EXCEPTION_TRY
+
+          return NativePtr->objectSize( );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      // ISerializable methods
+
+      void Properties::GetObjectData( SerializationInfo^ info,
+        StreamingContext context )
+      {
+        if (_NativePtr != NULL) {
+          gemfire::DataOutput output;
+
+          _GF_MG_EXCEPTION_TRY
+
+            NativePtr->toData( output );
+
+          _GF_MG_EXCEPTION_CATCH_ALL
+
+          array<Byte>^ bytes = gcnew array<Byte>( output.getBufferLength( ) );
+          {
+            pin_ptr<const Byte> pin_bytes = &bytes[0];
+            memcpy( (uint8_t*)pin_bytes, output.getBuffer( ),
+              output.getBufferLength( ) );
+          }
+          info->AddValue( "bytes", bytes, array<Byte>::typeid );
+        }
+      }
+
+      Properties::Properties( SerializationInfo^ info,
+        StreamingContext context )
+        : SBWrap( gemfire::Properties::create( ).ptr( ) )
+      {
+        array<Byte>^ bytes = nullptr;
+        try {
+          bytes = dynamic_cast<array<Byte>^>( info->GetValue( "bytes",
+            array<Byte>::typeid ) );
+        }
+        catch ( System::Exception^ ) {
+          // could not find the header -- null value
+        }
+        if (bytes != nullptr) {
+          pin_ptr<const Byte> pin_bytes = &bytes[0];
+
+          _GF_MG_EXCEPTION_TRY
+
+            gemfire::DataInput input( (uint8_t*)pin_bytes, bytes->Length );
+            AssignPtr( static_cast<gemfire::Properties*>(
+              NativePtr->fromData( input ) ) );
+
+          _GF_MG_EXCEPTION_CATCH_ALL
+        }
+      }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/PropertiesM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/PropertiesM.hpp b/geode-client-native/src/clicache/PropertiesM.hpp
new file mode 100644
index 0000000..14be77d
--- /dev/null
+++ b/geode-client-native/src/clicache/PropertiesM.hpp
@@ -0,0 +1,358 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/Properties.hpp"
+#include "impl/NativeWrapper.hpp"
+#include "IGFSerializable.hpp"
+#include "ICacheableKey.hpp"
+#include "DataInputM.hpp"
+#include "DataOutputM.hpp"
+#include "CacheableStringM.hpp"
+
+
+using namespace System;
+using namespace System::Runtime::Serialization;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      /// <summary>
+      /// Delegate that represents visitor for the <c>Properties</c> class.
+      /// </summary>
+      /// <remarks>
+      /// This delegate is passed to the <c>Properties.ForEach</c> function
+      /// that invokes this delegate for each property having a key
+      /// and a value.
+      /// </remarks>
+      /// <param name="key">The key of the property.</param>
+      /// <param name="value">The value of the property.</param>
+      public delegate void PropertyVisitor( GemStone::GemFire::Cache::ICacheableKey^ key,
+        IGFSerializable^ value );
+
+      [Serializable]
+      /// <summary>
+      /// Provides a collection of properties, each of which is a key/value
+      /// pair. Each key is a string, and the value may be a string
+      /// or an integer.
+      /// </summary>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class Properties sealed
+        : public Internal::SBWrap<gemfire::Properties>, public IGFSerializable,
+        public ISerializable
+      {
+      public:
+
+        /// <summary>
+        /// Default constructor: returns an empty collection.
+        /// </summary>
+        inline Properties( )
+          : SBWrap( gemfire::Properties::create( ).ptr( ) ) { }
+
+        /// <summary>
+        /// Factory method to create an empty collection of properties.
+        /// </summary>
+        /// <returns>empty collection of properties</returns>
+        inline static Properties^ Create( )
+        {
+          return gcnew Properties( );
+        }
+
+        /// <summary>
+        /// Return the value for the given key, or NULL if not found. 
+        /// </summary>
+        /// <param name="key">the key to find</param>
+        /// <returns>the value for the key</returns>
+        /// <exception cref="NullPointerException">
+        /// if the key is null
+        /// </exception>
+        String^ Find( String^ key );
+
+        /// <summary>
+        /// Return the value for the given <c>ICacheableKey</c>,
+        /// or NULL if not found. 
+        /// </summary>
+        /// <param name="key">the key to find</param>
+        /// <returns>the serializable value for the key</returns>
+        /// <exception cref="NullPointerException">
+        /// if the key is null
+        /// </exception>
+        IGFSerializable^ Find( GemStone::GemFire::Cache::ICacheableKey^ key );
+
+        /// <summary>
+        /// Return the value for the given <c>CacheableKey</c>,
+        /// or NULL if not found. 
+        /// </summary>
+        /// <param name="key">the key to find</param>
+        /// <returns>the serializable value for the key</returns>
+        /// <exception cref="NullPointerException">
+        /// if the key is null
+        /// </exception>
+        IGFSerializable^ Find( CacheableKey^ key );
+
+        /// <summary>
+        /// Add or update the string value for key.
+        /// </summary>
+        /// <param name="key">the key to insert</param>
+        /// <param name="value">the string value to insert</param>
+        /// <exception cref="NullPointerException">
+        /// if the key is null
+        /// </exception>
+        void Insert( String^ key, String^ value);
+
+        /// <summary>
+        /// Add or update the int value for key.
+        /// </summary>
+        /// <param name="key">the key to insert</param>
+        /// <param name="value">the integer value to insert</param>
+        /// <exception cref="NullPointerException">
+        /// if the key is null
+        /// </exception>
+        void Insert( String^ key, int32_t value );
+
+        /// <summary>
+        /// Add or update <c>IGFSerializable</c> value for <c>ICacheableKey</c>.
+        /// </summary>
+        /// <param name="key">the key to insert</param>
+        /// <param name="value">the <c>IGFSerializable</c> value to insert</param>
+        /// <exception cref="NullPointerException">
+        /// if the key is null
+        /// </exception>
+        void Insert( GemStone::GemFire::Cache::ICacheableKey^ key, IGFSerializable^ value );
+
+        /// <summary>
+        /// Add or update <c>IGFSerializable</c> value for <c>CacheableKey</c>.
+        /// </summary>
+        /// <param name="key">the key to insert</param>
+        /// <param name="value">the <c>IGFSerializable</c> value to insert</param>
+        /// <exception cref="NullPointerException">
+        /// if the key is null
+        /// </exception>
+        void Insert( CacheableKey^ key, IGFSerializable^ value );
+
+        /// <summary>
+        /// Add or update <c>Serializable</c> value for <c>ICacheableKey</c>.
+        /// </summary>
+        /// <param name="key">the key to insert</param>
+        /// <param name="value">the <c>Serializable</c> value to insert</param>
+        /// <exception cref="NullPointerException">
+        /// if the key is null
+        /// </exception>
+        void Insert( GemStone::GemFire::Cache::ICacheableKey^ key, GemStone::GemFire::Cache::Serializable^ value );
+
+        /// <summary>
+        /// Add or update <c>Serializable</c> value for <c>CacheableKey</c>.
+        /// </summary>
+        /// <param name="key">the key to insert</param>
+        /// <param name="value">the <c>Serializable</c> value to insert</param>
+        /// <exception cref="NullPointerException">
+        /// if the key is null
+        /// </exception>
+        void Insert( CacheableKey^ key, GemStone::GemFire::Cache::Serializable^ value );
+
+        /// <summary>
+        /// Remove the key from the collection. 
+        /// </summary>
+        /// <param name="key">the key to remove</param>
+        /// <exception cref="NullPointerException">
+        /// if the key is null
+        /// </exception>
+        void Remove( String^ key );
+
+        /// <summary>
+        /// Remove the given <c>ICacheableKey</c> from the collection. 
+        /// </summary>
+        /// <param name="key">the key to remove</param>
+        /// <exception cref="NullPointerException">
+        /// if the key is null
+        /// </exception>
+        void Remove( GemStone::GemFire::Cache::ICacheableKey^ key );
+
+        /// <summary>
+        /// Remove the given <c>CacheableKey</c> from the collection. 
+        /// </summary>
+        /// <param name="key">the key to remove</param>
+        /// <exception cref="NullPointerException">
+        /// if the key is null
+        /// </exception>
+        void Remove( CacheableKey^ key );
+
+        /// <summary>
+        /// Execute the Visitor delegate for each entry in the collection.
+        /// </summary>
+        /// <param name="visitor">visitor delegate</param>
+        void ForEach( PropertyVisitor^ visitor );
+
+        /// <summary>
+        /// Return the number of entries in the collection.
+        /// </summary>
+        /// <returns>the number of entries</returns>
+        property uint32_t Size
+        {
+          uint32_t get( );
+        }
+
+        /// <summary>
+        /// Adds the contents of <c>other</c> to this instance, replacing
+        /// any existing values with those from other.
+        /// </summary>
+        /// <param name="other">new set of properties</param>
+        void AddAll( Properties^ other );
+
+        /// <summary>
+        /// Reads property values from a file, overriding what is currently
+        /// in the properties object. 
+        /// </summary>
+        /// <param name="fileName">the name of the file</param>
+        void Load( String^ fileName );
+
+        /// <summary>
+        /// Returns a string representation of the current
+        /// <c>Properties</c> object.
+        /// </summary>
+        /// <returns>
+        /// A comma separated list of property name,value pairs.
+        /// </returns>
+        virtual String^ ToString( ) override;
+
+        // IGFSerializable members
+
+        /// <summary>
+        /// Serializes this Properties object.
+        /// </summary>
+        /// <param name="output">
+        /// the DataOutput stream to use for serialization
+        /// </param>
+        virtual void ToData( DataOutput^ output );
+
+        /// <summary>
+        /// Deserializes this Properties object.
+        /// </summary>
+        /// <param name="input">
+        /// the DataInput stream to use for reading data
+        /// </param>
+        /// <returns>the deserialized Properties object</returns>
+        virtual IGFSerializable^ FromData( DataInput^ input );
+
+        /// <summary>
+        /// return the size of this object in bytes
+        /// </summary>
+        virtual property uint32_t ObjectSize
+        {
+          virtual uint32_t get( ); 
+        }
+
+        /// <summary>
+        /// Returns the classId of this class for serialization.
+        /// </summary>
+        /// <returns>classId of the Properties class</returns>
+        /// <seealso cref="IGFSerializable.ClassId" />
+        virtual property uint32_t ClassId
+        {
+          inline virtual uint32_t get( )
+          {
+            return GemFireClassIds::Properties;
+          }
+        }
+
+        // End: IGFSerializable members
+
+        // ISerializable members
+
+        virtual void GetObjectData( SerializationInfo^ info,
+          StreamingContext context );
+
+        // End: ISerializable members
+
+        /// <summary>
+        /// Get the underlying native unmanaged pointer.
+        /// </summary>
+        property void* NativeIntPtr
+        {
+          inline void* get()
+          {
+            return _NativePtr;
+          }
+        }
+
+        inline static IGFSerializable^ ConvertCacheableString(gemfire::CacheablePtr& value);
+        inline static gemfire::CacheableKey *  ConvertCacheableStringKey(CacheableString^ cStr);
+        
+
+        /// <summary>
+        /// Internal factory function to wrap a native object pointer inside
+        /// this managed class with null pointer check.
+        /// </summary>
+        /// <param name="ptr">The native IntPtr pointer</param>
+        /// <returns>
+        /// The managed wrapper object; null if the native pointer is null.
+        /// </returns>
+        static Properties^ CreateFromVoidPtr(void* ptr)
+        {
+          gemfire::Properties* nativeptr = (gemfire::Properties*)ptr;
+          return ( nativeptr != nullptr ?
+            gcnew Properties( nativeptr ) : nullptr );
+        }
+
+
+      protected:
+
+        // For deserialization using the .NET serialization (ISerializable)
+        Properties( SerializationInfo^ info, StreamingContext context );
+
+
+      internal:
+
+
+        /// <summary>
+        /// Factory function to register wrapper
+        /// </summary>
+        inline static IGFSerializable^ CreateDeserializable(
+          gemfire::Serializable* nativeptr )
+        {
+          return Create( nativeptr );
+        }
+
+        /// <summary>
+        /// Internal factory function to wrap a native object pointer inside
+        /// this managed class with null pointer check.
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        /// <returns>
+        /// The managed wrapper object; null if the native pointer is null.
+        /// </returns>
+        static Properties^ Create( gemfire::Serializable* nativeptr )
+        {
+          return ( nativeptr != nullptr ?
+            gcnew Properties( nativeptr ) : nullptr );
+        }
+
+        inline static IGFSerializable^ CreateDeserializable( )
+        {
+          return Create(  );
+        }
+
+      private:
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline Properties( gemfire::Serializable* nativeptr )
+          : SBWrap( (gemfire::Properties*)nativeptr ) { }
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/QueryM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/QueryM.cpp b/geode-client-native/src/clicache/QueryM.cpp
new file mode 100644
index 0000000..319ef8a
--- /dev/null
+++ b/geode-client-native/src/clicache/QueryM.cpp
@@ -0,0 +1,121 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "QueryM.hpp"
+#include "ISelectResults.hpp"
+#include "ResultSetM.hpp"
+#include "StructSetM.hpp"
+#include "ExceptionTypesM.hpp"
+#include "impl/SafeConvert.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      ISelectResults^ Query::Execute(  )
+      {
+        return Execute( DEFAULT_QUERY_RESPONSE_TIMEOUT );
+      }
+
+      ISelectResults^ Query::Execute( uint32_t timeout )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::SelectResultsPtr& nativeptr = NativePtr->execute( timeout );
+          if ( nativeptr.ptr( ) == NULL ) return nullptr;
+
+          gemfire::ResultSet* resultptr = dynamic_cast<gemfire::ResultSet*>(
+            nativeptr.ptr( ) );
+          if ( resultptr == NULL )
+          {
+            gemfire::StructSet* structptr = dynamic_cast<gemfire::StructSet*>(
+              nativeptr.ptr( ) );
+            if ( structptr == NULL )
+            {
+              return nullptr;
+            }
+            return StructSet::Create(structptr);
+          }
+          else
+          {
+            return ResultSet::Create(resultptr);
+          }
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+	
+      ISelectResults^ Query::Execute( array<IGFSerializable^>^ paramList)
+      {
+        return Execute(paramList, DEFAULT_QUERY_RESPONSE_TIMEOUT);
+      }
+
+      ISelectResults^ Query::Execute( array<IGFSerializable^>^ paramList, uint32_t timeout )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+        gemfire::CacheableVectorPtr rsptr = gemfire::CacheableVector::create();
+        for( int index = 0; index < paramList->Length; index++ )
+        {
+		  rsptr->push_back(gemfire::CacheablePtr(SafeMSerializableConvert( paramList[ index])));
+		}
+        
+        gemfire::SelectResultsPtr& nativeptr = NativePtr->execute(rsptr, timeout );
+        if ( nativeptr.ptr( ) == NULL ) return nullptr;
+
+        gemfire::ResultSet* resultptr = dynamic_cast<gemfire::ResultSet*>(
+        nativeptr.ptr( ) );
+        if ( resultptr == NULL )
+        {
+          gemfire::StructSet* structptr = dynamic_cast<gemfire::StructSet*>(
+          nativeptr.ptr( ) );
+          if ( structptr == NULL )
+          {
+            return nullptr;
+          }
+          return StructSet::Create(structptr);
+        }
+        else
+        {
+          return ResultSet::Create(resultptr);
+        }
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      String^ Query::QueryString::get( )
+      {
+        return ManagedString::Get( NativePtr->getQueryString( ) );
+      }
+
+      void Query::Compile( )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          NativePtr->compile( );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      bool Query::IsCompiled::get( )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          return NativePtr->isCompiled( );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/QueryM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/QueryM.hpp b/geode-client-native/src/clicache/QueryM.hpp
new file mode 100644
index 0000000..add3b8e
--- /dev/null
+++ b/geode-client-native/src/clicache/QueryM.hpp
@@ -0,0 +1,200 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/Query.hpp"
+#include "IGFSerializable.hpp"
+#include "impl/NativeWrapper.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      interface class ISelectResults;
+
+      /// <summary>
+      /// Class to encapsulate a query.
+      /// </summary>
+      /// <remarks>
+      /// A Query is obtained from a QueryService which in turn is obtained
+      /// from the Cache.
+      /// This can be executed to return SelectResults which can be either
+      /// a ResultSet or a StructSet.
+      ///
+      /// This class is intentionally not thread-safe. So multiple threads
+      /// should not operate on the same <c>Query</c> object concurrently
+      /// rather should have their own <c>Query</c> objects.
+      /// </remarks>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class Query sealed
+        : public Internal::SBWrap<gemfire::Query>
+      {
+      public:
+
+        /// <summary>
+        /// Executes the OQL Query on the cache server and returns
+        /// the results. The default timeout for the query is 15 secs.
+        /// </summary>
+        /// <exception cref="QueryException">
+        /// if some query error occurred at the server.
+        /// </exception>
+        /// <exception cref="IllegalStateException">
+        /// if some other error occurred.
+        /// </exception>
+        /// <exception cref="NotConnectedException">
+        /// if no java cache server is available.
+        /// For pools configured with locators, if no locators are available, innerException
+        /// of NotConnectedException is set to NoAvailableLocatorsException.
+        /// </exception>
+        /// <returns>
+        /// An <see cref="ISelectResults"/> object which can either be a
+        /// <see cref="ResultSet"/> or a <see cref="StructSet"/>.
+        /// </returns>
+        ISelectResults^ Execute( );
+
+        /// <summary>
+        /// Executes the OQL Query on the cache server with the specified
+        /// timeout and returns the results.
+        /// </summary>
+        /// <param name="timeout">The time (in seconds) to wait for query response.
+        /// This should be less than or equal to 2^31/1000 i.e. 2147483.
+        /// </param>
+        /// <exception cref="IllegalArgumentException">
+        /// if timeout parameter is greater than 2^31/1000.
+        /// </exception>
+        /// <exception cref="QueryException">
+        /// if some query error occurred at the server.
+        /// </exception>
+        /// <exception cref="IllegalStateException">
+        /// if some other error occurred.
+        /// </exception>
+        /// <exception cref="NotConnectedException">
+        /// if no java cache server is available
+        /// For pools configured with locators, if no locators are available, innerException
+        /// of NotConnectedException is set to NoAvailableLocatorsException.
+        /// </exception>
+        /// <returns>
+        /// An <see cref="ISelectResults"/> object which can either be a
+        /// <see cref="ResultSet"/> or a <see cref="StructSet"/>.
+        /// </returns>
+        ISelectResults^ Execute( uint32_t timeout );
+
+		/// <summary>
+        /// Executes the OQL Parameterized Query on the cache server with the specified
+        /// paramList & timeout parameters and returns the results.
+        /// </summary>
+		/// <param name="paramList">The Parameter List for the specified Query.
+        /// </param>
+        /// <param name="timeout">The time (in seconds) to wait for query response.
+        /// This should be less than or equal to 2^31/1000 i.e. 2147483.
+        /// </param>
+        /// <exception cref="IllegalArgumentException">
+        /// if timeout parameter is greater than 2^31/1000.
+        /// </exception>
+        /// <exception cref="QueryException">
+        /// if some query error occurred at the server.
+        /// </exception>
+        /// <exception cref="IllegalStateException">
+        /// if some other error occurred.
+        /// </exception>
+        /// <exception cref="NotConnectedException">
+        /// if no java cache server is available
+        /// For pools configured with locators, if no locators are available, innerException
+        /// of NotConnectedException is set to NoAvailableLocatorsException.
+        /// </exception>
+        /// <returns>
+        /// An <see cref="ISelectResults"/> object which can either be a
+        /// <see cref="ResultSet"/> or a <see cref="StructSet"/>.
+        /// </returns>
+		ISelectResults^ Execute( array<IGFSerializable^>^ paramList, uint32_t timeout );
+
+        /// <summary>
+        /// Executes the OQL Parameterized Query on the cache server with the specified
+        /// paramList and returns the results. The default timeout for the query is 15 secs.
+        /// </summary>
+		/// <param name="paramList">The Parameter List for the specified Query.
+        /// </param>
+        /// <exception cref="IllegalArgumentException">
+        /// if timeout parameter is greater than 2^31/1000.
+        /// </exception>
+        /// <exception cref="QueryException">
+        /// if some query error occurred at the server.
+        /// </exception>
+        /// <exception cref="IllegalStateException">
+        /// if some other error occurred.
+        /// </exception>
+        /// <exception cref="NotConnectedException">
+        /// if no java cache server is available
+        /// For pools configured with locators, if no locators are available, innerException
+        /// of NotConnectedException is set to NoAvailableLocatorsException.
+        /// </exception>
+        /// <returns>
+        /// An <see cref="ISelectResults"/> object which can either be a
+        /// <see cref="ResultSet"/> or a <see cref="StructSet"/>.
+        /// </returns>
+		ISelectResults^ Execute( array<IGFSerializable^>^ paramList);
+        /// <summary>
+        /// Get the string for this query.
+        /// </summary>
+        property String^ QueryString
+        {
+          String^ get( );
+        }
+
+        /// <summary>
+        /// Compile the given query -- NOT IMPLEMENTED.
+        /// </summary>
+        void Compile( );
+
+        /// <summary>
+        /// Check if the query is compiled -- NOT IMPLEMENTED.
+        /// </summary>
+        property bool IsCompiled
+        {
+          bool get( );
+        }
+
+
+      internal:
+
+        /// <summary>
+        /// Internal factory function to wrap a native object pointer inside
+        /// this managed class with null pointer check.
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        /// <returns>
+        /// The managed wrapper object; null if the native pointer is null.
+        /// </returns>
+        inline static Query^ Create( gemfire::Query* nativeptr )
+        {
+          return ( nativeptr != nullptr ?
+            gcnew Query( nativeptr ) : nullptr );
+        }
+
+
+      private:
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline Query( gemfire::Query* nativeptr )
+          : SBWrap( nativeptr ) { }
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/QueryServiceM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/QueryServiceM.cpp b/geode-client-native/src/clicache/QueryServiceM.cpp
new file mode 100644
index 0000000..d9e61d0
--- /dev/null
+++ b/geode-client-native/src/clicache/QueryServiceM.cpp
@@ -0,0 +1,169 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "QueryServiceM.hpp"
+#include "QueryM.hpp"
+#include "LogM.hpp"
+#include "CqAttributesM.hpp"
+#include "CqQueryM.hpp"
+#include "CqServiceStatisticsM.hpp"
+#include "impl/ManagedString.hpp"
+#include "ExceptionTypesM.hpp"
+#include "impl/SafeConvert.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      Query^ QueryService::NewQuery( String^ query )
+      {
+        ManagedString mg_queryStr( query );
+
+        _GF_MG_EXCEPTION_TRY
+
+          return Query::Create( NativePtr->newQuery(
+            mg_queryStr.CharPtr ).ptr( ) );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+      CqQuery^ QueryService::NewCq( String^ query, CqAttributes^ cqAttr, bool isDurable )
+      {
+        ManagedString mg_queryStr( query );
+	gemfire::CqAttributesPtr attr(GetNativePtr<gemfire::CqAttributes>(cqAttr));
+        try
+        {
+          return CqQuery::Create( NativePtr->newCq(
+            mg_queryStr.CharPtr, attr, isDurable ).ptr( ));
+        }
+        catch ( const gemfire::Exception& ex )
+        {
+          throw GemFireException::Get( ex );
+        }
+      }
+      CqQuery^ QueryService::NewCq( String^ name, String^ query, CqAttributes^ cqAttr, bool isDurable )
+      {
+        ManagedString mg_queryStr( query );
+        ManagedString mg_nameStr( name );
+	gemfire::CqAttributesPtr attr(GetNativePtr<gemfire::CqAttributes>(cqAttr));
+        try
+        {
+          return CqQuery::Create( NativePtr->newCq(
+            mg_nameStr.CharPtr, mg_queryStr.CharPtr, attr, isDurable ).ptr( ) );
+        }
+        catch ( const gemfire::Exception& ex )
+        {
+          throw GemFireException::Get( ex );
+        }
+      }
+      void QueryService::CloseCqs()
+      {
+        try
+        {
+           NativePtr->closeCqs();
+        }
+        catch ( const gemfire::Exception& ex )
+        {
+          throw GemFireException::Get( ex );
+        }
+      }
+      array<CqQuery^>^ QueryService::GetCqs()
+      {
+        try
+        {
+	   gemfire::VectorOfCqQuery vrr;
+	   NativePtr->getCqs( vrr );
+	   array<CqQuery^>^ cqs = gcnew array<CqQuery^>( vrr.size( ) );
+
+           for( int32_t index = 0; index < vrr.size( ); index++ )
+           {
+                cqs[ index ] =  CqQuery::Create(vrr[index].ptr( ));
+           }
+           return cqs;
+        }
+        catch ( const gemfire::Exception& ex )
+        {
+          throw GemFireException::Get( ex );
+        }
+      }
+      CqQuery^ QueryService::GetCq(String^ name)
+      {
+        ManagedString mg_queryStr( name );
+        try
+        {
+          return CqQuery::Create( NativePtr->getCq(
+            mg_queryStr.CharPtr ).ptr( ) );
+        }
+        catch ( const gemfire::Exception& ex )
+        {
+          throw GemFireException::Get( ex );
+        }
+      }
+      void QueryService::ExecuteCqs()
+      {
+        try
+        {
+          NativePtr->executeCqs();
+        }
+        catch ( const gemfire::Exception& ex )
+        {
+          throw GemFireException::Get( ex );
+        }
+      }
+      void QueryService::StopCqs()
+      {
+        try
+        {
+          NativePtr->stopCqs();
+        }
+        catch ( const gemfire::Exception& ex )
+        {
+          throw GemFireException::Get( ex );
+        }
+      }
+      CqServiceStatistics^ QueryService::GetCqStatistics()
+      {
+        try
+        {
+          return CqServiceStatistics::Create( NativePtr->getCqServiceStatistics().ptr( ) );
+        }
+        catch ( const gemfire::Exception& ex )
+        {
+          throw GemFireException::Get( ex );
+        }
+      }
+
+      System::Collections::Generic::List<String^>^ QueryService::GetAllDurableCqsFromServer()
+      {
+        try
+        {
+          gemfire::CacheableArrayListPtr durableCqsArrayListPtr = NativePtr->getAllDurableCqsFromServer();
+          int length = durableCqsArrayListPtr != NULLPTR ? durableCqsArrayListPtr->length() : 0;
+          System::Collections::Generic::List<String^>^ durableCqsList = gcnew System::Collections::Generic::List<String^>();
+          if (length > 0)
+          {
+            for(int i =0; i < length; i++)
+            {
+              durableCqsList->Add(CacheableString::GetString(durableCqsArrayListPtr->at(i)));
+            }
+          }
+          return durableCqsList;
+        }
+        catch ( const gemfire::Exception& ex )
+        {
+          throw GemFireException::Get( ex );
+        }
+      }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/QueryServiceM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/QueryServiceM.hpp b/geode-client-native/src/clicache/QueryServiceM.hpp
new file mode 100644
index 0000000..8640c52
--- /dev/null
+++ b/geode-client-native/src/clicache/QueryServiceM.hpp
@@ -0,0 +1,135 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/QueryService.hpp"
+#include "impl/NativeWrapper.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      ref class Query;
+      ref class CqQuery;
+      ref class CqAttributes;
+      ref class CqServiceStatistics;
+
+      /// <summary>
+      /// Provides a query service.
+      /// </summary>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class QueryService sealed
+        : public Internal::SBWrap<gemfire::QueryService>
+      {
+      public:
+
+        /// <summary>
+        /// Get a <c>Query</c> object to enable querying.
+        /// </summary>
+        Query^ NewQuery( String^ query );
+        /// @nativeclient
+        /// <summary>
+        /// Get a <c>CqQuery</c> object to enable continuous querying.
+        /// </summary>
+        /// @endnativeclient
+        CqQuery^ NewCq( String^ query, CqAttributes^ cqAttr, bool isDurable );
+        /// @nativeclient
+        /// <summary>
+        /// Get a <c>CqQuery</c> object to enable continuous querying.
+        /// </summary>
+        /// @endnativeclient
+
+        CqQuery^ NewCq( String^ name, String^ query, CqAttributes^ cqAttr, bool isDurable );
+        /// @nativeclient
+        /// <summary>
+        /// Close all  <c>CqQuery</c> on this client.
+        /// </summary>
+        /// @endnativeclient
+	void CloseCqs();
+
+        /// @nativeclient
+        /// <summary>
+        /// Get all  <c>CqQuery</c> on this client.
+        /// </summary>
+        /// @endnativeclient
+	array<CqQuery^>^ GetCqs();
+
+        /// @nativeclient
+        /// <summary>
+        /// Get the  <c>CqQuery</c> with the given name on this client.
+        /// </summary>
+        /// @endnativeclient
+
+	CqQuery^ GetCq(String^ name);
+
+        /// @nativeclient
+        /// <summary>
+        /// Get the  <c>CqQuery</c> with the given name on this client.
+        /// </summary>
+        /// @endnativeclient
+	void ExecuteCqs();
+
+        /// @nativeclient
+        /// <summary>
+        /// Stop all  <c>CqQuery</c>  on this client.
+        /// </summary>
+        /// @endnativeclient
+	void StopCqs();
+
+        /// @nativeclient
+        /// <summary>
+        /// Get <c>CqServiceStatistics</c>  on this client.
+        /// </summary>
+        /// @endnativeclient
+	CqServiceStatistics^ GetCqStatistics();
+
+        /// @nativeclient
+        /// <summary>
+        /// Get <c>AllDurableCqsFromServer</c>  on this client.
+        /// </summary>
+        /// @endnativeclient
+   System::Collections::Generic::List<String^>^ GetAllDurableCqsFromServer();
+
+      internal:
+
+        /// <summary>
+        /// Internal factory function to wrap a native object pointer inside
+        /// this managed class with null pointer check.
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        /// <returns>
+        /// The managed wrapper object; null if the native pointer is null.
+        /// </returns>
+        inline static QueryService^ Create( gemfire::QueryService* nativeptr )
+        {
+          return ( nativeptr != nullptr ?
+            gcnew QueryService( nativeptr ) : nullptr );
+        }
+
+
+      private:
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline QueryService( gemfire::QueryService* nativeptr )
+          : SBWrap( nativeptr ) { }
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/RegionAttributesM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/RegionAttributesM.cpp b/geode-client-native/src/clicache/RegionAttributesM.cpp
new file mode 100644
index 0000000..beecab3
--- /dev/null
+++ b/geode-client-native/src/clicache/RegionAttributesM.cpp
@@ -0,0 +1,298 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "RegionAttributesM.hpp"
+#include "RegionM.hpp"
+#include "impl/ManagedCacheLoader.hpp"
+#include "impl/ManagedCacheWriter.hpp"
+#include "impl/ManagedCacheListener.hpp"
+#include "impl/ManagedPartitionResolver.hpp"
+#include "PropertiesM.hpp"
+#include "ICacheLoader.hpp"
+#include "ICacheWriter.hpp"
+#include "ICacheListener.hpp"
+#include "IPartitionResolver.hpp"
+#include "CacheListenerAdapter.hpp"
+#include "CacheWriterAdapter.hpp"
+#include "impl/SafeConvert.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      ICacheLoader^ RegionAttributes::CacheLoader::get( )
+      {
+        gemfire::CacheLoaderPtr& loaderptr( NativePtr->getCacheLoader( ) );
+        gemfire::ManagedCacheLoader* mg_loader =
+          dynamic_cast<gemfire::ManagedCacheLoader*>( loaderptr.ptr( ) );
+
+        if (mg_loader != nullptr)
+        {
+          return mg_loader->ptr( );
+        }
+        return nullptr;
+      }
+
+      ICacheWriter^ RegionAttributes::CacheWriter::get( )
+      {
+        gemfire::CacheWriterPtr& writerptr( NativePtr->getCacheWriter( ) );
+        gemfire::ManagedCacheWriter* mg_writer =
+          dynamic_cast<gemfire::ManagedCacheWriter*>( writerptr.ptr( ) );
+
+        if (mg_writer != nullptr)
+        {
+          return mg_writer->ptr( );
+        }
+        return nullptr;
+      }
+
+      ICacheListener^ RegionAttributes::CacheListener::get( )
+      {
+        gemfire::CacheListenerPtr& listenerptr( NativePtr->getCacheListener( ) );
+        gemfire::ManagedCacheListener* mg_listener =
+          dynamic_cast<gemfire::ManagedCacheListener*>( listenerptr.ptr( ) );
+
+        if (mg_listener != nullptr)
+        {
+          return mg_listener->ptr( );
+        }
+        return nullptr;
+      }
+
+      IPartitionResolver^ RegionAttributes::PartitionResolver::get( )
+      {
+        gemfire::PartitionResolverPtr& resolverptr( NativePtr->getPartitionResolver( ) );
+        gemfire::ManagedPartitionResolver* mg_resolver =
+          dynamic_cast<gemfire::ManagedPartitionResolver*>( resolverptr.ptr( ) );
+
+        if (mg_resolver != nullptr)
+        {
+          return mg_resolver->ptr( );
+        }
+        return nullptr;
+      }
+
+      int32_t RegionAttributes::RegionTimeToLive::get( )
+      {
+        return NativePtr->getRegionTimeToLive( );
+      }
+
+      ExpirationAction RegionAttributes::RegionTimeToLiveAction::get( )
+      {
+        return static_cast<ExpirationAction>( NativePtr->getRegionTimeToLiveAction( ) );
+      }
+
+      int32_t RegionAttributes::RegionIdleTimeout::get( )
+      {
+        return NativePtr->getRegionIdleTimeout( );
+      }
+
+      ExpirationAction RegionAttributes::RegionIdleTimeoutAction::get( )
+      {
+        return static_cast<ExpirationAction>( NativePtr->getRegionIdleTimeoutAction( ) );
+      }
+
+      int32_t RegionAttributes::EntryTimeToLive::get( )
+      {
+        return NativePtr->getEntryTimeToLive( );
+      }
+
+      ExpirationAction RegionAttributes::EntryTimeToLiveAction::get( )
+      {
+        return static_cast<ExpirationAction>( NativePtr->getEntryTimeToLiveAction( ) );
+      }
+
+      int32_t RegionAttributes::EntryIdleTimeout::get( )
+      {
+        return NativePtr->getEntryIdleTimeout( );
+      }
+
+      ExpirationAction RegionAttributes::EntryIdleTimeoutAction::get( )
+      {
+        return static_cast<ExpirationAction>( NativePtr->getEntryIdleTimeoutAction( ) );
+      }
+
+      ScopeType RegionAttributes::Scope::get( )
+      {
+        return static_cast<ScopeType>( NativePtr->getScope( ) );
+      }
+
+      bool RegionAttributes::CachingEnabled::get( )
+      {
+        return NativePtr->getCachingEnabled( );
+      }
+
+      bool RegionAttributes::CloningEnabled::get( )
+      {
+        return NativePtr->getCloningEnabled( );
+      }
+
+      int32_t RegionAttributes::InitialCapacity::get( )
+      {
+        return NativePtr->getInitialCapacity( );
+      }
+
+      Single RegionAttributes::LoadFactor::get( )
+      {
+        return NativePtr->getLoadFactor( );
+      }
+
+      int32_t RegionAttributes::ConcurrencyLevel::get( )
+      {
+        return NativePtr->getConcurrencyLevel( );
+      }
+
+      uint32_t RegionAttributes::LruEntriesLimit::get( )
+      {
+        return NativePtr->getLruEntriesLimit( );
+      }
+
+      DiskPolicyType RegionAttributes::DiskPolicy::get( )
+      {
+        return static_cast<DiskPolicyType>( NativePtr->getDiskPolicy( ) );
+      }
+
+      ExpirationAction RegionAttributes::LruEvictionAction::get( )
+      {
+        return static_cast<ExpirationAction>( NativePtr->getLruEvictionAction( ) );
+      }
+
+      String^ RegionAttributes::CacheLoaderLibrary::get( )
+      {
+        return ManagedString::Get( NativePtr->getCacheLoaderLibrary( ) );
+      }
+
+      String^ RegionAttributes::CacheLoaderFactory::get( )
+      {
+        return ManagedString::Get( NativePtr->getCacheLoaderFactory( ) );
+      }
+
+      String^ RegionAttributes::CacheListenerLibrary::get( )
+      {
+        return ManagedString::Get( NativePtr->getCacheListenerLibrary( ) );
+      }
+
+      String^ RegionAttributes::PartitionResolverLibrary::get( )
+      {
+        return ManagedString::Get( NativePtr->getPartitionResolverLibrary( ) );
+      }
+
+      String^ RegionAttributes::PartitionResolverFactory::get( )
+      {
+        return ManagedString::Get( NativePtr->getPartitionResolverFactory( ) );
+      }
+
+      String^ RegionAttributes::CacheListenerFactory::get( )
+      {
+        return ManagedString::Get( NativePtr->getCacheListenerFactory( ) );
+      }
+
+      String^ RegionAttributes::CacheWriterLibrary::get( )
+      {
+        return ManagedString::Get( NativePtr->getCacheWriterLibrary( ) );
+      }
+
+      String^ RegionAttributes::CacheWriterFactory::get( )
+      {
+        return ManagedString::Get( NativePtr->getCacheWriterFactory( ) );
+      }
+
+      bool RegionAttributes::Equals( RegionAttributes^ other )
+      {
+        gemfire::RegionAttributes* otherPtr =
+          GetNativePtr<gemfire::RegionAttributes>( other );
+        if (_NativePtr != nullptr && otherPtr != nullptr) {
+          return NativePtr->operator==(*otherPtr);
+        }
+        return (_NativePtr == otherPtr);
+      }
+
+      bool RegionAttributes::Equals( Object^ other )
+      {
+        gemfire::RegionAttributes* otherPtr = GetNativePtr<gemfire::
+          RegionAttributes>( dynamic_cast<RegionAttributes^>( other ) );
+        if (_NativePtr != nullptr && otherPtr != nullptr) {
+          return NativePtr->operator==(*otherPtr);
+        }
+        return (_NativePtr == otherPtr);
+      }
+
+      void RegionAttributes::ValidateSerializableAttributes( )
+      {
+        NativePtr->validateSerializableAttributes( );
+      }
+
+      String^ RegionAttributes::Endpoints::get( )
+      {
+        return ManagedString::Get( NativePtr->getEndpoints( ) );
+      }
+
+      String^ RegionAttributes::PoolName::get( )
+      {
+        return ManagedString::Get( NativePtr->getPoolName( ) );
+      }
+
+      Boolean RegionAttributes::ClientNotificationEnabled::get( )
+      {
+        return NativePtr->getClientNotificationEnabled( );
+      }
+
+      String^ RegionAttributes::PersistenceLibrary::get( )
+      {
+        return ManagedString::Get( NativePtr->getPersistenceLibrary( ) );
+      }
+
+      String^ RegionAttributes::PersistenceFactory::get( )
+      {
+        return ManagedString::Get( NativePtr->getPersistenceFactory( ) );
+      }
+
+      Properties^ RegionAttributes::PersistenceProperties::get( )
+      {
+        gemfire::PropertiesPtr& nativeptr(
+          NativePtr->getPersistenceProperties( ) );
+        return Properties::Create( nativeptr.ptr( ) );
+      }
+
+      bool RegionAttributes::ConcurrencyChecksEnabled::get( )
+      {
+        return NativePtr->getConcurrencyChecksEnabled( );
+      }
+
+      void RegionAttributes::ToData( DataOutput^ output )
+      {
+        gemfire::DataOutput* nativeOutput =
+          GetNativePtr<gemfire::DataOutput>( output );
+        if (nativeOutput != nullptr)
+        {
+          NativePtr->toData( *nativeOutput );
+        }
+      }
+
+      IGFSerializable^ RegionAttributes::FromData( DataInput^ input )
+      {
+        gemfire::DataInput* nativeInput =
+          GetNativePtr<gemfire::DataInput>( input );
+        if (nativeInput != nullptr)
+        {
+          AssignPtr( static_cast<gemfire::RegionAttributes*>(
+            NativePtr->fromData( *nativeInput ) ) );
+        }
+        return this;
+      }
+
+    }
+  }
+}


[31/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/plugins/SimpleCacheWriter.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/plugins/SimpleCacheWriter.cpp b/geode-client-native/quickstart/cpp/plugins/SimpleCacheWriter.cpp
new file mode 100644
index 0000000..d3e0d94
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/plugins/SimpleCacheWriter.cpp
@@ -0,0 +1,40 @@
+#include "SimpleCacheWriter.hpp"
+
+bool SimpleCacheWriter::beforeUpdate(const EntryEvent& event)
+{
+  LOGINFO("SimpleCacheWriter: Got a beforeUpdate event.");
+  return true;
+}
+
+bool SimpleCacheWriter::beforeCreate(const EntryEvent& event)
+{
+  LOGINFO("SimpleCacheWriter: Got a beforeCreate event.");
+  return true;
+}
+
+void SimpleCacheWriter::beforeInvalidate(const EntryEvent& event)
+{
+  LOGINFO("SimpleCacheWriter: Got a beforeInvalidate event.");
+}
+
+bool SimpleCacheWriter::beforeDestroy(const EntryEvent& event) 
+{
+  LOGINFO("SimpleCacheWriter: Got a beforeDestroy event.");
+  return true;
+}
+
+void SimpleCacheWriter::beforeRegionInvalidate(const RegionEvent& event)
+{
+  LOGINFO("SimpleCacheWriter: Got a beforeRegionInvalidate event.");
+}
+
+bool SimpleCacheWriter::beforeRegionDestroy(const RegionEvent& event)
+{
+  LOGINFO("SimpleCacheWriter: Got a beforeRegionDestroy event.");
+  return true;
+}
+
+void SimpleCacheWriter::close(const RegionPtr& region)
+{
+  LOGINFO("SimpleCacheWriter: Got a close event.");
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/plugins/SimpleCacheWriter.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/plugins/SimpleCacheWriter.hpp b/geode-client-native/quickstart/cpp/plugins/SimpleCacheWriter.hpp
new file mode 100644
index 0000000..ea4e2d5
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/plugins/SimpleCacheWriter.hpp
@@ -0,0 +1,28 @@
+/*
+ * SimpleCacheWriter QuickStart Example.
+ *
+ * This is a simple implementation of a Cache Writer
+ * It merely prints the events captured from the GemFire Native Client.
+ *
+ */
+
+// Include the GemFire library.
+#include <gfcpp/GemfireCppCache.hpp>
+#include <gfcpp/CacheWriter.hpp>
+
+// Use the "gemfire" namespace.
+using namespace gemfire;
+
+// The SimpleCacheWriter class.
+class SimpleCacheWriter : public CacheWriter
+{
+public:
+  // The Cache Writer callbacks.
+  virtual bool beforeUpdate( const EntryEvent& event );
+  virtual bool beforeCreate( const EntryEvent& event );
+  virtual void beforeInvalidate( const EntryEvent& event );
+  virtual bool beforeDestroy( const EntryEvent& event );
+  virtual void beforeRegionInvalidate( const RegionEvent& event );
+  virtual bool beforeRegionDestroy( const RegionEvent& event );
+  virtual void close(const RegionPtr& region);
+};

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/queryobjects/GNUmakefile
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/queryobjects/GNUmakefile b/geode-client-native/quickstart/cpp/queryobjects/GNUmakefile
new file mode 100644
index 0000000..12c71f4
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/queryobjects/GNUmakefile
@@ -0,0 +1,5 @@
+default: all
+
+SUBS = pdxauto
+
+include ../../GNUmakefile.common
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/queryobjects/GNUmakefile.pdxauto
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/queryobjects/GNUmakefile.pdxauto b/geode-client-native/quickstart/cpp/queryobjects/GNUmakefile.pdxauto
new file mode 100644
index 0000000..099b441
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/queryobjects/GNUmakefile.pdxauto
@@ -0,0 +1,29 @@
+
+NAMESPACE = testobject
+CLASSES = \
+	PortfolioPdxAuto \
+	PositionPdxAuto \
+
+ifeq ($(strip $(NAMESPACE)),)
+	SERIALIZER_PATTERN = %Serializable.cpp
+else
+	SERIALIZER_PATTERN = $(NAMESPACE)_%Serializable.cpp
+endif
+SERIALIZERS = $(patsubst %,$(SERIALIZER_PATTERN),$(CLASSES))
+PDXAUTOSERIALIZER = $(GFCPP)/bin/pdxautoserializer
+PDXAUTOSERIALIZER_FLAGS = 
+
+.PHONY: all
+all: $(CLASSES) 
+
+.PHONY: clean
+clean:
+	rm -rf $(SERIALIZERS) 
+
+.PHONY: $(CLASSES)
+$(CLASSES): % : $(SERIALIZER_PATTERN)
+
+$(SERIALIZER_PATTERN): %.hpp
+	$(PDXAUTOSERIALIZER) $(PDXAUTOSERIALIZER_FLAGS) $<
+
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/queryobjects/Portfolio.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/queryobjects/Portfolio.cpp b/geode-client-native/quickstart/cpp/queryobjects/Portfolio.cpp
new file mode 100644
index 0000000..36e78c8
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/queryobjects/Portfolio.cpp
@@ -0,0 +1,127 @@
+#include "Portfolio.hpp"
+#include <malloc.h>
+
+using namespace gemfire;
+using namespace testobject;
+
+const char*  Portfolio::secIds[] = { "SUN", "IBM", "YHOO", "GOOG", "MSFT",
+      "AOL", "APPL", "ORCL", "SAP", "DELL"};
+
+Portfolio::Portfolio(int32_t i, uint32_t size, CacheableStringArrayPtr nm):
+  names(nm){
+    ID = i;
+    char pkidbuf[1024];
+    sprintf(pkidbuf,"%d",i);
+    pkid = CacheableString::create(pkidbuf);
+    const char* statusStr = (i % 2 == 0) ? "active" : "inactive";
+    size_t statusSize = strlen( statusStr ) + 1;
+    status = new char[ statusSize ];
+    memcpy( status, statusStr, statusSize );
+    char buf[100];
+    sprintf( buf, "type%d", (i % 3) );
+    type = CacheableString::create( buf );
+    int numSecIds = sizeof(secIds)/sizeof(char*);
+    position1 = new Position(secIds[Position::cnt % numSecIds],
+        Position::cnt * 1000);
+    if (i % 2 != 0) {
+      position2 = new Position(secIds[Position::cnt % numSecIds],
+          Position::cnt * 1000);
+    }
+    else
+    {
+      position2 = NULLPTR;
+    }
+    positions = CacheableHashMap::create( );
+    positions->insert(CacheableString::create(secIds[Position::cnt % numSecIds]), position1);
+    newVal = new uint8_t[size+1];
+    memset(newVal,'B',size);
+    newVal[size] = '\0';
+    newValSize = size;
+    creationDate = CacheableDate::create(  );
+    arrayNull = NULL;
+    arrayZeroSize = NULL;
+}
+
+Portfolio::~Portfolio() {
+  if ( newVal != NULL ) {
+    delete [] newVal;
+    newVal = NULL;
+  }
+  if ( status != NULL ) {
+    delete [] status;
+    status = NULL;
+  }
+}
+
+void Portfolio::toData( DataOutput& output ) const {
+  output.writeInt(ID);
+  output.writeObject(pkid);
+  output.writeObject(position1);
+  output.writeObject(position2);
+  output.writeObject(positions);
+  output.writeObject(type);
+  output.writeUTF(status);
+  output.writeObject(names);
+  output.writeBytes(newVal,newValSize+1);
+  output.writeObject(creationDate);
+  output.writeBytes(arrayNull,0);
+  output.writeBytes(arrayZeroSize,0);
+}
+
+Serializable* Portfolio::fromData( DataInput& input )
+{
+  input.readInt(&ID);
+  input.readObject(pkid);
+  input.readObject(position1);
+  input.readObject(position2);
+  input.readObject(positions);
+  input.readObject(type);
+  input.readUTF(&status);
+  input.readObject(names);
+  input.readBytes(&newVal,&newValSize);
+  input.readObject(creationDate);
+  int tmp = 0;
+  input.readBytes(&arrayNull,&tmp);
+  input.readBytes(&arrayZeroSize,&tmp);
+  return this;
+}
+
+CacheableStringPtr Portfolio::toString() const {
+  char idbuf[1024];
+  sprintf(idbuf,"PortfolioObject: [ ID=%d",ID);
+  char pkidbuf[1024];
+  if (pkid != NULLPTR) {
+    sprintf(pkidbuf, " status=%s type=%s pkid=%s\n", this->status,
+        this->type->toString(), this->pkid->asChar());
+  }
+  else {
+    sprintf(pkidbuf, " status=%s type=%s pkid=%s\n", this->status,
+        this->type->toString(), this->pkid->asChar());
+  }
+  char position1buf[2048];
+  if (position1 != NULLPTR) {
+    sprintf(position1buf, "\t\t\t  P1: %s", position1->toString()->asChar());
+  }
+  else {
+    sprintf(position1buf, "\t\t\t  P1: %s", "NULL");
+  }
+  char position2buf[2048];
+  if (position2 != NULLPTR) {
+    sprintf(position2buf, " P2: %s", position2->toString()->asChar());
+  }
+  else {
+    sprintf(position2buf, " P2: %s ]", "NULL");
+  }
+  char creationdatebuf[2048];
+  if (creationDate != NULLPTR) {
+    sprintf(creationdatebuf, "creation Date %s",
+        creationDate->toString()->asChar());
+  }
+  else {
+    sprintf(creationdatebuf, "creation Date %s", "NULL");
+  }
+
+  char stringBuf[7000];
+  sprintf(stringBuf, "%s%s%s%s%s",idbuf,pkidbuf,creationdatebuf,position1buf,position2buf);
+  return CacheableString::create( stringBuf );
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/queryobjects/Portfolio.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/queryobjects/Portfolio.hpp b/geode-client-native/quickstart/cpp/queryobjects/Portfolio.hpp
new file mode 100644
index 0000000..1054622
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/queryobjects/Portfolio.hpp
@@ -0,0 +1,155 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+/*
+ * @brief User class for testing the put functionality for object.
+ */
+
+#ifndef __PORTFOLIO_HPP__
+#define __PORTFOLIO_HPP__
+
+
+#include <gfcpp/GemfireCppCache.hpp>
+#include "Position.hpp"
+
+using namespace gemfire;
+
+namespace testobject {
+
+class TESTOBJECT_EXPORT Portfolio : public Serializable
+{
+  private:
+    int32_t ID;
+    CacheableStringPtr pkid;
+    PositionPtr position1;
+    PositionPtr position2;
+    CacheableHashMapPtr positions;
+    CacheableStringPtr type;
+    char* status;
+    CacheableStringArrayPtr names;
+    static const char* secIds[];
+    uint8_t* newVal;
+    int32_t newValSize;
+    CacheableDatePtr creationDate;
+    uint8_t* arrayNull;
+    uint8_t* arrayZeroSize;
+
+
+    inline uint32_t getObjectSize( const SerializablePtr& obj ) const
+    {
+      return (obj == NULLPTR ? 0 : obj->objectSize());
+    }
+
+
+  public:
+
+    Portfolio(): ID( 0 ), pkid(NULLPTR), type(NULLPTR), status(NULL),
+      newVal(NULL), creationDate(NULLPTR), arrayNull(NULL), arrayZeroSize(NULL) { }
+    Portfolio(int32_t id, uint32_t size=0, CacheableStringArrayPtr nm=NULLPTR);
+    virtual ~Portfolio();
+
+    virtual uint32_t objectSize() const
+    {
+      uint32_t objectSize = sizeof(Portfolio);
+      objectSize += getObjectSize( pkid );
+      objectSize += getObjectSize( position1 );
+      objectSize += getObjectSize( position2 );
+      objectSize += getObjectSize( positions );
+      objectSize += getObjectSize( type );
+      objectSize += (uint32_t)(status==NULL ? 0 : sizeof(char)*strlen(status));
+      objectSize += getObjectSize( names );
+      objectSize += sizeof(uint8_t) * newValSize;
+      objectSize += getObjectSize(creationDate);
+      return objectSize;
+    }
+
+    int32_t getID() {
+      return ID;
+    }
+    void showNames(const char* label)
+    {
+       LOGINFO(label);
+       if(names==NULLPTR)
+       {
+	 LOGINFO("names is NULL");
+	 return;
+       }
+       for(int i = 0; i < names->length(); i++)
+       {
+	 LOGINFO("names[%d]=%s", i, names->operator[](i)->asChar());
+       }
+    }
+
+    CacheableStringPtr getPkid() {
+      return pkid;
+    }
+
+    PositionPtr getP1() {
+      return position1;
+    }
+
+    PositionPtr getP2() {
+      return position2;
+    }
+
+    CacheableHashMapPtr getPositions() {
+      return positions;
+    }
+
+    bool testMethod(bool booleanArg) {
+      return true;
+    }
+
+    char* getStatus() {
+      return status;
+    }
+
+    bool isActive() {
+      return ( strcmp(status, "active") == 0 ) ? true : false;
+    }
+
+    uint8_t* getNewVal() {
+      return newVal;
+    }
+
+    int32_t getNewValSize()
+    {
+      return newValSize;
+    }
+
+    CacheableStringPtr getType() {
+      return this->type;
+    }
+
+    CacheableDatePtr getCreationDate() {
+      return creationDate;
+    }
+
+    uint8_t* getArrayNull() {
+          return arrayNull;
+    }
+
+    uint8_t* getArrayZeroSize() {
+          return arrayZeroSize;
+    }
+
+    static Serializable* createDeserializable( ){
+      return new Portfolio();
+    }
+
+    virtual void toData( DataOutput& output ) const;
+    virtual Serializable* fromData( DataInput& input );
+    virtual int32_t classId( ) const { return 0x03; }
+    CacheableStringPtr toString() const;
+
+};
+
+typedef SharedPtr< Portfolio > PortfolioPtr;
+
+}
+#endif

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/queryobjects/PortfolioPdx.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/queryobjects/PortfolioPdx.cpp b/geode-client-native/quickstart/cpp/queryobjects/PortfolioPdx.cpp
new file mode 100644
index 0000000..533d755
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/queryobjects/PortfolioPdx.cpp
@@ -0,0 +1,183 @@
+#include "PortfolioPdx.hpp"
+#include <malloc.h>
+
+using namespace gemfire;
+using namespace testobject;
+
+const char*  PortfolioPdx::secIds[] = { "SUN", "IBM", "YHOO", "GOOG", "MSFT",
+      "AOL", "APPL", "ORCL", "SAP", "DELL"};
+
+PortfolioPdx::PortfolioPdx(int32_t i, int32_t size, char** nm) : names(nm) {
+    id = i;
+
+    char pkidbuf[256];
+    sprintf(pkidbuf,"%d",i);
+    size_t strSize = strlen(pkidbuf) + 1;
+    pkid = new char[strSize];
+    memcpy(pkid, pkidbuf, strSize);
+
+    const char* statusStr = (i % 2 == 0) ? "active" : "inactive";
+    int32_t statusSize = static_cast<int32_t> (strlen( statusStr )) + 1;
+    status = new char[ statusSize ];
+    memcpy( status, statusStr, statusSize );
+
+    char buf[100];
+    sprintf( buf, "type%d", (i % 3) );
+    size_t strSize2 = strlen(buf) + 1;
+    type = new char[strSize2];
+    memcpy(type, buf, strSize2);
+
+    int numSecIds = sizeof(secIds)/sizeof(char*);
+    position1 = new PositionPdx(secIds[PositionPdx::cnt % numSecIds], PositionPdx::cnt * 1000);
+    if (i % 2 != 0) {
+      position2 = new PositionPdx(secIds[PositionPdx::cnt % numSecIds],PositionPdx::cnt * 1000);
+    }
+    else
+    {
+      position2 = NULLPTR;
+    }
+    positions = CacheableHashMap::create( );
+    positions->insert(CacheableString::create(secIds[PositionPdx::cnt % numSecIds]), position1);
+
+    if(size > 0){
+      newVal = new int8_t[size];
+      for(int index =0; index < size; index++){
+        newVal[index] = (int8_t)'B';
+      }
+    }
+    newValSize = size;
+
+    time_t timeVal = 1310447869;
+    creationDate = CacheableDate::create( timeVal  );
+    arrayNull = NULL;
+    arrayZeroSize = new int8_t[0];
+
+}
+
+PortfolioPdx::~PortfolioPdx() {
+  if ( newVal != NULL ) {
+    delete [] newVal;
+    newVal = NULL;
+  }
+  if ( status != NULL ) {
+    delete [] status;
+    status = NULL;
+  }
+  if ( pkid != NULL ) {
+      delete [] pkid;
+      pkid = NULL;
+  }
+
+  if ( type != NULL ) {
+    delete [] type;
+    type = NULL;
+  }
+
+  if ( newVal != NULL ) {
+    delete [] newVal;
+    newVal = NULL;
+  }
+}
+
+void PortfolioPdx::toData( PdxWriterPtr pw  )  {
+  pw->writeInt("ID", id);
+  pw->markIdentityField("ID");
+
+  pw->writeString("pkid", pkid);
+  pw->markIdentityField("pkid");
+
+  pw->writeObject("position1", position1);
+  pw->markIdentityField("position1");
+
+  pw->writeObject("position2", position2);
+  pw->markIdentityField("position2");
+
+  pw->writeObject("positions", positions);
+  pw->markIdentityField("positions");
+
+  pw->writeString("type", type);
+  pw->markIdentityField("type");
+
+  pw->writeString("status", status);
+  pw->markIdentityField("status");
+
+  pw->writeStringArray("names", names, 0);
+  pw->markIdentityField("names");
+
+  pw->writeByteArray("newVal", newVal, newValSize);
+  pw->markIdentityField("newVal");
+
+  pw->writeDate("creationDate", creationDate);
+  pw->markIdentityField("creationDate");
+
+  pw->writeByteArray("arrayNull", arrayNull,0);
+  pw->writeByteArray("arrayZeroSize", arrayZeroSize,0);
+
+}
+
+void PortfolioPdx::fromData( PdxReaderPtr pr )
+{
+  id = pr->readInt("ID");
+  pkid = pr->readString("pkid");
+
+  position1 = dynCast<PositionPdxPtr>(pr->readObject("position1"));
+  position2 = dynCast<PositionPdxPtr>(pr->readObject("position2"));
+  positions = dynCast<CacheableHashMapPtr>(pr->readObject("positions"));
+  type = pr->readString("type");
+  status = pr->readString("status");
+
+  int32_t strLenArray=0;
+  names = pr->readStringArray("names", strLenArray);
+  int32_t byteArrayLen=0;
+  newVal = pr->readByteArray("newVal", byteArrayLen);
+  creationDate = pr->readDate("creationDate");
+  int32_t arrayNullLen = 0;
+  arrayNull = pr->readByteArray("arrayNull", arrayNullLen);
+  int32_t arrayZeroSizeLen=0;
+  arrayZeroSize = pr->readByteArray("arrayZeroSize", arrayZeroSizeLen);
+
+}
+
+CacheableStringPtr PortfolioPdx::toString() const {
+  LOGINFO("PortfolioPdx::toString() Start");
+  char idbuf[1024];
+  sprintf(idbuf,"PortfolioPdxObject: [ id=%d ]",id);
+
+  char pkidbuf[1024];
+  if (pkid != NULL) {
+    sprintf(pkidbuf, " status=%s type=%s pkid=%s\n", this->status,
+        this->type, this->pkid);
+  }
+  else {
+    sprintf(pkidbuf, " status=%s type=%s pkid=%s\n", this->status,
+        this->type, this->pkid);
+  }
+  char position1buf[2048];
+  if (position1 != NULLPTR) {
+    sprintf(position1buf, "\t\t\t  P1: %s", position1->toString()->asChar());
+  }
+  else {
+    sprintf(position1buf, "\t\t\t  P1: %s", "NULL");
+  }
+  char position2buf[2048];
+  if (position2 != NULLPTR) {
+    sprintf(position2buf, " P2: %s", position2->toString()->asChar());
+  }
+  else {
+    sprintf(position2buf, " P2: %s ]", "NULL");
+  }
+  char creationdatebuf[2048];
+  if (creationDate != NULLPTR) {
+    sprintf(creationdatebuf, "creation Date %s",
+        creationDate->toString()->asChar());
+  }
+  else {
+    sprintf(creationdatebuf, "creation Date %s", "NULL");
+  }
+
+  char stringBuf[7000];
+  sprintf(stringBuf, "%s%s%s%s%s",idbuf,pkidbuf,creationdatebuf,position1buf,position2buf);
+  return CacheableString::create( stringBuf );
+
+  return CacheableString::create( idbuf );
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/queryobjects/PortfolioPdx.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/queryobjects/PortfolioPdx.hpp b/geode-client-native/quickstart/cpp/queryobjects/PortfolioPdx.hpp
new file mode 100644
index 0000000..fe78806
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/queryobjects/PortfolioPdx.hpp
@@ -0,0 +1,126 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+/*
+ * @brief User class for testing the put functionality for object.
+ */
+
+#ifndef __PORTFOLIOPDX_HPP__
+#define __PORTFOLIOPDX_HPP__
+
+#include "PositionPdx.hpp"
+
+using namespace gemfire;
+
+namespace testobject {
+
+class TESTOBJECT_EXPORT PortfolioPdx : public PdxSerializable
+{
+  private:
+    int32_t id;
+
+    char* pkid;
+
+    PositionPdxPtr position1;
+    PositionPdxPtr position2;
+    CacheableHashMapPtr positions;
+    char* type;
+    char* status;
+    char** names;
+    static const char* secIds[];
+    int8_t* newVal;
+    int32_t newValSize;
+    CacheableDatePtr creationDate;
+    int8_t* arrayNull;
+    int8_t* arrayZeroSize;
+
+  public:
+
+    PortfolioPdx(): id( 0 ), pkid(NULL), type(NULL), status(NULL),
+      newVal(NULL), creationDate(NULLPTR), arrayNull(NULL), arrayZeroSize(NULL) { }
+
+    PortfolioPdx(int32_t id, int32_t size=0, char** nm=NULL);
+
+    virtual ~PortfolioPdx();
+
+    int32_t getID() {
+      return id;
+    }
+
+    char* getPkid() {
+      return pkid;
+    }
+
+    PositionPdxPtr getP1() {
+      return position1;
+    }
+
+    PositionPdxPtr getP2() {
+      return position2;
+    }
+
+    CacheableHashMapPtr getPositions() {
+      return positions;
+    }
+
+    bool testMethod(bool booleanArg) {
+      return true;
+    }
+
+    char* getStatus() {
+      return status;
+    }
+
+    bool isActive() {
+      return ( strcmp(status, "active") == 0 ) ? true : false;
+    }
+
+    int8_t* getNewVal() {
+      return newVal;
+    }
+
+    int32_t getNewValSize()
+    {
+      return newValSize;
+    }
+
+    const char* getClassName(){
+      return this->type;
+    }
+
+    CacheableDatePtr getCreationDate() {
+      return creationDate;
+    }
+
+    int8_t* getArrayNull() {
+          return arrayNull;
+    }
+
+    int8_t* getArrayZeroSize() {
+          return arrayZeroSize;
+    }
+
+    static PdxSerializable* createDeserializable( ){
+      return new PortfolioPdx();
+    }
+
+    const char* getClassName()const {
+      return "testobject.PortfolioPdx";
+    }
+
+    virtual void toData( PdxWriterPtr pw ) ;
+    virtual void fromData(PdxReaderPtr pr);
+
+    CacheableStringPtr toString() const;
+
+};
+
+typedef SharedPtr< PortfolioPdx > PortfolioPdxPtr;
+
+}
+#endif

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/queryobjects/PortfolioPdxAuto.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/queryobjects/PortfolioPdxAuto.cpp b/geode-client-native/quickstart/cpp/queryobjects/PortfolioPdxAuto.cpp
new file mode 100644
index 0000000..29b3b08
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/queryobjects/PortfolioPdxAuto.cpp
@@ -0,0 +1,125 @@
+#include "PortfolioPdxAuto.hpp"
+#include <malloc.h>
+
+using namespace gemfire;
+using namespace testobject;
+
+const char*  /*PortfolioPdx::*/secIds[] = { "SUN", "IBM", "YHOO", "GOOG", "MSFT",
+      "AOL", "APPL", "ORCL", "SAP", "DELL"};
+
+PortfolioPdxAuto::PortfolioPdxAuto(int32_t i, int32_t size, char** nm)/* : names(nm)*/ {
+    id = i;
+
+    char pkidbuf[256];
+    sprintf(pkidbuf,"%d",i);
+    size_t strSize = strlen(pkidbuf) + 1;
+    pkid = new char[strSize];
+    memcpy(pkid, pkidbuf, strSize);
+
+    const char* statusStr = (i % 2 == 0) ? "active" : "inactive";
+    int32_t statusSize = static_cast<int32_t> (strlen( statusStr )) + 1;
+    status = new char[ statusSize ];
+    memcpy( status, statusStr, statusSize );
+
+    char buf[100];
+    sprintf( buf, "type%d", (i % 3) );
+    size_t strSize2 = strlen(buf) + 1;
+    type = new char[strSize2];
+    memcpy(type, buf, strSize2);
+
+    int numSecIds = sizeof(secIds)/sizeof(char*);
+    position1 = new PositionPdxAuto(secIds[PositionPdxAuto::cnt % numSecIds], PositionPdxAuto::cnt * 1000);
+    if (i % 2 != 0) {
+      position2 = new PositionPdxAuto(secIds[PositionPdxAuto::cnt % numSecIds],PositionPdxAuto::cnt * 1000);
+    }
+    else
+    {
+      position2 = NULLPTR;
+    }
+    positions = CacheableHashMap::create( );
+    positions->insert(CacheableString::create(secIds[PositionPdxAuto::cnt % numSecIds]), position1);
+
+    if(size > 0){
+      newVal = new int8_t[size];
+      for(int index =0; index < size; index++){
+        newVal[index] = (int8_t)'B';
+      }
+    }
+    newValSize = size;
+
+    time_t timeVal = 1310447869;
+    creationDate = CacheableDate::create( timeVal  );
+    arrayNull = NULL;
+    arrayZeroSize = new int8_t[0];
+    arrayZeroSizeSize = 1;
+
+}
+
+PortfolioPdxAuto::~PortfolioPdxAuto() {
+  if ( newVal != NULL ) {
+    delete [] newVal;
+    newVal = NULL;
+  }
+  if ( status != NULL ) {
+    delete [] status;
+    status = NULL;
+  }
+  if ( pkid != NULL ) {
+      delete [] pkid;
+      pkid = NULL;
+  }
+
+  if ( type != NULL ) {
+    delete [] type;
+    type = NULL;
+  }
+
+  if ( newVal != NULL ) {
+    delete [] newVal;
+    newVal = NULL;
+  }
+}
+
+CacheableStringPtr PortfolioPdxAuto::toString() const {
+  LOGINFO("PortfolioPdxAuto::toString() Start");
+  char idbuf[1024];
+  sprintf(idbuf,"PortfolioPdxObject: [ id=%d ]",id);
+
+  char pkidbuf[1024];
+  if (pkid != NULL) {
+    sprintf(pkidbuf, " status=%s type=%s pkid=%s\n", this->status,
+        this->type, this->pkid);
+  }
+  else {
+    sprintf(pkidbuf, " status=%s type=%s pkid=%s\n", this->status,
+        this->type, this->pkid);
+  }
+  char position1buf[2048];
+  if (position1 != NULLPTR) {
+    sprintf(position1buf, "\t\t\t  P1: %s", position1->toString()->asChar());
+  }
+  else {
+    sprintf(position1buf, "\t\t\t  P1: %s", "NULL");
+  }
+  char position2buf[2048];
+  if (position2 != NULLPTR) {
+    sprintf(position2buf, " P2: %s", position2->toString()->asChar());
+  }
+  else {
+    sprintf(position2buf, " P2: %s ]", "NULL");
+  }
+  char creationdatebuf[2048];
+  if (creationDate != NULLPTR) {
+    sprintf(creationdatebuf, "creation Date %s",
+        creationDate->toString()->asChar());
+  }
+  else {
+    sprintf(creationdatebuf, "creation Date %s", "NULL");
+  }
+
+  char stringBuf[7000];
+  sprintf(stringBuf, "%s%s%s%s%s",idbuf,pkidbuf,creationdatebuf,position1buf,position2buf);
+  return CacheableString::create( stringBuf );
+
+  return CacheableString::create( idbuf );
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/queryobjects/PortfolioPdxAuto.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/queryobjects/PortfolioPdxAuto.hpp b/geode-client-native/quickstart/cpp/queryobjects/PortfolioPdxAuto.hpp
new file mode 100644
index 0000000..cc07b56
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/queryobjects/PortfolioPdxAuto.hpp
@@ -0,0 +1,127 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+/*
+ * @brief User class for testing the put functionality for object.
+ */
+
+#ifndef __PORTFOLIOPDX_AUTO_HPP__
+#define __PORTFOLIOPDX_AUTO_HPP__
+
+#include "PositionPdxAuto.hpp"
+
+using namespace gemfire;
+
+namespace testobject {
+#define GFARRAYSIZE(X)
+#define GFID 
+class PortfolioPdxAuto : public gemfire::PdxSerializable
+{
+  private:
+    GFID int32_t id;
+
+    GFID char* pkid;
+
+    GFID PositionPdxPtr position1;
+    GFID PositionPdxPtr position2;
+    GFID CacheableHashMapPtr positions;
+    GFID char* type;
+    GFID char* status;
+    //char** names;
+    //static const char* secIds[];
+    GFID int8_t* newVal;
+    GFARRAYSIZE(newVal) int32_t newValSize;
+    GFID CacheableDatePtr creationDate;
+    GFID int8_t* arrayNull;
+    GFARRAYSIZE(arrayNull) int32_t arrayNullSize;
+
+    GFID int8_t* arrayZeroSize;
+    GFARRAYSIZE(arrayZeroSize) int32_t arrayZeroSizeSize;
+
+  public:
+
+    PortfolioPdxAuto(): id( 0 ), pkid(NULL), type(NULL), status(NULL),
+      newVal(NULL), creationDate(NULLPTR), arrayNull(NULL), arrayNullSize(0), arrayZeroSize(NULL), arrayZeroSizeSize(0) { }
+
+    PortfolioPdxAuto(int32_t id, int32_t size=0, char** nm=NULL);
+
+    virtual ~PortfolioPdxAuto();
+
+    int32_t getID() {
+      return id;
+    }
+
+    char* getPkid() {
+      return pkid;
+    }
+
+    PositionPdxPtr getP1() {
+      return position1;
+    }
+
+    PositionPdxPtr getP2() {
+      return position2;
+    }
+
+    CacheableHashMapPtr getPositions() {
+      return positions;
+    }
+
+    bool testMethod(bool booleanArg) {
+      return true;
+    }
+
+    char* getStatus() {
+      return status;
+    }
+
+    bool isActive() {
+      return ( strcmp(status, "active") == 0 ) ? true : false;
+    }
+
+    int8_t* getNewVal() {
+      return newVal;
+    }
+
+    int32_t getNewValSize()
+    {
+      return newValSize;
+    }
+
+    const char* getClassName(){
+      return this->type;
+    }
+
+    CacheableDatePtr getCreationDate() {
+      return creationDate;
+    }
+
+    int8_t* getArrayNull() {
+          return arrayNull;
+    }
+
+    int8_t* getArrayZeroSize() {
+          return arrayZeroSize;
+    }
+
+
+    const char* getClassName() const;
+
+    virtual void toData( PdxWriterPtr pw ) ;
+    virtual void fromData(PdxReaderPtr pr);
+
+    static PdxSerializable* createDeserializable( );
+
+    CacheableStringPtr toString() const;
+
+};
+
+typedef SharedPtr< PortfolioPdxAuto > PortfolioPdxPtr;
+
+}
+#endif

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/queryobjects/Position.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/queryobjects/Position.cpp b/geode-client-native/quickstart/cpp/queryobjects/Position.cpp
new file mode 100644
index 0000000..499e7bb
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/queryobjects/Position.cpp
@@ -0,0 +1,98 @@
+#include "Position.hpp"
+#include <cwchar>
+#include <wchar.h>
+#include <malloc.h>
+
+using namespace gemfire;
+using namespace testobject;
+
+int32_t Position::cnt = 0;
+
+Position::Position()
+{
+  init();
+}
+
+Position::Position(const char* id, int32_t out) {
+  init();
+  secId = CacheableString::create(id);
+  qty = out - (cnt%2==0?1000:100);
+  mktValue = qty * 1.2345998;
+  sharesOutstanding = out;
+  secType = ( wchar_t * )malloc( ( wcslen( L"a" ) + 1 ) * sizeof( wchar_t ) );
+  wcscpy( secType, L"a" );
+  pid = cnt++;
+}
+
+Position::~Position() {
+  if (secType != NULL) {
+    free(secType);
+  }
+}
+
+void Position::init()
+{
+  avg20DaysVol = 0;
+  bondRating = NULLPTR;
+  convRatio = 0.0;
+  country = NULLPTR;
+  delta = 0.0;
+  industry = 0;
+  issuer = 0;
+  mktValue = 0.0;
+  qty=0.0;
+  secId = NULLPTR;
+  secLinks = NULLPTR;
+  secType = NULL;
+  sharesOutstanding = 0;
+  underlyer = NULLPTR;
+  volatility=0;
+  pid=0;
+}
+
+void Position::toData( gemfire::DataOutput& output ) const {
+  output.writeInt(avg20DaysVol);
+  output.writeObject(bondRating);
+  output.writeDouble(convRatio);
+  output.writeObject(country);
+  output.writeDouble(delta);
+  output.writeInt(industry);
+  output.writeInt(issuer);
+  output.writeDouble(mktValue);
+  output.writeDouble(qty);
+  output.writeObject(secId);
+  output.writeObject(secLinks);
+  output.writeUTF(secType);
+  output.writeInt(sharesOutstanding);
+  output.writeObject(underlyer);
+  output.writeInt(volatility);
+  output.writeInt(pid);
+}
+
+gemfire::Serializable* Position::fromData( gemfire::DataInput& input ){
+  input.readInt(&avg20DaysVol);
+  input.readObject(bondRating);
+  input.readDouble(&convRatio);
+  input.readObject(country);
+  input.readDouble(&delta);
+  input.readInt(&industry);
+  input.readInt(&issuer);
+  input.readDouble(&mktValue);
+  input.readDouble(&qty);
+  input.readObject(secId);
+  input.readObject(secLinks);
+  input.readUTF(&secType);
+  input.readInt(&sharesOutstanding);
+  input.readObject(underlyer);
+  input.readInt(&volatility);
+  input.readInt(&pid);
+  return this;
+}
+
+CacheableStringPtr Position::toString() const {
+  char buf[2048];
+  sprintf(buf, "Position Object:[ secId=%s type=%ls sharesOutstanding=%d id=%d ]",
+      secId->toString(), this->secType, this->sharesOutstanding, this->pid);
+  return CacheableString::create( buf );
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/queryobjects/Position.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/queryobjects/Position.hpp b/geode-client-native/quickstart/cpp/queryobjects/Position.hpp
new file mode 100644
index 0000000..07c9734
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/queryobjects/Position.hpp
@@ -0,0 +1,101 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+/*
+ * @brief User class for testing the put functionality for object.
+ */
+
+
+#ifndef __POSITION_HPP__
+#define __POSITION_HPP__ 
+
+#include <gfcpp/GemfireCppCache.hpp>
+#include <string.h>
+
+#ifdef _WIN32
+#ifdef BUILD_TESTOBJECT
+#define TESTOBJECT_EXPORT LIBEXP
+#else
+#define TESTOBJECT_EXPORT LIBIMP
+#endif
+#else
+#define TESTOBJECT_EXPORT
+#endif
+
+using namespace gemfire;
+
+namespace testobject {
+
+class TESTOBJECT_EXPORT Position : public gemfire::Serializable
+{
+  private:
+   int64_t avg20DaysVol;
+   CacheableStringPtr bondRating;
+   double convRatio;
+   CacheableStringPtr  country;
+   double delta;
+   int64_t industry;
+   int64_t issuer;
+   double mktValue;
+   double qty;
+   CacheableStringPtr secId;
+   CacheableStringPtr secLinks;
+   //wchar_t* secType;
+   wchar_t* secType;
+   int32_t sharesOutstanding;
+   CacheableStringPtr underlyer;
+   int64_t volatility;
+   int32_t pid;
+
+  public:
+    static int32_t cnt;
+
+    Position();
+    Position(const char* id, int32_t out);
+    virtual ~Position();
+    virtual void toData( gemfire::DataOutput& output ) const;
+    virtual gemfire::Serializable* fromData( gemfire::DataInput& input );
+    virtual int32_t classId( ) const { return 0x02; }
+    CacheableStringPtr toString() const;
+    
+    virtual uint32_t objectSize() const {
+      uint32_t objectSize = sizeof(Position);
+      objectSize += bondRating->objectSize();
+      objectSize += country->objectSize();
+      objectSize += secId->objectSize();
+      objectSize += secLinks->objectSize();
+      objectSize += (uint32_t)(sizeof(wchar_t) * wcslen(secType));
+      objectSize += underlyer->objectSize();
+      return objectSize;
+      
+    }
+
+    static void resetCounter() {
+      cnt = 0;
+    }
+    CacheableStringPtr getSecId() { 
+      return secId;
+    }
+    int32_t getId() {
+      return pid;
+    }
+    int32_t getSharesOutstanding() {
+      return sharesOutstanding;
+    }
+    static gemfire::Serializable* createDeserializable( ){
+      return new Position();
+    }
+
+  private:
+    void init();
+};
+
+typedef gemfire::SharedPtr< Position > PositionPtr;
+
+}
+#endif

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/queryobjects/PositionPdx.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/queryobjects/PositionPdx.cpp b/geode-client-native/quickstart/cpp/queryobjects/PositionPdx.cpp
new file mode 100644
index 0000000..ecf91c2
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/queryobjects/PositionPdx.cpp
@@ -0,0 +1,167 @@
+#include "PositionPdx.hpp"
+#include <cwchar>
+#include <wchar.h>
+#include <malloc.h>
+
+using namespace gemfire;
+using namespace testobject;
+
+int32_t PositionPdx::cnt = 0;
+
+PositionPdx::PositionPdx()
+{
+  init();
+}
+
+PositionPdx::PositionPdx(const char* id, int32_t out) {
+  init();
+
+  size_t strSize = strlen(id) + 1;
+  secId = new char[strSize];
+  memcpy(secId, id, strSize);
+
+  qty = out * (cnt%2 == 0 ? 10.0 : 100.0);
+  mktValue = qty * 1.2345998;
+  sharesOutstanding = out;
+  //secType = ( wchar_t * )malloc( ( wcslen( L"a" ) + 1 ) * sizeof( wchar_t ) );
+  secType =  new char[ ( strlen( "a" ) + 1 ) ];
+  strcpy( secType, "a" );
+
+  pid = cnt++;
+}
+
+// This constructor is just for some internal data validation test
+PositionPdx::PositionPdx(int32_t iForExactVal) {
+  init();
+
+  char * id = new char[iForExactVal+2];
+  for(int i=0;i<=iForExactVal; i++)
+  {
+    id[i] = 'a';
+  }
+  id[iForExactVal+1] = '\0';
+  size_t strSize = strlen(id) + 1;
+  secId = new char[strSize];
+  memcpy(secId, id, strSize);
+
+  delete [] id;
+  qty = (iForExactVal%2==0?1000:100);
+  mktValue = qty * 2;
+  sharesOutstanding = iForExactVal;
+  //secType = ( wchar_t * )malloc( ( wcslen( L"a" ) + 1 ) * sizeof( wchar_t ) );
+  secType =  new char [ ( strlen( "a" ) + 1 ) ];
+  strcpy( secType, "a" );
+  pid = iForExactVal;
+}
+
+PositionPdx::~PositionPdx() {
+  if (secType != NULL) {
+    //free(secType);
+    delete [] secType;
+    secType = NULL;
+  }
+
+  if (secId != NULL) {
+    //free(secId);
+    delete [] secId;
+    secId = NULL;
+  }
+}
+
+void PositionPdx::init()
+{
+
+  avg20DaysVol = 0;
+  bondRating = NULL;
+  convRatio = 0.0;
+  country = NULL;
+  delta = 0.0;
+  industry = 0;
+  issuer = 0;
+  mktValue = 0.0;
+  qty=0.0;
+  secId = NULL;
+  secLinks = NULL;
+  secType = NULL;
+  sharesOutstanding = 0;
+  underlyer = NULL;
+  volatility=0;
+  pid=0;
+}
+
+void PositionPdx::toData( PdxWriterPtr pw)  {
+  pw->writeLong("avg20DaysVol", avg20DaysVol);
+  pw->markIdentityField("avg20DaysVol");
+
+  pw->writeString("bondRating", bondRating);
+  pw->markIdentityField("bondRating");
+
+  pw->writeDouble("convRatio", convRatio);
+  pw->markIdentityField("convRatio");
+
+  pw->writeString("country", country);
+  pw->markIdentityField("country");
+
+  pw->writeDouble("delta", delta);
+  pw->markIdentityField("delta");
+
+  pw->writeLong("industry", industry);
+  pw->markIdentityField("industry");
+
+  pw->writeLong("issuer", issuer);
+  pw->markIdentityField("issuer");
+
+  pw->writeDouble("mktValue", mktValue);
+  pw->markIdentityField("mktValue");
+
+  pw->writeDouble("qty", qty);
+  pw->markIdentityField("qty");
+
+  pw->writeString("secId", secId);
+  pw->markIdentityField("secId");
+
+  pw->writeString("secLinks", secLinks);
+  pw->markIdentityField("secLinks");
+
+  pw->writeString("secType", secType);
+  pw->markIdentityField("secType");
+
+  pw->writeInt("sharesOutstanding", sharesOutstanding);
+  pw->markIdentityField("sharesOutstanding");
+
+  pw->writeString("underlyer", underlyer);
+  pw->markIdentityField("underlyer");
+
+  pw->writeLong("volatility", volatility);
+  pw->markIdentityField("volatility");
+
+  pw->writeInt("pid", pid);
+  pw->markIdentityField("pid");
+}
+
+void PositionPdx::fromData( PdxReaderPtr pr ){
+
+  avg20DaysVol = pr->readLong("avg20DaysVol");
+  bondRating = pr->readString("bondRating");
+  convRatio = pr->readDouble("convRatio");
+  country = pr->readString("country");
+  delta = pr->readDouble("delta");
+  industry = pr->readLong("industry");
+  issuer = pr->readLong("issuer");
+  mktValue = pr->readDouble("mktValue");
+  qty = pr->readDouble("qty");
+  secId = pr->readString("secId");
+  secLinks = pr->readString("secLinks");
+  secType = pr->readString("secType");
+  sharesOutstanding = pr->readInt("sharesOutstanding");
+  underlyer = pr->readString("underlyer");
+  volatility = pr->readLong("volatility");
+  pid = pr->readInt("pid");
+}
+
+CacheableStringPtr PositionPdx::toString() const {
+  char buf[1024];
+  sprintf(buf, "PositionPdx Object:[ id=%d ]", this->pid);
+  return CacheableString::create( buf );
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/queryobjects/PositionPdx.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/queryobjects/PositionPdx.hpp b/geode-client-native/quickstart/cpp/queryobjects/PositionPdx.hpp
new file mode 100644
index 0000000..e0cde44
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/queryobjects/PositionPdx.hpp
@@ -0,0 +1,111 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+/*
+ * @brief User class for testing the put functionality for object.
+ */
+
+
+#ifndef __POSITIONPDX_HPP__
+#define __POSITIONPDX_HPP__
+
+#include <gfcpp/GemfireCppCache.hpp>
+#include <gfcpp/PdxSerializable.hpp>
+#include <gfcpp/PdxWriter.hpp>
+#include <gfcpp/PdxReader.hpp>
+#include <string.h>
+
+#ifdef _WIN32
+#ifdef BUILD_TESTOBJECT
+#define TESTOBJECT_EXPORT LIBEXP
+#else
+#define TESTOBJECT_EXPORT LIBIMP
+#endif
+#else
+#define TESTOBJECT_EXPORT
+#endif
+
+using namespace gemfire;
+
+namespace testobject {
+
+class TESTOBJECT_EXPORT PositionPdx : public gemfire::PdxSerializable
+{
+  private:
+
+   int64_t avg20DaysVol;
+   char* bondRating;
+   double convRatio;
+   char*  country;
+   double delta;
+   int64_t industry;
+   int64_t issuer;
+   double mktValue;
+   double qty;
+   char* secId;
+   char* secLinks;
+   //wchar_t* secType;
+   //wchar_t* secType;
+   char* secType;
+   int32_t sharesOutstanding;
+   char* underlyer;
+   int64_t volatility;
+
+   int32_t pid;
+
+  public:
+
+   static int32_t cnt;
+
+    PositionPdx();
+    PositionPdx(const char* id, int32_t out);
+    // This constructor is just for some internal data validation test
+    PositionPdx(int32_t iForExactVal);
+    virtual ~PositionPdx();
+    virtual void toData( PdxWriterPtr pw ) ;
+    virtual void fromData( PdxReaderPtr pr );
+
+    CacheableStringPtr toString() const;
+
+    virtual uint32_t objectSize() const {
+        uint32_t objectSize = sizeof(PositionPdx);
+        return objectSize;
+    }
+
+    static void resetCounter() {
+      cnt = 0;
+    }
+
+    char* getSecId() {
+      return secId;
+    }
+
+    int32_t getId() {
+      return pid;
+    }
+
+    int32_t getSharesOutstanding() {
+      return sharesOutstanding;
+    }
+
+    static PdxSerializable* createDeserializable( ){
+      return new PositionPdx();
+    }
+
+    const char* getClassName()const {
+      return "testobject.PositionPdx";
+    }
+
+  private:
+    void init();
+};
+
+typedef gemfire::SharedPtr<PositionPdx> PositionPdxPtr;
+
+}
+#endif

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/queryobjects/PositionPdxAuto.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/queryobjects/PositionPdxAuto.cpp b/geode-client-native/quickstart/cpp/queryobjects/PositionPdxAuto.cpp
new file mode 100644
index 0000000..852fcd9
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/queryobjects/PositionPdxAuto.cpp
@@ -0,0 +1,98 @@
+#include "PositionPdxAuto.hpp"
+#include <cwchar>
+#include <wchar.h>
+#include <malloc.h>
+
+using namespace gemfire;
+using namespace testobject;
+
+int32_t PositionPdxAuto::cnt = 0;
+
+PositionPdxAuto::PositionPdxAuto()
+{
+  init();
+}
+
+PositionPdxAuto::PositionPdxAuto(const char* id, int32_t out) {
+  init();
+
+  size_t strSize = strlen(id) + 1;
+  secId = new char[strSize];
+  memcpy(secId, id, strSize);
+
+  qty = out * (cnt%2 == 0 ? 10.0 : 100.0);
+  mktValue = qty * 1.2345998;
+  sharesOutstanding = out;
+  //secType = ( wchar_t * )malloc( ( wcslen( L"a" ) + 1 ) * sizeof( wchar_t ) );
+  secType =  new char[ ( strlen( "a" ) + 1 ) ];
+  strcpy( secType, "a" );
+
+  pid = cnt++;
+}
+
+// This constructor is just for some internal data validation test
+PositionPdxAuto::PositionPdxAuto(int32_t iForExactVal) {
+  init();
+
+  char * id = new char[iForExactVal+2];
+  for(int i=0;i<=iForExactVal; i++)
+  {
+    id[i] = 'a';
+  }
+  id[iForExactVal+1] = '\0';
+  size_t strSize = strlen(id) + 1;
+  secId = new char[strSize];
+  memcpy(secId, id, strSize);
+
+  delete [] id;
+  qty = (iForExactVal%2==0?1000:100);
+  mktValue = qty * 2;
+  sharesOutstanding = iForExactVal;
+  //secType = ( wchar_t * )malloc( ( wcslen( L"a" ) + 1 ) * sizeof( wchar_t ) );
+  secType =  new char [ ( strlen( "a" ) + 1 ) ];
+  strcpy( secType, "a" );
+  pid = iForExactVal;
+}
+
+PositionPdxAuto::~PositionPdxAuto() {
+  if (secType != NULL) {
+    //free(secType);
+    delete [] secType;
+    secType = NULL;
+  }
+
+  if (secId != NULL) {
+    //free(secId);
+    delete [] secId;
+    secId = NULL;
+  }
+}
+
+void PositionPdxAuto::init()
+{
+
+  avg20DaysVol = 0;
+  bondRating = NULL;
+  convRatio = 0.0;
+  country = NULL;
+  delta = 0.0;
+  industry = 0;
+  issuer = 0;
+  mktValue = 0.0;
+  qty=0.0;
+  secId = NULL;
+  secLinks = NULL;
+  secType = NULL;
+  sharesOutstanding = 0;
+  underlyer = NULL;
+  volatility=0;
+  pid=0;
+}
+
+
+CacheableStringPtr PositionPdxAuto::toString() const {
+  char buf[1024];
+  sprintf(buf, "PositionPdx Object:[ id=%d ]", this->pid);
+  return CacheableString::create( buf );
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/queryobjects/PositionPdxAuto.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/queryobjects/PositionPdxAuto.hpp b/geode-client-native/quickstart/cpp/queryobjects/PositionPdxAuto.hpp
new file mode 100644
index 0000000..b3820e4
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/queryobjects/PositionPdxAuto.hpp
@@ -0,0 +1,109 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+/*
+ * @brief User class for testing the put functionality for object.
+ */
+
+
+#ifndef __POSITIONPDX_AUTO__HPP__
+#define __POSITIONPDX_AUTO__HPP__
+
+#include <gfcpp/GemfireCppCache.hpp>
+#include <gfcpp/PdxSerializable.hpp>
+#include <gfcpp/PdxWriter.hpp>
+#include <gfcpp/PdxReader.hpp>
+#include <string.h>
+
+#ifdef _WIN32
+#ifdef BUILD_TESTOBJECT
+#define TESTOBJECT_EXPORT LIBEXP
+#else
+#define TESTOBJECT_EXPORT LIBIMP
+#endif
+#else
+#define TESTOBJECT_EXPORT
+#endif
+
+using namespace gemfire;
+
+namespace testobject {
+
+#define GFID
+
+class PositionPdxAuto : public gemfire::PdxSerializable
+{
+  private:
+
+   GFID int64_t avg20DaysVol;
+   GFID char* bondRating;
+   GFID double convRatio;
+   GFID char*  country;
+   GFID double delta;
+   GFID int64_t industry;
+   GFID int64_t issuer;
+   GFID double mktValue;
+   GFID double qty;
+   GFID char* secId;
+   GFID char* secLinks;
+   //wchar_t* secType;
+   //wchar_t* secType;
+   GFID char* secType;
+   GFID int32_t sharesOutstanding;
+   GFID char* underlyer;
+   GFID int64_t volatility;
+
+   GFID int32_t pid;
+
+  public:
+
+   static int32_t cnt;
+
+    PositionPdxAuto();
+    PositionPdxAuto(const char* id, int32_t out);
+    // This constructor is just for some internal data validation test
+    PositionPdxAuto(int32_t iForExactVal);
+    virtual ~PositionPdxAuto();
+    virtual void toData( PdxWriterPtr pw ) ;
+    virtual void fromData( PdxReaderPtr pr );
+
+    CacheableStringPtr toString() const;
+
+    virtual uint32_t objectSize() const {
+        uint32_t objectSize = sizeof(PositionPdxAuto);
+        return objectSize;
+    }
+
+    static void resetCounter() {
+      cnt = 0;
+    }
+
+    char* getSecId() {
+      return secId;
+    }
+
+    int32_t getId() {
+      return pid;
+    }
+
+    int32_t getSharesOutstanding() {
+      return sharesOutstanding;
+    }
+
+    static PdxSerializable* createDeserializable( );
+
+    const char* getClassName() const;
+
+  private:
+    void init();
+};
+
+typedef gemfire::SharedPtr<PositionPdxAuto> PositionPdxPtr;
+
+}
+#endif

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/vsprojects/BasicOperationsC++/BasicOperationsC++.vcxproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/vsprojects/BasicOperationsC++/BasicOperationsC++.vcxproj b/geode-client-native/quickstart/cpp/vsprojects/BasicOperationsC++/BasicOperationsC++.vcxproj
new file mode 100755
index 0000000..c17d437
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/vsprojects/BasicOperationsC++/BasicOperationsC++.vcxproj
@@ -0,0 +1,142 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectName>BasicOperations C++</ProjectName>
+    <ProjectGuid>{5D8C303F-CF57-4AD7-A755-068A0C488CB8}</ProjectGuid>
+    <RootNamespace>BasicOperations C++</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Configuration)\</IntDir>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">BasicOperations</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">BasicOperations</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">BasicOperations</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">BasicOperations</TargetName>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <Optimization>Disabled</Optimization>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/debug/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\BasicOperations.exe</OutputFile>
+      <TargetMachine>MachineX86</TargetMachine>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <Optimization>Disabled</Optimization>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\BasicOperations.exe</OutputFile>
+      <TargetMachine>MachineX64</TargetMachine>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\BasicOperations.exe</OutputFile>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\BasicOperations.exe</OutputFile>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\BasicOperations.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/vsprojects/CqQueryC++/CqQueryC++.vcxproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/vsprojects/CqQueryC++/CqQueryC++.vcxproj b/geode-client-native/quickstart/cpp/vsprojects/CqQueryC++/CqQueryC++.vcxproj
new file mode 100755
index 0000000..3f7e310
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/vsprojects/CqQueryC++/CqQueryC++.vcxproj
@@ -0,0 +1,164 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectName>CqQuery C++</ProjectName>
+    <ProjectGuid>{4DCC2C45-74E0-4C99-B99D-271EAC2A2027}</ProjectGuid>
+    <RootNamespace>CqQuery C++</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Configuration)\</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Configuration)\</IntDir>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CqQuery</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">CqQuery</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">CqQuery</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">CqQuery</TargetName>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>BUILD_TESTOBJECT;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <Optimization>Disabled</Optimization>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/debug/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\CqQuery.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+    <PostBuildEvent>
+      <Command>del /q "$(SolutionDir)\cpp\*.exp"
+del /q "$(SolutionDir)\cpp\*.lib"
+</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>BUILD_TESTOBJECT;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <Optimization>Disabled</Optimization>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\CqQuery.exe</OutputFile>
+      <TargetMachine>MachineX64</TargetMachine>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+    <PostBuildEvent>
+      <Command>del /q "$(SolutionDir)\cpp\*.exp"
+del /q "$(SolutionDir)\cpp\*.lib"
+</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>BUILD_TESTOBJECT;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\CqQuery.exe</OutputFile>
+    </Link>
+    <PostBuildEvent>
+      <Command>del /q "$(SolutionDir)\cpp\*.exp"
+del /q "$(SolutionDir)\cpp\*.lib"
+</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>BUILD_TESTOBJECT;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\CqQuery.exe</OutputFile>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+    <PostBuildEvent>
+      <Command>del /q "$(SolutionDir)\cpp\*.exp"
+del /q "$(SolutionDir)\cpp\*.lib"
+</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\CqQuery.cpp" />
+    <ClCompile Include="..\..\queryobjects\Portfolio.cpp" />
+    <ClCompile Include="..\..\queryobjects\Position.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/vsprojects/DataExpirationC++/DataExpirationC++.vcxproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/vsprojects/DataExpirationC++/DataExpirationC++.vcxproj b/geode-client-native/quickstart/cpp/vsprojects/DataExpirationC++/DataExpirationC++.vcxproj
new file mode 100755
index 0000000..134accc
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/vsprojects/DataExpirationC++/DataExpirationC++.vcxproj
@@ -0,0 +1,141 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectName>DataExpiration C++</ProjectName>
+    <ProjectGuid>{0418CF54-8262-435D-A472-3FC43640FA59}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Configuration)\</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Configuration)\</IntDir>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">DataExpiration</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">DataExpiration</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">DataExpiration</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">DataExpiration</TargetName>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <Optimization>Disabled</Optimization>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/debug/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\DataExpiration.exe</OutputFile>
+      <TargetMachine>MachineX86</TargetMachine>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <Optimization>Disabled</Optimization>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\DataExpiration.exe</OutputFile>
+      <TargetMachine>MachineX64</TargetMachine>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\DataExpiration.exe</OutputFile>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\DataExpiration.exe</OutputFile>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\DataExpiration.cpp" />
+    <ClCompile Include="..\..\plugins\SimpleCacheListener.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/vsprojects/DeltaC++/DeltaC++.vcxproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/vsprojects/DeltaC++/DeltaC++.vcxproj b/geode-client-native/quickstart/cpp/vsprojects/DeltaC++/DeltaC++.vcxproj
new file mode 100755
index 0000000..33cfd27
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/vsprojects/DeltaC++/DeltaC++.vcxproj
@@ -0,0 +1,140 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectName>Delta C++</ProjectName>
+    <ProjectGuid>{CA044B76-5529-4C38-9B09-8FA9444E37E8}</ProjectGuid>
+    <RootNamespace>Delta C++</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Configuration)\</IntDir>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Delta</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Delta</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Delta</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Delta</TargetName>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <Optimization>Disabled</Optimization>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/debug/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\Delta.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <Optimization>Disabled</Optimization>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\Delta.exe</OutputFile>
+      <TargetMachine>MachineX64</TargetMachine>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\Delta.exe</OutputFile>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\Delta.exe</OutputFile>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\Delta.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file


[49/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/VS_Solutions/gfclicache/gfclicache.sln
----------------------------------------------------------------------
diff --git a/geode-client-native/VS_Solutions/gfclicache/gfclicache.sln b/geode-client-native/VS_Solutions/gfclicache/gfclicache.sln
new file mode 100644
index 0000000..ebfb316
--- /dev/null
+++ b/geode-client-native/VS_Solutions/gfclicache/gfclicache.sln
@@ -0,0 +1,1248 @@
+\ufeff
+Microsoft Visual Studio Solution File, Format Version 9.00
+# Visual Studio 2005
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gfclicache", "..\..\vs_projects\gfclicache\gfclicache.vcproj", "{B274E3B1-6A09-4322-952B-8BDA712892CE}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DUnitFramework", "..\..\vs_projects\gfclitests\DUnitFramework\DUnitFramework.csproj", "{796727E8-3A6A-46BE-A2DB-584A4774CD51}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTests", "..\..\vs_projects\gfclitests\UnitTests\UnitTests.csproj", "{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}"
+	ProjectSection(ProjectDependencies) = postProject
+		{10613802-A371-4C27-8F66-CE79BFCAC3F2} = {10613802-A371-4C27-8F66-CE79BFCAC3F2}
+		{B274E3B1-6A09-4322-952B-8BDA712892CE} = {B274E3B1-6A09-4322-952B-8BDA712892CE}
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FwkClient", "..\..\vs_projects\gfclitests\FwkClient\FwkClient.csproj", "{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "product", "product", "{6EC3B882-4C39-42B7-A8DB-59CDE849CD2D}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{DB2F0277-D3DB-45BA-8B62-944E1B04175B}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "examples", "examples", "{5A16B1F9-CD95-4B2F-9C74-9C4151DC489C}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HelloWorld", "..\..\vs_projects\examples\clicache\HelloWorld\HelloWorld.csproj", "{5DE79CEE-BEE8-404E-8365-2AE742001EEA}"
+	ProjectSection(ProjectDependencies) = postProject
+		{B274E3B1-6A09-4322-952B-8BDA712892CE} = {B274E3B1-6A09-4322-952B-8BDA712892CE}
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FwkLib", "..\..\vs_projects\gfclitests\FwkLib\FwkLib.csproj", "{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}"
+	ProjectSection(ProjectDependencies) = postProject
+		{B274E3B1-6A09-4322-952B-8BDA712892CE} = {B274E3B1-6A09-4322-952B-8BDA712892CE}
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FwkDriver", "..\..\vs_projects\gfclitests\FwkDriver\FwkDriver.csproj", "{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UserObjects", "..\..\vs_projects\examples\clicache\UserObjects\UserObjects.csproj", "{9FF38F43-864D-45EB-AD38-2AC2AD272C9E}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GacInstall", "..\..\vs_projects\executables\GacInstall.csproj", "{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BenchmarkHierarchicalClient", "..\..\vs_projects\examples\clicache\BenchmarkHierarchicalClient\BenchmarkHierarchicalClient.csproj", "{DAF42015-6FB4-4B35-A486-46BB68CB18CA}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HierarchicalClient", "..\..\vs_projects\examples\clicache\HierarchicalClient\HierarchicalClient.csproj", "{6F9455A8-866A-4405-8354-449BC6CDFD46}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProductBrowser", "..\..\vs_projects\examples\clicache\ProductBrowser\ProductBrowser.csproj", "{7C77A471-0334-49DF-ABE5-B1799428B8AC}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "QueryWrapper", "..\..\vs_projects\gfclitests\QueryHelper\QueryWrapper.vcproj", "{9462282E-A3D8-4192-885C-891E778D9A3F}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FwkBBClient", "..\..\vs_projects\gfclitests\FwkBBClient\FwkBBClient.csproj", "{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FwkBBServer", "..\..\vs_projects\gfclitests\FwkBBServer\FwkBBServer.csproj", "{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CacheRunner", "..\..\vs_projects\examples\clicache\CacheRunner\CacheRunner.csproj", "{D8F67104-CDDE-433F-A8EE-470A92180AB9}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CqQuery", "..\..\vs_projects\examples\clicache\CqQuery\CqQuery.csproj", "{D8F67104-CDDE-433F-A8EE-470A92180AA9}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExecuteFunctions", "..\..\vs_projects\examples\clicache\ExecuteFunctions\ExecuteFunctions.csproj", "{D8F67104-CDDE-433F-A8EE-470A92180BA9}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Templates", "..\..\vs_projects\gfclicache\templates\Templates.csproj", "{1B99F0C4-B241-45C7-BFAF-2009D0664901}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SecurityUtil", "..\..\vs_projects\gfclitests\SecurityUtil\SecurityUtil.csproj", "{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NativeWrapper", "..\..\vs_projects\gfclitests\NativeWrapper\NativeWrapper.vcproj", "{028E234C-10E7-401F-9A35-0EF3BED05E65}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PkcsWrapper", "..\..\vs_projects\gfclitests\PkcsWrapper\PkcsWrapper.vcproj", "{64BE2358-E700-4909-8665-8B10E2626691}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NewFwkLib", "..\..\vs_projects\gfclitests\NewFwkLib\NewFwkLib.csproj", "{9D51841C-4400-4BB4-95C9-15A8E6C14B38}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FwkUtil", "..\..\vs_projects\gfclitests\FwkUtil\FwkUtil.csproj", "{0DDB5AAF-C707-4F65-9000-659A24504D36}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FwkLauncher", "..\..\vs_projects\gfclitests\FwkLauncher\FwkLauncher.csproj", "{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PdxClassLibrary", "..\..\vs_projects\gfclitests\PdxClassLibrary\PdxClassLibrary.csproj", "{10613802-A371-4C27-8F66-CE79BFCAC3F2}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PdxVersion1Lib", "..\..\vs_projects\gfclitests\PdxVersion1Lib\PdxVersion1Lib.csproj", "{97F9965D-6B3D-44F6-92B3-5880A3C7178E}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PdxVersion2Lib", "..\..\vs_projects\gfclitests\PdxVersion2Lib\PdxVersion2Lib.csproj", "{5055633B-6D1C-488D-B934-1AC482C915F7}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FwkUI", "..\..\vs_projects\gfclitests\FwkUI\FwkUI.csproj", "{4C4235E5-DF5B-4C7A-91C3-1C3CDACF57D5}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Debug|Mixed Platforms = Debug|Mixed Platforms
+		Debug|Win32 = Debug|Win32
+		Debug|x64 = Debug|x64
+		Debug|x86 = Debug|x86
+		DebugNet20|Any CPU = DebugNet20|Any CPU
+		DebugNet20|Mixed Platforms = DebugNet20|Mixed Platforms
+		DebugNet20|Win32 = DebugNet20|Win32
+		DebugNet20|x64 = DebugNet20|x64
+		DebugNet20|x86 = DebugNet20|x86
+		Release|Any CPU = Release|Any CPU
+		Release|Mixed Platforms = Release|Mixed Platforms
+		Release|Win32 = Release|Win32
+		Release|x64 = Release|x64
+		Release|x86 = Release|x86
+		ReleaseNet20|Any CPU = ReleaseNet20|Any CPU
+		ReleaseNet20|Mixed Platforms = ReleaseNet20|Mixed Platforms
+		ReleaseNet20|Win32 = ReleaseNet20|Win32
+		ReleaseNet20|x64 = ReleaseNet20|x64
+		ReleaseNet20|x86 = ReleaseNet20|x86
+		sanctionedBuildDebug|Any CPU = sanctionedBuildDebug|Any CPU
+		sanctionedBuildDebug|Mixed Platforms = sanctionedBuildDebug|Mixed Platforms
+		sanctionedBuildDebug|Win32 = sanctionedBuildDebug|Win32
+		sanctionedBuildDebug|x64 = sanctionedBuildDebug|x64
+		sanctionedBuildDebug|x86 = sanctionedBuildDebug|x86
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{B274E3B1-6A09-4322-952B-8BDA712892CE}.Debug|Any CPU.ActiveCfg = Debug|Win32
+		{B274E3B1-6A09-4322-952B-8BDA712892CE}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+		{B274E3B1-6A09-4322-952B-8BDA712892CE}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+		{B274E3B1-6A09-4322-952B-8BDA712892CE}.Debug|Win32.ActiveCfg = Debug|Win32
+		{B274E3B1-6A09-4322-952B-8BDA712892CE}.Debug|Win32.Build.0 = Debug|Win32
+		{B274E3B1-6A09-4322-952B-8BDA712892CE}.Debug|x64.ActiveCfg = Debug|x64
+		{B274E3B1-6A09-4322-952B-8BDA712892CE}.Debug|x64.Build.0 = Debug|x64
+		{B274E3B1-6A09-4322-952B-8BDA712892CE}.Debug|x86.ActiveCfg = Debug|x64
+		{B274E3B1-6A09-4322-952B-8BDA712892CE}.DebugNet20|Any CPU.ActiveCfg = DebugNet20|Win32
+		{B274E3B1-6A09-4322-952B-8BDA712892CE}.DebugNet20|Mixed Platforms.ActiveCfg = DebugNet20|Win32
+		{B274E3B1-6A09-4322-952B-8BDA712892CE}.DebugNet20|Mixed Platforms.Build.0 = DebugNet20|Win32
+		{B274E3B1-6A09-4322-952B-8BDA712892CE}.DebugNet20|Win32.ActiveCfg = DebugNet20|Win32
+		{B274E3B1-6A09-4322-952B-8BDA712892CE}.DebugNet20|Win32.Build.0 = DebugNet20|Win32
+		{B274E3B1-6A09-4322-952B-8BDA712892CE}.DebugNet20|x64.ActiveCfg = DebugNet20|x64
+		{B274E3B1-6A09-4322-952B-8BDA712892CE}.DebugNet20|x64.Build.0 = DebugNet20|x64
+		{B274E3B1-6A09-4322-952B-8BDA712892CE}.DebugNet20|x86.ActiveCfg = Debug|x64
+		{B274E3B1-6A09-4322-952B-8BDA712892CE}.Release|Any CPU.ActiveCfg = Release|Win32
+		{B274E3B1-6A09-4322-952B-8BDA712892CE}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+		{B274E3B1-6A09-4322-952B-8BDA712892CE}.Release|Mixed Platforms.Build.0 = Release|Win32
+		{B274E3B1-6A09-4322-952B-8BDA712892CE}.Release|Win32.ActiveCfg = Release|Win32
+		{B274E3B1-6A09-4322-952B-8BDA712892CE}.Release|Win32.Build.0 = Release|Win32
+		{B274E3B1-6A09-4322-952B-8BDA712892CE}.Release|x64.ActiveCfg = Release|x64
+		{B274E3B1-6A09-4322-952B-8BDA712892CE}.Release|x64.Build.0 = Release|x64
+		{B274E3B1-6A09-4322-952B-8BDA712892CE}.Release|x86.ActiveCfg = Release|x64
+		{B274E3B1-6A09-4322-952B-8BDA712892CE}.ReleaseNet20|Any CPU.ActiveCfg = Release|Win32
+		{B274E3B1-6A09-4322-952B-8BDA712892CE}.ReleaseNet20|Mixed Platforms.ActiveCfg = ReleaseNet20|Win32
+		{B274E3B1-6A09-4322-952B-8BDA712892CE}.ReleaseNet20|Mixed Platforms.Build.0 = ReleaseNet20|Win32
+		{B274E3B1-6A09-4322-952B-8BDA712892CE}.ReleaseNet20|Win32.ActiveCfg = ReleaseNet20|Win32
+		{B274E3B1-6A09-4322-952B-8BDA712892CE}.ReleaseNet20|Win32.Build.0 = ReleaseNet20|Win32
+		{B274E3B1-6A09-4322-952B-8BDA712892CE}.ReleaseNet20|x64.ActiveCfg = ReleaseNet20|x64
+		{B274E3B1-6A09-4322-952B-8BDA712892CE}.ReleaseNet20|x64.Build.0 = ReleaseNet20|x64
+		{B274E3B1-6A09-4322-952B-8BDA712892CE}.ReleaseNet20|x86.ActiveCfg = Release|x64
+		{B274E3B1-6A09-4322-952B-8BDA712892CE}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|Win32
+		{B274E3B1-6A09-4322-952B-8BDA712892CE}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|Win32
+		{B274E3B1-6A09-4322-952B-8BDA712892CE}.sanctionedBuildDebug|Mixed Platforms.Build.0 = Debug|Win32
+		{B274E3B1-6A09-4322-952B-8BDA712892CE}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|Win32
+		{B274E3B1-6A09-4322-952B-8BDA712892CE}.sanctionedBuildDebug|Win32.Build.0 = Debug|Win32
+		{B274E3B1-6A09-4322-952B-8BDA712892CE}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{B274E3B1-6A09-4322-952B-8BDA712892CE}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{B274E3B1-6A09-4322-952B-8BDA712892CE}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x64
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.Debug|x64.ActiveCfg = Debug|x64
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.Debug|x64.Build.0 = Debug|x64
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.Debug|x86.ActiveCfg = Debug|x64
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.DebugNet20|Any CPU.ActiveCfg = Debug|Any CPU
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.DebugNet20|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.DebugNet20|Mixed Platforms.Build.0 = Debug|Any CPU
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.DebugNet20|Win32.ActiveCfg = Debug|Any CPU
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.DebugNet20|x64.ActiveCfg = Debug|x64
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.DebugNet20|x64.Build.0 = Debug|x64
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.DebugNet20|x86.ActiveCfg = Debug|x64
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.Release|Any CPU.Build.0 = Release|Any CPU
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.Release|Win32.ActiveCfg = Release|Any CPU
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.Release|x64.ActiveCfg = Release|x64
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.Release|x64.Build.0 = Release|x64
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.Release|x86.ActiveCfg = Release|x64
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.ReleaseNet20|Any CPU.ActiveCfg = Release|Any CPU
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.ReleaseNet20|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.ReleaseNet20|Mixed Platforms.Build.0 = Release|Any CPU
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.ReleaseNet20|Win32.ActiveCfg = Release|Any CPU
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.ReleaseNet20|x64.ActiveCfg = Release|x64
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.ReleaseNet20|x64.Build.0 = Release|x64
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.ReleaseNet20|x86.ActiveCfg = Release|x64
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|Any CPU
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.sanctionedBuildDebug|Any CPU.Build.0 = Debug|Any CPU
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.sanctionedBuildDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|Any CPU
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{796727E8-3A6A-46BE-A2DB-584A4774CD51}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x64
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.Debug|x64.ActiveCfg = Debug|x64
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.Debug|x64.Build.0 = Debug|x64
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.Debug|x86.ActiveCfg = Debug|x64
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.DebugNet20|Any CPU.ActiveCfg = Debug|Any CPU
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.DebugNet20|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.DebugNet20|Mixed Platforms.Build.0 = Debug|Any CPU
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.DebugNet20|Win32.ActiveCfg = Debug|Any CPU
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.DebugNet20|x64.ActiveCfg = Debug|x64
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.DebugNet20|x64.Build.0 = Debug|x64
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.DebugNet20|x86.ActiveCfg = Debug|x64
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.Release|Any CPU.Build.0 = Release|Any CPU
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.Release|Win32.ActiveCfg = Release|Any CPU
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.Release|x64.ActiveCfg = Release|x64
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.Release|x64.Build.0 = Release|x64
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.Release|x86.ActiveCfg = Release|x64
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.ReleaseNet20|Any CPU.ActiveCfg = Release|Any CPU
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.ReleaseNet20|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.ReleaseNet20|Mixed Platforms.Build.0 = Release|Any CPU
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.ReleaseNet20|Win32.ActiveCfg = Release|Any CPU
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.ReleaseNet20|x64.ActiveCfg = Release|x64
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.ReleaseNet20|x64.Build.0 = Release|x64
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.ReleaseNet20|x86.ActiveCfg = Release|x64
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|Any CPU
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.sanctionedBuildDebug|Any CPU.Build.0 = Debug|Any CPU
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.sanctionedBuildDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|Any CPU
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{CBD094FB-719C-4CA4-ABE5-08AA26EAE34A}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x64
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.Debug|x64.ActiveCfg = Debug|x64
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.Debug|x64.Build.0 = Debug|x64
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.Debug|x86.ActiveCfg = Debug|x64
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.DebugNet20|Any CPU.ActiveCfg = Debug|Any CPU
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.DebugNet20|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.DebugNet20|Mixed Platforms.Build.0 = Debug|Any CPU
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.DebugNet20|Win32.ActiveCfg = Debug|Any CPU
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.DebugNet20|x64.ActiveCfg = Debug|x64
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.DebugNet20|x64.Build.0 = Debug|x64
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.DebugNet20|x86.ActiveCfg = Debug|x64
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.Release|Any CPU.Build.0 = Release|Any CPU
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.Release|Win32.ActiveCfg = Release|Any CPU
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.Release|x64.ActiveCfg = Release|x64
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.Release|x64.Build.0 = Release|x64
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.Release|x86.ActiveCfg = Release|x64
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.ReleaseNet20|Any CPU.ActiveCfg = Release|Any CPU
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.ReleaseNet20|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.ReleaseNet20|Mixed Platforms.Build.0 = Release|Any CPU
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.ReleaseNet20|Win32.ActiveCfg = Release|Any CPU
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.ReleaseNet20|x64.ActiveCfg = Release|x64
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.ReleaseNet20|x64.Build.0 = Release|x64
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.ReleaseNet20|x86.ActiveCfg = Release|x64
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|Any CPU
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.sanctionedBuildDebug|Any CPU.Build.0 = Debug|Any CPU
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.sanctionedBuildDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|Any CPU
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{9EFAA401-B5D1-4592-A2FF-0972C776FF6A}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x64
+		{5DE79CEE-BEE8-404E-8365-2AE742001EEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{5DE79CEE-BEE8-404E-8365-2AE742001EEA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{5DE79CEE-BEE8-404E-8365-2AE742001EEA}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{5DE79CEE-BEE8-404E-8365-2AE742001EEA}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{5DE79CEE-BEE8-404E-8365-2AE742001EEA}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{5DE79CEE-BEE8-404E-8365-2AE742001EEA}.Debug|x64.ActiveCfg = Debug|x64
+		{5DE79CEE-BEE8-404E-8365-2AE742001EEA}.Debug|x64.Build.0 = Debug|x64
+		{5DE79CEE-BEE8-404E-8365-2AE742001EEA}.Debug|x86.ActiveCfg = Debug|x64
+		{5DE79CEE-BEE8-404E-8365-2AE742001EEA}.DebugNet20|Any CPU.ActiveCfg = Debug|Any CPU
+		{5DE79CEE-BEE8-404E-8365-2AE742001EEA}.DebugNet20|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{5DE79CEE-BEE8-404E-8365-2AE742001EEA}.DebugNet20|Mixed Platforms.Build.0 = Debug|Any CPU
+		{5DE79CEE-BEE8-404E-8365-2AE742001EEA}.DebugNet20|Win32.ActiveCfg = Debug|Any CPU
+		{5DE79CEE-BEE8-404E-8365-2AE742001EEA}.DebugNet20|x64.ActiveCfg = Debug|x64
+		{5DE79CEE-BEE8-404E-8365-2AE742001EEA}.DebugNet20|x64.Build.0 = Debug|x64
+		{5DE79CEE-BEE8-404E-8365-2AE742001EEA}.DebugNet20|x86.ActiveCfg = Debug|x64
+		{5DE79CEE-BEE8-404E-8365-2AE742001EEA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{5DE79CEE-BEE8-404E-8365-2AE742001EEA}.Release|Any CPU.Build.0 = Release|Any CPU
+		{5DE79CEE-BEE8-404E-8365-2AE742001EEA}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{5DE79CEE-BEE8-404E-8365-2AE742001EEA}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{5DE79CEE-BEE8-404E-8365-2AE742001EEA}.Release|Win32.ActiveCfg = Release|Any CPU
+		{5DE79CEE-BEE8-404E-8365-2AE742001EEA}.Release|x64.ActiveCfg = Release|x64
+		{5DE79CEE-BEE8-404E-8365-2AE742001EEA}.Release|x64.Build.0 = Release|x64
+		{5DE79CEE-BEE8-404E-8365-2AE742001EEA}.Release|x86.ActiveCfg = Release|x64
+		{5DE79CEE-BEE8-404E-8365-2AE742001EEA}.ReleaseNet20|Any CPU.ActiveCfg = Release|Any CPU
+		{5DE79CEE-BEE8-404E-8365-2AE742001EEA}.ReleaseNet20|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{5DE79CEE-BEE8-404E-8365-2AE742001EEA}.ReleaseNet20|Mixed Platforms.Build.0 = Release|Any CPU
+		{5DE79CEE-BEE8-404E-8365-2AE742001EEA}.ReleaseNet20|Win32.ActiveCfg = Release|Any CPU
+		{5DE79CEE-BEE8-404E-8365-2AE742001EEA}.ReleaseNet20|x64.ActiveCfg = Release|x64
+		{5DE79CEE-BEE8-404E-8365-2AE742001EEA}.ReleaseNet20|x64.Build.0 = Release|x64
+		{5DE79CEE-BEE8-404E-8365-2AE742001EEA}.ReleaseNet20|x86.ActiveCfg = Release|x64
+		{5DE79CEE-BEE8-404E-8365-2AE742001EEA}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|Any CPU
+		{5DE79CEE-BEE8-404E-8365-2AE742001EEA}.sanctionedBuildDebug|Any CPU.Build.0 = Debug|Any CPU
+		{5DE79CEE-BEE8-404E-8365-2AE742001EEA}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{5DE79CEE-BEE8-404E-8365-2AE742001EEA}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|Any CPU
+		{5DE79CEE-BEE8-404E-8365-2AE742001EEA}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{5DE79CEE-BEE8-404E-8365-2AE742001EEA}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{5DE79CEE-BEE8-404E-8365-2AE742001EEA}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x64
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.Debug|x64.ActiveCfg = Debug|x64
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.Debug|x64.Build.0 = Debug|x64
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.Debug|x86.ActiveCfg = Debug|x64
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.DebugNet20|Any CPU.ActiveCfg = Debug|Any CPU
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.DebugNet20|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.DebugNet20|Mixed Platforms.Build.0 = Debug|Any CPU
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.DebugNet20|Win32.ActiveCfg = Debug|Any CPU
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.DebugNet20|x64.ActiveCfg = Debug|x64
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.DebugNet20|x64.Build.0 = Debug|x64
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.DebugNet20|x86.ActiveCfg = Debug|x64
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.Release|Any CPU.Build.0 = Release|Any CPU
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.Release|Win32.ActiveCfg = Release|Any CPU
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.Release|x64.ActiveCfg = Release|x64
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.Release|x64.Build.0 = Release|x64
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.Release|x86.ActiveCfg = Release|x64
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.ReleaseNet20|Any CPU.ActiveCfg = Release|Any CPU
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.ReleaseNet20|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.ReleaseNet20|Mixed Platforms.Build.0 = Release|Any CPU
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.ReleaseNet20|Win32.ActiveCfg = Release|Any CPU
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.ReleaseNet20|x64.ActiveCfg = Release|x64
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.ReleaseNet20|x64.Build.0 = Release|x64
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.ReleaseNet20|x86.ActiveCfg = Release|x64
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|Any CPU
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.sanctionedBuildDebug|Any CPU.Build.0 = Debug|Any CPU
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.sanctionedBuildDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|Any CPU
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{E01351F3-2E8B-4A28-8D96-C591A7ED10DE}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x64
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.Debug|x64.ActiveCfg = Debug|x64
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.Debug|x64.Build.0 = Debug|x64
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.Debug|x86.ActiveCfg = Debug|x64
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.DebugNet20|Any CPU.ActiveCfg = Debug|Any CPU
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.DebugNet20|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.DebugNet20|Mixed Platforms.Build.0 = Debug|Any CPU
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.DebugNet20|Win32.ActiveCfg = Debug|Any CPU
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.DebugNet20|x64.ActiveCfg = Debug|x64
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.DebugNet20|x64.Build.0 = Debug|x64
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.DebugNet20|x86.ActiveCfg = Debug|x64
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.Release|Any CPU.Build.0 = Release|Any CPU
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.Release|Win32.ActiveCfg = Release|Any CPU
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.Release|x64.ActiveCfg = Release|x64
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.Release|x64.Build.0 = Release|x64
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.Release|x86.ActiveCfg = Release|x64
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.ReleaseNet20|Any CPU.ActiveCfg = Release|Any CPU
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.ReleaseNet20|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.ReleaseNet20|Mixed Platforms.Build.0 = Release|Any CPU
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.ReleaseNet20|Win32.ActiveCfg = Release|Any CPU
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.ReleaseNet20|x64.ActiveCfg = Release|x64
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.ReleaseNet20|x64.Build.0 = Release|x64
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.ReleaseNet20|x86.ActiveCfg = Release|x64
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|Any CPU
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.sanctionedBuildDebug|Any CPU.Build.0 = Debug|Any CPU
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.sanctionedBuildDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|Any CPU
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{86DB53F0-AE67-49F8-BABC-3BCC008F9BEA}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x64
+		{9FF38F43-864D-45EB-AD38-2AC2AD272C9E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{9FF38F43-864D-45EB-AD38-2AC2AD272C9E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{9FF38F43-864D-45EB-AD38-2AC2AD272C9E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{9FF38F43-864D-45EB-AD38-2AC2AD272C9E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{9FF38F43-864D-45EB-AD38-2AC2AD272C9E}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{9FF38F43-864D-45EB-AD38-2AC2AD272C9E}.Debug|x64.ActiveCfg = Debug|x64
+		{9FF38F43-864D-45EB-AD38-2AC2AD272C9E}.Debug|x64.Build.0 = Debug|x64
+		{9FF38F43-864D-45EB-AD38-2AC2AD272C9E}.Debug|x86.ActiveCfg = Debug|x64
+		{9FF38F43-864D-45EB-AD38-2AC2AD272C9E}.DebugNet20|Any CPU.ActiveCfg = Debug|Any CPU
+		{9FF38F43-864D-45EB-AD38-2AC2AD272C9E}.DebugNet20|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{9FF38F43-864D-45EB-AD38-2AC2AD272C9E}.DebugNet20|Mixed Platforms.Build.0 = Debug|Any CPU
+		{9FF38F43-864D-45EB-AD38-2AC2AD272C9E}.DebugNet20|Win32.ActiveCfg = Debug|Any CPU
+		{9FF38F43-864D-45EB-AD38-2AC2AD272C9E}.DebugNet20|x64.ActiveCfg = Debug|x64
+		{9FF38F43-864D-45EB-AD38-2AC2AD272C9E}.DebugNet20|x64.Build.0 = Debug|x64
+		{9FF38F43-864D-45EB-AD38-2AC2AD272C9E}.DebugNet20|x86.ActiveCfg = Debug|x64
+		{9FF38F43-864D-45EB-AD38-2AC2AD272C9E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{9FF38F43-864D-45EB-AD38-2AC2AD272C9E}.Release|Any CPU.Build.0 = Release|Any CPU
+		{9FF38F43-864D-45EB-AD38-2AC2AD272C9E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{9FF38F43-864D-45EB-AD38-2AC2AD272C9E}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{9FF38F43-864D-45EB-AD38-2AC2AD272C9E}.Release|Win32.ActiveCfg = Release|Any CPU
+		{9FF38F43-864D-45EB-AD38-2AC2AD272C9E}.Release|x64.ActiveCfg = Release|x64
+		{9FF38F43-864D-45EB-AD38-2AC2AD272C9E}.Release|x64.Build.0 = Release|x64
+		{9FF38F43-864D-45EB-AD38-2AC2AD272C9E}.Release|x86.ActiveCfg = Release|x64
+		{9FF38F43-864D-45EB-AD38-2AC2AD272C9E}.ReleaseNet20|Any CPU.ActiveCfg = Release|Any CPU
+		{9FF38F43-864D-45EB-AD38-2AC2AD272C9E}.ReleaseNet20|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{9FF38F43-864D-45EB-AD38-2AC2AD272C9E}.ReleaseNet20|Mixed Platforms.Build.0 = Release|Any CPU
+		{9FF38F43-864D-45EB-AD38-2AC2AD272C9E}.ReleaseNet20|Win32.ActiveCfg = Release|Any CPU
+		{9FF38F43-864D-45EB-AD38-2AC2AD272C9E}.ReleaseNet20|x64.ActiveCfg = Release|x64
+		{9FF38F43-864D-45EB-AD38-2AC2AD272C9E}.ReleaseNet20|x64.Build.0 = Release|x64
+		{9FF38F43-864D-45EB-AD38-2AC2AD272C9E}.ReleaseNet20|x86.ActiveCfg = Release|x64
+		{9FF38F43-864D-45EB-AD38-2AC2AD272C9E}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|Any CPU
+		{9FF38F43-864D-45EB-AD38-2AC2AD272C9E}.sanctionedBuildDebug|Any CPU.Build.0 = Debug|Any CPU
+		{9FF38F43-864D-45EB-AD38-2AC2AD272C9E}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{9FF38F43-864D-45EB-AD38-2AC2AD272C9E}.sanctionedBuildDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{9FF38F43-864D-45EB-AD38-2AC2AD272C9E}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|Any CPU
+		{9FF38F43-864D-45EB-AD38-2AC2AD272C9E}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{9FF38F43-864D-45EB-AD38-2AC2AD272C9E}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{9FF38F43-864D-45EB-AD38-2AC2AD272C9E}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x64
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.Debug|x64.ActiveCfg = Debug|x64
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.Debug|x64.Build.0 = Debug|x64
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.Debug|x86.ActiveCfg = Debug|x64
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.DebugNet20|Any CPU.ActiveCfg = Debug|Any CPU
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.DebugNet20|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.DebugNet20|Mixed Platforms.Build.0 = Debug|Any CPU
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.DebugNet20|Win32.ActiveCfg = Debug|Any CPU
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.DebugNet20|x64.ActiveCfg = Debug|x64
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.DebugNet20|x64.Build.0 = Debug|x64
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.DebugNet20|x86.ActiveCfg = Debug|x64
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.Release|Any CPU.Build.0 = Release|Any CPU
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.Release|Win32.ActiveCfg = Release|Any CPU
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.Release|x64.ActiveCfg = Release|x64
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.Release|x64.Build.0 = Release|x64
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.Release|x86.ActiveCfg = Release|x64
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.ReleaseNet20|Any CPU.ActiveCfg = Release|Any CPU
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.ReleaseNet20|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.ReleaseNet20|Mixed Platforms.Build.0 = Release|Any CPU
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.ReleaseNet20|Win32.ActiveCfg = Release|Any CPU
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.ReleaseNet20|x64.ActiveCfg = Release|x64
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.ReleaseNet20|x64.Build.0 = Release|x64
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.ReleaseNet20|x86.ActiveCfg = Release|x64
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|Any CPU
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.sanctionedBuildDebug|Any CPU.Build.0 = Debug|Any CPU
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.sanctionedBuildDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|Any CPU
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{62BE558C-FDC4-48E3-93DB-15DD0EA695DF}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x64
+		{DAF42015-6FB4-4B35-A486-46BB68CB18CA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{DAF42015-6FB4-4B35-A486-46BB68CB18CA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{DAF42015-6FB4-4B35-A486-46BB68CB18CA}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{DAF42015-6FB4-4B35-A486-46BB68CB18CA}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{DAF42015-6FB4-4B35-A486-46BB68CB18CA}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{DAF42015-6FB4-4B35-A486-46BB68CB18CA}.Debug|x64.ActiveCfg = Debug|x64
+		{DAF42015-6FB4-4B35-A486-46BB68CB18CA}.Debug|x64.Build.0 = Debug|x64
+		{DAF42015-6FB4-4B35-A486-46BB68CB18CA}.Debug|x86.ActiveCfg = Debug|x64
+		{DAF42015-6FB4-4B35-A486-46BB68CB18CA}.DebugNet20|Any CPU.ActiveCfg = Debug|Any CPU
+		{DAF42015-6FB4-4B35-A486-46BB68CB18CA}.DebugNet20|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{DAF42015-6FB4-4B35-A486-46BB68CB18CA}.DebugNet20|Mixed Platforms.Build.0 = Debug|Any CPU
+		{DAF42015-6FB4-4B35-A486-46BB68CB18CA}.DebugNet20|Win32.ActiveCfg = Debug|Any CPU
+		{DAF42015-6FB4-4B35-A486-46BB68CB18CA}.DebugNet20|x64.ActiveCfg = Debug|x64
+		{DAF42015-6FB4-4B35-A486-46BB68CB18CA}.DebugNet20|x64.Build.0 = Debug|x64
+		{DAF42015-6FB4-4B35-A486-46BB68CB18CA}.DebugNet20|x86.ActiveCfg = Debug|x64
+		{DAF42015-6FB4-4B35-A486-46BB68CB18CA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{DAF42015-6FB4-4B35-A486-46BB68CB18CA}.Release|Any CPU.Build.0 = Release|Any CPU
+		{DAF42015-6FB4-4B35-A486-46BB68CB18CA}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{DAF42015-6FB4-4B35-A486-46BB68CB18CA}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{DAF42015-6FB4-4B35-A486-46BB68CB18CA}.Release|Win32.ActiveCfg = Release|Any CPU
+		{DAF42015-6FB4-4B35-A486-46BB68CB18CA}.Release|x64.ActiveCfg = Release|x64
+		{DAF42015-6FB4-4B35-A486-46BB68CB18CA}.Release|x64.Build.0 = Release|x64
+		{DAF42015-6FB4-4B35-A486-46BB68CB18CA}.Release|x86.ActiveCfg = Release|x64
+		{DAF42015-6FB4-4B35-A486-46BB68CB18CA}.ReleaseNet20|Any CPU.ActiveCfg = Release|Any CPU
+		{DAF42015-6FB4-4B35-A486-46BB68CB18CA}.ReleaseNet20|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{DAF42015-6FB4-4B35-A486-46BB68CB18CA}.ReleaseNet20|Mixed Platforms.Build.0 = Release|Any CPU
+		{DAF42015-6FB4-4B35-A486-46BB68CB18CA}.ReleaseNet20|Win32.ActiveCfg = Release|Any CPU
+		{DAF42015-6FB4-4B35-A486-46BB68CB18CA}.ReleaseNet20|x64.ActiveCfg = Release|x64
+		{DAF42015-6FB4-4B35-A486-46BB68CB18CA}.ReleaseNet20|x64.Build.0 = Release|x64
+		{DAF42015-6FB4-4B35-A486-46BB68CB18CA}.ReleaseNet20|x86.ActiveCfg = Release|x64
+		{DAF42015-6FB4-4B35-A486-46BB68CB18CA}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|Any CPU
+		{DAF42015-6FB4-4B35-A486-46BB68CB18CA}.sanctionedBuildDebug|Any CPU.Build.0 = Debug|Any CPU
+		{DAF42015-6FB4-4B35-A486-46BB68CB18CA}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{DAF42015-6FB4-4B35-A486-46BB68CB18CA}.sanctionedBuildDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{DAF42015-6FB4-4B35-A486-46BB68CB18CA}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|Any CPU
+		{DAF42015-6FB4-4B35-A486-46BB68CB18CA}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{DAF42015-6FB4-4B35-A486-46BB68CB18CA}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{DAF42015-6FB4-4B35-A486-46BB68CB18CA}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x64
+		{6F9455A8-866A-4405-8354-449BC6CDFD46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{6F9455A8-866A-4405-8354-449BC6CDFD46}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{6F9455A8-866A-4405-8354-449BC6CDFD46}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{6F9455A8-866A-4405-8354-449BC6CDFD46}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{6F9455A8-866A-4405-8354-449BC6CDFD46}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{6F9455A8-866A-4405-8354-449BC6CDFD46}.Debug|x64.ActiveCfg = Debug|x64
+		{6F9455A8-866A-4405-8354-449BC6CDFD46}.Debug|x64.Build.0 = Debug|x64
+		{6F9455A8-866A-4405-8354-449BC6CDFD46}.Debug|x86.ActiveCfg = Debug|x64
+		{6F9455A8-866A-4405-8354-449BC6CDFD46}.DebugNet20|Any CPU.ActiveCfg = Debug|Any CPU
+		{6F9455A8-866A-4405-8354-449BC6CDFD46}.DebugNet20|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{6F9455A8-866A-4405-8354-449BC6CDFD46}.DebugNet20|Mixed Platforms.Build.0 = Debug|Any CPU
+		{6F9455A8-866A-4405-8354-449BC6CDFD46}.DebugNet20|Win32.ActiveCfg = Debug|Any CPU
+		{6F9455A8-866A-4405-8354-449BC6CDFD46}.DebugNet20|x64.ActiveCfg = Debug|x64
+		{6F9455A8-866A-4405-8354-449BC6CDFD46}.DebugNet20|x64.Build.0 = Debug|x64
+		{6F9455A8-866A-4405-8354-449BC6CDFD46}.DebugNet20|x86.ActiveCfg = Debug|x64
+		{6F9455A8-866A-4405-8354-449BC6CDFD46}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{6F9455A8-866A-4405-8354-449BC6CDFD46}.Release|Any CPU.Build.0 = Release|Any CPU
+		{6F9455A8-866A-4405-8354-449BC6CDFD46}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{6F9455A8-866A-4405-8354-449BC6CDFD46}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{6F9455A8-866A-4405-8354-449BC6CDFD46}.Release|Win32.ActiveCfg = Release|Any CPU
+		{6F9455A8-866A-4405-8354-449BC6CDFD46}.Release|x64.ActiveCfg = Release|x64
+		{6F9455A8-866A-4405-8354-449BC6CDFD46}.Release|x64.Build.0 = Release|x64
+		{6F9455A8-866A-4405-8354-449BC6CDFD46}.Release|x86.ActiveCfg = Release|x64
+		{6F9455A8-866A-4405-8354-449BC6CDFD46}.ReleaseNet20|Any CPU.ActiveCfg = Release|Any CPU
+		{6F9455A8-866A-4405-8354-449BC6CDFD46}.ReleaseNet20|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{6F9455A8-866A-4405-8354-449BC6CDFD46}.ReleaseNet20|Mixed Platforms.Build.0 = Release|Any CPU
+		{6F9455A8-866A-4405-8354-449BC6CDFD46}.ReleaseNet20|Win32.ActiveCfg = Release|Any CPU
+		{6F9455A8-866A-4405-8354-449BC6CDFD46}.ReleaseNet20|x64.ActiveCfg = Release|x64
+		{6F9455A8-866A-4405-8354-449BC6CDFD46}.ReleaseNet20|x64.Build.0 = Release|x64
+		{6F9455A8-866A-4405-8354-449BC6CDFD46}.ReleaseNet20|x86.ActiveCfg = Release|x64
+		{6F9455A8-866A-4405-8354-449BC6CDFD46}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|Any CPU
+		{6F9455A8-866A-4405-8354-449BC6CDFD46}.sanctionedBuildDebug|Any CPU.Build.0 = Debug|Any CPU
+		{6F9455A8-866A-4405-8354-449BC6CDFD46}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{6F9455A8-866A-4405-8354-449BC6CDFD46}.sanctionedBuildDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{6F9455A8-866A-4405-8354-449BC6CDFD46}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|Any CPU
+		{6F9455A8-866A-4405-8354-449BC6CDFD46}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{6F9455A8-866A-4405-8354-449BC6CDFD46}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{6F9455A8-866A-4405-8354-449BC6CDFD46}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x64
+		{7C77A471-0334-49DF-ABE5-B1799428B8AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{7C77A471-0334-49DF-ABE5-B1799428B8AC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{7C77A471-0334-49DF-ABE5-B1799428B8AC}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{7C77A471-0334-49DF-ABE5-B1799428B8AC}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{7C77A471-0334-49DF-ABE5-B1799428B8AC}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{7C77A471-0334-49DF-ABE5-B1799428B8AC}.Debug|x64.ActiveCfg = Debug|x64
+		{7C77A471-0334-49DF-ABE5-B1799428B8AC}.Debug|x64.Build.0 = Debug|x64
+		{7C77A471-0334-49DF-ABE5-B1799428B8AC}.Debug|x86.ActiveCfg = Debug|x64
+		{7C77A471-0334-49DF-ABE5-B1799428B8AC}.DebugNet20|Any CPU.ActiveCfg = Debug|Any CPU
+		{7C77A471-0334-49DF-ABE5-B1799428B8AC}.DebugNet20|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{7C77A471-0334-49DF-ABE5-B1799428B8AC}.DebugNet20|Mixed Platforms.Build.0 = Debug|Any CPU
+		{7C77A471-0334-49DF-ABE5-B1799428B8AC}.DebugNet20|Win32.ActiveCfg = Debug|Any CPU
+		{7C77A471-0334-49DF-ABE5-B1799428B8AC}.DebugNet20|x64.ActiveCfg = Debug|x64
+		{7C77A471-0334-49DF-ABE5-B1799428B8AC}.DebugNet20|x64.Build.0 = Debug|x64
+		{7C77A471-0334-49DF-ABE5-B1799428B8AC}.DebugNet20|x86.ActiveCfg = Debug|x64
+		{7C77A471-0334-49DF-ABE5-B1799428B8AC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{7C77A471-0334-49DF-ABE5-B1799428B8AC}.Release|Any CPU.Build.0 = Release|Any CPU
+		{7C77A471-0334-49DF-ABE5-B1799428B8AC}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{7C77A471-0334-49DF-ABE5-B1799428B8AC}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{7C77A471-0334-49DF-ABE5-B1799428B8AC}.Release|Win32.ActiveCfg = Release|Any CPU
+		{7C77A471-0334-49DF-ABE5-B1799428B8AC}.Release|x64.ActiveCfg = Release|x64
+		{7C77A471-0334-49DF-ABE5-B1799428B8AC}.Release|x64.Build.0 = Release|x64
+		{7C77A471-0334-49DF-ABE5-B1799428B8AC}.Release|x86.ActiveCfg = Release|x64
+		{7C77A471-0334-49DF-ABE5-B1799428B8AC}.ReleaseNet20|Any CPU.ActiveCfg = Release|Any CPU
+		{7C77A471-0334-49DF-ABE5-B1799428B8AC}.ReleaseNet20|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{7C77A471-0334-49DF-ABE5-B1799428B8AC}.ReleaseNet20|Mixed Platforms.Build.0 = Release|Any CPU
+		{7C77A471-0334-49DF-ABE5-B1799428B8AC}.ReleaseNet20|Win32.ActiveCfg = Release|Any CPU
+		{7C77A471-0334-49DF-ABE5-B1799428B8AC}.ReleaseNet20|x64.ActiveCfg = Release|x64
+		{7C77A471-0334-49DF-ABE5-B1799428B8AC}.ReleaseNet20|x64.Build.0 = Release|x64
+		{7C77A471-0334-49DF-ABE5-B1799428B8AC}.ReleaseNet20|x86.ActiveCfg = Release|x64
+		{7C77A471-0334-49DF-ABE5-B1799428B8AC}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|Any CPU
+		{7C77A471-0334-49DF-ABE5-B1799428B8AC}.sanctionedBuildDebug|Any CPU.Build.0 = Debug|Any CPU
+		{7C77A471-0334-49DF-ABE5-B1799428B8AC}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{7C77A471-0334-49DF-ABE5-B1799428B8AC}.sanctionedBuildDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{7C77A471-0334-49DF-ABE5-B1799428B8AC}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|Any CPU
+		{7C77A471-0334-49DF-ABE5-B1799428B8AC}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{7C77A471-0334-49DF-ABE5-B1799428B8AC}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{7C77A471-0334-49DF-ABE5-B1799428B8AC}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x64
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.Debug|Any CPU.ActiveCfg = Debug|Win32
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.Debug|Win32.ActiveCfg = Debug|Win32
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.Debug|Win32.Build.0 = Debug|Win32
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.Debug|x64.ActiveCfg = Debug|x64
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.Debug|x64.Build.0 = Debug|x64
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.Debug|x86.ActiveCfg = Debug|x64
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.DebugNet20|Any CPU.ActiveCfg = Debug|Win32
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.DebugNet20|Mixed Platforms.ActiveCfg = Debug|Win32
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.DebugNet20|Mixed Platforms.Build.0 = Debug|Win32
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.DebugNet20|Win32.ActiveCfg = Debug|Win32
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.DebugNet20|x64.ActiveCfg = Debug|x64
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.DebugNet20|x64.Build.0 = Debug|x64
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.DebugNet20|x86.ActiveCfg = Debug|x64
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.Release|Any CPU.ActiveCfg = Release|Win32
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.Release|Mixed Platforms.Build.0 = Release|Win32
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.Release|Win32.ActiveCfg = Release|Win32
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.Release|Win32.Build.0 = Release|Win32
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.Release|x64.ActiveCfg = Release|x64
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.Release|x64.Build.0 = Release|x64
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.Release|x86.ActiveCfg = Release|x64
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.ReleaseNet20|Any CPU.ActiveCfg = Release|Win32
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.ReleaseNet20|Mixed Platforms.ActiveCfg = Release|Win32
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.ReleaseNet20|Mixed Platforms.Build.0 = Release|Win32
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.ReleaseNet20|Win32.ActiveCfg = Release|Win32
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.ReleaseNet20|x64.ActiveCfg = Release|x64
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.ReleaseNet20|x64.Build.0 = Release|x64
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.ReleaseNet20|x86.ActiveCfg = Release|x64
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|Win32
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|Win32
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.sanctionedBuildDebug|Mixed Platforms.Build.0 = Debug|Win32
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|Win32
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.sanctionedBuildDebug|Win32.Build.0 = Debug|Win32
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{9462282E-A3D8-4192-885C-891E778D9A3F}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x64
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.Debug|x64.ActiveCfg = Debug|x64
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.Debug|x64.Build.0 = Debug|x64
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.Debug|x86.ActiveCfg = Debug|x64
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.DebugNet20|Any CPU.ActiveCfg = Debug|Any CPU
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.DebugNet20|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.DebugNet20|Mixed Platforms.Build.0 = Debug|Any CPU
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.DebugNet20|Win32.ActiveCfg = Debug|Any CPU
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.DebugNet20|x64.ActiveCfg = Debug|x64
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.DebugNet20|x64.Build.0 = Debug|x64
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.DebugNet20|x86.ActiveCfg = Debug|x64
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.Release|Any CPU.Build.0 = Release|Any CPU
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.Release|Win32.ActiveCfg = Release|Any CPU
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.Release|x64.ActiveCfg = Release|x64
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.Release|x64.Build.0 = Release|x64
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.Release|x86.ActiveCfg = Release|x64
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.ReleaseNet20|Any CPU.ActiveCfg = Release|Any CPU
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.ReleaseNet20|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.ReleaseNet20|Mixed Platforms.Build.0 = Release|Any CPU
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.ReleaseNet20|Win32.ActiveCfg = Release|Any CPU
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.ReleaseNet20|x64.ActiveCfg = Release|x64
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.ReleaseNet20|x64.Build.0 = Release|x64
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.ReleaseNet20|x86.ActiveCfg = Release|x64
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|Any CPU
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.sanctionedBuildDebug|Any CPU.Build.0 = Debug|Any CPU
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.sanctionedBuildDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|Any CPU
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{1E0FB5D4-5792-4E98-BA2A-FAB7FD26C1B6}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x64
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.Debug|x64.ActiveCfg = Debug|x64
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.Debug|x64.Build.0 = Debug|x64
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.Debug|x86.ActiveCfg = Debug|x64
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.DebugNet20|Any CPU.ActiveCfg = Debug|Any CPU
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.DebugNet20|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.DebugNet20|Mixed Platforms.Build.0 = Debug|Any CPU
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.DebugNet20|Win32.ActiveCfg = Debug|Any CPU
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.DebugNet20|x64.ActiveCfg = Debug|x64
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.DebugNet20|x64.Build.0 = Debug|x64
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.DebugNet20|x86.ActiveCfg = Debug|x64
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.Release|Any CPU.Build.0 = Release|Any CPU
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.Release|Win32.ActiveCfg = Release|Any CPU
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.Release|x64.ActiveCfg = Release|x64
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.Release|x64.Build.0 = Release|x64
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.Release|x86.ActiveCfg = Release|x64
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.ReleaseNet20|Any CPU.ActiveCfg = Release|Any CPU
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.ReleaseNet20|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.ReleaseNet20|Mixed Platforms.Build.0 = Release|Any CPU
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.ReleaseNet20|Win32.ActiveCfg = Release|Any CPU
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.ReleaseNet20|x64.ActiveCfg = Release|x64
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.ReleaseNet20|x64.Build.0 = Release|x64
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.ReleaseNet20|x86.ActiveCfg = Release|x64
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|Any CPU
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.sanctionedBuildDebug|Any CPU.Build.0 = Debug|Any CPU
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.sanctionedBuildDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|Any CPU
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{CC86BCBD-04DB-4151-8705-9EB8FB1FCA47}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180AB9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AB9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AB9}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AB9}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AB9}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AB9}.Debug|x64.ActiveCfg = Debug|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180AB9}.Debug|x64.Build.0 = Debug|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180AB9}.Debug|x86.ActiveCfg = Debug|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180AB9}.DebugNet20|Any CPU.ActiveCfg = Debug|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AB9}.DebugNet20|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AB9}.DebugNet20|Mixed Platforms.Build.0 = Debug|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AB9}.DebugNet20|Win32.ActiveCfg = Debug|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AB9}.DebugNet20|x64.ActiveCfg = Debug|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180AB9}.DebugNet20|x64.Build.0 = Debug|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180AB9}.DebugNet20|x86.ActiveCfg = Debug|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180AB9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AB9}.Release|Any CPU.Build.0 = Release|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AB9}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AB9}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AB9}.Release|Win32.ActiveCfg = Release|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AB9}.Release|x64.ActiveCfg = Release|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180AB9}.Release|x64.Build.0 = Release|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180AB9}.Release|x86.ActiveCfg = Release|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180AB9}.ReleaseNet20|Any CPU.ActiveCfg = Release|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AB9}.ReleaseNet20|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AB9}.ReleaseNet20|Mixed Platforms.Build.0 = Release|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AB9}.ReleaseNet20|Win32.ActiveCfg = Release|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AB9}.ReleaseNet20|x64.ActiveCfg = Release|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180AB9}.ReleaseNet20|x64.Build.0 = Release|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180AB9}.ReleaseNet20|x86.ActiveCfg = Release|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180AB9}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AB9}.sanctionedBuildDebug|Any CPU.Build.0 = Debug|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AB9}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AB9}.sanctionedBuildDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AB9}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AB9}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180AB9}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180AB9}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180AA9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AA9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AA9}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AA9}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AA9}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AA9}.Debug|x64.ActiveCfg = Debug|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180AA9}.Debug|x64.Build.0 = Debug|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180AA9}.Debug|x86.ActiveCfg = Debug|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180AA9}.DebugNet20|Any CPU.ActiveCfg = Debug|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AA9}.DebugNet20|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AA9}.DebugNet20|Mixed Platforms.Build.0 = Debug|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AA9}.DebugNet20|Win32.ActiveCfg = Debug|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AA9}.DebugNet20|x64.ActiveCfg = Debug|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180AA9}.DebugNet20|x64.Build.0 = Debug|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180AA9}.DebugNet20|x86.ActiveCfg = Debug|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180AA9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AA9}.Release|Any CPU.Build.0 = Release|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AA9}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AA9}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AA9}.Release|Win32.ActiveCfg = Release|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AA9}.Release|x64.ActiveCfg = Release|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180AA9}.Release|x64.Build.0 = Release|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180AA9}.Release|x86.ActiveCfg = Release|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180AA9}.ReleaseNet20|Any CPU.ActiveCfg = Release|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AA9}.ReleaseNet20|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AA9}.ReleaseNet20|Mixed Platforms.Build.0 = Release|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AA9}.ReleaseNet20|Win32.ActiveCfg = Release|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AA9}.ReleaseNet20|x64.ActiveCfg = Release|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180AA9}.ReleaseNet20|x64.Build.0 = Release|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180AA9}.ReleaseNet20|x86.ActiveCfg = Release|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180AA9}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AA9}.sanctionedBuildDebug|Any CPU.Build.0 = Debug|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AA9}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AA9}.sanctionedBuildDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AA9}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180AA9}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180AA9}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180AA9}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180BA9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180BA9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180BA9}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180BA9}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180BA9}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180BA9}.Debug|x64.ActiveCfg = Debug|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180BA9}.Debug|x64.Build.0 = Debug|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180BA9}.Debug|x86.ActiveCfg = Debug|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180BA9}.DebugNet20|Any CPU.ActiveCfg = Debug|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180BA9}.DebugNet20|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180BA9}.DebugNet20|Mixed Platforms.Build.0 = Debug|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180BA9}.DebugNet20|Win32.ActiveCfg = Debug|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180BA9}.DebugNet20|x64.ActiveCfg = Debug|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180BA9}.DebugNet20|x64.Build.0 = Debug|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180BA9}.DebugNet20|x86.ActiveCfg = Debug|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180BA9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180BA9}.Release|Any CPU.Build.0 = Release|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180BA9}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180BA9}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180BA9}.Release|Win32.ActiveCfg = Release|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180BA9}.Release|x64.ActiveCfg = Release|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180BA9}.Release|x64.Build.0 = Release|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180BA9}.Release|x86.ActiveCfg = Release|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180BA9}.ReleaseNet20|Any CPU.ActiveCfg = Release|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180BA9}.ReleaseNet20|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180BA9}.ReleaseNet20|Mixed Platforms.Build.0 = Release|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180BA9}.ReleaseNet20|Win32.ActiveCfg = Release|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180BA9}.ReleaseNet20|x64.ActiveCfg = Release|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180BA9}.ReleaseNet20|x64.Build.0 = Release|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180BA9}.ReleaseNet20|x86.ActiveCfg = Release|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180BA9}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180BA9}.sanctionedBuildDebug|Any CPU.Build.0 = Debug|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180BA9}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180BA9}.sanctionedBuildDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180BA9}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|Any CPU
+		{D8F67104-CDDE-433F-A8EE-470A92180BA9}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180BA9}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{D8F67104-CDDE-433F-A8EE-470A92180BA9}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x64
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.Debug|x64.ActiveCfg = Debug|x64
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.Debug|x64.Build.0 = Debug|x64
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.Debug|x86.ActiveCfg = Debug|x64
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.DebugNet20|Any CPU.ActiveCfg = Debug|Any CPU
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.DebugNet20|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.DebugNet20|Mixed Platforms.Build.0 = Debug|Any CPU
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.DebugNet20|Win32.ActiveCfg = Debug|Any CPU
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.DebugNet20|x64.ActiveCfg = Debug|x64
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.DebugNet20|x64.Build.0 = Debug|x64
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.DebugNet20|x86.ActiveCfg = Debug|x64
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.Release|Any CPU.Build.0 = Release|Any CPU
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.Release|Win32.ActiveCfg = Release|Any CPU
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.Release|x64.ActiveCfg = Release|x64
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.Release|x64.Build.0 = Release|x64
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.Release|x86.ActiveCfg = Release|x64
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.ReleaseNet20|Any CPU.ActiveCfg = Release|Any CPU
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.ReleaseNet20|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.ReleaseNet20|Mixed Platforms.Build.0 = Release|Any CPU
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.ReleaseNet20|Win32.ActiveCfg = Release|Any CPU
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.ReleaseNet20|x64.ActiveCfg = Release|x64
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.ReleaseNet20|x64.Build.0 = Release|x64
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.ReleaseNet20|x86.ActiveCfg = Release|x64
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|Any CPU
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.sanctionedBuildDebug|Any CPU.Build.0 = Debug|Any CPU
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.sanctionedBuildDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|Any CPU
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{1B99F0C4-B241-45C7-BFAF-2009D0664901}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x64
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.Debug|x64.ActiveCfg = Debug|x64
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.Debug|x64.Build.0 = Debug|x64
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.Debug|x86.ActiveCfg = Debug|x64
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.DebugNet20|Any CPU.ActiveCfg = Debug|Any CPU
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.DebugNet20|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.DebugNet20|Mixed Platforms.Build.0 = Debug|Any CPU
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.DebugNet20|Win32.ActiveCfg = Debug|Any CPU
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.DebugNet20|x64.ActiveCfg = Debug|x64
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.DebugNet20|x64.Build.0 = Debug|x64
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.DebugNet20|x86.ActiveCfg = Debug|x64
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.Release|Any CPU.Build.0 = Release|Any CPU
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.Release|Win32.ActiveCfg = Release|Any CPU
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.Release|x64.ActiveCfg = Release|x64
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.Release|x64.Build.0 = Release|x64
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.Release|x86.ActiveCfg = Release|x64
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.ReleaseNet20|Any CPU.ActiveCfg = Release|Any CPU
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.ReleaseNet20|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.ReleaseNet20|Mixed Platforms.Build.0 = Release|Any CPU
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.ReleaseNet20|Win32.ActiveCfg = Release|Any CPU
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.ReleaseNet20|x64.ActiveCfg = Release|x64
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.ReleaseNet20|x64.Build.0 = Release|x64
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.ReleaseNet20|x86.ActiveCfg = Release|x64
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|Any CPU
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.sanctionedBuildDebug|Any CPU.Build.0 = Debug|Any CPU
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.sanctionedBuildDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|Any CPU
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{29CFC13C-1D6C-4FE8-B56E-A5E7BA7F849F}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x64
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.Debug|Any CPU.ActiveCfg = Debug|Win32
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.Debug|Win32.ActiveCfg = Debug|Win32
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.Debug|Win32.Build.0 = Debug|Win32
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.Debug|x64.ActiveCfg = Debug|x64
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.Debug|x64.Build.0 = Debug|x64
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.Debug|x86.ActiveCfg = Debug|x64
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.DebugNet20|Any CPU.ActiveCfg = Debug|Win32
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.DebugNet20|Mixed Platforms.ActiveCfg = Debug|Win32
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.DebugNet20|Mixed Platforms.Build.0 = Debug|Win32
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.DebugNet20|Win32.ActiveCfg = Debug|Win32
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.DebugNet20|x64.ActiveCfg = Debug|x64
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.DebugNet20|x64.Build.0 = Debug|x64
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.DebugNet20|x86.ActiveCfg = Debug|x64
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.Release|Any CPU.ActiveCfg = Release|Win32
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.Release|Mixed Platforms.Build.0 = Release|Win32
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.Release|Win32.ActiveCfg = Release|Win32
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.Release|Win32.Build.0 = Release|Win32
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.Release|x64.ActiveCfg = Release|x64
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.Release|x64.Build.0 = Release|x64
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.Release|x86.ActiveCfg = Release|x64
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.ReleaseNet20|Any CPU.ActiveCfg = Release|Win32
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.ReleaseNet20|Mixed Platforms.ActiveCfg = Release|Win32
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.ReleaseNet20|Mixed Platforms.Build.0 = Release|Win32
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.ReleaseNet20|Win32.ActiveCfg = Release|Win32
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.ReleaseNet20|x64.ActiveCfg = Release|x64
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.ReleaseNet20|x64.Build.0 = Release|x64
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.ReleaseNet20|x86.ActiveCfg = Release|x64
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|Win32
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|Win32
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.sanctionedBuildDebug|Mixed Platforms.Build.0 = Debug|Win32
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|Win32
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.sanctionedBuildDebug|Win32.Build.0 = Debug|Win32
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{028E234C-10E7-401F-9A35-0EF3BED05E65}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x64
+		{64BE2358-E700-4909-8665-8B10E2626691}.Debug|Any CPU.ActiveCfg = Debug|Win32
+		{64BE2358-E700-4909-8665-8B10E2626691}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+		{64BE2358-E700-4909-8665-8B10E2626691}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+		{64BE2358-E700-4909-8665-8B10E2626691}.Debug|Win32.ActiveCfg = Debug|Win32
+		{64BE2358-E700-4909-8665-8B10E2626691}.Debug|Win32.Build.0 = Debug|Win32
+		{64BE2358-E700-4909-8665-8B10E2626691}.Debug|x64.ActiveCfg = Debug|x64
+		{64BE2358-E700-4909-8665-8B10E2626691}.Debug|x64.Build.0 = Debug|x64
+		{64BE2358-E700-4909-8665-8B10E2626691}.Debug|x86.ActiveCfg = Debug|x64
+		{64BE2358-E700-4909-8665-8B10E2626691}.DebugNet20|Any CPU.ActiveCfg = Debug|Win32
+		{64BE2358-E700-4909-8665-8B10E2626691}.DebugNet20|Mixed Platforms.ActiveCfg = DebugNet20|Win32
+		{64BE2358-E700-4909-8665-8B10E2626691}.DebugNet20|Mixed Platforms.Build.0 = DebugNet20|Win32
+		{64BE2358-E700-4909-8665-8B10E2626691}.DebugNet20|Win32.ActiveCfg = Debug|Win32
+		{64BE2358-E700-4909-8665-8B10E2626691}.DebugNet20|x64.ActiveCfg = DebugNet20|x64
+		{64BE2358-E700-4909-8665-8B10E2626691}.DebugNet20|x64.Build.0 = DebugNet20|x64
+		{64BE2358-E700-4909-8665-8B10E2626691}.DebugNet20|x86.ActiveCfg = Debug|x64
+		{64BE2358-E700-4909-8665-8B10E2626691}.Release|Any CPU.ActiveCfg = Release|Win32
+		{64BE2358-E700-4909-8665-8B10E2626691}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+		{64BE2358-E700-4909-8665-8B10E2626691}.Release|Mixed Platforms.Build.0 = Release|Win32
+		{64BE2358-E700-4909-8665-8B10E2626691}.Release|Win32.ActiveCfg = Release|Win32
+		{64BE2358-E700-4909-8665-8B10E2626691}.Release|Win32.Build.0 = Release|Win32
+		{64BE2358-E700-4909-8665-8B10E2626691}.Release|x64.ActiveCfg = Release|x64
+		{64BE2358-E700-4909-8665-8B10E2626691}.Release|x64.Build.0 = Release|x64
+		{64BE2358-E700-4909-8665-8B10E2626691}.Release|x86.ActiveCfg = Release|x64
+		{64BE2358-E700-4909-8665-8B10E2626691}.ReleaseNet20|Any CPU.ActiveCfg = Release|Win32
+		{64BE2358-E700-4909-8665-8B10E2626691}.ReleaseNet20|Mixed Platforms.ActiveCfg = ReleaseNet20|Win32
+		{64BE2358-E700-4909-8665-8B10E2626691}.ReleaseNet20|Mixed Platforms.Build.0 = ReleaseNet20|Win32
+		{64BE2358-E700-4909-8665-8B10E2626691}.ReleaseNet20|Win32.ActiveCfg = Release|Win32
+		{64BE2358-E700-4909-8665-8B10E2626691}.ReleaseNet20|x64.ActiveCfg = ReleaseNet20|x64
+		{64BE2358-E700-4909-8665-8B10E2626691}.ReleaseNet20|x64.Build.0 = ReleaseNet20|x64
+		{64BE2358-E700-4909-8665-8B10E2626691}.ReleaseNet20|x86.ActiveCfg = Release|x64
+		{64BE2358-E700-4909-8665-8B10E2626691}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|x64
+		{64BE2358-E700-4909-8665-8B10E2626691}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|Win32
+		{64BE2358-E700-4909-8665-8B10E2626691}.sanctionedBuildDebug|Mixed Platforms.Build.0 = Debug|Win32
+		{64BE2358-E700-4909-8665-8B10E2626691}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|Win32
+		{64BE2358-E700-4909-8665-8B10E2626691}.sanctionedBuildDebug|Win32.Build.0 = Debug|Win32
+		{64BE2358-E700-4909-8665-8B10E2626691}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{64BE2358-E700-4909-8665-8B10E2626691}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{64BE2358-E700-4909-8665-8B10E2626691}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x64
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.Debug|x64.ActiveCfg = Debug|x64
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.Debug|x64.Build.0 = Debug|x64
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.Debug|x86.ActiveCfg = Debug|x86
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.Debug|x86.Build.0 = Debug|x86
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.DebugNet20|Any CPU.ActiveCfg = Debug|Any CPU
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.DebugNet20|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.DebugNet20|Mixed Platforms.Build.0 = Debug|Any CPU
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.DebugNet20|Win32.ActiveCfg = Debug|Any CPU
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.DebugNet20|x64.ActiveCfg = Debug|x64
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.DebugNet20|x64.Build.0 = Debug|x64
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.DebugNet20|x86.ActiveCfg = Debug|x86
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.Release|Any CPU.Build.0 = Release|Any CPU
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.Release|Win32.ActiveCfg = Release|Any CPU
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.Release|x64.ActiveCfg = Release|x64
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.Release|x64.Build.0 = Release|x64
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.Release|x86.ActiveCfg = Release|x86
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.Release|x86.Build.0 = Release|x86
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.ReleaseNet20|Any CPU.ActiveCfg = Release|Any CPU
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.ReleaseNet20|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.ReleaseNet20|Mixed Platforms.Build.0 = Release|Any CPU
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.ReleaseNet20|Win32.ActiveCfg = Release|Any CPU
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.ReleaseNet20|x64.ActiveCfg = Release|x64
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.ReleaseNet20|x64.Build.0 = Release|x64
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.ReleaseNet20|x86.ActiveCfg = Release|x86
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|Any CPU
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.sanctionedBuildDebug|Any CPU.Build.0 = Debug|Any CPU
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.sanctionedBuildDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|x64
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x86
+		{9D51841C-4400-4BB4-95C9-15A8E6C14B38}.sanctionedBuildDebug|x86.Build.0 = Debug|x86
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.Debug|Mixed Platforms.Build.0 = Debug|x86
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.Debug|Win32.ActiveCfg = Debug|x86
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.Debug|x64.ActiveCfg = Debug|x64
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.Debug|x64.Build.0 = Debug|x64
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.Debug|x86.ActiveCfg = Debug|x86
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.Debug|x86.Build.0 = Debug|x86
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.DebugNet20|Any CPU.ActiveCfg = Debug|Any CPU
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.DebugNet20|Mixed Platforms.ActiveCfg = Debug|x86
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.DebugNet20|Mixed Platforms.Build.0 = Debug|x86
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.DebugNet20|Win32.ActiveCfg = Debug|x86
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.DebugNet20|x64.ActiveCfg = Debug|x64
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.DebugNet20|x64.Build.0 = Debug|x64
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.DebugNet20|x86.ActiveCfg = Debug|x86
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.Release|Any CPU.Build.0 = Release|Any CPU
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.Release|Mixed Platforms.ActiveCfg = Release|x86
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.Release|Mixed Platforms.Build.0 = Release|x86
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.Release|Win32.ActiveCfg = Release|x86
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.Release|x64.ActiveCfg = Release|x64
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.Release|x64.Build.0 = Release|x64
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.Release|x86.ActiveCfg = Release|x86
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.Release|x86.Build.0 = Release|x86
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.ReleaseNet20|Any CPU.ActiveCfg = Release|Any CPU
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.ReleaseNet20|Mixed Platforms.ActiveCfg = Release|x86
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.ReleaseNet20|Mixed Platforms.Build.0 = Release|x86
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.ReleaseNet20|Win32.ActiveCfg = Release|x86
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.ReleaseNet20|x64.ActiveCfg = Release|x64
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.ReleaseNet20|x64.Build.0 = Release|x64
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.ReleaseNet20|x86.ActiveCfg = Release|x86
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.sanctionedBuildDebug|Any CPU.ActiveCfg = Debug|Any CPU
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.sanctionedBuildDebug|Any CPU.Build.0 = Debug|Any CPU
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.sanctionedBuildDebug|Mixed Platforms.ActiveCfg = Debug|x86
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.sanctionedBuildDebug|Mixed Platforms.Build.0 = Debug|x86
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.sanctionedBuildDebug|Win32.ActiveCfg = Debug|x86
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.sanctionedBuildDebug|x64.ActiveCfg = Debug|x64
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.sanctionedBuildDebug|x64.Build.0 = Debug|x64
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.sanctionedBuildDebug|x86.ActiveCfg = Debug|x86
+		{0DDB5AAF-C707-4F65-9000-659A24504D36}.sanctionedBuildDebug|x86.Build.0 = Debug|x86
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.Debug|x64.ActiveCfg = Debug|x64
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.Debug|x64.Build.0 = Debug|x64
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.Debug|x86.ActiveCfg = Debug|x64
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.DebugNet20|Any CPU.ActiveCfg = Debug|Any CPU
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.DebugNet20|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.DebugNet20|Mixed Platforms.Build.0 = Debug|Any CPU
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.DebugNet20|Win32.ActiveCfg = Debug|Any CPU
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.DebugNet20|x64.ActiveCfg = Debug|x64
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.DebugNet20|x64.Build.0 = Debug|x64
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.DebugNet20|x86.ActiveCfg = Debug|x64
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.Release|Any CPU.Build.0 = Release|Any CPU
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.Release|Win32.ActiveCfg = Release|Any CPU
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.Release|x64.ActiveCfg = Release|x64
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.Release|x64.Build.0 = Release|x64
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.Release|x86.ActiveCfg = Release|x64
+		{E69BE55D-1BCF-4958-93F0-D1F00C2BA2DE}.ReleaseNet20|Any CPU.ActiveCfg = Release|Any CPU
+		{E69BE55D-

<TRUNCATED>


[06/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CacheFactoryMN.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CacheFactoryMN.cpp b/geode-client-native/src/clicache/com/vmware/CacheFactoryMN.cpp
new file mode 100644
index 0000000..d184d44
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CacheFactoryMN.cpp
@@ -0,0 +1,474 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+//#include "gf_includesN.hpp"
+
+#include "ExceptionTypesMN.hpp"
+
+#include "CacheFactoryMN.hpp"
+#include "CacheMN.hpp"
+#include "CacheAttributesMN.hpp"
+#include "DistributedSystemMN.hpp"
+#include "SystemPropertiesMN.hpp"
+#include "impl/SafeConvertN.hpp"
+#include "impl/PdxTypeRegistry.hpp"
+//#pragma warning(disable:4091)
+//#include <msclr/lock.h>
+//#pragma warning(disable:4091)
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      namespace Generic
+      {
+      CacheFactory^ CacheFactory::CreateCacheFactory()
+      {
+        return CacheFactory::CreateCacheFactory(Properties<String^, String^>::Create<String^, String^>());
+      }
+
+      CacheFactory^ CacheFactory::CreateCacheFactory(Properties<String^, String^>^ dsProps)
+      {
+        _GF_MG_EXCEPTION_TRY2
+
+           gemfire::PropertiesPtr nativepropsptr(
+            GetNativePtr<gemfire::Properties>(dsProps));
+
+          gemfire::CacheFactoryPtr& nativeptr( gemfire::CacheFactory::createCacheFactory( nativepropsptr) );         
+          if (nativeptr.ptr() != nullptr)
+            return gcnew CacheFactory( nativeptr.ptr(), dsProps );
+            
+          return nullptr;
+
+        _GF_MG_EXCEPTION_CATCH_ALL2        
+      }
+
+      Cache^ CacheFactory::Create()
+      {
+				bool pdxIgnoreUnreadFields = false;
+        bool pdxReadSerialized = false;
+				bool appDomainEnable = false; 
+        _GF_MG_EXCEPTION_TRY2
+          //msclr::lock lockInstance(m_singletonSync);
+          DistributedSystem::acquireDisconnectLock();
+    
+          if(!m_connected)
+          {
+             gemfire::PropertiesPtr nativepropsptr(
+               GetNativePtr<gemfire::Properties>(m_dsProps));
+            DistributedSystem::AppDomainInstanceInitialization(nativepropsptr);                  
+          }
+
+          gemfire::CachePtr& nativeptr( NativePtr->create( ) );
+					pdxIgnoreUnreadFields = nativeptr->getPdxIgnoreUnreadFields();
+          pdxReadSerialized = nativeptr->getPdxReadSerialized();
+
+          appDomainEnable = DistributedSystem::SystemProperties->AppDomainEnabled;
+          Log::SetLogLevel(static_cast<LogLevel>(gemfire::Log::logLevel( )));
+					//TODO::split
+          SafeConvertClassGeneric::SetAppDomainEnabled(appDomainEnable);
+
+            Serializable::RegisterTypeGeneric(
+              gemfire::GemfireTypeIds::PdxType,
+              gcnew TypeFactoryMethodGeneric(GemStone::GemFire::Cache::Generic::Internal::PdxType::CreateDeserializable),
+              nullptr);
+
+           if(!m_connected)
+           {
+             //it registers types in unmanage layer, so should be once only 
+             DistributedSystem::ManagedPostConnect();
+             DistributedSystem::AppDomainInstancePostInitialization();
+             DistributedSystem::connectInstance();
+           }
+          
+           m_connected = true;
+           
+           return Cache::Create( nativeptr.ptr( ) );
+        _GF_MG_EXCEPTION_CATCH_ALL2
+          finally {
+            DistributedSystem::registerCliCallback();
+						Serializable::RegisterPDXManagedCacheableKey(appDomainEnable);
+					GemStone::GemFire::Cache::Generic::Internal::PdxTypeRegistry::PdxIgnoreUnreadFields = pdxIgnoreUnreadFields; 
+          GemStone::GemFire::Cache::Generic::Internal::PdxTypeRegistry::PdxReadSerialized = pdxReadSerialized; 
+          DistributedSystem::releaseDisconnectLock();
+        }
+      }
+
+      Cache^ CacheFactory::Create( String^ name, DistributedSystem^ system )
+      {
+        _GF_MG_EXCEPTION_TRY2
+
+          ManagedString mg_name( name );
+          gemfire::DistributedSystemPtr systemptr(
+            GetNativePtr<gemfire::DistributedSystem>( system ) );
+
+          gemfire::CachePtr& nativeptr( gemfire::CacheFactory::create(
+            mg_name.CharPtr, systemptr ) );
+          return Cache::Create( nativeptr.ptr( ) );
+
+        _GF_MG_EXCEPTION_CATCH_ALL2
+      }
+
+      Cache^ CacheFactory::Create( String^ name, DistributedSystem^ system,
+        String^ cacheXml )
+      {
+        _GF_MG_EXCEPTION_TRY2
+
+          ManagedString mg_name( name );
+          gemfire::DistributedSystemPtr systemptr(
+            GetNativePtr<gemfire::DistributedSystem>( system ) );
+          ManagedString mg_cacheXml( cacheXml );
+
+          gemfire::CachePtr& nativeptr( gemfire::CacheFactory::create(
+            mg_name.CharPtr, systemptr, mg_cacheXml.CharPtr ) );
+          return Cache::Create( nativeptr.ptr( ) );
+
+        _GF_MG_EXCEPTION_CATCH_ALL2
+      }
+
+      Cache^ CacheFactory::Create( String^ name, DistributedSystem^ system,
+        CacheAttributes^ attributes )
+      {
+        _GF_MG_EXCEPTION_TRY2
+
+          ManagedString mg_name( name );
+          gemfire::DistributedSystemPtr systemptr(
+            GetNativePtr<gemfire::DistributedSystem>( system ) );
+          gemfire::CacheAttributesPtr attrsPtr(
+            GetNativePtr<gemfire::CacheAttributes>(attributes));
+
+          gemfire::CachePtr& nativeptr( gemfire::CacheFactory::create(
+            mg_name.CharPtr, systemptr, attrsPtr ) );
+          return Cache::Create( nativeptr.ptr( ) );
+
+        _GF_MG_EXCEPTION_CATCH_ALL2
+      }
+
+      Cache^ CacheFactory::Create( String^ name, DistributedSystem^ system,
+        String^ cacheXml, CacheAttributes^ attributes )
+      {
+        _GF_MG_EXCEPTION_TRY2
+
+          ManagedString mg_name( name );
+          gemfire::DistributedSystemPtr systemptr(
+            GetNativePtr<gemfire::DistributedSystem>( system ) );
+          ManagedString mg_cacheXml( cacheXml );
+          gemfire::CacheAttributesPtr attrsPtr(
+            GetNativePtr<gemfire::CacheAttributes>(attributes));
+
+          gemfire::CachePtr& nativeptr( gemfire::CacheFactory::create(
+            mg_name.CharPtr, systemptr, mg_cacheXml.CharPtr, attrsPtr ) );
+          return Cache::Create( nativeptr.ptr( ) );
+
+        _GF_MG_EXCEPTION_CATCH_ALL2
+      }
+
+      Cache^ CacheFactory::GetInstance( DistributedSystem^ system )
+      {
+        _GF_MG_EXCEPTION_TRY2
+
+          gemfire::DistributedSystemPtr p_system(
+            GetNativePtr<gemfire::DistributedSystem>( system ) );
+          gemfire::CachePtr& nativeptr(
+            gemfire::CacheFactory::getInstance( p_system ) );
+
+          return Cache::Create( nativeptr.ptr( ) );
+
+        _GF_MG_EXCEPTION_CATCH_ALL2
+      }
+
+      Cache^ CacheFactory::GetInstanceCloseOk( DistributedSystem^ system )
+      {
+        _GF_MG_EXCEPTION_TRY2
+
+          gemfire::DistributedSystemPtr p_system(
+            GetNativePtr<gemfire::DistributedSystem>( system ) );
+          gemfire::CachePtr& nativeptr(
+            gemfire::CacheFactory::getInstanceCloseOk( p_system ) );
+
+          return Cache::Create( nativeptr.ptr( ) );
+
+        _GF_MG_EXCEPTION_CATCH_ALL2
+      }
+
+      Cache^ CacheFactory::GetAnyInstance( )
+      {
+        _GF_MG_EXCEPTION_TRY2
+
+          gemfire::CachePtr& nativeptr(
+            gemfire::CacheFactory::getAnyInstance( ) );
+          return Cache::Create( nativeptr.ptr( ) );
+
+        _GF_MG_EXCEPTION_CATCH_ALL2
+      }
+
+      String^ CacheFactory::Version::get( )
+      {
+        return ManagedString::Get( gemfire::CacheFactory::getVersion( ) );
+      }
+
+      String^ CacheFactory::ProductDescription::get( )
+      {
+        return ManagedString::Get(
+          gemfire::CacheFactory::getProductDescription( ) );
+      }
+
+
+      CacheFactory^ CacheFactory::SetFreeConnectionTimeout( Int32 connectionTimeout )
+		  {
+			  _GF_MG_EXCEPTION_TRY2
+
+			  NativePtr->setFreeConnectionTimeout( connectionTimeout );
+
+        return this;
+
+			  _GF_MG_EXCEPTION_CATCH_ALL2
+		  }
+
+		  CacheFactory^ CacheFactory::SetLoadConditioningInterval( Int32 loadConditioningInterval )
+		  {
+			  _GF_MG_EXCEPTION_TRY2
+
+			  NativePtr->setLoadConditioningInterval( loadConditioningInterval );
+        return this;
+
+			  _GF_MG_EXCEPTION_CATCH_ALL2
+		  }
+
+		  CacheFactory^ CacheFactory::SetSocketBufferSize( Int32 bufferSize )
+      {
+			  _GF_MG_EXCEPTION_TRY2
+
+          NativePtr->setSocketBufferSize( bufferSize );
+          return this;
+
+			  _GF_MG_EXCEPTION_CATCH_ALL2
+		  }
+
+		  CacheFactory^ CacheFactory::SetReadTimeout( Int32 timeout )
+      {
+			  _GF_MG_EXCEPTION_TRY2
+
+          NativePtr->setReadTimeout( timeout );
+          return this;
+
+			  _GF_MG_EXCEPTION_CATCH_ALL2
+		  }
+
+		  CacheFactory^ CacheFactory::SetMinConnections( Int32 minConnections )
+      {
+			  _GF_MG_EXCEPTION_TRY2
+
+          NativePtr->setMinConnections( minConnections );
+          return this;
+
+			  _GF_MG_EXCEPTION_CATCH_ALL2
+		  }
+
+		  CacheFactory^ CacheFactory::SetMaxConnections( Int32 maxConnections )
+      {
+			  _GF_MG_EXCEPTION_TRY2
+
+          NativePtr->setMaxConnections( maxConnections );
+          return this;
+
+			  _GF_MG_EXCEPTION_CATCH_ALL2
+		  }
+
+		  CacheFactory^ CacheFactory::SetIdleTimeout( Int32 idleTimeout )
+      {
+			  _GF_MG_EXCEPTION_TRY2
+
+          NativePtr->setIdleTimeout( idleTimeout );
+          return this;
+
+			  _GF_MG_EXCEPTION_CATCH_ALL2
+		  }
+
+		  CacheFactory^ CacheFactory::SetRetryAttempts( Int32 retryAttempts )
+      {
+			  _GF_MG_EXCEPTION_TRY2
+
+			  NativePtr->setRetryAttempts( retryAttempts );
+        return this;
+
+			  _GF_MG_EXCEPTION_CATCH_ALL2
+		  }
+
+		  CacheFactory^ CacheFactory::SetPingInterval( Int32 pingInterval )
+      {
+			  _GF_MG_EXCEPTION_TRY2
+
+          NativePtr->setPingInterval( pingInterval );
+          return this;
+
+			  _GF_MG_EXCEPTION_CATCH_ALL2
+		  }
+
+      CacheFactory^ CacheFactory::SetUpdateLocatorListInterval( Int32 updateLocatorListInterval )
+      {
+			  _GF_MG_EXCEPTION_TRY2
+
+          NativePtr->setUpdateLocatorListInterval( updateLocatorListInterval );
+          return this;
+
+			  _GF_MG_EXCEPTION_CATCH_ALL2
+		  }
+
+      CacheFactory^ CacheFactory::SetStatisticInterval( Int32 statisticInterval )
+      {
+			  _GF_MG_EXCEPTION_TRY2
+
+          NativePtr->setStatisticInterval( statisticInterval );
+          return this;
+
+			  _GF_MG_EXCEPTION_CATCH_ALL2
+		  }
+
+      CacheFactory^ CacheFactory::SetServerGroup( String^ group )
+      {
+			  _GF_MG_EXCEPTION_TRY2
+
+        ManagedString mg_servergroup( group );
+        NativePtr->setServerGroup( mg_servergroup.CharPtr );
+        return this;
+
+			  _GF_MG_EXCEPTION_CATCH_ALL2
+		  }
+
+		  CacheFactory^ CacheFactory::AddLocator( String^ host, Int32 port )
+      {
+			  _GF_MG_EXCEPTION_TRY2
+
+        ManagedString mg_host( host );
+        NativePtr->addLocator( mg_host.CharPtr, port );
+        return this;
+
+			  _GF_MG_EXCEPTION_CATCH_ALL2
+		  }
+
+      CacheFactory^ CacheFactory::AddServer( String^ host, Int32 port )
+      {
+			  _GF_MG_EXCEPTION_TRY2
+
+			  ManagedString mg_host( host );
+        NativePtr->addServer( mg_host.CharPtr, port );
+        return this;
+
+			  _GF_MG_EXCEPTION_CATCH_ALL2
+		  }
+
+		  CacheFactory^ CacheFactory::SetSubscriptionEnabled( Boolean enabled )
+      {
+			  _GF_MG_EXCEPTION_TRY2
+
+			  NativePtr->setSubscriptionEnabled( enabled );
+        return this;
+
+			  _GF_MG_EXCEPTION_CATCH_ALL2
+		  }
+
+      CacheFactory^ CacheFactory::SetPRSingleHopEnabled( Boolean enabled )
+      {
+        _GF_MG_EXCEPTION_TRY2
+
+          NativePtr->setPRSingleHopEnabled(enabled);
+          return this;
+
+         _GF_MG_EXCEPTION_CATCH_ALL2
+      }
+
+		  CacheFactory^ CacheFactory::SetSubscriptionRedundancy( Int32 redundancy )
+      {
+			  _GF_MG_EXCEPTION_TRY2
+
+          NativePtr->setSubscriptionRedundancy( redundancy );
+          return this;
+
+			  _GF_MG_EXCEPTION_CATCH_ALL2
+		  }
+
+		  CacheFactory^ CacheFactory::SetSubscriptionMessageTrackingTimeout( Int32 messageTrackingTimeout )
+      {
+			  _GF_MG_EXCEPTION_TRY2
+
+          NativePtr->setSubscriptionMessageTrackingTimeout( messageTrackingTimeout );
+          return this;
+
+			  _GF_MG_EXCEPTION_CATCH_ALL2
+		  }
+
+		  CacheFactory^ CacheFactory::SetSubscriptionAckInterval( Int32 ackInterval )
+      {
+			  _GF_MG_EXCEPTION_TRY2
+
+          NativePtr->setSubscriptionAckInterval( ackInterval );
+          return this;
+
+			  _GF_MG_EXCEPTION_CATCH_ALL2
+		  }
+
+      CacheFactory^ CacheFactory::SetThreadLocalConnections( bool enabled )
+      {
+        _GF_MG_EXCEPTION_TRY2
+
+        NativePtr->setThreadLocalConnections( enabled );
+
+        _GF_MG_EXCEPTION_CATCH_ALL2
+
+        return this;
+      }
+
+      CacheFactory^ CacheFactory::SetMultiuserAuthentication( bool multiuserAuthentication )
+      {
+			  _GF_MG_EXCEPTION_TRY2
+
+          NativePtr->setMultiuserAuthentication( multiuserAuthentication );
+          return this;
+
+			  _GF_MG_EXCEPTION_CATCH_ALL2
+	   }
+
+			CacheFactory^ CacheFactory::SetPdxIgnoreUnreadFields(bool ignore)
+			{
+				_GF_MG_EXCEPTION_TRY2
+
+          NativePtr->setPdxIgnoreUnreadFields( ignore );
+          return this;
+
+			  _GF_MG_EXCEPTION_CATCH_ALL2
+			}
+
+      CacheFactory^ CacheFactory::SetPdxReadSerialized(bool pdxReadSerialized)
+      {
+        	_GF_MG_EXCEPTION_TRY2
+
+          NativePtr->setPdxReadSerialized( pdxReadSerialized );
+          return this;
+
+			  _GF_MG_EXCEPTION_CATCH_ALL2
+      }
+
+      CacheFactory^ CacheFactory::Set(String^ name, String^ value)
+      {
+        _GF_MG_EXCEPTION_TRY2
+          ManagedString mg_name( name );
+          ManagedString mg_value( value );
+          NativePtr->set( mg_name.CharPtr, mg_value.CharPtr );
+          return this;
+
+			  _GF_MG_EXCEPTION_CATCH_ALL2
+      }
+      } // end namespace Generic
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CacheFactoryMN.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CacheFactoryMN.hpp b/geode-client-native/src/clicache/com/vmware/CacheFactoryMN.hpp
new file mode 100644
index 0000000..18225df
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CacheFactoryMN.hpp
@@ -0,0 +1,731 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "../../gf_defs.hpp"
+#include "impl/NativeWrapperN.hpp"
+#include <cppcache/CacheFactory.hpp>
+#include "PropertiesMN.hpp"
+
+//using namespace System;
+using namespace System::Collections::Generic;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      namespace Generic
+      {
+      ref class Cache;
+      ref class CacheAttributes;
+      ref class DistributedSystem;
+
+      /// <summary>
+      /// A factory class that must be used to obtain instance of <see cref="Cache" />.
+      /// </summary>
+      /// <remarks>
+      /// To create a new cache instance, use <see cref="CacheFactory.CreateCacheFactory" />.
+      /// <para>
+      /// To get an existing unclosed cache instance, use <see cref="CacheFactory.GetInstance" />.
+      /// </para>
+      /// </remarks>
+      public ref class CacheFactory :public Internal::SBWrap<gemfire::CacheFactory>
+      {
+      public:
+
+        /// <summary>
+        /// A factory class that must be used to obtain instance of <see cref="Cache" />.
+        /// This should be called once. Using this one can set default values of <see cref="Pool" />.
+        /// </summary>
+        /// <param name="dsProps">Properties which are applicable at client level.</param>
+			//	static CacheFactory^ CreateCacheFactory(Dictionary<Object^, Object^>^ dsProps);
+        static CacheFactory^ CreateCacheFactory(Properties<String^, String^>^ dsProps);
+
+        /// <summary>
+        /// A factory class that must be used to obtain instance of <see cref="Cache" />.
+        /// This should be called once. Using this one can set default values of <see cref="Pool" />.
+        /// </summary>       
+        static CacheFactory^ CreateCacheFactory();
+
+        /// <summary>
+        /// To create the instance of <see cref="Cache" />.
+        /// </summary>
+        Cache^ Create();
+
+        /// <summary>
+        /// Creates a new cache using the specified system.
+        /// </summary>
+        /// <param name="name">the name to associate with the new cache</param>
+        /// <param name="system">
+        /// a DistributedSystem obtained by calling
+        /// <see cref="DistributedSystem.Connect" />
+        /// </param>
+        /// <returns>
+        /// a <c>Cache</c> that uses the specified <c>DistributedSystem</c>
+        /// for distribution.
+        /// </returns>
+        /// <exception cref="IllegalArgumentException">
+        /// If <c>system</c> is not connected
+        /// ( <see cref="DistributedSystem.IsConnected" /> ) or name is null.
+        /// </exception>
+        /// <exception cref="CacheExistsException">
+        /// If an open cache already exists.
+        /// </exception>
+        /// <deprecated>
+        /// as of NativeClient 3.5, use <see cref="CacheFactory.CreateCacheFactory" /> instead.
+        /// </deprecated>
+        static Cache^ Create( String^ name, DistributedSystem^ system );
+
+        /// <summary>
+        /// Creates a new cache using the specified system using parameters
+        /// from the given <a href="cacheXml.html">XML</a> file.
+        /// </summary>
+        /// <param name="name">the name to associate with the new cache</param>
+        /// <param name="system">
+        /// a DistributedSystem obtained by calling
+        /// <see cref="DistributedSystem.Connect" />
+        /// </param>
+        /// <param name="cacheXml">
+        /// name of the cache configuration XML file
+        /// </param>
+        /// <returns>
+        /// a <c>Cache</c> that uses the specified <c>DistributedSystem</c>
+        /// for distribution.
+        /// </returns>
+        /// <exception cref="IllegalArgumentException">
+        /// If <c>system</c> is not <see cref="DistributedSystem.IsConnected"/>
+        /// or name is null
+        /// </exception>
+        /// <exception cref="CacheExistsException">
+        /// ff an open cache already exists
+        /// </exception>
+        /// <exception cref="CacheXmlException">
+        /// if something went wrong while parsing the XML
+        /// </exception>
+        /// <exception cref="IllegalStateException">
+        /// if the XML file is well-formed but not valid (consistent)
+        /// </exception>
+        /// <deprecated>
+        /// as of NativeClient 3.5, use <see cref="CacheFactory.CreateCacheFactory" /> instead.
+        /// </deprecated>
+        static Cache^ Create( String^ name, DistributedSystem^ system,
+          String^ cacheXml );
+
+        /// <summary>
+        /// Creates a new cache using the specified system using the given
+        /// <c>CacheAttributes</c>.
+        /// </summary>
+        /// <param name="name">the name to associate with the new cache</param>
+        /// <param name="system">
+        /// a DistributedSystem obtained by calling
+        /// <see cref="DistributedSystem.Connect" />
+        /// </param>
+        /// <param name="attributes">
+        /// optional <c>CacheAttributes</c> for this cache
+        /// </param>
+        /// <returns>
+        /// a <c>Cache</c> that uses the specified <c>DistributedSystem</c>
+        /// for distribution.
+        /// </returns>
+        /// <exception cref="IllegalArgumentException">
+        /// If <c>system</c> is not <see cref="DistributedSystem.IsConnected"/>
+        /// or name is null
+        /// </exception>
+        /// <exception cref="CacheExistsException">
+        /// ff an open cache already exists
+        /// </exception>
+        /// <deprecated>
+        /// as of NativeClient 3.5, use <see cref="CacheFactory.CreateCacheFactory" /> instead.
+        /// </deprecated>
+        static Cache^ Create( String^ name, DistributedSystem^ system,
+          CacheAttributes^ attributes );
+
+        /// <summary>
+        /// Creates a new cache using the specified system using parameters
+        /// from the given <a href="cacheXml.html">XML</a> file and with
+        /// the given <c>CacheAttributes</c>.
+        /// </summary>
+        /// <param name="name">the name to associate with the new cache</param>
+        /// <param name="system">
+        /// a DistributedSystem obtained by calling
+        /// <see cref="DistributedSystem.Connect" />
+        /// </param>
+        /// <param name="cacheXml">
+        /// name of the cache configuration XML file
+        /// </param>
+        /// <param name="attributes">
+        /// optional <c>CacheAttributes</c> for this cache; these
+        /// override the ones provided in <c>cacheXml</c>.
+        /// </param>
+        /// <returns>
+        /// a <c>Cache</c> that uses the specified <c>DistributedSystem</c>
+        /// for distribution.
+        /// </returns>
+        /// <exception cref="IllegalArgumentException">
+        /// If <c>system</c> is not <see cref="DistributedSystem.IsConnected"/>
+        /// or name is null
+        /// </exception>
+        /// <exception cref="CacheExistsException">
+        /// ff an open cache already exists
+        /// </exception>
+        /// <exception cref="CacheXmlException">
+        /// if something went wrong while parsing the XML
+        /// </exception>
+        /// <exception cref="IllegalStateException">
+        /// if the XML file is well-formed but not valid (consistent)
+        /// </exception>
+        /// <deprecated>
+        /// as of NativeClient 3.5, use <see cref="CacheFactory.CreateCacheFactory" /> instead.
+        /// </deprecated>
+        static Cache^ Create( String^ name, DistributedSystem^ system,
+          String^ cacheXml, CacheAttributes^ attributes );
+
+        /// <summary>
+        /// Gets the instance of <see cref="Cache" /> produced by an
+        /// earlier call to <see cref="CacheFactory.Create" />.
+        /// </summary>
+        /// <param name="system">
+        /// the <see cref="DistributedSystem" /> the cache was created with.
+        /// </param>
+        /// <returns>the <see cref="Cache" /> associated with the specified system.</returns>
+        /// <exception cref="IllegalArgumentException">
+        /// if the distributed system argument is null
+        /// </exception>
+        /// <exception cref="CacheClosedException">
+        /// if a cache has not been created or the created one is closed
+        /// ( <see cref="Cache.IsClosed" /> )
+        /// </exception>
+        /// <exception cref="EntryNotFoundException">
+        /// if a cache with specified system not found
+        /// </exception>
+        static Cache^ GetInstance( DistributedSystem^ system );
+
+        /// <summary>
+        /// Gets the instance of <see cref="Cache" /> produced by an
+        /// earlier call to <see cref="CacheFactory.Create" />, even if it has been closed.
+        /// </summary>
+        /// <param name="system">
+        /// the <see cref="DistributedSystem" /> the cache was created with.
+        /// </param>
+        /// <returns>
+        /// the <c>Cache</c> associated with the specified system.
+        /// </returns>
+        /// <exception cref="IllegalArgumentException">
+        /// if the distributed system argument is null
+        /// </exception>
+        /// <exception cref="CacheClosedException">
+        /// if a cache has not been created.
+        /// </exception>
+        /// <exception cref="EntryNotFoundException">
+        /// if a cache with specified system not found
+        /// </exception>
+        static Cache^ GetInstanceCloseOk( DistributedSystem^ system );
+
+        /// <summary>
+        /// Gets an arbitrary open instance of <see cref="Cache" /> produced by an
+        /// earlier call to <see cref="CacheFactory.Create" />.
+        /// </summary>
+        /// <exception cref="CacheClosedException">
+        /// if a cache has not been created or the only created one is
+        /// closed ( <see cref="Cache.IsClosed" /> )
+        /// </exception>
+        /// <exception cref="EntryNotFoundException">
+        /// if a cache with specified system not found
+        /// </exception>
+        static Cache^ GetAnyInstance( );
+
+        /// <summary>
+        /// Set allocators for non default Microsoft CRT versions.
+        /// </summary>
+        static void SetNewAndDelete()
+        {
+          gemfire::setNewAndDelete( & operator new, & operator delete );
+        }
+
+        /// <summary>
+        /// Returns the version of the cache implementation.
+        /// For the 1.0 release of GemFire, the string returned is <c>1.0</c>.
+        /// </summary>
+        /// <returns>the version of the cache implementation as a <c>String</c></returns>
+        static property String^ Version
+        {
+          static String^ get( );
+        }
+
+        /// <summary>
+        /// Returns the product description string including product name and version.
+        /// </summary>
+        static property String^ ProductDescription
+        {
+          static String^ get( );
+        }
+
+      /// <summary>
+		  /// Sets the free connection timeout for this pool.
+		  /// </summary>
+		  /// <remarks>
+		  /// If the pool has a max connections setting, operations will block
+		  /// if all of the connections are in use. The free connection timeout
+		  /// specifies how long those operations will block waiting for
+		  /// a free connection before receiving an AllConnectionsInUseException.
+		  /// If max connections is not set this setting has no effect.
+      /// </remarks>
+		  /// <param>
+		  /// connectionTimeout the connection timeout in milliseconds
+		  /// </param>
+		  /// <exception>
+		  /// IllegalArgumentException if connectionTimeout 
+		  /// is less than or equal to 0.
+		  /// </exception>
+		  CacheFactory^ SetFreeConnectionTimeout( Int32 connectionTimeout );
+
+		  /// <summary>
+		  /// Sets the load conditioning interval for this pool.
+		  /// </summary>
+		  /// <remarks>
+		  /// This interval controls how frequently the pool will check to see if
+		  /// a connection to a given server should be moved to a different
+		  /// server to improve the load balance.
+		  /// </remarks>
+		  /// <param>
+		  /// loadConditioningInterval the connection lifetime in milliseconds
+		  /// A value of -1 disables load conditioning.
+		  /// </param>
+		  /// <exception>
+		  /// throws IllegalArgumentException if connectionLifetime
+		  /// is less than -1.
+		  /// </exception>
+      /// <returns>
+      /// a instance of <c>CacheFactory</c> 
+      /// </returns>
+      CacheFactory^ SetLoadConditioningInterval( Int32 loadConditioningInterval );
+
+		  /// <summary>
+		  /// Sets the socket buffer size for each connection made in this pool.
+		  /// </summary>
+		  /// <remarks>
+		  /// Large messages can be received and sent faster when this buffer is larger.
+		  /// Larger buffers also optimize the rate at which servers can send events
+		  /// for client subscriptions.
+		  /// </remarks>
+		  /// <param>
+		  /// bufferSize the size of the socket buffers used for reading and
+		  /// writing on each connection in this pool.
+		  /// </param>
+		  /// <exception>
+		  /// throws IllegalArgumentException if bufferSize
+		  /// is less than or equal to 0.
+		  /// </exception>
+      /// <returns>
+      /// a instance of <c>CacheFactory</c> 
+      /// </returns>
+		  CacheFactory^ SetSocketBufferSize( Int32 bufferSize );
+
+		  /// <summary>
+		  /// Sets the number of milliseconds to wait for a response from a server before
+		  /// timing out the operation and trying another server (if any are available).
+		  /// </summary>
+		  /// <param>
+		  /// timeout number of milliseconds to wait for a response from a server
+		  /// </param>
+		  /// <exception>
+		  /// throws IllegalArgumentException if timeout
+		  /// is less than or equal to 0.
+		  /// </exception>
+      /// <returns>
+      /// a instance of <c>CacheFactory</c> 
+      /// </returns>
+		  CacheFactory^ SetReadTimeout( Int32 timeout );
+
+		  /// <summary>
+		  /// Set the minimum number of connections to keep available at all times.
+		  /// </summary>
+		  /// <remarks>
+		  /// When the pool is created, it will create this many connections.
+		  /// If 0 then connections will not be made until an actual operation
+		  /// is done that requires client-to-server communication.
+		  /// </remarks>
+		  /// <param>
+		  /// minConnections the initial number of connections this pool will create.
+		  /// </param>
+		  /// <exception>
+		  /// throws IllegalArgumentException if minConnections is less than 0.
+		  /// </exception>
+      /// <returns>
+      /// a instance of <c>CacheFactory</c> 
+      /// </returns>
+		  CacheFactory^ SetMinConnections( Int32 minConnections );
+
+		  /// <summary>
+		  /// Set the max number of client to server connections that the pool will create.
+		  /// </summary>
+		  /// <remarks>
+		  /// If all of the connections are in use, an operation requiring a client to
+		  /// server connection will block until a connection is available.
+		  /// see setFreeConnectionTimeout(int)
+		  /// </remarks>
+		  /// <param>
+		  /// maxConnections the maximum number of connections in the pool.
+		  /// -1 indicates that there is no maximum number of connections.
+		  /// </param>
+		  /// <exception>
+		  /// throws IllegalArgumentException if maxConnections is less than minConnections.
+		  /// </exception>
+      /// <returns>
+      /// a instance of <c>CacheFactory</c> 
+      /// </returns>
+		  CacheFactory^ SetMaxConnections( Int32 maxConnections );
+
+		  /// <summary>
+		  /// Set the amount of time a connection can be idle before expiring the connection.
+		  /// </summary>
+		  /// <remarks>
+		  /// If the pool size is greater than the minimum specified, connections which have
+		  /// been idle for longer than the idleTimeout will be closed.
+		  /// </remarks>
+		  /// <param>
+		  /// idleTimeout The amount of time in milliseconds that an idle connection
+		  /// should live before expiring. -1 indicates that connections should never expire.
+		  /// </param>
+		  /// <exception>
+		  /// throws IllegalArgumentException if idleTimout is less than 0.
+		  /// </exception>
+      /// <returns>
+      /// a instance of <c>CacheFactory</c> 
+      /// </returns>
+		  CacheFactory^ SetIdleTimeout( Int32 idleTimeout );
+
+		  /// <summary>
+		  /// Set the number of times to retry a request after timeout/exception.
+		  /// </summary>
+		  /// <param>
+		  /// retryAttempts The number of times to retry a request
+		  /// after timeout/exception. -1 indicates that a request should be
+		  /// tried against every available server before failing.
+		  /// </param>
+		  /// <exception>
+		  /// throws IllegalArgumentException if idleTimout is less than 0.
+		  /// </exception>
+      /// <returns>
+      /// a instance of <c>CacheFactory</c> 
+      /// </returns>
+		  CacheFactory^ SetRetryAttempts( Int32 retryAttempts );
+
+		  /// <summary>
+		  /// Set how often to ping servers to verify that they are still alive.
+		  /// </summary>
+		  /// <remarks>
+		  /// Each server will be sent a ping every pingInterval if there has not
+		  /// been any other communication with the server.
+		  /// These pings are used by the server to monitor the health of
+		  /// the client. Make sure that the pingInterval is less than the
+		  /// maximum time between pings allowed by the bridge server.
+		  /// see in CacheServer: setMaximumTimeBetweenPings(int)
+		  /// </remarks>
+		  /// <param>
+		  /// pingInterval The amount of time in milliseconds between pings.
+		  /// </param>
+		  /// <exception>
+		  /// throws IllegalArgumentException if pingInterval is less than 0.
+		  /// </exception>
+      /// <returns>
+      /// a instance of <c>CacheFactory</c> 
+      /// </returns>
+		  CacheFactory^ SetPingInterval( Int32 pingInterval );
+
+      /// <summary>
+		  /// Set how often to update locator list from locator
+		  /// </summary>
+		  /// <param>
+		  /// updateLocatorListInterval The amount of time in milliseconds between
+      /// updating locator list. If its set to 0 then client will not update
+      /// the locator list.
+		  /// </param>
+		  /// <returns>
+      /// a instance of <c>CacheFactory</c> 
+      /// </returns>
+		  CacheFactory^ SetUpdateLocatorListInterval( Int32 updateLocatorListInterval );
+
+
+		  /// <summary>
+		  /// Set how often to send client statistics to the server.
+		  /// </summary>
+		  /// <remarks>
+		  /// Doing this allows gfmon to monitor clients.
+		  /// A value of -1 disables the sending of client statistics
+		  /// to the server.
+          /// </remarks>
+		  /// <param>
+		  /// statisticInterval The amount of time in milliseconds between
+		  /// sends of client statistics to the server.
+		  /// </param>
+		  /// <exception>
+		  /// throws IllegalArgumentException if statisticInterval
+		  /// is less than -1.
+		  /// </exception>
+      /// <returns>
+      /// a instance of <c>CacheFactory</c> 
+      /// </returns>
+      CacheFactory^ SetStatisticInterval( Int32 statisticInterval);
+
+		  /// <summary>
+		  /// Configures the group that all servers this pool connects to must belong to.
+		  /// </summary>
+		  /// <param>
+		  /// group the server group that this pool will connect to.
+		  /// If null or "" then all servers will be connected to.
+		  /// </param>
+      /// <returns>
+      /// a instance of <c>CacheFactory</c> 
+      /// </returns>
+      CacheFactory^ SetServerGroup( String^ group );
+
+		  /// <summary>
+		  /// Add a locator, given its host and port, to this factory.
+		  /// </summary>
+		  /// <remarks>
+		  /// The locator must be a server locator and will be used to discover other running
+		  /// bridge servers and locators.
+		  /// </remarks>
+		  /// <param>
+		  /// host the host name or ip address that the locator is listening on.
+		  /// </param>
+		  /// <param>
+		  /// port the port that the locator is listening on
+		  /// </param>
+		  /// <exception>
+		  /// throws IllegalArgumentException if host is an unknown host
+		  /// or if port is outside the valid range of [1..65535] inclusive.
+		  /// </exception>
+		  /// <exception>
+		  /// throws IllegalStateException if a locator has already been added to this factory.
+		  /// </exception>
+      /// <returns>
+      /// a instance of <c>CacheFactory</c> 
+      /// </returns>
+		  CacheFactory^ AddLocator( String^ host, Int32 port );
+
+		  /// <summary>
+		  /// Add a server, given its host and port, to this factory.
+		  /// </summary>
+		  /// <remarks>
+		  /// The server must be a bridge server and this client will
+		  /// directly connect to without consulting a server locator.
+		  /// </remarks>
+		  /// <param>
+		  /// host the host name or ip address that the server is listening on.
+		  /// </param>
+		  /// <param>
+		  /// port the port that the server is listening on
+		  /// </param>
+          /// <exception>
+		  /// throws IllegalArgumentException if host is an unknown host
+		  /// or if port is outside the valid range of [1..65535] inclusive.
+		  /// </exception>
+		  /// <exception>
+		  /// throws IllegalStateException if a server has already been added to this factory.
+		  /// </exception>
+      /// <returns>
+      /// a instance of <c>CacheFactory</c> 
+      /// </returns>
+      CacheFactory^ AddServer( String^ host, Int32 port );
+
+		  /// <summary>
+		  /// Enable subscriptions.
+		  /// </summary>
+		  /// <remarks>
+		  /// If set to true then the created pool will have server-to-client
+		  /// subscriptions enabled. If set to false then all Subscription*
+		  /// attributes are ignored at create time.
+		  /// </remarks>
+      /// <returns>
+      /// a instance of <c>CacheFactory</c> 
+      /// </returns>
+		  CacheFactory^ SetSubscriptionEnabled( Boolean enabled );
+
+      /// <summary>
+		  /// By default SetPRSingleHopEnabled is true.
+		  /// </summary>
+		  /// <remarks>
+		  /// The client is aware of location of partitions on servers hosting
+      /// Using this information, the client routes the client cache operations
+		  /// directly to the server which is hosting the required partition for the
+		  /// cache operation. 
+      /// If SetPRSingleHopEnabled is false the client can do an extra hop on servers
+      /// to go to the required partition for that cache operation.
+      /// The SetPRSingleHopEnabled avoids extra hops only for following cache operations :
+      /// put, get & destroy operations.
+		  /// </remarks>
+      /// <returns>
+      /// a instance of <c>CacheFactory</c> 
+      /// </returns>
+		  CacheFactory^ SetPRSingleHopEnabled( Boolean enabled );
+
+		  /// <summary>
+		  /// Sets the redundancy level for this pools server-to-client subscriptions.
+		  /// </summary>
+		  /// <remarks>
+		  /// If 0 then no redundant copies will be kept on the servers.
+		  /// Otherwise an effort will be made to maintain the requested number of
+		  /// copies of the server-to-client subscriptions. At most one copy per server will
+		  /// be made up to the requested level.
+		  /// </remarks>
+		  /// <param>
+		  /// redundancy the number of redundant servers for this client's subscriptions.
+		  /// </param>
+		  /// <exception>
+		  /// throws IllegalArgumentException if redundancyLevel is less than -1.
+		  /// </exception>
+      /// <returns>
+      /// a instance of <c>CacheFactory</c> 
+      /// </returns>
+		  CacheFactory^ SetSubscriptionRedundancy( Int32 redundancy );
+
+		  /// <summary>
+		  /// Sets the messageTrackingTimeout attribute which is the time-to-live period,
+		  /// in milliseconds, for subscription events the client has received from the server.
+		  /// </summary>
+		  /// <remarks>
+		  /// It's used to minimize duplicate events. Entries that have not been modified
+		  /// for this amount of time are expired from the list.
+		  /// </remarks>
+		  /// <param>
+		  /// messageTrackingTimeout number of milliseconds to set the timeout to.
+		  /// </param>
+		  /// <exception>
+		  /// throws IllegalArgumentException if messageTrackingTimeout is less than or equal to 0.
+		  /// </exception>
+      /// <returns>
+      /// a instance of <c>CacheFactory</c> 
+      /// </returns>
+		  CacheFactory^ SetSubscriptionMessageTrackingTimeout( Int32 messageTrackingTimeout );
+
+		  /// <summary>
+		  /// Sets the is the interval in milliseconds to wait before sending
+		  /// acknowledgements to the bridge server for events received from the server subscriptions.
+		  /// </summary>
+		  /// <param>
+		  /// ackInterval number of milliseconds to wait before sending event acknowledgements.
+		  /// </param>
+		  /// <exception>
+		  /// throws IllegalArgumentException if ackInterval is less than or equal to 0.
+		  /// </exception>
+      /// <returns>
+      /// a instance of <c>CacheFactory</c> 
+      /// </returns>
+		  CacheFactory^ SetSubscriptionAckInterval( Int32 ackInterval );
+
+      /// <summary>
+      /// Enable thread local connections.
+      /// </summary>
+      /// <remarks>
+      /// Sets the thread local connections policy for the default connection pool.
+      /// If true then any time a thread goes to use a connection
+      /// from this pool it will check a thread local cache and see if it already
+      /// has a connection in it. If so it will use it. If not it will get one from
+      /// this pool and cache it in the thread local. This gets rid of thread contention
+      /// for the connections but increases the number of connections the servers see.
+      /// If false then connections are returned to the pool as soon
+      /// as the operation being done with the connection completes. This allows
+      /// connections to be shared amonst multiple threads keeping the number of
+      /// connections down.
+      /// </remarks>
+      CacheFactory^ SetThreadLocalConnections( bool enabled );
+
+      /// <summary>
+		  /// Sets whether pool is in multiuser mode
+		  /// </summary>
+		  /// <param>
+		  /// multiuserAuthentication should be true/false. Default value is false;
+		  /// </param>
+      /// <returns>
+      /// a instance of <c>CacheFactory</c> 
+      /// </returns>
+      CacheFactory^ SetMultiuserAuthentication( bool multiuserAuthentication );
+
+
+		  ///<summary>
+			/// Control whether pdx ignores fields that were unread during deserialization.
+			/// The default is to preserve unread fields be including their data during serialization.
+			/// But if you configure the cache to ignore unread fields then their data will be lost
+			/// during serialization.
+			/// <P>You should only set this attribute to <code>true</code> if you know this member
+			/// will only be reading cache data. In this use case you do not need to pay the cost
+			/// of preserving the unread fields since you will never be reserializing pdx data. 
+			///<summary>
+			/// <param> ignore <code>true</code> if fields not read during pdx deserialization should be ignored;
+			/// <code>false</code>, the default, if they should be preserved.
+			/// </param>
+			/// <returns>
+      /// a instance of <c>CacheFactory</c> 
+      /// </returns>
+			CacheFactory^ SetPdxIgnoreUnreadFields(bool ignore);
+
+      ///<summary>
+     /// Sets the object preference to PdxInstance type.
+     /// When a cached object that was serialized as a PDX is read
+     /// from the cache a {@link PdxInstance} will be returned instead of the actual domain class.
+     /// The PdxInstance is an interface that provides run time access to 
+     /// the fields of a PDX without deserializing the entire PDX. 
+     /// The PdxInstance implementation is a light weight wrapper 
+     /// that simply refers to the raw bytes of the PDX that are kept 
+     /// in the cache. Using this method applications can choose to 
+     /// access PdxInstance instead of Java object.
+     /// Note that a PdxInstance is only returned if a serialized PDX is found in the cache.
+     /// If the cache contains a deserialized PDX, then a domain class instance is returned instead of a PdxInstance.
+     ///</summary>
+      /// <param> pdxReadSerialized <code>true</code> to prefer PdxInstance
+			/// <code>false</code>, the default, if they should be preserved.
+			/// </param>
+			/// <returns>
+      /// a instance of <c>CacheFactory</c> 
+      /// </returns>
+      CacheFactory^  SetPdxReadSerialized(bool pdxReadSerialized); 
+
+
+      /// <summary>
+		  /// Sets a gemfire property that will be used when creating the ClientCache.
+      /// </summary>
+		  /// <param>
+		  /// name the name of the gemfire property
+		  /// </param>
+      /// <param>
+		  /// value the value of the gemfire property
+		  /// </param>
+      /// <returns>
+      /// a instance of <c>CacheFactory</c> 
+      /// </returns>
+      CacheFactory^ Set(String^ name, String^ value);
+
+       private:
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+         inline CacheFactory( gemfire::CacheFactory* nativeptr, Properties<String^, String^>^ dsProps )
+					 : SBWrap( nativeptr ) 
+         { 
+            m_dsProps = dsProps;
+         }
+
+         Properties<String^, String^>^ m_dsProps; 
+
+         static System::Object^ m_singletonSync = gcnew System::Object();
+
+        internal:
+          static bool m_connected = false;
+      };
+
+    }
+  }
+}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CacheListenerAdapterN.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CacheListenerAdapterN.hpp b/geode-client-native/src/clicache/com/vmware/CacheListenerAdapterN.hpp
new file mode 100644
index 0000000..b680eb7
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CacheListenerAdapterN.hpp
@@ -0,0 +1,75 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "../../gf_defs.hpp"
+#include "ICacheListenerN.hpp"
+
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+
+      /// <summary>
+      /// Utility class that implements all methods in <c>ICacheListener</c>
+      /// with empty implementations. Applications can subclass this class
+      /// and only override the methods for the events of interest.
+      /// </summary>
+      generic<class TKey, class TValue>
+      public ref class CacheListenerAdapter
+        : public ICacheListener<TKey, TValue>
+      {
+      public:
+        virtual void AfterCreate(EntryEvent<TKey, TValue>^ ev)
+        {
+        }
+
+        virtual void AfterUpdate(EntryEvent<TKey, TValue>^ ev)
+        {
+        }
+
+        virtual void AfterInvalidate(EntryEvent<TKey, TValue>^ ev)
+        {
+        }
+
+        virtual void AfterDestroy(EntryEvent<TKey, TValue>^ ev)
+        {
+        }
+
+        virtual void AfterRegionInvalidate(RegionEvent<TKey, TValue>^ ev)
+        {
+        }
+
+        virtual void AfterRegionDestroy(RegionEvent<TKey, TValue>^ ev)
+        {
+        }
+
+        virtual void AfterRegionLive(RegionEvent<TKey, TValue>^ ev)
+        {
+        }
+
+        virtual void AfterRegionClear(RegionEvent<TKey, TValue>^ ev)
+        {
+        }
+
+        virtual void Close(IRegion<TKey, TValue>^ region)
+        {
+        }
+        virtual void AfterRegionDisconnected( IRegion<TKey, TValue>^ region )
+        {
+        }
+      };
+
+    }
+  }
+}
+ } //namespace 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CacheMN.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CacheMN.cpp b/geode-client-native/src/clicache/com/vmware/CacheMN.cpp
new file mode 100644
index 0000000..057ff75
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CacheMN.cpp
@@ -0,0 +1,277 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+//#include "gf_includesN.hpp"
+#include "CacheMN.hpp"
+#include "ExceptionTypesMN.hpp"
+#include "DistributedSystemMN.hpp"
+#include "RegionMN.hpp"
+#include "RegionAttributesMN.hpp"
+#include "QueryServiceMN.hpp"
+//#include "FunctionServiceMN.hpp"
+//#include "ExecutionMN.hpp"
+#include "CacheFactoryMN.hpp"
+#include "impl/AuthenticatedCacheMN.hpp"
+#include "impl/ManagedStringN.hpp"
+#include "impl/SafeConvertN.hpp"
+#include "impl/PdxTypeRegistry.hpp"
+#include "impl/PdxInstanceFactoryImpl.hpp"
+
+#pragma warning(disable:4091)
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      namespace Generic
+      {
+     
+
+      String^ Cache::Name::get( )
+      {
+        return ManagedString::Get( NativePtr->getName( ) );
+      }
+
+      bool Cache::IsClosed::get( )
+      {
+        return NativePtr->isClosed( );
+      }
+
+      DistributedSystem^ Cache::DistributedSystem::get( )
+      {
+        gemfire::DistributedSystemPtr& nativeptr(
+          NativePtr->getDistributedSystem( ) );
+
+        return GemStone::GemFire::Cache::Generic::DistributedSystem::Create(
+          nativeptr.ptr( ) );
+      }
+
+      CacheTransactionManager^ Cache::CacheTransactionManager::get( )
+      {
+        gemfire::InternalCacheTransactionManager2PCPtr& nativeptr = static_cast<InternalCacheTransactionManager2PCPtr>(
+          NativePtr->getCacheTransactionManager( ) );
+
+        return GemStone::GemFire::Cache::Generic::CacheTransactionManager::Create(
+          nativeptr.ptr( ) );
+      }
+
+      void Cache::Close( )
+      {
+        Close( false );
+      }
+
+      void Cache::Close( bool keepalive )
+      {
+        _GF_MG_EXCEPTION_TRY2
+
+          GemStone::GemFire::Cache::Generic::DistributedSystem::acquireDisconnectLock();
+
+        GemStone::GemFire::Cache::Generic::DistributedSystem::disconnectInstance();
+          CacheFactory::m_connected = false;
+
+          NativePtr->close( keepalive );
+
+          // If DS automatically disconnected due to the new bootstrap API, then cleanup the C++/CLI side
+          //if (!gemfire::DistributedSystem::isConnected())
+          {
+            GemStone::GemFire::Cache::Generic::DistributedSystem::UnregisterBuiltinManagedTypes();
+          }
+
+        _GF_MG_EXCEPTION_CATCH_ALL2
+        finally
+        {
+					GemStone::GemFire::Cache::Generic::Internal::PdxTypeRegistry::clear();
+          Serializable::Clear();
+          GemStone::GemFire::Cache::Generic::DistributedSystem::releaseDisconnectLock();
+          GemStone::GemFire::Cache::Generic::DistributedSystem::unregisterCliCallback();
+        }
+      }
+
+      void Cache::ReadyForEvents( )
+      {
+        _GF_MG_EXCEPTION_TRY2
+
+          NativePtr->readyForEvents( );
+
+        _GF_MG_EXCEPTION_CATCH_ALL2
+      }
+
+      generic <class TKey, class TValue>
+      Generic::IRegion<TKey, TValue>^ Cache::CreateRegion( String^ name,
+        Generic::RegionAttributes<TKey, TValue>^ attributes )
+      {
+        _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+
+          ManagedString mg_name( name );
+          gemfire::RegionAttributesPtr regionAttribsPtr(
+            GetNativePtrFromSBWrapGeneric<gemfire::RegionAttributes>( attributes ) );
+
+          gemfire::RegionPtr& nativeptr( NativePtr->createRegion(
+            mg_name.CharPtr, regionAttribsPtr ) );
+          return Generic::Region<TKey, TValue>::Create( nativeptr.ptr( ) );
+
+        _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+      }
+
+      generic<class TKey, class TValue>
+      Generic::IRegion<TKey,TValue>^ Cache::GetRegion( String^ path )
+      {
+        _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+
+          ManagedString mg_path( path );
+          gemfire::RegionPtr& nativeptr(
+            NativePtr->getRegion( mg_path.CharPtr ) );
+
+          return Generic::Region<TKey,TValue>::Create( nativeptr.ptr( ) );
+
+        _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+      }
+
+      generic<class TKey, class TValue>
+      array<Generic::IRegion<TKey, TValue>^>^ Cache::RootRegions( )
+      {
+        gemfire::VectorOfRegion vrr;
+        NativePtr->rootRegions( vrr );
+        array<Generic::IRegion<TKey, TValue>^>^ rootRegions =
+          gcnew array<Generic::IRegion<TKey, TValue>^>( vrr.size( ) );
+
+        for( int32_t index = 0; index < vrr.size( ); index++ )
+        {
+          gemfire::RegionPtr& nativeptr( vrr[ index ] );
+          rootRegions[ index ] = Generic::Region<TKey, TValue>::Create( nativeptr.ptr( ) );
+        }
+        return rootRegions;
+      }
+
+      generic<class TKey, class TResult>
+      Generic::QueryService<TKey, TResult>^ Cache::GetQueryService( )
+      {
+        _GF_MG_EXCEPTION_TRY2
+
+          return Generic::QueryService<TKey, TResult>::Create( NativePtr->getQueryService( ).ptr( ) );
+
+        _GF_MG_EXCEPTION_CATCH_ALL2
+      }
+
+      generic<class TKey, class TResult>
+      Generic::QueryService<TKey, TResult>^ Cache::GetQueryService(String^ poolName )
+      {
+        _GF_MG_EXCEPTION_TRY2
+
+          ManagedString mg_poolName( poolName );
+          return QueryService<TKey, TResult>::Create( NativePtr->getQueryService(mg_poolName.CharPtr).ptr( ) );
+
+        _GF_MG_EXCEPTION_CATCH_ALL2
+      }
+
+      RegionFactory^ Cache::CreateRegionFactory(RegionShortcut preDefinedRegionAttributes)
+      {
+        _GF_MG_EXCEPTION_TRY2
+
+          gemfire::RegionShortcut preDefineRegionAttr = gemfire::CACHING_PROXY;
+
+          switch(preDefinedRegionAttributes)
+          {
+          case RegionShortcut::PROXY:
+              preDefineRegionAttr = gemfire::PROXY;
+              break;
+          case RegionShortcut::CACHING_PROXY:
+              preDefineRegionAttr = gemfire::CACHING_PROXY;
+              break;
+          case RegionShortcut::CACHING_PROXY_ENTRY_LRU:
+              preDefineRegionAttr = gemfire::CACHING_PROXY_ENTRY_LRU;
+              break;
+          case RegionShortcut::LOCAL:
+              preDefineRegionAttr = gemfire::LOCAL;
+              break;
+          case RegionShortcut::LOCAL_ENTRY_LRU:
+              preDefineRegionAttr = gemfire::LOCAL_ENTRY_LRU;
+              break;          
+          }
+
+          return RegionFactory::Create(NativePtr->createRegionFactory(preDefineRegionAttr).ptr());
+          
+        _GF_MG_EXCEPTION_CATCH_ALL2
+      }
+
+      IRegionService^ Cache::CreateAuthenticatedView(Properties<String^, Object^>^ credentials)
+      {
+        // VJR: TODO:
+				//TODO::split
+        gemfire::Properties* prop = NULL;
+
+        if (credentials != nullptr)
+          prop = GetNativePtr<gemfire::Properties>( credentials );
+
+        gemfire::PropertiesPtr credPtr(prop);
+        
+        
+        _GF_MG_EXCEPTION_TRY2
+
+          return AuthenticatedCache::Create( (NativePtr->createAuthenticatedView(credPtr)).ptr());
+
+        _GF_MG_EXCEPTION_CATCH_ALL2   
+      }
+
+			bool Cache::GetPdxIgnoreUnreadFields()
+			{
+				_GF_MG_EXCEPTION_TRY2
+
+					return	NativePtr->getPdxIgnoreUnreadFields();
+
+				_GF_MG_EXCEPTION_CATCH_ALL2   
+			}
+
+      bool Cache::GetPdxReadSerialized()
+			{
+				_GF_MG_EXCEPTION_TRY2
+
+					return	NativePtr->getPdxReadSerialized();
+
+				_GF_MG_EXCEPTION_CATCH_ALL2   
+			}
+
+      IRegionService^ Cache::CreateAuthenticatedView(Properties<String^, Object^>^ credentials, String^ poolName)
+      {
+         //VJR: TODO:
+				//TODO::split
+        gemfire::Properties* prop = NULL;
+
+        if (credentials != nullptr)
+          prop = GetNativePtr<gemfire::Properties>( credentials );
+
+        gemfire::PropertiesPtr credPtr(prop);
+
+        ManagedString mg_poolName( poolName );
+        
+        
+        _GF_MG_EXCEPTION_TRY2
+
+          return AuthenticatedCache::Create( (NativePtr->createAuthenticatedView(credPtr, mg_poolName.CharPtr)).ptr());
+
+        _GF_MG_EXCEPTION_CATCH_ALL2   
+      }
+
+			 void Cache::InitializeDeclarativeCache( String^ cacheXml )
+      {
+        ManagedString mg_cacheXml( cacheXml );
+        NativePtr->initializeDeclarativeCache( mg_cacheXml.CharPtr );
+      }
+
+        IPdxInstanceFactory^ Cache::CreatePdxInstanceFactory(String^ className)
+        {
+          return gcnew Internal::PdxInstanceFactoryImpl(className);
+        }
+      } // end namespace Generic
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CacheMN.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CacheMN.hpp b/geode-client-native/src/clicache/com/vmware/CacheMN.hpp
new file mode 100644
index 0000000..63800df
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CacheMN.hpp
@@ -0,0 +1,319 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "../../gf_defs.hpp"
+//#include <cppcache/Cache.hpp>
+//#include "impl/NativeWrapperN.hpp"
+#include "RegionShortcutMN.hpp"
+//#include "RegionFactoryMN.hpp"
+#include "IGemFireCacheN.hpp"
+//#include "IRegionServiceN.hpp"
+#include "IRegionN.hpp"
+//#include "QueryServiceMN.hpp"
+
+
+#include "RegionAttributesMN.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      namespace Generic
+      {
+
+				generic<class TKey, class TResult>
+				ref class QueryService;
+
+				ref class RegionFactory;
+				enum class ExpirationAction;
+      ref class DistributedSystem;
+	  ref class CacheTransactionManager2PC;
+      //ref class FunctionService;
+
+      /// <summary>
+      /// Provides a distributed cache.
+      /// </summary>
+      /// <remarks>
+      /// Caches are obtained from Create methods on the
+      /// <see cref="CacheFactory.Create"/> class.
+      /// <para>
+      /// When a cache will no longer be used, call <see cref="Cache.Close" />.
+      /// Once it <see cref="Cache.IsClosed" /> any attempt to use it
+      /// will cause a <c>CacheClosedException</c> to be thrown.
+      /// </para><para>
+      /// A cache can have multiple root regions, each with a different name.
+      /// </para>
+      /// </remarks>
+      public ref class Cache sealed
+        : public IGemFireCache, Internal::SBWrap<gemfire::Cache>
+      {
+      public:
+
+        /// <summary>
+        /// Initializes the cache from an XML file.
+        /// </summary>
+        /// <param name="cacheXml">pathname of a <c>cache.xml</c> file</param>
+        virtual void InitializeDeclarativeCache( String^ cacheXml );
+
+        /// <summary>
+        /// Returns the name of this cache.
+        /// </summary>
+        /// <remarks>
+        /// This method does not throw
+        /// <c>CacheClosedException</c> if the cache is closed.
+        /// </remarks>
+        /// <returns>the string name of this cache</returns>
+        virtual property String^ Name
+        {
+          String^ get( );
+        }
+
+        /// <summary>
+        /// True if this cache has been closed.
+        /// </summary>
+        /// <remarks>
+        /// After a new cache object is created, this method returns false.
+        /// After <see cref="Close" /> is called on this cache object, this method
+        /// returns true.
+        /// </remarks>
+        /// <returns>true if this cache is closed, otherwise false</returns>
+        virtual property bool IsClosed
+        {
+          bool get( );
+        }
+
+        /// <summary>
+        /// Returns the distributed system used to
+        /// <see cref="CacheFactory.Create" /> this cache.
+        /// </summary>
+        /// <remarks>
+        /// This method does not throw
+        /// <c>CacheClosedException</c> if the cache is closed.
+        /// </remarks>
+        virtual property GemStone::GemFire::Cache::Generic::DistributedSystem^ DistributedSystem
+        {
+          GemStone::GemFire::Cache::Generic::DistributedSystem^ get( );
+        }
+
+        /// <summary>
+        /// Returns the cache transaction manager of
+        /// <see cref="CacheFactory.Create" /> this cache.
+        /// </summary>
+        virtual property GemStone::GemFire::Cache::Generic::CacheTransactionManager^ CacheTransactionManager
+        {
+          GemStone::GemFire::Cache::Generic::CacheTransactionManager^ get( );
+        }
+
+        /// <summary>
+        /// Terminates this object cache and releases all the local resources.
+        /// </summary>
+        /// <remarks>
+        /// After this cache is closed, any further
+        /// method call on this cache or any region object will throw
+        /// <c>CacheClosedException</c>, unless otherwise noted.
+        /// </remarks>
+        /// <exception cref="CacheClosedException">
+        /// if the cache is already closed.
+        /// </exception>
+        virtual void Close( );
+
+        /// <summary>
+        /// Terminates this object cache and releases all the local resources.
+        /// </summary>
+        /// <remarks>
+        /// After this cache is closed, any further
+        /// method call on this cache or any region object will throw
+        /// <c>CacheClosedException</c>, unless otherwise noted.
+        /// </remarks>
+        /// <param name="keepalive">whether to keep a durable client's queue alive</param>
+        /// <exception cref="CacheClosedException">
+        /// if the cache is already closed.
+        /// </exception>
+        virtual void Close( bool keepalive );
+
+        /// <summary>
+        /// Send the client-ready message to the server for a durable client.        
+        /// </summary>
+        /// <remarks>
+        /// This method should only be called for durable clients and
+        /// with a cache server version 5.5 onwards.
+        /// </remarks>
+        /// <exception cref="IllegalStateException">
+        /// if there was a problem sending the message to the server.
+        /// </exception>
+        virtual void ReadyForEvents( );
+
+        /// <summary>
+        /// Creates a region with the given name using the specified
+        /// RegionAttributes.
+        /// The region is just created locally. It is not created on the server
+        /// to which this client is connected with.
+        /// </summary>
+        /// <remarks>
+        /// If Pool attached with Region is in multiusersecure mode then don't use return instance of region as no credential are attached with this instance.
+        /// Get instance of region from <see cref="Cache.CreateAuthenticatedView" to do the operation on Cache. 
+        /// </remarks>
+        /// <param name="name">the name of the region to create</param>
+        /// <param name="attributes">the attributes of the root region</param>
+        /// <returns>new region</returns>
+        /// <exception cref="RegionExistsException">
+        /// if a region with the same name is already in this cache
+        /// </exception>
+        /// <exception cref="CacheClosedException">
+        /// if the cache is closed
+        /// </exception>
+        /// <exception cref="OutOfMemoryException">
+        /// if the memory allocation failed
+        /// </exception>
+        /// <exception cref="RegionCreationFailedException">
+        /// if the call fails due to incomplete mirror initialization
+        /// </exception>
+        /// <exception cref="InitFailedException">
+        /// if the optional PersistenceManager fails to initialize
+        /// </exception>
+        /// <exception cref="UnknownException">otherwise</exception>
+        /// <deprecated>
+        /// as of NativeClient 3.5, use <see cref="Cache.CreateRegionFactory /> instead.
+        /// </deprecated>
+        generic <class TKey, class TValue>
+        virtual IRegion<TKey, TValue>^ CreateRegion( String^ name,
+          Generic::RegionAttributes<TKey, TValue>^ attributes );
+  
+        /// <summary>
+        /// Returns an existing region given the full path from root, or null 
+        /// if no such region exists.
+        /// </summary>
+        /// <remarks>
+        /// If Pool attached with Region is in multiusersecure mode then don't use return instance of region as no credential are attached with this instance.
+        /// Get region from RegionService instance of Cache.<see cref="Cache.CreateAuthenticatedView(PropertiesPtr)" />.
+        /// </remarks>
+        /// <param name="path">the pathname of the region</param>
+        /// <returns>the region</returns>
+        generic<class TKey, class TValue>
+        virtual IRegion<TKey, TValue>^ GetRegion( String^ path );
+
+        /// <summary>
+        /// Returns an array of root regions in the cache. This set is a
+        /// snapshot and is not backed by the cache.
+        /// </summary>
+        /// <remarks>
+        /// It is not supported when Cache is created from Pool.
+        /// </remarks>
+        /// <returns>array of regions</returns>
+        generic<class TKey, class TValue>
+        virtual array<IRegion<TKey, TValue>^>^ RootRegions();
+
+        /// <summary>
+        /// Get a query service object to be able to query the cache.
+        /// Supported only when cache is created from Pool(pool is in multiuserSecure mode)
+        /// </summary>
+        /// <remarks>
+        /// Currently only works against the java server in native mode, and
+        /// at least some endpoints must have been defined in some regions
+        /// before actually firing a query.
+        /// </remarks>
+        generic<class TKey, class TResult>
+        virtual Generic::QueryService<TKey, TResult>^ GetQueryService();
+
+        /// <summary>
+        /// Get a query service object to be able to query the cache.
+        /// Use only when Cache has more than one Pool.
+        /// </summary>
+        /// <remarks>
+        /// Currently only works against the java server in native mode, and
+        /// at least some endpoints must have been defined in some regions
+        /// before actually firing a query.
+        /// </remarks>
+        generic<class TKey, class TResult>
+        virtual Generic::QueryService<TKey, TResult>^ GetQueryService(String^ poolName );
+
+        /// <summary>
+        /// Returns the instance of <see cref="RegionFactory" /> to create the region
+        /// </summary>
+        /// <remarks>
+        /// Pass the <see cref="RegionShortcut" /> to set the deafult region attributes
+        /// </remarks>
+        /// <param name="regionShortcut">the regionShortcut to set the default region attributes</param>
+        /// <returns>Instance of RegionFactory</returns>
+        RegionFactory^ CreateRegionFactory(RegionShortcut regionShortcut); 
+
+        /// <summary>
+        /// Returns the instance of <see cref="IRegionService" /> to do the operation on Cache with different Credential.
+        /// </summary>
+        /// <remarks>
+        /// Deafault pool should be in multiuser mode <see cref="CacheFactory.SetMultiuserAuthentication" />
+        /// </remarks>
+        /// <param name="credentials">the user Credentials.</param>
+        /// <returns>Instance of IRegionService</returns>
+        IRegionService^ CreateAuthenticatedView(Properties<String^, Object^>^ credentials);
+
+        /// <summary>
+        /// Returns the instance of <see cref="IRegionService" /> to do the operation on Cache with different Credential.
+        /// </summary>
+        /// <remarks>
+        /// Deafault pool should be in multiuser mode <see cref="CacheFactory.SetMultiuserAuthentication" />
+        /// </remarks>
+        /// <param name="credentials">the user Credentials.</param>
+        /// <param name="poolName">Pool, which is in multiuser mode.</param>
+        /// <returns>Instance of IRegionService</returns>
+        IRegionService^ CreateAuthenticatedView(Properties<String^, Object^>^ credentials, String^ poolName);
+
+				///<summary>
+				/// Returns whether Cache saves unread fields for Pdx types.
+				///</summary>
+				virtual bool GetPdxIgnoreUnreadFields();
+
+        ///<summary>
+        /// Returns whether { @link PdxInstance} is preferred for PDX types instead of .NET object.
+        ///</summary>
+        virtual bool GetPdxReadSerialized();
+
+        /// <summary>
+        /// Returns a factory that can create a {@link PdxInstance}.
+        /// @param className the fully qualified class name that the PdxInstance will become
+        ///   when it is fully deserialized.
+        /// @return the factory
+        /// </summary>
+        virtual IPdxInstanceFactory^ CreatePdxInstanceFactory(String^ className);
+
+      internal:
+
+        /// <summary>
+        /// Internal factory function to wrap a native object pointer inside
+        /// this managed class with null pointer check.
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        /// <returns>
+        /// The managed wrapper object; null if the native pointer is null.
+        /// </returns>
+        inline static Cache^ Create( gemfire::Cache* nativeptr )
+        {
+          return ( nativeptr != nullptr ?
+            gcnew Cache( nativeptr ) : nullptr );
+        }
+
+
+      private:
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline Cache( gemfire::Cache* nativeptr )
+          : SBWrap( nativeptr ) { }
+      };
+      } // end namespace Generic
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CacheStatisticsMN.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CacheStatisticsMN.cpp b/geode-client-native/src/clicache/com/vmware/CacheStatisticsMN.cpp
new file mode 100644
index 0000000..762d21f
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CacheStatisticsMN.cpp
@@ -0,0 +1,33 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+//#include "gf_includesN.hpp"
+#include "CacheStatisticsMN.hpp"
+
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+
+      uint32_t CacheStatistics::LastModifiedTime::get( )
+      {
+        return NativePtr->getLastModifiedTime( );
+      }
+
+      uint32_t CacheStatistics::LastAccessedTime::get( )
+      {
+        return NativePtr->getLastAccessedTime( );
+      }
+
+    }
+  }
+}
+ } //namespace 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CacheStatisticsMN.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CacheStatisticsMN.hpp b/geode-client-native/src/clicache/com/vmware/CacheStatisticsMN.hpp
new file mode 100644
index 0000000..f5a8763
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CacheStatisticsMN.hpp
@@ -0,0 +1,145 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "../../gf_defs.hpp"
+#include <cppcache/CacheStatistics.hpp>
+#include "impl/NativeWrapperN.hpp"
+
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+
+      /// <summary>
+      /// Defines common statistical information for both the region and its entries.
+      /// </summary>
+      /// <remarks>
+      /// All of these methods may throw a <c>CacheClosedException</c>,
+      /// <c>RegionDestroyedException</c>, or <c>EntryDestroyedException</c>.
+      /// </remarks>
+      /// <seealso cref="Region.Statistics" />
+      /// <seealso cref="RegionEntry.Statistics" />
+      public ref class CacheStatistics sealed
+        : public Internal::SBWrap<gemfire::CacheStatistics>
+      {
+      public:
+
+        /// <summary>
+        /// For an entry, returns the time that the entry's value was last modified.
+        /// For a region, returns the last time any of the region's entries' values or
+        /// the values in subregions' entries were modified.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// The modification may have been initiated locally, or it may have been
+        /// an update distributed from another cache. It may also have been a new
+        /// value provided by a loader. The modification time on a region is
+        /// propagated upward to parent regions, transitively, to the root region.
+        /// </para><para>
+        /// The number is expressed as the number of milliseconds since January 1, 1970.
+        /// The granularity may be as coarse as 100ms, so the accuracy may be off by
+        /// up to 50ms.
+        /// </para><para>
+        /// Entry and subregion creation will update the modification time on a
+        /// region, but <c>Region.Destroy</c>, <c>Region.DestroyRegion</c>,
+        /// <c>Region.Invalidate</c>, and <c>Region.InvalidateRegion</c>
+        /// do not update the modification time.
+        /// </para>
+        /// </remarks>
+        /// <returns>
+        /// the last modification time of the region or the entry;
+        /// returns 0 if the entry is invalid or the modification time is uninitialized.
+        /// </returns>
+        /// <seealso cref="Region.Put" />
+        /// <seealso cref="Region.Get" />
+        /// <seealso cref="Region.Create" />
+        /// <seealso cref="Region.CreateSubRegion" />
+        property uint32_t LastModifiedTime
+        {
+          /// <summary>
+          /// Get the last modified time of an entry or a region.
+          /// </summary>
+          /// <returns>
+          /// the last accessed time expressed as the number of milliseconds since
+          /// January 1, 1970.
+          /// </returns>
+          uint32_t get( );
+        }
+
+        /// <summary>
+        /// For an entry, returns the last time it was accessed via <c>Region.Get</c>.
+        /// For a region, returns the last time any of its entries or the entries of
+        /// its subregions were accessed with <c>Region.Get</c>.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// Any modifications will also update the <c>LastAccessedTime</c>,
+        /// so <c>LastAccessedTime</c> is always greater than or equal to
+        /// <c>LastModifiedTime</c>. The <c>LastAccessedTime</c> on a region is
+        /// propagated upward to parent regions, transitively, to the the root region.
+        /// </para><para>
+        /// The number is expressed as the number of milliseconds since
+        /// January 1, 1970. The granularity may be as coarse as 100ms, so
+        /// the accuracy may be off by up to 50ms.
+        /// </para>
+        /// </remarks>
+        /// <returns>
+        /// the last access time of the region or the entry's value;
+        /// returns 0 if entry is invalid or access time is uninitialized.
+        /// </returns>
+        /// <seealso cref="Region.Get" />
+        /// <seealso cref="LastModifiedTime" />
+        property uint32_t LastAccessedTime
+        {
+          /// <summary>
+          /// Get the last accessed time of an entry or a region.
+          /// </summary>
+          /// <returns>
+          /// the last accessed time expressed as the number of milliseconds since
+          /// January 1, 1970.
+          /// </returns>
+          uint32_t get( );
+        }
+
+
+      internal:
+
+        /// <summary>
+        /// Internal factory function to wrap a native object pointer inside
+        /// this managed class with null pointer check.
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        /// <returns>
+        /// The managed wrapper object; null if the native pointer is null.
+        /// </returns>
+        inline static CacheStatistics^ Create( gemfire::CacheStatistics* nativeptr )
+        {
+          return ( nativeptr != nullptr ?
+            gcnew CacheStatistics( nativeptr ) : nullptr );
+        }
+
+
+      private:
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline CacheStatistics( gemfire::CacheStatistics* nativeptr )
+          : SBWrap( nativeptr ) { }
+      };
+
+    }
+  }
+}
+ } //namespace 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CacheTransactionManagerMN.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CacheTransactionManagerMN.cpp b/geode-client-native/src/clicache/com/vmware/CacheTransactionManagerMN.cpp
new file mode 100644
index 0000000..fbe5bdb
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CacheTransactionManagerMN.cpp
@@ -0,0 +1,206 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+//#include "gf_includesN.hpp"
+#include "impl/SafeConvertN.hpp"
+#include "impl/ManagedTransactionListenerN.hpp"
+#include "impl/ManagedTransactionWriterN.hpp"
+#include "CacheTransactionManagerMN.hpp"
+#include "TransactionListenerAdapterN.hpp"
+#include "TransactionWriterAdapterN.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache {
+			namespace Generic
+    {
+
+      void CacheTransactionManager::Begin( )
+      {
+        _GF_MG_EXCEPTION_TRY2
+
+          NativePtr->begin( );
+
+        _GF_MG_EXCEPTION_CATCH_ALL2
+      }
+
+      void CacheTransactionManager::Prepare( )
+      {
+        _GF_MG_EXCEPTION_TRY2
+
+          NativePtr->prepare( );
+
+        _GF_MG_EXCEPTION_CATCH_ALL2
+      }
+
+      void CacheTransactionManager::Commit( )
+      {
+        _GF_MG_EXCEPTION_TRY2
+          NativePtr->commit( );
+        _GF_MG_EXCEPTION_CATCH_ALL2
+      }
+
+      void CacheTransactionManager::Rollback( )
+      {
+        _GF_MG_EXCEPTION_TRY2
+          NativePtr->rollback( );
+        _GF_MG_EXCEPTION_CATCH_ALL2
+      }
+
+      bool CacheTransactionManager::Exists( )
+      {
+        _GF_MG_EXCEPTION_TRY2
+
+          return NativePtr->exists( );
+
+        _GF_MG_EXCEPTION_CATCH_ALL2
+      }
+
+      GemStone::GemFire::Cache::Generic::TransactionId^ CacheTransactionManager::Suspend( )
+      {
+        _GF_MG_EXCEPTION_TRY2
+       
+          return GemStone::GemFire::Cache::Generic::TransactionId::Create( NativePtr->suspend().ptr() );
+       
+        _GF_MG_EXCEPTION_CATCH_ALL2
+      }
+			GemStone::GemFire::Cache::Generic::TransactionId^ CacheTransactionManager::TransactionId::get( )
+      {
+        _GF_MG_EXCEPTION_TRY2
+
+          return GemStone::GemFire::Cache::Generic::TransactionId::Create( NativePtr->getTransactionId().ptr() );
+
+        _GF_MG_EXCEPTION_CATCH_ALL2
+      }
+      void CacheTransactionManager::Resume(GemStone::GemFire::Cache::Generic::TransactionId^ transactionId)
+      {
+        _GF_MG_EXCEPTION_TRY2
+        
+          return NativePtr->resume( gemfire::TransactionIdPtr(transactionId->NativePtr()));
+
+        _GF_MG_EXCEPTION_CATCH_ALL2
+      }
+      bool CacheTransactionManager::IsSuspended(GemStone::GemFire::Cache::Generic::TransactionId^ transactionId)
+      {
+        _GF_MG_EXCEPTION_TRY2
+
+          return NativePtr->isSuspended( gemfire::TransactionIdPtr(transactionId->NativePtr()));
+
+        _GF_MG_EXCEPTION_CATCH_ALL2
+      }
+      bool CacheTransactionManager::TryResume(GemStone::GemFire::Cache::Generic::TransactionId^ transactionId)
+      {
+        _GF_MG_EXCEPTION_TRY2
+
+          return NativePtr->tryResume( gemfire::TransactionIdPtr(transactionId->NativePtr()));
+
+        _GF_MG_EXCEPTION_CATCH_ALL2
+      }
+      bool CacheTransactionManager::TryResume(GemStone::GemFire::Cache::Generic::TransactionId^ transactionId, int32_t waitTimeInMilliSec)
+      {
+        _GF_MG_EXCEPTION_TRY2
+
+          return NativePtr->tryResume( gemfire::TransactionIdPtr(transactionId->NativePtr()), waitTimeInMilliSec);
+
+        _GF_MG_EXCEPTION_CATCH_ALL2
+      }
+      bool CacheTransactionManager::Exists(GemStone::GemFire::Cache::Generic::TransactionId^ transactionId)
+      {
+        _GF_MG_EXCEPTION_TRY2
+
+          return NativePtr->exists( gemfire::TransactionIdPtr(transactionId->NativePtr()));
+
+        _GF_MG_EXCEPTION_CATCH_ALL2
+      }
+
+#ifdef CSTX_COMMENTED
+      generic<class TKey, class TValue>
+      ITransactionWriter<TKey, TValue>^ CacheTransactionManager::GetWriter( )
+      {
+        _GF_MG_EXCEPTION_TRY2
+
+          // Conver the unmanaged object to  managed generic object 
+          gemfire::TransactionWriterPtr& writerPtr( NativePtr->getWriter( ) );
+          gemfire::ManagedTransactionWriterGeneric* twg =
+          dynamic_cast<gemfire::ManagedTransactionWriterGeneric*>( writerPtr.ptr( ) );
+
+          if (twg != nullptr)
+          {
+            return (ITransactionWriter<TKey, TValue>^)twg->userptr( );
+          }
+        
+        _GF_MG_EXCEPTION_CATCH_ALL2
+        
+        return nullptr;
+      }
+      
+      generic<class TKey, class TValue>
+      void CacheTransactionManager::SetWriter(ITransactionWriter<TKey, TValue>^ transactionWriter)
+      {
+        _GF_MG_EXCEPTION_TRY2
+          // Create a unmanaged object using the ManagedTransactionWriterGeneric.
+          // Set the generic object inside the TransactionWriterGeneric that is a non generic object
+          gemfire::TransactionWriterPtr writerPtr;
+          if ( transactionWriter != nullptr ) 
+          {
+            TransactionWriterGeneric<TKey, TValue>^ twg = gcnew TransactionWriterGeneric<TKey, TValue> ();
+            twg->SetTransactionWriter(transactionWriter);
+            writerPtr = new gemfire::ManagedTransactionWriterGeneric( transactionWriter );
+            ((gemfire::ManagedTransactionWriterGeneric*)writerPtr.ptr())->setptr(twg);
+          }
+          NativePtr->setWriter( writerPtr );
+          
+        _GF_MG_EXCEPTION_CATCH_ALL2
+      }
+
+      generic<class TKey, class TValue>
+      void CacheTransactionManager::AddListener(ITransactionListener<TKey, TValue>^ transactionListener)
+      {
+        _GF_MG_EXCEPTION_TRY2
+          // Create a unmanaged object using the ManagedTransactionListenerGeneric.
+          // Set the generic object inside the TransactionListenerGeneric that is a non generic object
+          gemfire::TransactionListenerPtr listenerPtr;
+          if ( transactionListener != nullptr ) 
+          {
+            TransactionListenerGeneric<TKey, TValue>^ twg = gcnew TransactionListenerGeneric<TKey, TValue> ();
+            twg->SetTransactionListener(transactionListener);
+            listenerPtr = new gemfire::ManagedTransactionListenerGeneric( transactionListener );
+            ((gemfire::ManagedTransactionListenerGeneric*)listenerPtr.ptr())->setptr(twg);
+          }
+          NativePtr->addListener( listenerPtr );
+          
+        _GF_MG_EXCEPTION_CATCH_ALL2
+      }
+        
+      generic<class TKey, class TValue>
+      void CacheTransactionManager::RemoveListener(ITransactionListener<TKey, TValue>^ transactionListener)
+      {
+        _GF_MG_EXCEPTION_TRY2
+          // Create an unmanaged non generic object using the managed generic object
+          // use this to call the remove listener
+          gemfire::TransactionListenerPtr listenerPtr;
+          if ( transactionListener != nullptr ) 
+          {
+            TransactionListenerGeneric<TKey, TValue>^ twg = gcnew TransactionListenerGeneric<TKey, TValue> ();
+            twg->SetTransactionListener(transactionListener);
+            listenerPtr = new gemfire::ManagedTransactionListenerGeneric( transactionListener );
+            ((gemfire::ManagedTransactionListenerGeneric*)listenerPtr.ptr())->setptr(twg);
+          }
+          NativePtr->removeListener( listenerPtr );
+
+        _GF_MG_EXCEPTION_CATCH_ALL2
+      }
+#endif
+    }
+  }
+}
+ } //namespace 


[38/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cacheRunner/TestCacheCallback.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cacheRunner/TestCacheCallback.cpp b/geode-client-native/examples/dist/cacheRunner/TestCacheCallback.cpp
new file mode 100644
index 0000000..553fc5c
--- /dev/null
+++ b/geode-client-native/examples/dist/cacheRunner/TestCacheCallback.cpp
@@ -0,0 +1,254 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+/**
+ * @file TestCacheCallback.cpp
+ * @since   1.0
+ * @version 1.0
+ * @see
+*/
+#include <gfcpp/CacheableBuiltins.hpp>
+#include <gfcpp/GemfireTypeIds.hpp>
+#include "TestCacheCallback.hpp"
+#include "ExampleObject.hpp"
+#include "User.hpp"
+
+// ----------------------------------------------------------------------------
+
+TestCacheCallback::TestCacheCallback(void)
+: m_bInvoked(false)
+{
+}
+
+// ----------------------------------------------------------------------------
+
+TestCacheCallback::~TestCacheCallback(void)
+{
+}
+
+// ----------------------------------------------------------------------------
+/**
+  * CacheCallback virtual method
+  */
+// ----------------------------------------------------------------------------
+
+void TestCacheCallback::close( const RegionPtr& region )
+{
+  m_bInvoked = true;
+}
+
+// ----------------------------------------------------------------------------
+/**
+  * Returns whether or not one of this <code>CacheListener</code>
+  * methods was invoked.  Before returning, the <code>invoked</code>
+  * flag is cleared.
+  */
+// ----------------------------------------------------------------------------
+
+bool TestCacheCallback::wasInvoked( )
+{
+  bool bInvoked = m_bInvoked;
+  m_bInvoked = false;
+  return bInvoked;
+}
+
+// ----------------------------------------------------------------------------
+/**
+  * This method will do nothing.  Note that it will not throw an
+  * exception.
+  */
+// ----------------------------------------------------------------------------
+/*
+int TestCacheCallback::close2( const RegionPtr& )
+{
+  return ErrorCodes::Success;
+}
+*/
+// ----------------------------------------------------------------------------
+/**
+  * Returns a description of the given <code>CacheEvent</code>.
+  */
+// ----------------------------------------------------------------------------
+std::string TestCacheCallback::printEntryValue(CacheablePtr& valueBytes)
+{
+   std::string sValue = "null";
+   CacheableStringPtr cStrPtr;
+   CacheableInt32Ptr cIntPtr;
+   CacheableBytesPtr cBytePtr;
+   ExampleObjectPtr cobjPtr;
+   UserPtr cUserPtr;
+
+   if (valueBytes != NULLPTR) {
+     int32_t id = valueBytes->typeId();
+     if (id == GemfireTypeIds::CacheableBytes) {
+       cBytePtr = staticCast<CacheableBytesPtr>(valueBytes);
+       const uint8_t* bytType = cBytePtr->value();
+       const uint32_t len = cBytePtr->length();
+       char buff[1024];
+       sprintf(buff,"%s",(char*)bytType);
+       buff[len] = '\0';
+       std::string byteType(buff);
+       sValue = byteType;
+     }
+     else if (id == GemfireTypeIds::CacheableInt32) {
+       cIntPtr= staticCast<CacheableInt32Ptr>(valueBytes);
+       int32_t intval = cIntPtr->value();
+       int len = sizeof(intval);
+       char buff[1024];
+       sprintf(buff,"%d",intval);
+       buff[len] = '\0';
+       std::string intType(buff);
+       sValue = intType;
+     }
+     else if (instanceOf<CacheableStringPtr>(valueBytes)) {
+       cStrPtr = staticCast<CacheableStringPtr>(valueBytes);
+       sValue = cStrPtr->toString();
+     }
+     else if (instanceOf<ExampleObjectPtr>(valueBytes)) {
+       cobjPtr= staticCast<ExampleObjectPtr>(valueBytes);
+       sValue = cobjPtr->toString()->asChar();
+#if 0
+       int ownId = cobjPtr->getOwner();
+       int len = sizeof(ownId);
+       char buff1[1024];
+       sprintf(buff1,"%d",ownId);
+       buff1[len] = '\0';
+       std::string ownIdStr(buff1);
+       sValue = ownIdStr;
+#endif
+     }
+     else if (instanceOf<UserPtr>(valueBytes)) {
+       cUserPtr = staticCast<UserPtr>(valueBytes);
+       sValue = cUserPtr->toString()->asChar();
+     }
+     else {
+       sValue = "Unknown object type";
+     }
+   }
+   else {
+     sValue = "No value in cache.";
+   }
+   return sValue;
+}
+
+std::string TestCacheCallback::printEvent( const EntryEvent& event )
+{
+  std::string sReturnValue;
+
+  sReturnValue = "\nPrint Event: ";
+
+  sReturnValue += getBoolValues(event.remoteOrigin());
+
+  sReturnValue += "\nRegion is : ";
+  RegionPtr rptr = event.getRegion();
+  sReturnValue += (rptr == NULLPTR) ? "NULL" : rptr->getFullPath();
+
+  CacheableStringPtr key = dynCast<CacheableStringPtr>( event.getKey() );
+  sReturnValue += "\nKey is : ";
+  if (key == NULLPTR) {
+    sReturnValue += "NULL";
+  }
+  else {
+    sReturnValue += key->asChar();
+  }
+
+  sReturnValue += "\nOld value is : ";
+  CacheablePtr oldStringValue = event.getOldValue();
+  // std::string testvalue = printEntryValue(oldStringValue);
+  if (oldStringValue == NULLPTR) {
+    sReturnValue += "NULL";
+  }
+  else{
+    sReturnValue += printEntryValue(oldStringValue);
+  }
+
+  sReturnValue += "\nNew value is : ";
+  if (event.getNewValue() == NULLPTR) {
+    sReturnValue += "NULL";
+  }
+  else {
+    CacheablePtr newStringValue = event.getNewValue();
+    sReturnValue += printEntryValue(newStringValue);
+  }
+
+  return sReturnValue;
+}
+
+// ----------------------------------------------------------------------------
+/**
+  * Returns a description of the given <code>CacheEvent</code>.
+  */
+// ----------------------------------------------------------------------------
+
+std::string TestCacheCallback::printEvent( const RegionEvent& event )
+{
+  std::string sReturnValue;
+
+  sReturnValue = "\nPrint Event: ";
+
+  sReturnValue += getBoolValues( event.remoteOrigin() );
+
+  sReturnValue += "\nRegion is : ";
+  RegionPtr region = event.getRegion();
+  sReturnValue += (region == NULLPTR) ? "NULL" : region->getFullPath();
+
+  return sReturnValue;
+}
+
+// ----------------------------------------------------------------------------
+/**
+  * Returns a description of the given load event.
+  */
+// ----------------------------------------------------------------------------
+
+std::string TestCacheCallback::printEvent(const RegionPtr& rp,
+    const CacheableKeyPtr& key, const UserDataPtr& aCallbackArgument)
+{
+  std::string sReturnValue;
+  CacheableStringPtr cStrPtr;
+  char szLogString[50];
+
+  sReturnValue += "\nRegion is : ";
+  sReturnValue += (rp == NULLPTR) ? "NULL" : rp->getFullPath();
+
+  sReturnValue += "\nKey is : ";
+  if (key == NULLPTR) {
+    sReturnValue += "NULL";
+  }
+  else if (instanceOf<CacheableStringPtr> (key)) {
+    cStrPtr = staticCast<CacheableStringPtr> (key);
+    sReturnValue += cStrPtr->toString();
+  }
+  else {
+    key->logString(szLogString, sizeof(szLogString));
+    sReturnValue += szLogString;
+  }
+
+  return sReturnValue;
+}
+
+// ----------------------------------------------------------------------------
+/**
+  * return string of boolValues
+  */
+// ----------------------------------------------------------------------------
+
+std::string TestCacheCallback::getBoolValues( bool isRemote )
+{
+  std::string sReturnValue;
+
+  if ( isRemote ) {
+    sReturnValue += "\nCache Event Origin Remote";
+  } else {
+    sReturnValue += "\nCache Event Origin Local";
+  }
+
+  return sReturnValue;
+}
+
+// ----------------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cacheRunner/TestCacheCallback.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cacheRunner/TestCacheCallback.hpp b/geode-client-native/examples/dist/cacheRunner/TestCacheCallback.hpp
new file mode 100644
index 0000000..e22886d
--- /dev/null
+++ b/geode-client-native/examples/dist/cacheRunner/TestCacheCallback.hpp
@@ -0,0 +1,96 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.  
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+/** 
+ * @file TestCacheCallback.hpp
+ * @since   1.0
+ * @version 1.0
+ * @see
+*/
+
+#ifndef __TEST_CACHE_CALLBACK_HPP__
+#define __TEST_CACHE_CALLBACK_HPP__
+
+#include <gfcpp/GemfireCppCache.hpp>
+#include <gfcpp/EntryEvent.hpp>
+ #include <gfcpp/RegionEvent.hpp>
+
+#include <string>
+
+using namespace gemfire;
+
+/**
+ * An abstract superclass of implementation of GemFire cache callbacks
+ * that are used for testing.
+ *
+ * @see #wasInvoked
+ *
+ * @author GemStone Systems, Inc.
+ *
+ * @since 3.0
+ */
+
+/**
+ * @class TestCacheCallback
+ *
+ * @brief An abstract superclass of implementation of GemFire cache callbacks
+ * that are used for testing.
+ */ 
+class TestCacheCallback
+{
+public:
+  TestCacheCallback(void);
+  virtual ~TestCacheCallback(void);
+
+public: // CacheCallback virtuals
+  virtual void close( const RegionPtr& region );
+  
+public:
+  /**
+   * Returns whether or not one of this <code>CacheListener</code>
+   * methods was invoked.  Before returning, the <code>invoked</code>
+   * flag is cleared.
+   */
+  bool wasInvoked( );
+  
+  /**
+   * This method will do nothing.  Note that it will not throw an
+   * exception.
+   */
+  //virtual int close2( const RegionPtr& region );
+  
+  /**
+   * Returns a description of the given <code>CacheEvent</code>.
+   */
+  std::string printEvent( const EntryEvent& event );
+
+  /**
+   * Returns a description of the given <code>CacheEvent</code>.
+   */
+  std::string printEvent( const RegionEvent& event );
+
+  /**
+   * Returns a description of the given load request.
+   */
+  std::string printEvent(
+    const RegionPtr& rp, 
+    const CacheableKeyPtr& key, 
+    const UserDataPtr& aCallbackArgument);
+  std::string printEntryValue(CacheablePtr& value);
+  std::string getBoolValues( bool isRemote );
+
+private:
+  /** Was this callback invoked? */
+  bool        m_bInvoked;
+};
+
+// ----------------------------------------------------------------------------
+
+#endif // __TEST_CACHE_CALLBACK_HPP__
+
+// ----------------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cacheRunner/TestCacheListener.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cacheRunner/TestCacheListener.cpp b/geode-client-native/examples/dist/cacheRunner/TestCacheListener.cpp
new file mode 100644
index 0000000..7f69801
--- /dev/null
+++ b/geode-client-native/examples/dist/cacheRunner/TestCacheListener.cpp
@@ -0,0 +1,163 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.  
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+/** 
+ * @file TestCacheListener.cpp
+ * @since   1.0
+ * @version 1.0
+ * @see
+*/
+
+#include "TestCacheListener.hpp"
+
+// ----------------------------------------------------------------------------
+
+TestCacheListener::TestCacheListener(void)
+: m_bInvoked(false)
+{
+}
+
+// ----------------------------------------------------------------------------
+
+TestCacheListener::~TestCacheListener(void)
+{
+}
+
+// ----------------------------------------------------------------------------
+
+inline void TestCacheListener::afterCreate(
+  const EntryEvent& event)
+{
+  m_bInvoked = true;
+
+  afterCreate2(event);
+}
+
+// ----------------------------------------------------------------------------
+
+inline void TestCacheListener::afterCreate2(const EntryEvent& event)
+{
+  printf( "TestCacheListener.afterCreate : %s\n", printEvent(event).c_str());
+ 
+}
+// ----------------------------------------------------------------------------
+
+
+inline void TestCacheListener::afterUpdate(
+ const EntryEvent& event)
+{
+  m_bInvoked = true;
+  afterUpdate2(event);
+}
+
+// ----------------------------------------------------------------------------
+
+inline void TestCacheListener::afterUpdate2(
+ const EntryEvent& event)
+{
+  printf( "TestCacheListener.afterUpdate : %s\n", 
+  printEvent(event).c_str());
+
+}
+
+
+// ----------------------------------------------------------------------------
+
+
+inline void TestCacheListener::afterInvalidate(
+ const EntryEvent& event)
+{
+  m_bInvoked = true;
+  afterInvalidate2(event);
+}
+
+// ----------------------------------------------------------------------------
+
+inline void TestCacheListener::afterInvalidate2(
+ const EntryEvent& event)
+{
+  printf( "TestCacheListener.afterInvalidate : %s\n", 
+  printEvent(event).c_str());
+
+}
+
+// ----------------------------------------------------------------------------
+
+
+inline void TestCacheListener::afterDestroy(
+  const EntryEvent& event) 
+{
+  m_bInvoked = true;
+
+  afterDestroy2(event);
+}
+
+// ----------------------------------------------------------------------------
+
+inline void TestCacheListener::afterDestroy2(
+  const EntryEvent& event) 
+{
+  printf( "TestCacheListener.afterDestroy : %s\n", 
+  printEvent(event).c_str());
+
+}
+
+
+// ----------------------------------------------------------------------------
+
+
+inline void TestCacheListener::afterRegionInvalidate(
+  const RegionEvent& event)
+{
+  m_bInvoked = true;
+
+  afterRegionInvalidate2(event);
+}
+
+// ----------------------------------------------------------------------------
+
+inline void TestCacheListener::afterRegionInvalidate2(
+  const RegionEvent& event)
+{
+  printf( "TestCacheListener.afterRegionInvalidate : %s\n", 
+  printEvent(event).c_str());
+
+}
+
+
+// ----------------------------------------------------------------------------
+
+
+inline void TestCacheListener::afterRegionDestroy(
+  const RegionEvent& event)
+{
+  m_bInvoked = true;
+
+  afterRegionDestroy2(event);
+}
+
+// ----------------------------------------------------------------------------
+
+inline void TestCacheListener::afterRegionDestroy2(
+const RegionEvent& event)
+{
+  printf( "TestCacheListener.afterRegionDestroy : %s\n", 
+  printEvent(event).c_str());  
+
+}
+
+
+// ----------------------------------------------------------------------------
+
+inline void TestCacheListener::close(const RegionPtr& region)
+{
+  m_bInvoked = true;
+  printf( "TestCacheListener.close\n");
+}
+
+// ----------------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cacheRunner/TestCacheListener.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cacheRunner/TestCacheListener.hpp b/geode-client-native/examples/dist/cacheRunner/TestCacheListener.hpp
new file mode 100644
index 0000000..8d1f395
--- /dev/null
+++ b/geode-client-native/examples/dist/cacheRunner/TestCacheListener.hpp
@@ -0,0 +1,164 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.  
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+/** 
+ * @file TestCacheListener.hpp
+ * @since   1.0
+ * @version 1.0
+ * @see
+*/
+
+#ifndef __TEST_CACHE_LISTENER_HPP__
+#define __TEST_CACHE_LISTENER_HPP__
+
+#include <gfcpp/GemfireCppCache.hpp>
+#include <gfcpp/CacheListener.hpp>
+
+#include "TestCacheCallback.hpp"
+
+using namespace gemfire;
+
+/**
+ * A <code>CacheListener</code> used in testing.  Its callback methods
+ * are implemented to thrown {link UnsupportedOperationException}
+ * unless the user overrides the "2" methods.
+ *
+ * @see #wasInvoked
+ *
+ * @author GemStone Systems, Inc.
+ *
+ * @since 3.0
+ */
+
+/**
+  * @class TestCacheListener
+  *
+  * @brief An example CacheListener plug-in
+  */ 
+class TestCacheListener : virtual public TestCacheCallback, virtual public CacheListener
+{
+public:
+  TestCacheListener(void);
+  ~TestCacheListener(void);
+
+  /** Handles the event of a new key being added to a region. The entry
+   * did not previously exist in this region in the local cache (even with a null value).
+   * 
+   * @param boolValues indicate the origin of Event
+   * @param rptr indicate region the event is for
+   * @param callbackArg user data
+   * @param key the key to the target object of the event
+   * @param newValue the new value of the target object of the event
+   * @param oldValue the old value of the target object of the event
+   * This function does not throw any exception.
+   * @see Region::create
+   * @see Region::put
+   * @see Region::get
+   */
+  virtual void afterCreate( const EntryEvent& event );
+
+  virtual void afterCreate2( const EntryEvent& event );
+  
+  /** Handles the event of an entry's value being modified in a region. This entry
+   * previously existed in this region in the local cache, but its previous value
+   * may have been null.
+   *
+   * @param boolValues indicate the origin of Event
+   * @param rptr indicate the region the event is for
+   * @param callbackArg user data
+   * @param key the key to the target object of the event
+   * @param newValue the new value of the target object of the event
+   * @param oldValue the old value of the target object of the event
+   * This function does not throw any exception.
+   * @see Region::put
+   */
+  virtual void afterUpdate( const EntryEvent& event );
+
+  virtual void afterUpdate2( const EntryEvent& event );
+
+  /**
+   * Handles the event of an entry's value being invalidated.
+   *
+   * @param boolValues indicate the origin of Event
+   * @param rptr indicate the region the event is for
+   * @param callbackArg user data
+   * @param key the key to the target object of the event
+   * @param newValue the new value of the target object of the event
+   * @param oldValue the old value of the target object of the event
+   * This function does not throw an exception.
+   * @see Region::invalidate
+   */
+  virtual void afterInvalidate( const EntryEvent& event );
+
+  virtual void afterInvalidate2( const EntryEvent& event );
+  
+  /**
+   * Handles the event of an entry being destroyed.
+   *
+   * @param boolValues indicate the origin of Event
+   * @param rptr indicate the region the event is for
+   * @param callbackArg user data
+   * @param key the key to the target object of the event
+   * @param newValue the new value of the target object of the event
+   * @param oldValue the old value of the target object of the event
+   * This function does not throw an exception.
+   * @see Region::destroy
+   */
+  virtual void afterDestroy( const EntryEvent& event );
+
+  virtual void afterDestroy2( const EntryEvent& event );
+
+  /** Handles the event of a region being invalidated. Events are not
+   * invoked for each individual value that is invalidated as a result of
+   * the region being invalidated. Each subregion, however, gets its own
+   * <code>regionInvalidated</code> event invoked on its listener.
+   * @param boolValues indicate the origin of Event
+   * @param rptr indicate the region the event is for
+   * @param callbackArg user data
+   * This function does not throw any exception
+   * @see Region::invalidateRegion
+   */
+  virtual void afterRegionInvalidate( const RegionEvent& event );
+
+  virtual void afterRegionInvalidate2( const RegionEvent& event );
+  
+  /** Handles the event of a region being destroyed. Events are not invoked for
+   * each individual entry that is destroyed as a result of the region being
+   * destroyed. Each subregion, however, gets its own <code>afterRegionDestroyed</code> event
+   * invoked on its listener.
+   * @param boolValues indicate the origin of Event
+   * @param rptr indicate the region the event is for
+   * @param callbackArg user data
+   * This function does not throw any exception.
+   * @see Region::destroyRegion
+   */
+  virtual void afterRegionDestroy( const RegionEvent& event );
+
+  virtual void afterRegionDestroy2( const RegionEvent& event );
+  
+  virtual void close(const RegionPtr& region);
+  
+  /**
+    * Returns wether or not one of this <code>CacheListener</code>
+    * methods was invoked.  Before returning, the <code>invoked</code>
+    * flag is cleared.
+    */
+  bool wasInvoked( ) 
+  {
+    bool bInvoked = m_bInvoked;
+    m_bInvoked = false;
+    return bInvoked;
+  }
+
+  private:
+    bool  m_bInvoked;
+};
+
+// ----------------------------------------------------------------------------
+
+#endif // __TEST_CACHE_LISTENER_HPP__

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cacheRunner/TestCacheLoader.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cacheRunner/TestCacheLoader.cpp b/geode-client-native/examples/dist/cacheRunner/TestCacheLoader.cpp
new file mode 100644
index 0000000..38af5e9
--- /dev/null
+++ b/geode-client-native/examples/dist/cacheRunner/TestCacheLoader.cpp
@@ -0,0 +1,70 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+/**
+ * @file TestCacheLoader.cpp
+ * @since   1.0
+ * @version 1.0
+ * @see
+*/
+
+#include "TestCacheLoader.hpp"
+
+// ----------------------------------------------------------------------------
+TestCacheLoader::TestCacheLoader()
+ :m_bInvoked(false)
+{
+}
+
+/*
+TestCacheLoader::TestCacheLoader( const CacheLoader& rhs)
+: CacheLoader(rhs), m_bInvoked(false)
+{
+}
+*/
+// ----------------------------------------------------------------------------
+
+TestCacheLoader::~TestCacheLoader(void)
+{
+}
+
+// ----------------------------------------------------------------------------
+
+CacheablePtr TestCacheLoader::load(
+  const RegionPtr& region,
+  const CacheableKeyPtr& key,
+  const UserDataPtr& aCallbackArgument)
+{
+  m_bInvoked = true;
+  printf( "CacheLoader.load : %s\n", printEvent(region, key,
+        aCallbackArgument).c_str());
+  CacheablePtr value = NULLPTR;
+  try {
+    value = region->get(key, aCallbackArgument);
+  } catch(Exception& ex) {
+      fprintf(stderr, "Exception in TestCacheCallback::printEvent [%s]\n", ex.getMessage());
+  }
+  if (value != NULLPTR) {
+     printf( "Loader found value: ");
+     std::string formatValue = printEntryValue(value);
+     printf( "%s\n",formatValue.c_str());
+  } else {
+     printf( " Loader did not find a value");
+  }
+
+  return value;
+}
+
+// ----------------------------------------------------------------------------
+
+void TestCacheLoader::close( const RegionPtr& region )
+{
+  m_bInvoked = true;
+}
+
+// ----------------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cacheRunner/TestCacheLoader.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cacheRunner/TestCacheLoader.hpp b/geode-client-native/examples/dist/cacheRunner/TestCacheLoader.hpp
new file mode 100644
index 0000000..50d6dd3
--- /dev/null
+++ b/geode-client-native/examples/dist/cacheRunner/TestCacheLoader.hpp
@@ -0,0 +1,98 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.  
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+/** 
+ * @file TestCacheLoader.hpp
+ * @since   1.0
+ * @version 1.0
+ * @see
+*/
+
+#ifndef __TEST_CACHE_LOADER_HPP__
+#define __TEST_CACHE_LOADER_HPP__
+
+#include <gfcpp/GemfireCppCache.hpp>
+#include <gfcpp/CacheLoader.hpp>
+
+#include "TestCacheCallback.hpp"
+
+using namespace gemfire;
+
+/**
+ * A <code>CacheLoader</code> used in testing.  Users should override
+ * the "2" method.
+ *
+ * @see #wasInvoked
+ * @see TestCacheWriter
+ *
+ * @author GemStone Systems, Inc.
+ *
+ * @since 3.0
+ */
+
+/**
+  * @class TestCacheLoader
+  *
+  * @brief An example CacheLoader plug-in
+  */ 
+class TestCacheLoader : virtual public TestCacheCallback, virtual public CacheLoader
+{
+public:
+  TestCacheLoader();
+  //TestCacheLoader( const CacheLoader& rhs);
+  
+  ~TestCacheLoader( );
+
+  /**Loads a value. Application writers should implement this
+   * method to customize the loading of a value. This method is called
+   * by the caching service when the requested value is not in the cache.
+   * Any exception (including an unchecked exception) thrown by this
+   * method is propagated back to and thrown by the invocation of
+   * {link Region::get} that triggered this load.
+   *
+   * @param rp a Region Pointer for which this is called.
+   * @param key the key for the cacheable
+   * @param cptr the value to be loaded
+   * @param aCallbackArgument a LoaderHelper object that is passed in from cache service
+   * and provides access to the key, region, argument, and <code>netSearch</code>.
+   * @return the value supplied for this key, or null if no value can be
+   * supplied. If this load is invoked as part of a {link LoaderHelper::netSearch},
+   * returning null will cause GemFire to invoke the next loader it finds
+   * in the system (if there is one).  If every available loader returns
+   * a null value, {link Region::get} will return null.
+   *
+   *This function does not throw any exception.
+   *@see Region::get .
+   */
+  virtual CacheablePtr load(
+    const RegionPtr& region, 
+    const CacheableKeyPtr& key, 
+    const UserDataPtr& aCallbackArgument);
+  
+  virtual void close( const RegionPtr& region );
+
+  /**
+    * Returns wether or not one of this <code>CacheLoader</code>
+    * methods was invoked.  Before returning, the <code>invoked</code>
+    * flag is cleared.
+    */
+  bool wasInvoked( ) 
+  {
+    bool bInvoked = m_bInvoked;
+    m_bInvoked = false;
+    return bInvoked;
+  }
+
+  private:
+    bool  m_bInvoked;
+  
+};
+
+// ----------------------------------------------------------------------------
+
+#endif // __TEST_CACHE_LOADER_HPP__

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cacheRunner/TestCacheWriter.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cacheRunner/TestCacheWriter.cpp b/geode-client-native/examples/dist/cacheRunner/TestCacheWriter.cpp
new file mode 100644
index 0000000..a0c3084
--- /dev/null
+++ b/geode-client-native/examples/dist/cacheRunner/TestCacheWriter.cpp
@@ -0,0 +1,252 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.  
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+/** 
+ * @file TestCacheWriter.cpp
+ * @since   1.0
+ * @version 1.0
+ * @see
+*/
+
+#include "TestCacheWriter.hpp"
+
+// ----------------------------------------------------------------------------
+
+TestCacheWriter::TestCacheWriter(void)
+: m_bInvoked(false)
+{
+}
+
+// ----------------------------------------------------------------------------
+
+TestCacheWriter::~TestCacheWriter(void)
+{
+}
+
+// ----------------------------------------------------------------------------
+/**
+  * Called before an entry is updated. The entry update is initiated by a <code>put</code>
+  * or a <code>get</code> that causes the loader to update an existing entry.
+  * The entry previously existed in the cache where the operation was
+  * initiated, although the old value may have been null. The entry being
+  * updated may or may not exist in the local cache where the CacheWriter is
+  * installed.
+  *
+  * @param boolValues indicate the origin of Event
+  * @param rptr indicate the region the event is for
+  * @param callbackArg user data
+  * @param key the key to the target object of the event
+  * @param newValue the new value of the target object of the event
+  * @param oldValue the old value of the target object of the event
+  *
+  * This function does not throw any exception.
+  *
+  * @see Region::put
+  * @see Region::get
+  */
+// ----------------------------------------------------------------------------
+
+bool TestCacheWriter::beforeUpdate( const EntryEvent& event )
+{
+   m_bInvoked = true;
+
+   beforeUpdate2( event );
+   return m_bInvoked;
+}
+
+// ----------------------------------------------------------------------------
+
+void TestCacheWriter::beforeUpdate2( const EntryEvent& event )
+{
+  printf( "TestCacheWriter.beforeUpdate : %s\n", 
+  printEvent( event ).c_str() );
+}
+  
+
+// ----------------------------------------------------------------------------
+/** Called before an entry is created. Entry creation is initiated by a
+  * <code>create</code>, a <code>put</code>, or a <code>get</code>.
+  * The <code>CacheWriter</code> can determine whether this value comes from a
+  * <code>get</code> or not from {@link EntryEvent::isLoad}. The entry being
+  * created may already exist in the local cache where this <code>CacheWriter</code>
+  * is installed, but it does not yet exist in the cache where the operation was initiated.
+  * @param boolValues indicate the origin of Event
+  * @param rptr indicate the region the event is for
+  * @param callbackArg user data
+  * @param key the key to the target object of the event
+  * @param newValue the new value of the target object of the event
+  * @param oldValue the old value of the target object of the event
+  *
+  * This function does not throw any exception.
+  *
+  * @see Region::create
+  * @see Region::put
+  * @see Region::get
+  */
+// ----------------------------------------------------------------------------
+
+bool TestCacheWriter::beforeCreate( const EntryEvent& event )
+{
+  m_bInvoked = true;
+
+  beforeCreate2( event );
+  return m_bInvoked;
+}
+
+// ----------------------------------------------------------------------------
+
+//inline ErrorCodes::Codes TestCacheWriter::beforeCreate2( const EntryEvent& event )
+inline void TestCacheWriter::beforeCreate2( const EntryEvent& event )
+{
+   printf( "TestCacheWriter.beforeCreate : %s\n", 
+   printEvent( event ).c_str() );
+
+}
+  
+// ----------------------------------------------------------------------------
+/*@brief called before this region is invalidated
+  * @param boolValues indicate the origin of Event
+  * @param rptr indicate the region the event is for
+  * @param callbackArg user data
+  * @param key the key to the target object of the event
+  * @param newValue the new value of the target object of the event
+  * @param oldValue the old value of the target object of the event
+  *
+  * This function does not throw any exception.
+  * @see Region::invalidate
+  */
+// ----------------------------------------------------------------------------
+
+void TestCacheWriter::beforeInvalidate( const EntryEvent& event )
+{
+  m_bInvoked = true;
+
+  beforeInvalidate2( event );
+}
+
+// ----------------------------------------------------------------------------
+
+//inline ErrorCodes::Codes TestCacheWriter::beforeInvalidate2( const EntryEvent& event )
+inline void TestCacheWriter::beforeInvalidate2( const EntryEvent& event )
+{
+  printf( "TestCacheWriter.beforeInvalidate : %s\n", 
+  printEvent( event ).c_str() );
+}
+
+// ----------------------------------------------------------------------------
+/**
+  * Called before an entry is destroyed. The entry being destroyed may or may
+  * not exist in the local cache where the CacheWriter is installed. This method
+  * is <em>not</em> called as a result of expiration or {@link Region::localDestroyRegion}.
+  *
+  * @param boolValues indicate the origin of Event
+  * @param rptr indicate the region the event is for
+  * @param callbackArg user data
+  * @param key the key to the target object of the event
+  * @param newValue the new value of the target object of the event
+  * @param oldValue the old value of the target object of the event
+  * This function does not throw any exception.
+  *
+  * @see Region::destroy
+  */
+// ----------------------------------------------------------------------------
+
+bool TestCacheWriter::beforeDestroy( const EntryEvent& event )
+{
+  m_bInvoked = true;
+
+  beforeDestroy2( event );
+  return m_bInvoked;
+}
+
+// ----------------------------------------------------------------------------
+
+void TestCacheWriter::beforeDestroy2( const EntryEvent& event )
+{
+  printf( "TestCacheWriter.beforeDestroy : %s\n", 
+  printEvent( event ).c_str() );
+}
+
+// ----------------------------------------------------------------------------
+
+
+/**
+  * Called before a region is destroyed. The <code>CacheWriter</code>
+  * will not additionally be called for each entry that is destroyed
+  * in the region as a result of a region destroy. If the region's
+  * subregions have <code>CacheWriter</code>s installed, then they
+  * will be called for the cascading subregion destroys.
+  * This method is <em>not</em> called as a result of
+  * expiration or {@link Region::localDestroyRegion}.  However, the
+  * <code>close</code> method is invoked regardless of whether a
+  * region is destroyed locally.  A non-local region destroy results
+  * in an invocation of beforeRegionDestroy followed by an
+  * invocation of {@link CacheCallback::close}.
+  *<p>
+  * WARNING: This method should not destroy or create any regions itself, or a
+  * deadlock will occur.
+  *
+  * @param boolValues indicate the origin of Event
+  * @param rptr indicate region the event is for
+  * @param callbackArg user data
+  *
+  * This function does not throw any exception.
+  * @see Region::invalidateRegion
+  */
+// ----------------------------------------------------------------------------
+
+void TestCacheWriter::beforeRegionInvalidate( const RegionEvent& event )
+{
+  m_bInvoked = true;
+
+  beforeRegionInvalidate2( event );
+}
+
+// ----------------------------------------------------------------------------
+
+void TestCacheWriter::beforeRegionInvalidate2( const RegionEvent& event )
+{
+  printf( "TestCacheWriter.beforeRegionInvalidate : %s\n", 
+  printEvent( event ).c_str() );
+}
+
+// ----------------------------------------------------------------------------
+/*@brief called before this region is destroyed
+  * @param boolValues indicate the origin of Event
+  * @param rptr indicate region the event is for
+  * @param callbackArg user data
+  *
+  * This function does not throw any exception.
+  * @see Region::destroyRegion
+  */
+// ----------------------------------------------------------------------------
+
+bool TestCacheWriter::beforeRegionDestroy( const RegionEvent& event )
+{
+  m_bInvoked = true;
+
+  beforeRegionDestroy2( event );
+  return m_bInvoked;
+}
+
+// ----------------------------------------------------------------------------
+
+void TestCacheWriter::beforeRegionDestroy2( const RegionEvent& event )
+{
+  printf( "TestCacheWriter.beforeRegionDestroy : %s\n", 
+    printEvent( event ).c_str() );
+}
+
+// ----------------------------------------------------------------------------
+
+void TestCacheWriter::close( const RegionPtr& region )
+{
+  m_bInvoked = true;
+  printf( "TestCacheWriter.close\n");
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cacheRunner/TestCacheWriter.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cacheRunner/TestCacheWriter.hpp b/geode-client-native/examples/dist/cacheRunner/TestCacheWriter.hpp
new file mode 100644
index 0000000..bf78865
--- /dev/null
+++ b/geode-client-native/examples/dist/cacheRunner/TestCacheWriter.hpp
@@ -0,0 +1,198 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.  
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+/** 
+ * @file TestCacheWriter.hpp
+ * @since   1.0
+ * @version 1.0
+ * @see
+*/
+
+#ifndef __TEST_CACHE_WRITER_HPP__
+#define __TEST_CACHE_WRITER_HPP__
+
+#include <gfcpp/GemfireCppCache.hpp>
+#include <gfcpp/CacheWriter.hpp>
+
+#include "TestCacheCallback.hpp"
+
+using namespace gemfire;
+
+/**
+ * A <code>CacheWriter</code> used in testing.  Its callback methods
+ * are implemented to thrown {link UnsupportedOperationException}
+ * unless the user overrides the "2" methods.
+ *
+ * @see #wasInvoked
+ *
+ * @author GemStone Systems, Inc.
+ *
+ * @since 3.0
+ */
+
+/**
+  * @class TestCacheWriter
+  *
+  * @brief An example CacheWriter plug-in
+  */ 
+class TestCacheWriter : virtual public TestCacheCallback, virtual public CacheWriter
+{
+public:
+  TestCacheWriter(void);
+  ~TestCacheWriter(void);
+
+  /**
+   * Called before an entry is updated. The entry update is initiated by a <code>put</code>
+   * or a <code>get</code> that causes the loader to update an existing entry.
+   * The entry previously existed in the cache where the operation was
+   * initiated, although the old value may have been null. The entry being
+   * updated may or may not exist in the local cache where the CacheWriter is
+   * installed.
+   *
+   * @param eventCode indicate the type of Event
+   * @param boolValues indicate the origin of Event
+   * @param rptr indicate the region the event is for
+   * @param callbackArg user data
+   * @param key the key to the target object of the event
+   * @param newValue the new value of the target object of the event
+   * @param oldValue the old value of the target object of the event
+   *
+   * This function does not throw any exception.
+   *
+   * @see Region::put
+   * @see Region::get
+   */
+  virtual bool beforeUpdate( const EntryEvent& event );
+
+  virtual void beforeUpdate2( const EntryEvent& event );
+
+  /** Called before an entry is created. Entry creation is initiated by a
+   * <code>create</code>, a <code>put</code>, or a <code>get</code>.
+   * The <code>CacheWriter</code> can determine whether this value comes from a
+   * <code>get</code> or not from {link EntryEvent::isLoad}. The entry being
+   * created may already exist in the local cache where this <code>CacheWriter</code>
+   * is installed, but it does not yet exist in the cache where the operation was initiated.
+   * @param eventCode indicate the type of Event
+   * @param boolValues indicate the origin of Event
+   * @param rptr indicate the region the event is for
+   * @param callbackArg user data
+   * @param key the key to the target object of the event
+   * @param newValue the new value of the target object of the event
+   * @param oldValue the old value of the target object of the event
+   *
+   * This function does not throw any exception.
+   *
+   * @see Region::create
+   * @see Region::put
+   * @see Region::get
+   */
+  virtual bool beforeCreate( const EntryEvent& event );
+
+  virtual void beforeCreate2( const EntryEvent& event );
+  
+  /*@brief called before this region is invalidated
+   * @param eventCode indicate the type of Event
+   * @param boolValues indicate the origin of Event
+   * @param rptr indicate the region the event is for
+   * @param callbackArg user data
+   * @param key the key to the target object of the event
+   * @param newValue the new value of the target object of the event
+   * @param oldValue the old value of the target object of the event
+   *
+   * This function does not throw any exception.
+   * @see Region::invalidate
+   */
+  virtual void beforeInvalidate( const EntryEvent& event );
+
+  virtual void beforeInvalidate2( const EntryEvent& event );
+  
+  /**
+   * Called before an entry is destroyed. The entry being destroyed may or may
+   * not exist in the local cache where the CacheWriter is installed. This method
+   * is <em>not</em> called as a result of expiration or {link Region::localDestroyRegion}.
+   *
+   * @param eventCode indicate the type of Event
+   * @param boolValues indicate the origin of Event
+   * @param rptr indicate the region the event is for
+   * @param callbackArg user data
+   * @param key the key to the target object of the event
+   * @param newValue the new value of the target object of the event
+   * @param oldValue the old value of the target object of the event
+   * This function does not throw any exception.
+   *
+   * @see Region::destroy
+   */
+  virtual bool beforeDestroy( const EntryEvent& event );
+
+  virtual void beforeDestroy2( const EntryEvent& event );
+  
+  /**
+   * Called before a region is destroyed. The <code>CacheWriter</code>
+   * will not additionally be called for each entry that is destroyed
+   * in the region as a result of a region destroy. If the region's
+   * subregions have <code>CacheWriter</code>s installed, then they
+   * will be called for the cascading subregion destroys.
+   * This method is <em>not</em> called as a result of
+   * expiration or {link Region::localDestroyRegion}.  However, the
+   * <code>close</code> method is invoked regardless of whether a
+   * region is destroyed locally.  A non-local region destroy results
+   * in an invocation of beforeRegionDestroy followed by an
+   * invocation of {link CacheCallback::close}.
+   *<p>
+   * WARNING: This method should not destroy or create any regions itself, or a
+   * deadlock will occur.
+   *
+   * @param eventCode indicate the type of Event
+   * @param boolValues indicate the origin of Event
+   * @param rptr indicate region the event is for
+   * @param callbackArg user data
+   *
+   * This function does not throw any exception.
+   * @see Region::invalidateRegion
+   */
+  virtual void beforeRegionInvalidate( const RegionEvent& event );
+
+  virtual void beforeRegionInvalidate2( const RegionEvent& event );
+  
+  /*@brief called before this region is destroyed
+   * @param eventCode indicate the type of Event
+   * @param boolValues indicate the origin of Event
+   * @param rptr indicate region the event is for
+   * @param callbackArg user data
+   *
+   * This function does not throw any exception.
+   * @see Region::destroyRegion
+   */
+  virtual bool beforeRegionDestroy( const RegionEvent& event );
+
+  virtual void beforeRegionDestroy2( const RegionEvent& event );
+  
+  virtual void close( const RegionPtr& region );
+  
+ 
+  /**
+    * Returns wether or not one of this <code>CacheWriter</code>
+    * methods was invoked.  Before returning, the <code>invoked</code>
+    * flag is cleared.
+    */
+  bool wasInvoked( ) 
+  {
+    bool bInvoked = m_bInvoked;
+    m_bInvoked = false;
+    return bInvoked;
+  }
+
+  private:
+    bool  m_bInvoked;
+};
+
+// ----------------------------------------------------------------------------
+
+#endif // __TEST_CACHE_WRITER_HPP__
+
+// ----------------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cacheRunner/User.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cacheRunner/User.hpp b/geode-client-native/examples/dist/cacheRunner/User.hpp
new file mode 100644
index 0000000..094292e
--- /dev/null
+++ b/geode-client-native/examples/dist/cacheRunner/User.hpp
@@ -0,0 +1,146 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.  
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+/*
+ * @brief User class for testing the put functionality for object. 
+ */
+
+
+#ifndef __USER_HPP__
+#define __USER_HPP__
+
+#ifdef _EXAMPLE
+#include <gfcpp/GemfireCppCache.hpp>
+#else
+#include <../GemfireCppCache.hpp>
+#endif
+#include "ExampleObject.hpp"
+#include <string>
+
+class User
+: public Serializable
+{
+  private:
+    std::string name;
+    int32_t userId;
+    ExampleObject *eo;
+  public:
+    User( std::string name, int32_t userId )
+    : name( name ),userId( userId )
+    {
+      eo = new ExampleObject(this->userId);
+    }
+
+    ~User() {
+      if (eo != NULL) delete eo;
+        eo = NULL;
+    }
+
+    User ()
+    {
+      name = "";
+      userId = 0;
+      eo = new ExampleObject(userId);
+    }
+
+    User( const char *strfmt, char delimeter )
+    {
+      std::string userId_str;
+      std::string sValue(strfmt);
+      std::string::size_type pos1 = sValue.find_first_of(delimeter);
+      std::string::size_type pos2;
+      if (pos1 == std::string::npos) {
+        userId_str = sValue;
+        name = sValue; 
+      } 
+      else {
+        userId_str = sValue.substr(0, pos1);
+        pos2 = sValue.find(delimeter, pos1+1);
+        int len;
+        if (pos2==std::string::npos) {
+          len = sValue.length()-pos1;
+        } 
+        else {
+          len = pos2-pos1;
+        }
+        name = sValue.substr(pos1+1, len);
+      }
+      userId = (int32_t)atoi(userId_str.c_str());
+      eo = new ExampleObject(userId_str);
+    }
+
+    CacheableStringPtr toString() const
+    {
+      CacheableStringPtr eo_str = eo->toString();
+      char userId_str[128];
+      sprintf(userId_str,"User: %d", userId);
+      std::string sValue = std::string(userId_str) + "," + name + "\n";
+      sValue += std::string(eo_str->asChar());
+      return CacheableString::create( sValue.c_str() );
+    }
+
+    int32_t getUserId( )
+    {
+      return userId;
+    }
+
+    std::string getName( )
+    {
+      return name;
+    }
+
+    ExampleObject *getEO()
+    {
+      return eo;
+    }
+
+    void setEO(ExampleObject *eObject)
+    {
+      eo = eObject;
+    }
+
+    // Add the following for the Serializable interface
+    // Our TypeFactoryMethod
+
+    static Serializable* createInstance( )
+    {
+      return new User(std::string("gester"), 123);
+    }
+
+    int32_t classId( ) const
+    {
+      return 0x2d; // 45
+    }
+
+    void toData( DataOutput& output ) const
+    {
+      output.writeASCII( name.c_str(), name.size() );
+      output.writeInt( userId );
+      eo->toData(output);
+    }
+
+    uint32_t objectSize( ) const
+    {
+      return ( sizeof(char) * ( name.size() + 1 ) ) +
+        sizeof(User) + eo->objectSize();
+    }
+
+    Serializable* fromData( DataInput& input )
+    {
+      char *readbuf;
+      input.readASCII( &readbuf );
+      name = std::string(readbuf);
+      input.freeUTFMemory( readbuf );
+      input.readInt( &userId );
+      eo->fromData(input);
+      return this;
+    }
+};
+
+typedef SharedPtr<User> UserPtr;
+#endif

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cacheRunner/buildit.bat
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cacheRunner/buildit.bat b/geode-client-native/examples/dist/cacheRunner/buildit.bat
new file mode 100755
index 0000000..196921e
--- /dev/null
+++ b/geode-client-native/examples/dist/cacheRunner/buildit.bat
@@ -0,0 +1,7 @@
+@echo off
+
+rem GFCPP must be set
+
+cl /MD /Zc:wchar_t /EHsc /GR /wd4996 /D_EXAMPLE /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NON_CONFORMING_SWPRINTFS /DWINVER=0x0500 /DBUILD_TESTOBJECT /I%GFCPP%/include /Fecacherunner.exe *.cpp %GFCPP%/lib/gfcppcache.lib
+
+del *.obj

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cacheRunner/buildit.sh
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cacheRunner/buildit.sh b/geode-client-native/examples/dist/cacheRunner/buildit.sh
new file mode 100755
index 0000000..190b3ea
--- /dev/null
+++ b/geode-client-native/examples/dist/cacheRunner/buildit.sh
@@ -0,0 +1,41 @@
+#!/bin/bash
+
+
+if [ -z ${GFCPP:-} ]; then
+  echo set GFCPP...
+  exit 1
+fi
+
+OPT=-O3
+LIBDIR=lib
+platform=`uname`
+is64bit=__IS_64_BIT__
+if [ "$platform" == "SunOS" ]; then
+  if [ $is64bit -eq 1 ]; then
+    ARCH="-xarch=v9"
+  else 
+    ARCH="-xarch=v8plus"
+  fi
+  CC  \
+      -mt -D_RWSTD_MULTI_THREAD -DTHREAD=MULTI \
+      -D_REENTRANT -D_EXAMPLE $OPT $ARCH \
+      -I$GFCPP/include \
+      -L$GFCPP/$LIBDIR \
+      -R$GFCPP/$LIBDIR \
+      -lgfcppcache -lrt -lpthread -lkstat \
+      CacheRunner.cpp CommandReader.cpp Test*.cpp Po*.cpp -o cacheRunner 
+elif [ "$platform" == "Linux" ]; then
+  if [ $is64bit -eq 1 ]; then
+    ARCH="-m64"
+  else
+    ARCH="-m32"
+  fi
+  g++ \
+      -D_REENTRANT -D_EXAMPLE $OPT -Wall $ARCH \
+      -I$GFCPP/include \
+      -Wl,-rpath,$GFCPP/$LIBDIR -L$GFCPP/$LIBDIR -lgfcppcache \
+      CacheRunner.cpp CommandReader.cpp Test*.cpp Po*.cpp -o cacheRunner 
+else
+  echo "This script is not supported on this platform."
+  exit 1
+fi

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cacheRunner/cacherunner.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cacheRunner/cacherunner.xml b/geode-client-native/examples/dist/cacheRunner/cacherunner.xml
new file mode 100644
index 0000000..6bb3b63
--- /dev/null
+++ b/geode-client-native/examples/dist/cacheRunner/cacherunner.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+
+<!-- Initializes a cache to serve the bridge_region region, 
+    waiting for bridge client communication on port 50505 -->
+
+<!DOCTYPE cache PUBLIC
+  "-//GemStone Systems, Inc.//GemFire Declarative Caching 6.5//EN"
+  "http://www.gemstone.com/dtd/cache6_5.dtd">
+<cache>
+  <cache-server port="50505" notify-by-subscription="true" />
+    <region name="root">
+      <region-attributes scope="distributed-no-ack"/>
+        <entry>
+          <key><string>entry3</string></key>
+          <value><string>3.0</string></value>
+        </entry>
+    </region>
+    <region name="listenerWriterLoader">
+      <region-attributes scope="distributed-ack" mirror-type="keys-values">
+        <!--cache-loader>
+          <class-name>cacheRunner.StringLoader</class-name>
+        </cache-loader-->
+      </region-attributes>
+      <entry>
+        <key><string>entry1</string></key>
+        <value><string>1.0</string></value>
+      </entry>
+   </region>
+</cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cacheRunner/cacherunner2.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cacheRunner/cacherunner2.xml b/geode-client-native/examples/dist/cacheRunner/cacherunner2.xml
new file mode 100644
index 0000000..3a6c04b
--- /dev/null
+++ b/geode-client-native/examples/dist/cacheRunner/cacherunner2.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+
+<!-- Initializes a cache to serve the bridge_region region, 
+    waiting for bridge client communication on port 50506 -->
+
+<!DOCTYPE cache PUBLIC
+  "-//GemStone Systems, Inc.//GemFire Declarative Caching 6.5//EN"
+  "http://www.gemstone.com/dtd/cache6_5.dtd">
+<cache>
+  <cache-server port="50506" notify-by-subscription="true" />
+  <region name="root">
+      <region-attributes scope="distributed-no-ack"/>
+        <entry>
+          <key><string>entry3</string></key>
+          <value><string>3.0</string></value>
+        </entry>
+    </region>
+    <region name="listenerWriterLoader">
+      <region-attributes scope="distributed-ack" mirror-type="keys-values">
+        <!--cache-loader>
+          <class-name>cacheRunner.StringLoader</class-name>
+        </cache-loader-->
+      </region-attributes>
+      <entry>
+        <key><string>entry1</string></key>
+        <value><string>1.0</string></value>
+      </entry>     
+    </region>
+</cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cacheRunner/csQueryPortfolios.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cacheRunner/csQueryPortfolios.xml b/geode-client-native/examples/dist/cacheRunner/csQueryPortfolios.xml
new file mode 100644
index 0000000..ca39f6f
--- /dev/null
+++ b/geode-client-native/examples/dist/cacheRunner/csQueryPortfolios.xml
@@ -0,0 +1,354 @@
+<?xml version="1.0"?>
+<!DOCTYPE cache PUBLIC
+  "-//GemStone Systems, Inc.//GemFire Declarative Caching 6.5//EN"
+  "http://www.gemstone.com/dtd/cache6_5.dtd">
+<cache>
+  <cache-server port="50505" />
+  <region name="root">
+    <region-attributes scope="distributed-no-ack"/>
+  </region>
+  <region name="listenerWriterLoader">
+    <region-attributes scope="distributed-ack" mirror-type="keys-values"/>
+  </region>
+  <region name="Portfolios">
+    <region-attributes scope="distributed-ack" mirror-type="keys-values">
+      <value-constraint>javaobject.Portfolio</value-constraint>
+    </region-attributes>
+    <entry>
+    <key><string>1</string></key>
+    <value>
+      <declarable>
+        <class-name>javaobject.Portfolio</class-name>
+        <parameter name="ID">
+          <string>1</string>
+        </parameter>
+        <parameter name="pkid">
+          <string>1</string>
+        </parameter>
+        <parameter name="type">
+          <string>type1</string>
+        </parameter>
+        <parameter name="status">
+          <string>active</string>
+        </parameter>
+        <parameter name="newVal">
+          <string>CCCCC</string>
+        </parameter>
+        <parameter name="position1">
+          <declarable>
+            <class-name>javaobject.Position</class-name>
+             <parameter name="secId">
+                <string>SUN</string>
+             </parameter>
+             <parameter name="qty">
+                <string>3900</string>
+             </parameter>
+             <parameter name="mktValue">
+               <string>3400.893475</string>
+             </parameter>
+             <parameter name="sharesOutstanding">
+               <string>3400</string>
+             </parameter>
+             <parameter name="secType">
+               <string>r</string>
+             </parameter>
+             <parameter name="pid">
+                <string>345</string>
+             </parameter>
+           </declarable>
+          </parameter>
+          <parameter name="position2">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>IBM</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>4600</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>9900.884732</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>8765</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>p</string>
+                </parameter>
+                <parameter name="pid">
+                   <string>123</string>
+                </parameter>
+            </declarable>
+          </parameter>
+        </declarable>
+      </value>
+     </entry>
+     <entry>
+      <key><string>2</string></key>
+      <value>
+        <declarable>
+          <class-name>javaobject.Portfolio</class-name>
+          <parameter name="ID">
+            <string>2</string>
+          </parameter>
+          <parameter name="pkid">
+            <string>2</string>
+          </parameter>
+          <parameter name="type">
+            <string>type2</string>
+          </parameter>
+          <parameter name="status">
+            <string>inactive</string>
+          </parameter>
+          <parameter name="position1">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>YHOO</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>3900</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>3400.893475</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>9834</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>y</string>
+                </parameter>
+                <parameter name="pid">
+                    <string>129</string>
+                </parameter>
+            </declarable>
+          </parameter>
+          <parameter name="position2">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>GOOG</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>3900</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>3400.893475</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>834</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>t</string>
+                </parameter>
+                <parameter name="pid">
+                    <string>569</string>
+                </parameter>
+            </declarable>
+          </parameter>
+        </declarable>
+      </value>
+    </entry>
+
+     <entry>
+      <key><string>3</string></key>
+      <value>
+        <declarable>
+          <class-name>javaobject.Portfolio</class-name>
+          <parameter name="ID">
+            <string>3</string>
+          </parameter>
+          <parameter name="pkid">
+            <string>3</string>
+          </parameter>
+          <parameter name="type">
+            <string>type3</string>
+          </parameter>
+          <parameter name="status">
+            <string>active</string>
+          </parameter>
+          <parameter name="position1">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>MSFT</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>3900</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>3400.893475</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>1834</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>o</string>
+                </parameter>
+                <parameter name="pid">
+                    <string>545</string>
+                </parameter>
+            </declarable>
+          </parameter>
+          <parameter name="position2">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>AOL</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>3900</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>3400.893475</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>8354</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>t</string>
+                </parameter>
+                <parameter name="pid">
+                    <string>987</string>
+                </parameter>
+            </declarable>
+          </parameter>
+        </declarable>
+      </value>
+    </entry>
+
+     <entry>
+      <key><string>4</string></key>
+      <value>
+        <declarable>
+          <class-name>javaobject.Portfolio</class-name>
+          <parameter name="ID">
+            <string>4</string>
+          </parameter>
+          <parameter name="pkid">
+            <string>4</string>
+          </parameter>
+          <parameter name="type">
+            <string>type1</string>
+          </parameter>
+          <parameter name="status">
+            <string>inactive</string>
+          </parameter>
+          <parameter name="position1">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>APPL</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>3900</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>3400.893475</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>3654</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>d</string>
+                </parameter>
+                <parameter name="pid">
+                    <string>287</string>
+                </parameter>
+            </declarable>
+          </parameter>
+          <parameter name="position2">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>ORCL</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>3900</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>3400.893475</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>5344</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>k</string>
+                </parameter>
+                <parameter name="pid">
+                    <string>567</string>
+                </parameter>
+            </declarable>
+          </parameter>
+        </declarable>
+      </value>
+    </entry>
+
+     <entry>
+      <key><string>5</string></key>
+      <value>
+        <declarable>
+          <class-name>javaobject.Portfolio</class-name>
+          <parameter name="ID">
+            <string>5</string>
+          </parameter>
+          <parameter name="pkid">
+            <string>5</string>
+          </parameter>
+          <parameter name="type">
+            <string>type2</string>
+          </parameter>
+          <parameter name="status">
+            <string>active</string>
+          </parameter>
+          <parameter name="position1">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>SAP</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>3900</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>3400.893475</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>3344</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>k</string>
+                </parameter>
+                <parameter name="pid">
+                    <string>432</string>
+                </parameter>
+            </declarable>
+          </parameter>
+          <parameter name="position2">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>DELL</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>3900</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>3400.893475</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>5354</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>u</string>
+                </parameter>
+                <parameter name="pid">
+                    <string>467</string>
+                </parameter>
+            </declarable>
+          </parameter>
+        </declarable>
+      </value>
+    </entry>    
+  </region>
+</cache> 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cacheRunner/csQueryPortfolios2.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cacheRunner/csQueryPortfolios2.xml b/geode-client-native/examples/dist/cacheRunner/csQueryPortfolios2.xml
new file mode 100644
index 0000000..f1efab1
--- /dev/null
+++ b/geode-client-native/examples/dist/cacheRunner/csQueryPortfolios2.xml
@@ -0,0 +1,354 @@
+<?xml version="1.0"?>
+<!DOCTYPE cache PUBLIC
+  "-//GemStone Systems, Inc.//GemFire Declarative Caching 6.5//EN"
+  "http://www.gemstone.com/dtd/cache6_5.dtd">
+<cache>
+  <cache-server port="50506" />
+    <region name="root">
+      <region-attributes scope="distributed-no-ack"/>
+    </region>
+    <region name="listenerWriterLoader">
+      <region-attributes scope="distributed-ack" mirror-type="keys-values"/>  
+    </region>
+    <region name="Portfolios">
+      <region-attributes scope="distributed-ack" mirror-type="keys-values">
+        <value-constraint>javaobject.Portfolio</value-constraint>
+      </region-attributes>
+      <entry>
+      <key><string>1</string></key>
+      <value>
+        <declarable>
+          <class-name>javaobject.Portfolio</class-name>
+          <parameter name="ID">
+            <string>1</string>
+          </parameter>
+          <parameter name="pkid">
+            <string>1</string>
+          </parameter>
+          <parameter name="type">
+            <string>type1</string>
+          </parameter>
+          <parameter name="status">
+            <string>active</string>
+          </parameter>
+          <parameter name="newVal">
+            <string>CCCCC</string>
+          </parameter>
+          <parameter name="position1">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>SUN</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>3900</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>3400.893475</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>3400</string>
+                </parameter>
+                <parameter name="secType">
+                    <string>r</string>
+                </parameter>
+                <parameter name="pid">
+                    <string>345</string>
+                </parameter>
+            </declarable>
+          </parameter>
+          <parameter name="position2">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>IBM</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>4600</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>9900.884732</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>8765</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>p</string>
+                </parameter>
+                <parameter name="pid">
+                   <string>123</string>
+                </parameter>
+            </declarable>
+          </parameter>
+        </declarable>
+      </value>
+     </entry>
+     <entry>
+      <key><string>2</string></key>
+      <value>
+        <declarable>
+          <class-name>javaobject.Portfolio</class-name>
+          <parameter name="ID">
+            <string>2</string>
+          </parameter>
+          <parameter name="pkid">
+            <string>2</string>
+          </parameter>
+          <parameter name="type">
+            <string>type2</string>
+          </parameter>
+          <parameter name="status">
+            <string>inactive</string>
+          </parameter>
+          <parameter name="position1">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>YHOO</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>3900</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>3400.893475</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>9834</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>y</string>
+                </parameter>
+                <parameter name="pid">
+                    <string>129</string>
+                </parameter>
+            </declarable>
+          </parameter>
+          <parameter name="position2">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>GOOG</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>3900</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>3400.893475</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>834</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>t</string>
+                </parameter>
+                <parameter name="pid">
+                    <string>569</string>
+                </parameter>
+            </declarable>
+          </parameter>
+        </declarable>
+      </value>
+    </entry>
+
+     <entry>
+      <key><string>3</string></key>
+      <value>
+        <declarable>
+          <class-name>javaobject.Portfolio</class-name>
+          <parameter name="ID">
+            <string>3</string>
+          </parameter>
+          <parameter name="pkid">
+            <string>3</string>
+          </parameter>
+          <parameter name="type">
+            <string>type3</string>
+          </parameter>
+          <parameter name="status">
+            <string>active</string>
+          </parameter>
+          <parameter name="position1">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>MSFT</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>3900</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>3400.893475</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>1834</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>o</string>
+                </parameter>
+                <parameter name="pid">
+                    <string>545</string>
+                </parameter>
+            </declarable>
+          </parameter>
+          <parameter name="position2">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>AOL</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>3900</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>3400.893475</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>8354</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>t</string>
+                </parameter>
+                <parameter name="pid">
+                    <string>987</string>
+                </parameter>
+            </declarable>
+          </parameter>
+        </declarable>
+      </value>
+    </entry>
+
+     <entry>
+      <key><string>4</string></key>
+      <value>
+        <declarable>
+          <class-name>javaobject.Portfolio</class-name>
+          <parameter name="ID">
+            <string>4</string>
+          </parameter>
+          <parameter name="pkid">
+            <string>4</string>
+          </parameter>
+          <parameter name="type">
+            <string>type1</string>
+          </parameter>
+          <parameter name="status">
+            <string>inactive</string>
+          </parameter>
+          <parameter name="position1">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>APPL</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>3900</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>3400.893475</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>3654</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>d</string>
+                </parameter>
+                <parameter name="pid">
+                    <string>287</string>
+                </parameter>
+            </declarable>
+          </parameter>
+          <parameter name="position2">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>ORCL</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>3900</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>3400.893475</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>5344</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>k</string>
+                </parameter>
+                <parameter name="pid">
+                    <string>567</string>
+                </parameter>
+            </declarable>
+          </parameter>
+        </declarable>
+      </value>
+    </entry>
+
+     <entry>
+      <key><string>5</string></key>
+      <value>
+        <declarable>
+          <class-name>javaobject.Portfolio</class-name>
+          <parameter name="ID">
+            <string>5</string>
+          </parameter>
+          <parameter name="pkid">
+            <string>5</string>
+          </parameter>
+          <parameter name="type">
+            <string>type2</string>
+          </parameter>
+          <parameter name="status">
+            <string>active</string>
+          </parameter>
+          <parameter name="position1">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>SAP</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>3900</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>3400.893475</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>3344</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>k</string>
+                </parameter>
+                <parameter name="pid">
+                    <string>432</string>
+                </parameter>
+            </declarable>
+          </parameter>
+          <parameter name="position2">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>DELL</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>3900</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>3400.893475</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>5354</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>u</string>
+                </parameter>
+                <parameter name="pid">
+                    <string>467</string>
+                </parameter>
+            </declarable>
+          </parameter>
+        </declarable>
+      </value>
+    </entry>    
+  </region>
+</cache> 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/cacheRunner/gfecs1/cacherunner.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/cacheRunner/gfecs1/cacherunner.xml b/geode-client-native/examples/dist/cacheRunner/gfecs1/cacherunner.xml
new file mode 100644
index 0000000..6bb3b63
--- /dev/null
+++ b/geode-client-native/examples/dist/cacheRunner/gfecs1/cacherunner.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+
+<!-- Initializes a cache to serve the bridge_region region, 
+    waiting for bridge client communication on port 50505 -->
+
+<!DOCTYPE cache PUBLIC
+  "-//GemStone Systems, Inc.//GemFire Declarative Caching 6.5//EN"
+  "http://www.gemstone.com/dtd/cache6_5.dtd">
+<cache>
+  <cache-server port="50505" notify-by-subscription="true" />
+    <region name="root">
+      <region-attributes scope="distributed-no-ack"/>
+        <entry>
+          <key><string>entry3</string></key>
+          <value><string>3.0</string></value>
+        </entry>
+    </region>
+    <region name="listenerWriterLoader">
+      <region-attributes scope="distributed-ack" mirror-type="keys-values">
+        <!--cache-loader>
+          <class-name>cacheRunner.StringLoader</class-name>
+        </cache-loader-->
+      </region-attributes>
+      <entry>
+        <key><string>entry1</string></key>
+        <value><string>1.0</string></value>
+      </entry>
+   </region>
+</cache>


[17/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CqAttributesMutatorM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CqAttributesMutatorM.cpp b/geode-client-native/src/clicache/CqAttributesMutatorM.cpp
new file mode 100644
index 0000000..c8f0807
--- /dev/null
+++ b/geode-client-native/src/clicache/CqAttributesMutatorM.cpp
@@ -0,0 +1,54 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "CqAttributesMutatorM.hpp"
+#include "impl/ManagedCqListener.hpp"
+
+using namespace System;
+
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      void CqAttributesMutator::AddCqListener( ICqListener^ cqListener )
+      {
+        gemfire::CqListenerPtr listenerptr;
+        if (cqListener != nullptr)
+        {
+          listenerptr = new gemfire::ManagedCqListener( cqListener );
+        }
+        NativePtr->addCqListener( listenerptr );
+      }
+
+      void CqAttributesMutator::RemoveCqListener( ICqListener^ cqListener )
+      {
+	gemfire::CqListenerPtr lptr(new gemfire::ManagedCqListener( cqListener ));
+        NativePtr->removeCqListener(lptr);
+      }
+
+      void CqAttributesMutator::SetCqListeners(array<ICqListener^>^ newListeners)
+      {
+	gemfire::VectorOfCqListener vrr(newListeners->GetLength(1));
+
+        for( int i = 0; i < newListeners->GetLength(1); i++ )
+        {
+             ICqListener^ lister = newListeners[i];
+	     vrr[i] = new gemfire::ManagedCqListener( lister );
+        }
+
+        NativePtr->setCqListeners( vrr );
+      }
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CqAttributesMutatorM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CqAttributesMutatorM.hpp b/geode-client-native/src/clicache/CqAttributesMutatorM.hpp
new file mode 100644
index 0000000..3d543c1
--- /dev/null
+++ b/geode-client-native/src/clicache/CqAttributesMutatorM.hpp
@@ -0,0 +1,90 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/CqAttributesMutator.hpp"
+#include "impl/NativeWrapper.hpp"
+
+
+using namespace System;
+using namespace System::Collections::Generic;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+	  interface class ICqListener;
+
+      /// <summary>
+      /// Supports modification of certain cq attributes after the cq
+      /// has been created.
+      /// </summary>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class CqAttributesMutator sealed
+        : public Internal::SBWrap<gemfire::CqAttributesMutator>
+      {
+      public:
+
+        /// <summary>
+        /// Adds the CqListener for the cq.
+        /// </summary>
+        /// <param name="cqListener">
+        /// user-defined cq listener, or null for no cache listener
+        /// </param>
+        void AddCqListener( ICqListener^ cqListener );
+
+        /// <summary>
+        /// Remove a CqListener for the cq.
+        /// </summary>
+        
+        void RemoveCqListener(ICqListener^ aListener);
+
+
+        /// <summary>
+	/// Initialize with an array of listeners
+        /// </summary>
+        
+        void SetCqListeners(array<ICqListener^>^ newListeners);
+
+
+      internal:
+        /// <summary>
+        /// Internal factory function to wrap a native object pointer inside
+        /// this managed class with null pointer check.
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        /// <returns>
+        /// The managed wrapper object; null if the native pointer is null.
+        /// </returns>
+        inline static CqAttributesMutator^ Create( gemfire::CqAttributesMutator* nativeptr )
+        {
+          if (nativeptr == nullptr)
+          {
+            return nullptr;
+          }
+          return gcnew CqAttributesMutator( nativeptr );
+        }
+
+
+      private:
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline CqAttributesMutator( gemfire::CqAttributesMutator* nativeptr )
+          : SBWrap( nativeptr ) { }
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CqEventM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CqEventM.cpp b/geode-client-native/src/clicache/CqEventM.cpp
new file mode 100644
index 0000000..35ed72a
--- /dev/null
+++ b/geode-client-native/src/clicache/CqEventM.cpp
@@ -0,0 +1,62 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "CqEventM.hpp"
+#include "LogM.hpp"
+#include "impl/SafeConvert.hpp"
+#include "CacheableBuiltinsM.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      CqQuery^ CqEvent::getCq( )
+      {
+        gemfire::CqQueryPtr& cQueryptr( NativePtr->getCq( ) );
+        return CqQuery::Create( cQueryptr.ptr( ) );
+      }
+
+      CqOperationType CqEvent::getBaseOperation( )
+      {
+		  return CqOperation::ConvertFromNative(NativePtr->getBaseOperation());
+      }
+
+      CqOperationType CqEvent::getQueryOperation( )
+      {
+        return CqOperation::ConvertFromNative(NativePtr->getQueryOperation());
+      }
+
+      GemStone::GemFire::Cache::ICacheableKey^ CqEvent::getKey( )
+      {
+        gemfire::CacheableKeyPtr& keyptr( NativePtr->getKey( ) );
+        return SafeUMKeyConvert( keyptr.ptr( ) );
+      }
+
+      IGFSerializable^ CqEvent::getNewValue( )
+      {
+        gemfire::CacheablePtr& valptr( NativePtr->getNewValue( ) );
+        return SafeUMSerializableConvert( valptr.ptr( ) );
+      }
+
+      array< Byte >^ CqEvent::getDeltaValue( )
+      {
+        gemfire::CacheableBytesPtr deltaBytes = NativePtr->getDeltaValue( );
+        GemStone::GemFire::Cache::CacheableBytes^ managedDeltaBytes = ( GemStone::GemFire::Cache::CacheableBytes^ ) GemStone::GemFire::Cache::CacheableBytes::Create( deltaBytes.ptr( ) );
+        return ( array< Byte >^ ) managedDeltaBytes;
+      }
+
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CqEventM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CqEventM.hpp b/geode-client-native/src/clicache/CqEventM.hpp
new file mode 100644
index 0000000..d7effad
--- /dev/null
+++ b/geode-client-native/src/clicache/CqEventM.hpp
@@ -0,0 +1,84 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/CqEvent.hpp"
+#include "CqQueryM.hpp"
+#include "CqOperationM.hpp"
+#include "impl/NativeWrapper.hpp"
+
+#include "ICqEvent.hpp"
+#include "ICacheableKey.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      interface class IGFSerializable;
+      //interface class ICqEvent;
+      //interface class ICacheableKey;
+
+      /// <summary>
+      /// This class encapsulates events that occur for cq.
+      /// </summary>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class CqEvent sealed
+        : public Internal::UMWrap<gemfire::CqEvent>
+      {
+      public:
+
+
+        /// <summary>
+        /// Return the cqquery this event occurred in.
+        /// </summary>
+	CqQuery^ getCq();
+
+        /// <summary>
+        /// Get the operation on the base operation that triggered this event.
+        /// </summary>
+       CqOperationType getBaseOperation();
+
+        /// <summary>
+        /// Get the operation on the query operation that triggered this event.
+        /// </summary>
+       CqOperationType getQueryOperation();
+
+        /// <summary>
+        /// Get the key relating to the event.
+        /// In case of REGION_CLEAR and REGION_INVALIDATE operation, the key will be null.
+        /// </summary>
+       ICacheableKey^ getKey( );
+
+        /// <summary>
+        /// Get the new value of the modification.
+        /// If there is no new value returns null, this will happen during delete
+        /// operation.
+        /// </summary>
+       IGFSerializable^ getNewValue( );
+
+       array< Byte >^ getDeltaValue( );
+
+      internal:
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline CqEvent( const gemfire::CqEvent* nativeptr )
+          : UMWrap( const_cast<gemfire::CqEvent*>( nativeptr ), false ) { }
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CqListenerM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CqListenerM.hpp b/geode-client-native/src/clicache/CqListenerM.hpp
new file mode 100644
index 0000000..5bd1525
--- /dev/null
+++ b/geode-client-native/src/clicache/CqListenerM.hpp
@@ -0,0 +1,102 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "ICqListener.hpp"
+#include "impl/NativeWrapper.hpp"
+
+
+using namespace System;
+using namespace System::Collections::Generic;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+	ref class CqEvent;
+	interface class ICqListener;
+
+      /// <summary>
+      /// This class wraps the native C++ <c>gemfire::Serializable</c> objects
+      /// as managed <see cref="IGFSerializable" /> objects.
+      /// </summary>
+    [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class CqListener
+        : public Internal::SBWrap<gemfire::CqListener>, public ICqListener
+      {
+      public:
+
+        /// <summary>
+        /// Invoke on an event
+        /// </summary>
+	virtual void OnEvent( CqEvent^ ev) 
+	{
+	}
+
+        /// <summary>
+        /// Invoke on an error
+        /// </summary>
+	virtual void OnError( CqEvent^ ev) 
+	{
+	}
+
+        /// <summary>
+        /// Invoke on close
+        /// </summary>
+	virtual void Close()
+	{
+	}
+
+      internal:
+
+        /// <summary>
+        /// Default constructor.
+        /// </summary>
+        inline CqListener( )
+          : SBWrap( ) { }
+
+        /// <summary>
+        /// Internal constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline CqListener( gemfire::CqListener* nativeptr )
+          : SBWrap( nativeptr ) { }
+
+        /// <summary>
+        /// Used to assign the native Serializable pointer to a new object.
+        /// </summary>
+        /// <remarks>
+        /// Note the order of preserveSB() and releaseSB(). This handles the
+        /// corner case when <c>m_nativeptr</c> is same as <c>nativeptr</c>.
+        /// </remarks>
+        inline void AssignSP( gemfire::CqListener* nativeptr )
+        {
+          AssignPtr( nativeptr );
+        }
+
+        /// <summary>
+        /// Used to assign the native CqListener pointer to a new object.
+        /// </summary>
+        inline void SetSP( gemfire::CqListener* nativeptr )
+        {
+          if ( nativeptr != nullptr ) {
+            nativeptr->preserveSB( );
+          }
+          _SetNativePtr( nativeptr );
+        }
+
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CqOperationM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CqOperationM.hpp b/geode-client-native/src/clicache/CqOperationM.hpp
new file mode 100644
index 0000000..e5a0dd7
--- /dev/null
+++ b/geode-client-native/src/clicache/CqOperationM.hpp
@@ -0,0 +1,76 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/CqOperation.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      /// <summary>
+      /// Enumerated type for CqOperationType
+      /// </summary>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public enum class CqOperationType
+      {
+	OP_TYPE_INVALID = -1,
+        OP_TYPE_CREATE = 0,
+        OP_TYPE_UPDATE = 2,
+        OP_TYPE_INVALIDATE = 4,
+        OP_TYPE_REGION_CLEAR = 8,
+        OP_TYPE_DESTROY = 16,
+        OP_TYPE_MARKER = 32
+      };
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+	public ref class CqOperation sealed
+        : public Internal::UMWrap<gemfire::CqOperation>
+      {
+      public:
+
+      /// <summary>
+      /// conenience function for convertin from c++ 
+      /// gemfire::CqOperation::CqOperationType to
+      /// CqOperationType here.
+      /// </summary>
+	  inline static CqOperationType ConvertFromNative(gemfire::CqOperation::CqOperationType tp)
+	  {
+		  if(tp==gemfire::CqOperation::OP_TYPE_CREATE)
+			  return CqOperationType::OP_TYPE_CREATE;
+  		  if(tp==gemfire::CqOperation::OP_TYPE_UPDATE)
+			  return CqOperationType::OP_TYPE_UPDATE;
+		  if(tp==gemfire::CqOperation::OP_TYPE_INVALIDATE)
+			  return CqOperationType::OP_TYPE_INVALIDATE;
+		  if(tp==gemfire::CqOperation::OP_TYPE_REGION_CLEAR)
+			  return CqOperationType::OP_TYPE_REGION_CLEAR;
+  		  if(tp==gemfire::CqOperation::OP_TYPE_DESTROY)
+			  return CqOperationType::OP_TYPE_DESTROY;
+  		  if(tp==gemfire::CqOperation::OP_TYPE_MARKER)
+			  return CqOperationType::OP_TYPE_MARKER;
+		  return CqOperationType::OP_TYPE_INVALID;
+	  }
+	        internal:
+
+        /// <summary>
+        /// Internal constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline CqOperation( gemfire::CqOperation* nativeptr )
+		            : UMWrap( nativeptr, false ) { }
+	  };
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CqQueryM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CqQueryM.cpp b/geode-client-native/src/clicache/CqQueryM.cpp
new file mode 100644
index 0000000..7e2ed11
--- /dev/null
+++ b/geode-client-native/src/clicache/CqQueryM.cpp
@@ -0,0 +1,181 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "CqQueryM.hpp"
+#include "QueryM.hpp"
+#include "CqAttributesM.hpp"
+#include "CqAttributesMutatorM.hpp"
+#include "CqStatisticsM.hpp"
+#include "ISelectResults.hpp"
+#include "ResultSetM.hpp"
+#include "StructSetM.hpp"
+#include "ExceptionTypesM.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      ICqResults^ CqQuery::ExecuteWithInitialResults()
+      {
+        return ExecuteWithInitialResults(DEFAULT_QUERY_RESPONSE_TIMEOUT);
+      }
+
+      ICqResults^ CqQuery::ExecuteWithInitialResults(uint32_t timeout)
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CqResultsPtr& nativeptr =
+            NativePtr->executeWithInitialResults(timeout);
+          if (nativeptr.ptr() == NULL) return nullptr;
+
+          gemfire::ResultSet* resultptr = dynamic_cast<gemfire::ResultSet*>(
+            nativeptr.ptr( ) );
+          if ( resultptr == NULL )
+          {
+            gemfire::StructSet* structptr = dynamic_cast<gemfire::StructSet*>(
+              nativeptr.ptr( ) );
+            if ( structptr == NULL )
+            {
+              return nullptr;
+            }
+            return StructSet::Create(structptr);
+          }
+          /*else
+          {
+            return ResultSet::Create(resultptr);
+          }*/
+
+          return nullptr;
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void CqQuery::Execute()
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          NativePtr->execute();
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      String^ CqQuery::QueryString::get( )
+      {
+        return ManagedString::Get( NativePtr->getQueryString( ) );
+      }
+
+      String^ CqQuery::Name::get( )
+      {
+        return ManagedString::Get( NativePtr->getName( ) );
+      }
+
+      Query^ CqQuery::GetQuery( )
+      {
+        return Query::Create(NativePtr->getQuery().ptr());
+      }
+
+      CqAttributes^ CqQuery::GetCqAttributes( )
+      {
+        return CqAttributes::Create(NativePtr->getCqAttributes( ).ptr());
+      }
+
+      CqAttributesMutator^ CqQuery::GetCqAttributesMutator( )
+      {
+        return CqAttributesMutator::Create(NativePtr->getCqAttributesMutator().ptr());
+      }
+
+      CqStatistics^ CqQuery::GetStatistics( )
+      {
+        return CqStatistics::Create(NativePtr->getStatistics().ptr());
+      }
+
+      CqStateType CqQuery::GetState( )
+      {
+        gemfire::CqState::StateType st =  NativePtr->getState( );
+        CqStateType state;
+        switch (st)
+        {
+          case gemfire::CqState::STOPPED: {
+            state = CqStateType::STOPPED;
+            break;
+          }
+          case gemfire::CqState::RUNNING: {
+            state = CqStateType::RUNNING;
+            break;
+          }
+          case gemfire::CqState::CLOSED: {
+            state = CqStateType::CLOSED;
+            break;
+          }
+          case gemfire::CqState::CLOSING: {
+            state = CqStateType::CLOSING;
+            break;
+          }
+          default: {
+            state = CqStateType::INVALID;
+            break;
+          }
+        }
+        return state;
+      }
+
+      void CqQuery::Stop( )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          NativePtr->stop( );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void CqQuery::Close( )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          NativePtr->close( );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      bool CqQuery::IsRunning( )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          return NativePtr->isRunning( );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      bool CqQuery::IsStopped( )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          return NativePtr->isStopped( );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      bool CqQuery::IsClosed( )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          return NativePtr->isClosed( );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CqQueryM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CqQueryM.hpp b/geode-client-native/src/clicache/CqQueryM.hpp
new file mode 100644
index 0000000..6dbeeef
--- /dev/null
+++ b/geode-client-native/src/clicache/CqQueryM.hpp
@@ -0,0 +1,174 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "CqStateM.hpp"
+#include "cppcache/CqQuery.hpp"
+#include "impl/NativeWrapper.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      interface class ICqResults;
+      ref class CqAttributes;
+      ref class CqStatistics;
+      ref class CqAttributesMutator;
+      ref class Query;
+
+      /// <summary>
+      /// Class to encapsulate a continuous query (CQ).
+      /// </summary>
+      /// <remarks>
+      /// A CqQuery is obtained from a QueryService which in turn is obtained
+      /// from the Cache.
+      /// This can be executed to return SelectResults which can be either
+      /// a ResultSet or a StructSet, or it can be just registered on the
+      /// java server without returning results immediately rather only
+      /// the incremental results.
+      ///
+      /// This class is intentionally not thread-safe. So multiple threads
+      /// should not operate on the same <c>CqQuery</c> object concurrently
+      /// rather should have their own <c>CqQuery</c> objects.
+      /// </remarks>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class CqQuery sealed
+        : public Internal::SBWrap<gemfire::CqQuery>
+      {
+      public:
+
+        /// <summary>
+        /// Executes the Cq  Query on the cache server
+        /// </summary>
+        void Execute( );
+
+        /// <summary>
+        /// Executes the Cq Query on the cache server
+        /// and returns the Cqresults.
+        /// </summary>
+        ICqResults^ ExecuteWithInitialResults();
+
+        /// <summary>
+        /// Executes the Cq Query on the cache server
+        /// with the specified timeout and returns the results.
+        /// </summary>
+        /// <param name="timeout">The time (in seconds) to wait for query response.
+        /// This should be less than or equal to 2^31/1000 i.e. 2147483.
+        /// </param>
+        /// <exception cref="IllegalArgumentException">
+        /// if timeout parameter is greater than 2^31/1000.
+        /// </exception>
+        ICqResults^ ExecuteWithInitialResults(uint32_t timeout);
+
+        /// <summary>
+        /// Get the string for this cq query.
+        /// </summary>
+        property String^ QueryString
+        {
+          String^ get( );
+        }
+
+        /// <summary>
+        /// Get the name for this cq query.
+        /// </summary>
+        property String^ Name
+        {
+          String^ get( );
+        }
+
+        /// <summary>
+        /// Get the Attributes for this cq query.
+        /// </summary>
+        CqAttributes^ GetCqAttributes();
+
+        /// <summary>
+        /// Get the Attributes Mutator for this cq query.
+        /// </summary>
+        CqAttributesMutator^ GetCqAttributesMutator();
+
+        /// <summary>
+        /// Get the stats for this cq query.
+        /// </summary>
+        CqStatistics^ GetStatistics();
+
+        /// <summary>
+        /// Get the Query for this cq query.
+        /// </summary>
+        Query^ GetQuery();
+
+        /// <summary>
+        /// stop the cq query
+        /// </summary>
+        void Stop( );
+
+        /// <summary>
+        /// stop the cq query
+        /// </summary>
+        void Close( );
+
+        /// <summary>
+        /// get the state of this cq query
+        /// </summary>
+        CqStateType GetState();
+
+        /// <summary>
+        /// Is this Cq in running state?
+        /// </summary>
+        bool IsRunning();
+
+        /// <summary>
+        /// Is this Cq in stopped state?
+        /// </summary>
+        bool IsStopped();
+
+        /// <summary>
+        /// Is this Cq in closed state?
+        /// </summary>
+        bool IsClosed();
+
+      internal:
+
+        /// <summary>
+        /// Internal factory function to wrap a native object pointer inside
+        /// this managed class with null pointer check.
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        /// <returns>
+        /// The managed wrapper object; null if the native pointer is null.
+        /// </returns>
+        inline static CqQuery^ Create( gemfire::CqQuery* nativeptr )
+        {
+          if (nativeptr == nullptr)
+          {
+            return nullptr;
+          }
+          return gcnew CqQuery( nativeptr );
+        }
+
+
+      private:
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline CqQuery( gemfire::CqQuery* nativeptr )
+          : SBWrap( nativeptr ) { }
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CqServiceStatisticsM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CqServiceStatisticsM.cpp b/geode-client-native/src/clicache/CqServiceStatisticsM.cpp
new file mode 100644
index 0000000..854b1e6
--- /dev/null
+++ b/geode-client-native/src/clicache/CqServiceStatisticsM.cpp
@@ -0,0 +1,41 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "CqServiceStatisticsM.hpp"
+
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+	uint32_t CqServiceStatistics::numCqsActive( )
+	{
+	  return NativePtr->numCqsActive( );
+	}
+    uint32_t CqServiceStatistics::numCqsCreated( )
+	{
+	  return NativePtr->numCqsCreated( );
+	}
+    uint32_t CqServiceStatistics::numCqsClosed( )
+	{
+	  return NativePtr->numCqsClosed( );
+	}
+    uint32_t CqServiceStatistics::numCqsStopped( )
+	{
+	  return NativePtr->numCqsStopped( );
+	}
+    uint32_t CqServiceStatistics::numCqsOnClient( )
+	{
+	  return NativePtr->numCqsOnClient( );
+	}
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CqServiceStatisticsM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CqServiceStatisticsM.hpp b/geode-client-native/src/clicache/CqServiceStatisticsM.hpp
new file mode 100644
index 0000000..0fdc33d
--- /dev/null
+++ b/geode-client-native/src/clicache/CqServiceStatisticsM.hpp
@@ -0,0 +1,92 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/CqServiceStatistics.hpp"
+#include "impl/NativeWrapper.hpp"
+
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      /// <summary>
+      /// Defines common statistical information for cqservice 
+      /// </summary>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class CqServiceStatistics sealed
+        : public Internal::SBWrap<gemfire::CqServiceStatistics>
+      {
+      public:
+
+        /// <summary>
+        ///Get the number of CQs currently active. 
+        ///Active CQs are those which are executing (in running state).
+        /// </summary>
+          uint32_t numCqsActive( );
+
+        /// <summary>
+        ///Get the total number of CQs created. This is a cumulative number.
+        /// </summary>
+          uint32_t numCqsCreated( );
+
+        /// <summary>
+        ///Get the total number of closed CQs. This is a cumulative number.
+        /// </summary>
+          uint32_t numCqsClosed( );
+
+        /// <summary>
+        ///Get the number of stopped CQs currently.
+        /// </summary>
+          uint32_t numCqsStopped( );
+
+        /// <summary>
+        ///Get number of CQs that are currently active or stopped. 
+        ///The CQs included in this number are either running or stopped (suspended).
+        ///Closed CQs are not included.
+        /// </summary>
+          uint32_t numCqsOnClient( );
+
+      internal:
+
+        /// <summary>
+        /// Internal factory function to wrap a native object pointer inside
+        /// this managed class with null pointer check.
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        /// <returns>
+        /// The managed wrapper object; null if the native pointer is null.
+        /// </returns>
+        inline static CqServiceStatistics^ Create( gemfire::CqServiceStatistics* nativeptr )
+        {
+          if (nativeptr == nullptr)
+          {
+            return nullptr;
+          }
+          return gcnew CqServiceStatistics( nativeptr );
+        }
+
+
+      private:
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline CqServiceStatistics( gemfire::CqServiceStatistics* nativeptr )
+          : SBWrap( nativeptr ) { }
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CqStateM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CqStateM.cpp b/geode-client-native/src/clicache/CqStateM.cpp
new file mode 100644
index 0000000..414a351
--- /dev/null
+++ b/geode-client-native/src/clicache/CqStateM.cpp
@@ -0,0 +1,84 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "CqStateM.hpp"
+#include "impl/ManagedString.hpp"
+#include <vcclr.h>
+
+
+using namespace System;
+using namespace System::Runtime::InteropServices;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      String^ CqState::ToString()
+      {
+		  return ManagedString::Get(NativePtr->toString());
+      }
+
+      bool CqState::IsRunning()
+      {
+        return NativePtr->isRunning();
+      }
+
+      bool CqState::IsStopped()
+      {
+        return NativePtr->isStopped();
+      }
+
+      bool CqState::IsClosed()
+      {
+	return NativePtr->isClosed();
+      }
+
+      bool CqState::IsClosing()
+      {
+	return NativePtr->isClosing();
+      }
+
+      void CqState::SetState( CqStateType state )
+      {
+		  gemfire::CqState::StateType st =gemfire::CqState::INVALID;
+		  if(state == CqStateType::STOPPED)
+			  st = gemfire::CqState::STOPPED;
+		  else if(state == CqStateType::RUNNING)
+			  st = gemfire::CqState::RUNNING;
+		  else if(state == CqStateType::CLOSED)
+			  st = gemfire::CqState::CLOSED;
+		  else if(state == CqStateType::CLOSING)
+			  st = gemfire::CqState::CLOSING;
+
+		  NativePtr->setState( st );
+      }
+
+      CqStateType CqState::GetState( )
+      {
+		gemfire::CqState::StateType st =  NativePtr->getState( );
+        CqStateType state;
+		if(st==gemfire::CqState::STOPPED)
+			state = CqStateType::STOPPED;
+		else if(st==gemfire::CqState::RUNNING)
+			state = CqStateType::RUNNING;
+		else if(st==gemfire::CqState::CLOSED)
+			state = CqStateType::CLOSED;
+		else if(st==gemfire::CqState::CLOSING)
+			state = CqStateType::CLOSING;
+		else
+			state = CqStateType::INVALID;
+		return state;
+      }
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CqStateM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CqStateM.hpp b/geode-client-native/src/clicache/CqStateM.hpp
new file mode 100644
index 0000000..bb4f0f2
--- /dev/null
+++ b/geode-client-native/src/clicache/CqStateM.hpp
@@ -0,0 +1,90 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/CqState.hpp"
+#include "impl/NativeWrapper.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      /// <summary>
+      /// Enumerated type for cq state
+      /// @nativeclient
+      /// For Native Clients:
+      /// @endnativeclient      
+      /// </summary>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public enum class CqStateType
+      {
+        STOPPED = 0,
+        RUNNING,
+        CLOSED,
+        CLOSING,
+        INVALID
+      };
+
+
+      /// <summary>
+      /// Static class containing convenience methods for <c>CqState</c>.
+      /// </summary>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class CqState sealed
+        : public Internal::UMWrap<gemfire::CqState>
+      {
+      public:
+
+        /// <summary>
+        /// Returns the state in string form.
+        /// </summary>
+        virtual String^ ToString( ) override;
+
+        /// <summary>
+        /// Returns true if the CQ is in Running state.
+        /// </summary>
+        bool IsRunning(); 
+
+        /// <summary>
+        /// Returns true if the CQ is in Stopped state.
+	/// </summary>
+        bool IsStopped();
+
+        /// <summary>
+        /// Returns true if the CQ is in Closed state.
+        /// </summary>
+        bool IsClosed(); 
+
+        /// <summary>
+        /// Returns true if the CQ is in Closing state.
+	/// </summary>
+        bool IsClosing();
+	void SetState(CqStateType state);
+	CqStateType GetState();
+
+        internal:
+
+        /// <summary>
+        /// Internal constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline CqState( gemfire::CqState* nativeptr )
+		            : UMWrap( nativeptr, false ) { }
+
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CqStatisticsM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CqStatisticsM.cpp b/geode-client-native/src/clicache/CqStatisticsM.cpp
new file mode 100644
index 0000000..1161c6e
--- /dev/null
+++ b/geode-client-native/src/clicache/CqStatisticsM.cpp
@@ -0,0 +1,37 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "CqStatisticsM.hpp"
+
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+		uint32_t CqStatistics::numInserts( )
+	{
+	  return NativePtr->numInserts( );
+	}
+    uint32_t CqStatistics::numDeletes( )
+	{
+	  return NativePtr->numDeletes( );
+	}
+    uint32_t CqStatistics::numUpdates( )
+	{
+	  return NativePtr->numUpdates( );
+	}
+    uint32_t CqStatistics::numEvents( )
+	{
+	  return NativePtr->numEvents( );
+	}
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CqStatisticsM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CqStatisticsM.hpp b/geode-client-native/src/clicache/CqStatisticsM.hpp
new file mode 100644
index 0000000..0bd4114
--- /dev/null
+++ b/geode-client-native/src/clicache/CqStatisticsM.hpp
@@ -0,0 +1,84 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/CqStatistics.hpp"
+#include "impl/NativeWrapper.hpp"
+
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      /// <summary>
+      /// Defines common statistical information for a cq.
+      /// </summary>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class CqStatistics sealed
+        : public Internal::SBWrap<gemfire::CqStatistics>
+      {
+      public:
+
+        /// <summary>
+        /// get number of inserts qualified by this Cq
+        /// </summary>
+          uint32_t numInserts( );
+
+        /// <summary>
+        /// get number of deletes qualified by this Cq
+        /// </summary>
+          uint32_t numDeletes( );
+
+        /// <summary>
+        /// get number of updates qualified by this Cq
+        /// </summary>
+          uint32_t numUpdates( );
+
+        /// <summary>
+        /// get number of events qualified by this Cq
+        /// </summary>
+          uint32_t numEvents( );
+
+      internal:
+
+        /// <summary>
+        /// Internal factory function to wrap a native object pointer inside
+        /// this managed class with null pointer check.
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        /// <returns>
+        /// The managed wrapper object; null if the native pointer is null.
+        /// </returns>
+        inline static CqStatistics^ Create( gemfire::CqStatistics* nativeptr )
+        {
+          if (nativeptr == nullptr)
+          {
+            return nullptr;
+          }
+          return gcnew CqStatistics( nativeptr );
+        }
+
+
+      private:
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline CqStatistics( gemfire::CqStatistics* nativeptr )
+          : SBWrap( nativeptr ) { }
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/DataInputM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/DataInputM.cpp b/geode-client-native/src/clicache/DataInputM.cpp
new file mode 100644
index 0000000..e0bad61
--- /dev/null
+++ b/geode-client-native/src/clicache/DataInputM.cpp
@@ -0,0 +1,540 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "DataInputM.hpp"
+#include <cppcache/Cache.hpp>
+#include "CacheFactoryM.hpp"
+#include "CacheM.hpp"
+#include <vcclr.h>
+//#include <cppcache/GemfireTypeIds.hpp>
+#include <cppcache/impl/GemfireTypeIdsImpl.hpp>
+#include "CacheableStringM.hpp"
+#include "CacheableHashMapM.hpp"
+#include "CacheableStackM.hpp"
+#include "CacheableVectorM.hpp"
+#include "CacheableArrayListM.hpp"
+#include "CacheableIDentityHashMapM.hpp"
+#include "CacheableDateM.hpp"
+
+#include "SerializableM.hpp"
+
+
+using namespace System;
+using namespace System::IO;
+using namespace gemfire;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      DataInput::DataInput(array<Byte>^ buffer)
+      {
+        if (buffer != nullptr && buffer->Length > 0) {
+          _GF_MG_EXCEPTION_TRY
+
+            int32_t len = buffer->Length;
+            GF_NEW(m_buffer, uint8_t[len]);
+            pin_ptr<const Byte> pin_buffer = &buffer[0];
+            memcpy(m_buffer, (void*)pin_buffer, len);
+            SetPtr(new gemfire::DataInput(m_buffer, len), true);
+
+            m_buffer = const_cast<uint8_t*>(NativePtr->currentBufferPosition());
+            m_bufferLength = NativePtr->getBytesRemaining();    
+
+          _GF_MG_EXCEPTION_CATCH_ALL          
+        }
+        else {
+          throw gcnew IllegalArgumentException("DataInput.ctor(): "
+            "provided buffer is null or empty");
+        }
+      }
+
+      DataInput::DataInput(array<Byte>^ buffer, int32_t len )
+      {
+        if (buffer != nullptr) {
+          if (len == 0 || (int32_t)len > buffer->Length) {
+            throw gcnew IllegalArgumentException(String::Format(
+              "DataInput.ctor(): given length {0} is zero or greater than "
+              "size of buffer {1}", len, buffer->Length));
+          }
+          //m_bytes = gcnew array<Byte>(len);
+          //System::Array::Copy(buffer, 0, m_bytes, 0, len);
+         _GF_MG_EXCEPTION_TRY
+
+            GF_NEW(m_buffer, uint8_t[len]);
+            pin_ptr<const Byte> pin_buffer = &buffer[0];
+            memcpy(m_buffer, (void*)pin_buffer, len);
+            SetPtr(new gemfire::DataInput(m_buffer, len), true);
+
+            m_buffer = const_cast<uint8_t*>(NativePtr->currentBufferPosition());
+            m_bufferLength = NativePtr->getBytesRemaining();    
+
+          _GF_MG_EXCEPTION_CATCH_ALL
+        }
+        else {
+          throw gcnew IllegalArgumentException("DataInput.ctor(): "
+            "provided buffer is null");
+        }
+      }
+
+      Byte DataInput::ReadByte( )
+      {
+        CheckBufferSize(1);
+        return m_buffer[m_cursor++];
+      }
+
+      SByte DataInput::ReadSByte( )
+      {
+        CheckBufferSize(1);
+        return m_buffer[m_cursor++];
+      }
+
+      bool DataInput::ReadBoolean( )
+      {
+        CheckBufferSize(1);
+        Byte val = m_buffer[m_cursor++];
+        if ( val == 1)
+          return true;
+        else
+          return false;
+      }
+
+      array<Byte>^ DataInput::ReadBytes( )
+      {
+        int32_t length;
+        length = ReadArrayLen();
+
+        if (length >= 0) {
+          if (length == 0)
+            return gcnew array<Byte>(0);
+          else {
+            array<Byte>^ bytes = ReadBytesOnly(length);
+            return bytes;
+          }
+        }
+        return nullptr;
+      }
+
+      int DataInput::ReadArrayLen( )
+      {
+        int code;
+        int len;
+        
+        code = Convert::ToInt32(ReadByte());
+
+        if (code == 0xFF) {
+          len = -1;
+        } else {
+          unsigned int result = code;
+          if (result > 252) {  // 252 is java's ((byte)-4 && 0xFF)
+            if (code == 0xFE) {
+              result = ReadUInt16();
+            } else if (code == 0xFD) {
+              result = ReadUInt32();
+            }
+            else {
+              throw gcnew IllegalStateException("unexpected array length code");
+            }
+            //TODO:: illegal length
+          }
+          len = (int)result;
+        }
+        return len;
+      }
+
+      array<SByte>^ DataInput::ReadSBytes( )
+      {
+        int32_t length;
+        length = ReadArrayLen();
+
+        if (length >= -1) {
+          if (length == 0)
+            return gcnew array<SByte>(0);
+          else {
+            array<SByte>^ bytes = ReadSBytesOnly(length);
+            return bytes;
+          }
+        }
+        return nullptr;
+      }
+
+      array<Byte>^ DataInput::ReadBytesOnly( uint32_t len )
+      {
+        if (len > 0) {
+          CheckBufferSize(len);
+          array<Byte>^ bytes = gcnew array<Byte>(len);
+          
+          for ( unsigned int i = 0; i < len; i++)
+            bytes[i] = m_buffer[m_cursor++];
+
+          return bytes;
+        }
+        return nullptr;
+      }
+
+      void DataInput::ReadBytesOnly( array<Byte> ^ buffer, int offset, int count )
+      {
+        if (count > 0) {
+          CheckBufferSize((uint32_t)count);
+          
+          for ( int i = 0; i < count; i++)
+            buffer[offset + i] = m_buffer[m_cursor++];
+        }
+      }
+
+      array<SByte>^ DataInput::ReadSBytesOnly( uint32_t len )
+      {
+        if (len > 0) {
+          CheckBufferSize(len);
+          array<SByte>^ bytes = gcnew array<SByte>(len);
+
+          for ( unsigned int i = 0; i < len; i++)
+            bytes[i] = m_buffer[m_cursor++];
+
+          return bytes;
+        }
+        return nullptr;
+      }
+
+      uint16_t DataInput::ReadUInt16( )
+      {
+        CheckBufferSize(2);
+        uint16_t data = m_buffer[m_cursor++];
+        data = (data << 8) | m_buffer[m_cursor++];
+        return data;
+      }
+
+      uint32_t DataInput::ReadUInt32( )
+      {
+        CheckBufferSize(4);
+        uint32_t data = m_buffer[m_cursor++];
+        data = (data << 8) | m_buffer[m_cursor++];
+        data = (data << 8) | m_buffer[m_cursor++];
+        data = (data << 8) | m_buffer[m_cursor++];
+        
+        return data;
+      }
+
+      uint64_t DataInput::ReadUInt64( )
+      {
+        uint64_t data;
+        
+        CheckBufferSize(8);
+        
+        data = m_buffer[m_cursor++];
+        data = (data << 8) | m_buffer[m_cursor++];
+        data = (data << 8) | m_buffer[m_cursor++];
+        data = (data << 8) | m_buffer[m_cursor++];
+        data = (data << 8) | m_buffer[m_cursor++];
+        data = (data << 8) | m_buffer[m_cursor++];
+        data = (data << 8) | m_buffer[m_cursor++];
+        data = (data << 8) | m_buffer[m_cursor++];
+        
+        return data;
+      }
+
+      int16_t DataInput::ReadInt16( )
+      {
+        return ReadUInt16();
+      }
+
+      int32_t DataInput::ReadInt32( )
+      {
+        return ReadUInt32();
+      }
+
+      int64_t DataInput::ReadInt64( )
+      {
+        return ReadUInt64();
+      }
+
+      array<Byte>^ DataInput::ReadReverseBytesOnly(int len)
+      {
+        CheckBufferSize(len);
+
+        int i = 0;
+        int j = m_cursor + len -1;
+        array<Byte>^ bytes = gcnew array<Byte>(len);
+
+        while ( i < len )
+        {
+          bytes[i++] = m_buffer[j--];
+        }
+        m_cursor += len;
+        return bytes;
+      }
+
+      float DataInput::ReadFloat( )
+      {
+        float data;
+
+        array<Byte>^ bytes = nullptr;          
+        if(BitConverter::IsLittleEndian)
+          bytes = ReadReverseBytesOnly(4);
+        else
+          bytes = ReadBytesOnly(4);
+
+        data = BitConverter::ToSingle(bytes, 0);
+        
+        return data;
+      }
+
+      double DataInput::ReadDouble( )
+      {
+        double data;
+
+        array<Byte>^ bytes = nullptr;          
+        if(BitConverter::IsLittleEndian)
+          bytes = ReadReverseBytesOnly(8);
+        else
+          bytes = ReadBytesOnly(8);
+
+        data = BitConverter::ToDouble(bytes, 0);
+        
+        return data;
+      }
+
+      String^ DataInput::ReadUTF( )
+      {
+        int length = ReadInt16();
+        CheckBufferSize(length);
+        String^ str = DecodeBytes(length);
+        return str;
+      }
+
+      String^ DataInput::ReadUTFHuge( )
+      {
+        int length = ReadInt32();
+        CheckBufferSize(length);
+        
+        array<Char>^ chArray = gcnew array<Char>(length);
+        
+        for (int i = 0; i < length; i++)
+        {
+          Char ch = ReadByte();
+          ch = ((ch << 8) | ReadByte());
+          chArray[i] = ch;
+        }
+
+        String^ str = gcnew String(chArray);
+
+        return str;
+      }
+
+      String^ DataInput::ReadASCIIHuge( )
+      {
+        int length = ReadInt32();
+        CheckBufferSize(length);
+        String^ str = DecodeBytes(length);
+        return str;
+      }
+
+      IGFSerializable^ DataInput::ReadObject( )
+      {
+        return ReadInternalObject();        
+      }
+
+      /*
+      Object^ DataInput::ReadGenericObject( )
+      {
+        return ReadInternalGenericObject();        
+      }
+      */
+
+      
+      IGFSerializable^ DataInput::ReadInternalObject( )
+      {
+        bool findinternal = false;
+        int8_t typeId = ReadByte();
+        int64_t compId = typeId;
+        TypeFactoryMethod^ createType = nullptr;
+
+        if (compId == GemfireTypeIds::NullObj) {
+          return nullptr;
+        }
+        else if (compId == GemfireTypeIds::CacheableNullString) {
+          //return SerializablePtr(CacheableString::createDeserializable());
+          //TODO::
+          return nullptr;
+        }
+        else if (compId == GemfireTypeIdsImpl::CacheableUserData) {
+          int8_t classId = ReadByte();
+          //compId |= ( ( (int64_t)classId ) << 32 );
+          compId = (int64_t)classId;
+        } else if ( compId == GemfireTypeIdsImpl::CacheableUserData2 ) {
+          int16_t classId = ReadInt16();
+          //compId |= ( ( (int64_t)classId ) << 32 );
+          compId = (int64_t)classId;
+        } else if ( compId == GemfireTypeIdsImpl::CacheableUserData4 ) {
+          int32_t classId = ReadInt32();
+          //compId |= ( ( (int64_t)classId ) << 32 );
+          compId = (int64_t)classId;
+        }else if (compId == GemfireTypeIdsImpl::FixedIDByte) {//TODO:hitesh need to verify again
+          int8_t fixedId = ReadByte();
+          compId = fixedId;
+          findinternal = true;
+        } else if (compId == GemfireTypeIdsImpl::FixedIDShort) {
+          int16_t fixedId = ReadInt16();
+          compId = fixedId;
+          findinternal = true;
+        } else if (compId == GemfireTypeIdsImpl::FixedIDInt) {
+          int32_t fixedId = ReadInt32();
+          compId = fixedId;
+          findinternal = true;
+        }
+        if (findinternal) {
+          compId += 0x80000000;
+          createType = GemStone::GemFire::Cache::Serializable::GetManagedDelegate((int64_t)compId);
+        } else {
+            createType = GemStone::GemFire::Cache::Serializable::GetManagedDelegate(compId);
+            if(createType == nullptr)
+            {
+              compId += 0x80000000;
+              createType = GemStone::GemFire::Cache::Serializable::GetManagedDelegate(compId);
+
+              /*if (createType == nullptr)
+              {
+                //TODO::hitesh final check for user type if its not in cache 
+                compId -= 0x80000000;
+                createType = GemStone::GemFire::Cache::Serializable::GetManagedDelegate(compId);
+              }*/
+            }
+        }
+        if ( createType == nullptr ) {
+          throw gcnew IllegalStateException( "Unregistered typeId in deserialization, aborting." );
+        }
+
+        IGFSerializable^ newObj = createType();
+        newObj->FromData(this);
+        return newObj;
+      }
+
+      /*
+      Object^ DataInput::ReadInternalGenericObject( )
+      {
+        bool findinternal = false;
+        int8_t typeId = ReadByte();
+        int64_t compId = typeId;
+        TypeFactoryMethodGeneric^ createType = nullptr;
+
+        if (compId == GemfireTypeIds::NullObj) {
+          return nullptr;
+        }
+        else if (compId == GemfireTypeIds::CacheableNullString) {
+          //return SerializablePtr(CacheableString::createDeserializable());
+          //TODO::
+          return nullptr;
+        }
+        else if (compId == GemfireTypeIdsImpl::CacheableUserData) {
+          int8_t classId = ReadByte();
+          //compId |= ( ( (int64_t)classId ) << 32 );
+          compId = (int64_t)classId;
+        } else if ( compId == GemfireTypeIdsImpl::CacheableUserData2 ) {
+          int16_t classId = ReadInt16();
+          //compId |= ( ( (int64_t)classId ) << 32 );
+          compId = (int64_t)classId;
+        } else if ( compId == GemfireTypeIdsImpl::CacheableUserData4 ) {
+          int32_t classId = ReadInt32();
+          //compId |= ( ( (int64_t)classId ) << 32 );
+          compId = (int64_t)classId;
+        }else if (compId == GemfireTypeIdsImpl::FixedIDByte) {//TODO:hitesh need to verify again
+          int8_t fixedId = ReadByte();
+          compId = fixedId;
+          findinternal = true;
+        } else if (compId == GemfireTypeIdsImpl::FixedIDShort) {
+          int16_t fixedId = ReadInt16();
+          compId = fixedId;
+          findinternal = true;
+        } else if (compId == GemfireTypeIdsImpl::FixedIDInt) {
+          int32_t fixedId = ReadInt32();
+          compId = fixedId;
+          findinternal = true;
+        }
+        if (findinternal) {
+          compId += 0x80000000;
+          createType = GemStone::GemFire::Cache::Serializable::GetManagedDelegateGeneric((int64_t)compId);
+        } else {
+            createType = GemStone::GemFire::Cache::Serializable::GetManagedDelegateGeneric(compId);
+            if(createType == nullptr)
+            {
+              Object^ retVal = ReadDotNetTypes(typeId);
+
+              if(retVal != nullptr)
+                return retVal;
+
+              compId += 0x80000000;
+              createType = Serializable::GetManagedDelegateGeneric(compId);              
+            }
+        }
+
+        if ( createType != nullptr )
+        {
+          IGFSerializable^ newObj = createType();
+          newObj->FromData(this);
+          return newObj;
+        }
+        
+        throw gcnew IllegalStateException( "Unregistered typeId in deserialization, aborting." );
+      }
+      */
+
+      uint32_t DataInput::BytesRead::get( )
+      {
+        AdvanceUMCursor();
+        SetBuffer();
+
+        return NativePtr->getBytesRead();
+      }
+
+      uint32_t DataInput::BytesReadInternally::get()
+      {
+        return m_cursor;
+      }
+
+      uint32_t DataInput::BytesRemaining::get( )
+      {
+        AdvanceUMCursor();
+        SetBuffer();
+        return NativePtr->getBytesRemaining();
+        //return m_bufferLength - m_cursor;
+      }
+
+      void DataInput::AdvanceCursor( int32_t offset )
+      {
+        m_cursor += offset;
+      }
+
+      void DataInput::RewindCursor( int32_t offset )
+      {
+        AdvanceUMCursor();        
+        NativePtr->rewindCursor(offset);
+        SetBuffer();
+        //m_cursor -= offset;
+      }
+
+      void DataInput::Reset()
+      {
+        AdvanceUMCursor();
+        NativePtr->reset();
+        SetBuffer();
+      //  m_cursor = 0;
+      }
+
+      void DataInput::Cleanup( )
+      {
+        //TODO:hitesh
+        //GF_SAFE_DELETE_ARRAY(m_buffer);
+        InternalCleanup( );
+      }
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/DataInputM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/DataInputM.hpp b/geode-client-native/src/clicache/DataInputM.hpp
new file mode 100644
index 0000000..e54785e
--- /dev/null
+++ b/geode-client-native/src/clicache/DataInputM.hpp
@@ -0,0 +1,572 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/DataInput.hpp"
+#include "impl/NativeWrapper.hpp"
+#include "LogM.hpp"
+#include "ExceptionTypesM.hpp"
+#include "CacheableDateM.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      interface class IGFSerializable;
+
+      /// <summary>
+      /// Provides operations for reading primitive data values, byte arrays,
+      /// strings, <c>IGFSerializable</c> objects from a byte stream.
+      /// </summary>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class DataInput sealed
+        : public Internal::UMWrap<gemfire::DataInput>
+      {
+      public:
+
+        /// <summary>
+        /// Construct <c>DataInput</c> using an given array of bytes.
+        /// </summary>
+        /// <param name="buffer">
+        /// The buffer to use for reading data values.
+        /// </param>
+        /// <exception cref="IllegalArgumentException">
+        /// if the buffer is null
+        /// </exception>
+        DataInput( array<Byte>^ buffer );
+
+        /// <summary>
+        /// Construct <c>DataInput</c> using a given length of an array of
+        /// bytes.
+        /// </summary>
+        /// <param name="buffer">
+        /// The buffer to use for reading data values.
+        /// </param>
+        /// <param name="len">
+        /// The number of bytes from the start of the buffer to use.
+        /// </param>
+        /// <exception cref="IllegalArgumentException">
+        /// if the buffer is null
+        /// </exception>
+        DataInput( array<Byte>^ buffer, int32_t len );
+
+        /// <summary>
+        /// Dispose: frees the internal buffer.
+        /// </summary>
+        ~DataInput( ) { Cleanup( ); }
+
+        /// <summary>
+        /// Finalizer: frees the internal buffer.
+        /// </summary>
+        !DataInput( ) { Cleanup( ); }
+
+        /// <summary>
+        /// Read a byte from the stream.
+        /// </summary>
+        Byte ReadByte( );
+
+        /// <summary>
+        /// Read a signed byte from the stream.
+        /// </summary>
+        SByte ReadSByte( );
+
+        /// <summary>
+        /// Read a boolean value from the stream.
+        /// </summary>
+        bool ReadBoolean( );
+
+        /// <summary>
+        /// Read an array of bytes from the stream reading the length
+        /// from the stream first.
+        /// </summary>
+        array<Byte>^ ReadBytes( );
+
+        /// <summary>
+        /// Read an array of signed bytes from the stream reading the length
+        /// from the stream first.
+        /// </summary>
+        array<SByte>^ ReadSBytes( );
+
+        /// <summary>
+        /// Read the given number of bytes from the stream.
+        /// </summary>
+        /// <param name="len">Number of bytes to read.</param>
+        array<Byte>^ ReadBytesOnly( uint32_t len );
+
+        void ReadBytesOnly( array<Byte> ^ buffer, int offset, int count );
+
+        /// <summary>
+        /// Read the given number of signed bytes from the stream.
+        /// </summary>
+        /// <param name="len">Number of signed bytes to read.</param>
+        array<SByte>^ ReadSBytesOnly( uint32_t len );
+
+        /// <summary>
+        /// Read a 16-bit unsigned integer from the stream.
+        /// </summary>
+        uint16_t ReadUInt16( );
+
+        /// <summary>
+        /// Read a 32-bit unsigned integer from the stream.
+        /// </summary>
+        uint32_t ReadUInt32( );
+
+        /// <summary>
+        /// Read a array len based on array size.
+        /// </summary>
+        int ReadArrayLen( );
+
+        /// <summary>
+        /// Read a 64-bit unsigned integer from the stream.
+        /// </summary>
+        uint64_t ReadUInt64( );
+
+        /// <summary>
+        /// Read a 16-bit integer from the stream.
+        /// </summary>
+        int16_t ReadInt16( );
+
+        /// <summary>
+        /// Read a 32-bit integer from the stream.
+        /// </summary>
+        int32_t ReadInt32( );
+
+        /// <summary>
+        /// Read a 64-bit integer from the stream.
+        /// </summary>
+        int64_t ReadInt64( );
+
+        /// <summary>
+        /// Read a floating point number from the stream.
+        /// </summary>
+        float ReadFloat( );
+
+        /// <summary>
+        /// Read a double precision number from the stream.
+        /// </summary>
+        double ReadDouble( );
+
+        /// <summary>
+        /// Read a string after java-modified UTF-8 decoding from the stream.
+        /// The maximum length supported is 2^16-1 beyond which the string
+        /// shall be truncated.
+        /// </summary>
+        String^ ReadUTF( );
+
+        /// <summary>
+        /// Read a string after java-modified UTF-8 decoding from the stream.
+        /// </summary>
+        String^ ReadUTFHuge( );
+
+        /// <summary>
+        /// Read a ASCII string from the stream. Where size is more than 2^16-1 
+        /// </summary>
+        String^ ReadASCIIHuge( );
+
+        /// <summary>
+        /// Read a serializable object from the data. Null objects are handled.
+        /// </summary>
+        IGFSerializable^ ReadObject( );
+
+       /* /// <summary>
+        /// Read a serializable object from the data. Null objects are handled.
+        /// </summary>
+        ///Object^ ReadGenericObject( );*/
+
+        /// <summary>
+        /// Get the count of bytes that have been read from the stream.
+        /// </summary>
+        property uint32_t BytesRead
+        {
+          uint32_t get( );
+        }
+
+        /// <summary>
+        /// Get the count of bytes that are remaining in the buffer.
+        /// </summary>
+        property uint32_t BytesRemaining
+        {
+          uint32_t get();
+        }
+
+        /// <summary>
+        /// Advance the cursor of the buffer by the given offset.
+        /// </summary>
+        /// <param name="offset">
+        /// The offset(number of bytes) by which to advance the cursor.
+        /// </param>
+        void AdvanceCursor( int32_t offset );
+
+        /// <summary>
+        /// Rewind the cursor of the buffer by the given offset.
+        /// </summary>
+        /// <param name="offset">
+        /// The offset(number of bytes) by which to rewind the cursor.
+        /// </param>
+        void RewindCursor( int32_t offset );
+
+        /// <summary>
+        /// Reset the cursor to the start of buffer.
+        /// </summary>
+        void Reset();
+
+        /// <summary>
+        /// Get the underlying native unmanaged pointer.
+        /// </summary>
+        property IntPtr NativeIntPtr
+        {
+          inline IntPtr get()
+          {
+            return IntPtr(_NativePtr);
+          }
+        }
+
+        System::Collections::Generic::IDictionary<Object^, Object^>^ ReadDictionary()
+        {
+          int len = this->ReadArrayLen();
+
+          if(len == -1)
+            return nullptr;
+          else
+          {
+            System::Collections::Generic::IDictionary<Object^, Object^>^ dict = gcnew Dictionary<Object^, Object^>();
+            for(int i =0; i< len; i++)
+            {
+							//TODO::split
+              //Object^ key = this->ReadGenericObject();
+              //Object^ val = this->ReadGenericObject();
+
+              //dict->Add(key, val);
+            }
+            return dict;
+          }
+
+        }
+        
+        System::DateTime ReadDate()
+        {
+          int64_t ticks = ReadInt64();
+          if(ticks != -1L)
+          {
+            m_cursor -= 8;
+            CacheableDate^ cd = gcnew CacheableDate();
+            return ((CacheableDate^)cd->FromData(this))->Value;
+          }else{
+            DateTime dt(0);
+            return dt;
+          }
+        }
+
+      internal:
+
+        
+        /// <summary>
+        /// Get the count of bytes that have been read from the stream, for internale use only.
+        /// </summary>
+        property uint32_t BytesReadInternally
+        {
+          uint32_t get( );
+        }
+
+        void ReadObject(bool% obj)
+        {
+          obj = ReadBoolean();
+        }
+
+        void ReadObject(Byte% obj)
+        {
+          obj = ReadByte();
+        }
+
+        void ReadObject(Char% obj)
+        {
+          obj = (Char)ReadUInt16();
+        }
+
+        inline Char decodeChar( )
+        {
+          Char retChar;
+          int b = m_buffer[ m_cursor++ ] & 0xff;
+          int k = b >> 5;
+          switch (  k )
+            {
+            default:
+              retChar = ( Char ) ( b & 0x7f );
+              break;
+            case 6:
+              {
+                // two byte encoding
+                // 110yyyyy 10xxxxxx
+                // use low order 6 bits
+                int y = b & 0x1f;
+                // use low order 6 bits of the next byte
+                // It should have high order bits 10, which we don't check.
+                int x = m_buffer[ m_cursor++ ] & 0x3f;
+                // 00000yyy yyxxxxxx
+                retChar = ( Char ) ( y << 6 | x );
+                break;
+              }
+            case 7:
+              {
+                // three byte encoding
+                // 1110zzzz 10yyyyyy 10xxxxxx
+                //assert ( b & 0x10 )
+                  //     == 0 : "UTF8Decoder does not handle 32-bit characters";
+                // use low order 4 bits
+                int z = b & 0x0f;
+                // use low order 6 bits of the next byte
+                // It should have high order bits 10, which we don't check.
+                int y = m_buffer[ m_cursor++ ] & 0x3f;
+                // use low order 6 bits of the next byte
+                // It should have high order bits 10, which we don't check.
+                int x = m_buffer[ m_cursor++ ] & 0x3f;
+                // zzzzyyyy yyxxxxxx
+                int asint = ( z << 12 | y << 6 | x );
+                retChar = ( Char ) asint;
+                break;
+              }
+            }// end switch
+
+            return retChar;
+        }
+
+        System::Collections::Hashtable^ ReadHashtable()
+        {
+          int len = this->ReadArrayLen();
+
+          if(len == -1)
+            return nullptr;
+          else
+          {
+            System::Collections::Hashtable^ dict = gcnew System::Collections::Hashtable();
+            for(int i =0; i< len; i++)
+            {
+							//TODO::split
+              //Object^ key = this->ReadGenericObject();
+              //Object^ val = this->ReadGenericObject();
+
+              //dict->Add(key, val);
+            }
+            return dict;
+          }
+        }
+
+        void ReadObject(Double% obj)
+        {
+          obj = ReadDouble();
+        }
+
+        void ReadObject(Single% obj)
+        {
+          obj = ReadFloat();
+        }
+
+        void ReadObject(int16_t% obj)
+        {
+          obj = ReadInt16();
+        }
+
+        void ReadObject(int32_t% obj)
+        {
+          obj = ReadInt32();
+        }
+
+        void ReadObject(int64_t% obj)
+        {
+          obj = ReadInt64();
+        }
+
+        template <typename mType>
+        void ReadObject(array<mType>^ %objArray)
+        {
+          int arrayLen = ReadArrayLen();
+          if(arrayLen > 0) {
+            objArray = gcnew array<mType>(arrayLen);
+
+            int i = 0;
+            for( i = 0; i < arrayLen; i++ ){
+              mType tmp;
+              ReadObject(tmp);
+              objArray[i] =  tmp; 
+            }
+          }
+        }
+
+        Object^ ReadStringArray()
+        {
+          int len = this->ReadArrayLen();
+          if ( len == -1)
+          {
+            return nullptr;
+          }
+          else 
+          {
+            array<String^>^ ret = gcnew array<String^>(len);
+            if (len > 0)
+            {
+              for( int i = 0; i < len; i++)
+              {
+                ret[i] = this->ReadUTF();
+              }
+            }
+            return ret;
+          }
+        }
+        
+        void AdvanceUMCursor()
+        {
+          NativePtr->advanceCursor(m_cursor);
+          m_cursor = 0;
+          m_bufferLength = 0;
+        }
+
+        inline array<Byte>^ ReadReverseBytesOnly(int len);
+
+        void SetBuffer()
+        {
+          m_buffer = const_cast<uint8_t*> (NativePtr->currentBufferPosition());
+          m_cursor = 0;
+          m_bufferLength = NativePtr->getBytesRemaining();   
+        }
+
+        String^ DecodeBytes(int length)
+        {
+          array<Char>^ output = gcnew array<Char>(length);
+          // index input[]
+          int i = 0;
+          // index output[]
+          int j = 0;
+          while ( i < length )
+          {
+            // get next byte unsigned
+            int b = m_buffer[ m_cursor++ ] & 0xff;
+            i++;
+            int k = b >> 5;
+            // classify based on the high order 3 bits
+            switch (  k )
+              {
+              default:
+                // one byte encoding
+                // 0xxxxxxx
+                // use just low order 7 bits
+                // 00000000 0xxxxxxx
+                output[ j++ ] = ( Char ) ( b & 0x7f );
+                break;
+              case 6:
+                {
+                  // two byte encoding
+                  // 110yyyyy 10xxxxxx
+                  // use low order 6 bits
+                  int y = b & 0x1f;
+                  // use low order 6 bits of the next byte
+                  // It should have high order bits 10, which we don't check.
+                  int x = m_buffer[ m_cursor++ ] & 0x3f;
+                  i++;
+                  // 00000yyy yyxxxxxx
+                  output[ j++ ] = ( Char ) ( y << 6 | x );
+                  break;
+                }
+              case 7:
+                {
+                  // three byte encoding
+                  // 1110zzzz 10yyyyyy 10xxxxxx
+                  //assert ( b & 0x10 )
+                    //     == 0 : "UTF8Decoder does not handle 32-bit characters";
+                  // use low order 4 bits
+                  int z = b & 0x0f;
+                  // use low order 6 bits of the next byte
+                  // It should have high order bits 10, which we don't check.
+                  int y = m_buffer[ m_cursor++ ] & 0x3f;
+                  i++;
+                  // use low order 6 bits of the next byte
+                  // It should have high order bits 10, which we don't check.
+                  int x = m_buffer[ m_cursor++ ] & 0x3f;
+                  i++;
+                  // zzzzyyyy yyxxxxxx
+                  int asint = ( z << 12 | y << 6 | x );
+                  output[ j++ ] = ( Char ) asint;
+                  break;
+                }
+              }// end switch
+          }// end while
+
+          String^ str = gcnew String(output, 0, j);
+          return str;
+        }
+
+        void CheckBufferSize(int size)
+        {
+          if( (unsigned int)(m_cursor + size) > m_bufferLength )
+            throw gcnew GemStone::GemFire::Cache::OutOfRangeException("DataInput: attempt to read beyond buffer");
+        }
+
+       // Object^ ReadInternalGenericObject();
+
+        IGFSerializable^ ReadInternalObject();
+
+        /// <summary>
+        /// Internal constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline DataInput( gemfire::DataInput* nativeptr, bool managedObject )
+          : UMWrap(nativeptr, false)
+        { 
+          m_cursor = 0;
+          m_isManagedObject = managedObject;
+          m_buffer = const_cast<uint8_t*>(nativeptr->currentBufferPosition());
+          if ( m_buffer != NULL) {
+            m_bufferLength = nativeptr->getBytesRemaining();            
+          }
+          else {
+            m_bufferLength = 0;
+          }
+        }
+
+       /* inline DataInput( gemfire::DataInput* nativeptr )
+          : UMWrap(nativeptr, false)
+        { 
+          m_cursor = 0;
+          m_isManagedObject = false;
+          m_buffer = const_cast<uint8_t*>(nativeptr->currentBufferPosition());
+          if ( m_buffer != NULL) {
+            m_bufferLength = nativeptr->getBytesRemaining();            
+          }
+          else {
+            m_bufferLength = 0;
+          }
+        }*/
+
+        bool IsManagedObject()
+        {
+          return m_isManagedObject;
+        }
+
+      private:
+
+        /// <summary>
+        /// Internal buffer managed by the class.
+        /// This is freed in the disposer/destructor.
+        /// </summary>
+        uint8_t* m_buffer;
+        unsigned int m_bufferLength;
+        int m_cursor;
+        bool m_isManagedObject;
+      
+        void Cleanup( );
+      };
+
+    }
+  }
+}


[24/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/RefIDExample/RefIDExample.csproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/RefIDExample/RefIDExample.csproj b/geode-client-native/quickstart/csharp/vsprojects/RefIDExample/RefIDExample.csproj
new file mode 100644
index 0000000..95b07de
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/RefIDExample/RefIDExample.csproj
@@ -0,0 +1,113 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{63FC7A13-FA33-44DF-8FF0-3220F7176BC3}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>RefIDExample</RootNamespace>
+    <AssemblyName>RefIDExample</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>2.0</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="GemStone.GemFire.Cache, Version=9.0.0.0, Culture=neutral, PublicKeyToken=126e6338d9f55e0c, processorArchitecture=x64">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>$(GFCPP)\bin\GemStone.GemFire.Cache.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="..\..\RefIDExample.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PostBuildEvent>copy "$(TargetPath)" "$(SolutionDir)csharp"</PostBuildEvent>
+  </PropertyGroup>
+</Project>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/RegisterInterest/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/RegisterInterest/Properties/AssemblyInfo.cs b/geode-client-native/quickstart/csharp/vsprojects/RegisterInterest/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..724650d
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/RegisterInterest/Properties/AssemblyInfo.cs
@@ -0,0 +1,33 @@
+\ufeffusing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("RegisterInterest")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("RegisterInterest")]
+[assembly: AssemblyCopyright("Copyright �  2007")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("d4b05945-0d55-49d9-81dd-72b837cb9544")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/RegisterInterest/RegisterInterest.csproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/RegisterInterest/RegisterInterest.csproj b/geode-client-native/quickstart/csharp/vsprojects/RegisterInterest/RegisterInterest.csproj
new file mode 100644
index 0000000..d801b65
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/RegisterInterest/RegisterInterest.csproj
@@ -0,0 +1,117 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{7200D4CE-78AC-401E-B749-E61656D8078D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>RegisterInterest</RootNamespace>
+    <AssemblyName>RegisterInterest</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>2.0</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="GemStone.GemFire.Cache, Version=9.0.0.0, Culture=neutral, PublicKeyToken=126e6338d9f55e0c, processorArchitecture=x64">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>$(GFCPP)\bin\GemStone.GemFire.Cache.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\..\RegisterInterest.cs">
+      <Link>RegisterInterest.cs</Link>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PostBuildEvent>copy "$(TargetPath)" "$(SolutionDir)csharp"</PostBuildEvent>
+  </PropertyGroup>
+</Project>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/RemoteQuery/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/RemoteQuery/Properties/AssemblyInfo.cs b/geode-client-native/quickstart/csharp/vsprojects/RemoteQuery/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..3bab33e
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/RemoteQuery/Properties/AssemblyInfo.cs
@@ -0,0 +1,33 @@
+\ufeffusing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("RemoteQuery")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("RemoteQuery")]
+[assembly: AssemblyCopyright("Copyright �  2007")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("5ddc1f27-5373-4777-8505-aed8e9aa3692")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/RemoteQuery/RemoteQuery.csproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/RemoteQuery/RemoteQuery.csproj b/geode-client-native/quickstart/csharp/vsprojects/RemoteQuery/RemoteQuery.csproj
new file mode 100644
index 0000000..e55c3f9
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/RemoteQuery/RemoteQuery.csproj
@@ -0,0 +1,123 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{F15736B5-8582-4B38-8B09-AA2ED4EA9575}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>RemoteQuery</RootNamespace>
+    <AssemblyName>RemoteQuery</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>2.0</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="GemStone.GemFire.Cache, Version=9.0.0.0, Culture=neutral, PublicKeyToken=126e6338d9f55e0c, processorArchitecture=x64">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>$(GFCPP)\bin\GemStone.GemFire.Cache.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\..\PortfolioN.cs">
+      <Link>PortfolioN.cs</Link>
+    </Compile>
+    <Compile Include="..\..\PositionN.cs">
+      <Link>PositionN.cs</Link>
+    </Compile>
+    <Compile Include="..\..\RemoteQuery.cs">
+      <Link>RemoteQuery.cs</Link>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PostBuildEvent>copy "$(TargetPath)" "$(SolutionDir)csharp"</PostBuildEvent>
+  </PropertyGroup>
+</Project>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/Security/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/Security/Properties/AssemblyInfo.cs b/geode-client-native/quickstart/csharp/vsprojects/Security/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..2f4fb8a
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/Security/Properties/AssemblyInfo.cs
@@ -0,0 +1,33 @@
+\ufeffusing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Security")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Security")]
+[assembly: AssemblyCopyright("Copyright �  2007")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("37ace014-ca4d-4011-9245-6cf3e000bcf0")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/Security/Security.csproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/Security/Security.csproj b/geode-client-native/quickstart/csharp/vsprojects/Security/Security.csproj
new file mode 100644
index 0000000..bcdbbf5
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/Security/Security.csproj
@@ -0,0 +1,118 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{5F76AA4D-0FF3-4859-8958-CDD075AC01C3}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Security</RootNamespace>
+    <AssemblyName>Security</AssemblyName>
+    <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>2.0</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="GemStone.GemFire.Cache, Version=9.0.0.0, Culture=neutral, PublicKeyToken=126e6338d9f55e0c, processorArchitecture=x64">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>$(GFCPP)\bin\GemStone.GemFire.Cache.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\..\Security.cs">
+      <Link>Security.cs</Link>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PostBuildEvent>copy "$(TargetPath)" "$(SolutionDir)csharp"</PostBuildEvent>
+  </PropertyGroup>
+</Project>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/SimplePlugins/SimplePlugins.csproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/SimplePlugins/SimplePlugins.csproj b/geode-client-native/quickstart/csharp/vsprojects/SimplePlugins/SimplePlugins.csproj
new file mode 100644
index 0000000..39afedc
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/SimplePlugins/SimplePlugins.csproj
@@ -0,0 +1,120 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{915061E8-66C2-4597-91F2-45CA531910EE}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Simple_Plugins</RootNamespace>
+    <AssemblyName>Simple Plugins</AssemblyName>
+    <StartupObject>
+    </StartupObject>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>2.0</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <ItemGroup>
+    <Reference Include="GemStone.GemFire.Cache, Version=9.0.0.0, Culture=neutral&#xD;&#xA; PublicKeyToken=126e6338d9f55e0c, processorArchitecture=x64">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>$(GFCPP)\bin\GemStone.GemFire.Cache.dll</HintPath>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\..\plugins\SimpleCacheListener.cs">
+      <Link>SimpleCacheListener.cs</Link>
+    </Compile>
+    <Compile Include="..\..\plugins\SimpleCacheLoader.cs">
+      <Link>SimpleCacheLoader.cs</Link>
+    </Compile>
+    <Compile Include="..\..\plugins\SimpleCacheWriter.cs">
+      <Link>SimpleCacheWriter.cs</Link>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+</Project>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/Transactions/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/Transactions/Properties/AssemblyInfo.cs b/geode-client-native/quickstart/csharp/vsprojects/Transactions/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..db456fb
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/Transactions/Properties/AssemblyInfo.cs
@@ -0,0 +1,33 @@
+\ufeffusing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Transactions")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Transactions")]
+[assembly: AssemblyCopyright("Copyright �  2008")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("51229c8f-64d5-4302-8c93-aaec3c27864b")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/Transactions/Transactions.csproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/Transactions/Transactions.csproj b/geode-client-native/quickstart/csharp/vsprojects/Transactions/Transactions.csproj
new file mode 100644
index 0000000..ae0d8d5
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/Transactions/Transactions.csproj
@@ -0,0 +1,117 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{51229C8F-64D5-4302-8C93-AAEC3C27864B}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Transactions</RootNamespace>
+    <AssemblyName>Transactions</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>2.0</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="GemStone.GemFire.Cache, Version=9.0.0.0, Culture=neutral, PublicKeyToken=126e6338d9f55e0c, processorArchitecture=x64">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>$(GFCPP)\bin\GemStone.GemFire.Cache.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\..\Transactions.cs">
+      <Link>Transactions.cs</Link>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PostBuildEvent>copy "$(TargetPath)" "$(SolutionDir)csharp"</PostBuildEvent>
+  </PropertyGroup>
+</Project>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/TransactionsXA/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/TransactionsXA/Properties/AssemblyInfo.cs b/geode-client-native/quickstart/csharp/vsprojects/TransactionsXA/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..2ff5811
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/TransactionsXA/Properties/AssemblyInfo.cs
@@ -0,0 +1,33 @@
+\ufeffusing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("TransactionsXA")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("TransactionsXA")]
+[assembly: AssemblyCopyright("Copyright �  2008")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("AC0A17DA-3880-47A4-962F-1237431DBFD7")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/TransactionsXA/TransactionsXA.csproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/TransactionsXA/TransactionsXA.csproj b/geode-client-native/quickstart/csharp/vsprojects/TransactionsXA/TransactionsXA.csproj
new file mode 100644
index 0000000..1b8afb3
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/TransactionsXA/TransactionsXA.csproj
@@ -0,0 +1,117 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{AC0A17DA-3880-47A4-962F-1237431DBFD7}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>TransactionsXA</RootNamespace>
+    <AssemblyName>TransactionsXA</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>2.0</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="GemStone.GemFire.Cache, Version=8.2.0.3, Culture=neutral, PublicKeyToken=126e6338d9f55e0c, processorArchitecture=x64">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>$(GFCPP)\bin\GemStone.GemFire.Cache.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\..\TransactionsXA.cs">
+      <Link>TransactionsXA.cs</Link>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PostBuildEvent>copy "$(TargetPath)" "$(SolutionDir)csharp"</PostBuildEvent>
+  </PropertyGroup>
+</Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/interop/GNUmakefile
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/interop/GNUmakefile b/geode-client-native/quickstart/interop/GNUmakefile
new file mode 100644
index 0000000..0992a22
--- /dev/null
+++ b/geode-client-native/quickstart/interop/GNUmakefile
@@ -0,0 +1,5 @@
+default: all
+
+SUBS = execs java
+
+include ../GNUmakefile.common
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/interop/GNUmakefile.execs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/interop/GNUmakefile.execs b/geode-client-native/quickstart/interop/GNUmakefile.execs
new file mode 100644
index 0000000..fab91ca
--- /dev/null
+++ b/geode-client-native/quickstart/interop/GNUmakefile.execs
@@ -0,0 +1,20 @@
+default: all
+
+
+SRC = $(wildcard *.cpp)
+EXECS = $(patsubst %.cpp,%,$(SRC))
+
+.PHONY: all clean
+all: $(EXECS)
+
+clean:
+	rm -rf $(EXECS)
+	rm -f $(SRC:.cpp=.o)
+	rm -f $(SRC:.cpp=.d)
+
+$(EXECS) : % : %.o
+	$(CXX) $(CXXLDFLAGS) $(CXXLIBS) -o $@ $^
+	
+-include $(SRC:.cpp=.d)
+
+include ../GNUmakefile.common

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/interop/GNUmakefile.java
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/interop/GNUmakefile.java b/geode-client-native/quickstart/interop/GNUmakefile.java
new file mode 100644
index 0000000..c201be6
--- /dev/null
+++ b/geode-client-native/quickstart/interop/GNUmakefile.java
@@ -0,0 +1,21 @@
+default: all
+
+.NOTPARALLEL:
+
+SRC = $(filter-out GNUmakefile.java,$(wildcard *.java))
+CLASSES = $(patsubst %.java,%.class,$(SRC))
+
+CLASSPATH += $(GEMFIRE)/lib/gemfire.jar
+
+JAVAC := javac
+JAVACFLAGS := -classpath $(CLASSPATH)
+
+.PHONY: all clean
+all: $(CLASSES)
+
+clean:
+	rm -f $(CLASSES)
+
+%.class : %.java
+	$(JAVAC) $(JAVACFLAGS) $(SRC)
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/interop/InteropCPP.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/interop/InteropCPP.cpp b/geode-client-native/quickstart/interop/InteropCPP.cpp
new file mode 100644
index 0000000..46c82ad
--- /dev/null
+++ b/geode-client-native/quickstart/interop/InteropCPP.cpp
@@ -0,0 +1,73 @@
+/*
+ * The Interop QuickStart Example.
+ *
+ * This example takes the following steps:
+ *
+ * 1. Create a GemFire Cache.
+ * 2. Get the example Region from the Cache.
+ * 3. Put an Entry (Key and Value pair) into the Region.
+ * 4. Get Entries from the Region put by other clients.
+ * 5. Close the Cache.
+ *
+ */
+
+
+// Include the GemFire library.
+#include <gfcpp/GemfireCppCache.hpp>
+
+// Use the "gemfire" namespace.
+using namespace gemfire;
+
+// The Interop QuickStart example.
+int main(int argc, char ** argv)
+{
+  try
+  {
+    // Create CacheFactory using the default system properties.
+    CacheFactoryPtr cacheFactory = CacheFactory::createCacheFactory();
+    
+    // Create a GemFire Cache.
+    CachePtr cachePtr = cacheFactory->set("cache-xml-file", "XMLs/clientInterop.xml")->create();
+    
+    LOGINFO("CPP CLIENT: Created the GemFire Cache");
+
+    // Get the example Region from the Cache which is declared in the Cache XML file.
+    RegionPtr regionPtr = cachePtr->getRegion("exampleRegion");
+
+    LOGINFO("CPP CLIENT: Obtained the Region from the Cache");
+
+    // Put an Entry (Key and Value pair) into the Region using the direct/shortcut method.
+    regionPtr->put("Key-CPP", "Value-CPP");
+
+    LOGINFO("CPP CLIENT: Put the C++ Entry into the Region");
+
+    // Wait for all values to be available.
+    CacheablePtr value1 = NULLPTR;
+    CacheablePtr value2 = NULLPTR;
+    CacheablePtr value3 = NULLPTR;
+
+    while (value1 == NULLPTR || (argc > 1 && value2 == NULLPTR) || value3 == NULLPTR)
+    {
+      LOGINFO("CPP CLIENT: Checking server for keys...");
+      value1 = regionPtr->get("Key-CPP");
+      value2 = regionPtr->get("Key-CSHARP");
+      value3 = regionPtr->get("Key-JAVA");
+      gemfire::millisleep(1000);
+    }
+
+    LOGINFO("CPP CLIENT: Key-CPP value is %s", value1->toString()->asChar());
+    LOGINFO("CPP CLIENT: Key-CSHARP value is %s", value2 != NULLPTR ? value2->toString()->asChar() : "null");
+    LOGINFO("CPP CLIENT: Key-JAVA value is %s", value3->toString()->asChar());
+
+    // Close the GemFire Cache.
+    cachePtr->close();
+
+    LOGINFO("CPP CLIENT: Closed the GemFire Cache");
+  }
+  // An exception should not occur
+  catch(const Exception & gemfireExcp)
+  {
+    LOGERROR("CPP CLIENT: Interop GemFire Exception: %s", gemfireExcp.getMessage());
+  }
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/interop/InteropCSHARP.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/interop/InteropCSHARP.cs b/geode-client-native/quickstart/interop/InteropCSHARP.cs
new file mode 100644
index 0000000..8c39011
--- /dev/null
+++ b/geode-client-native/quickstart/interop/InteropCSHARP.cs
@@ -0,0 +1,77 @@
+/*
+ * The Interop QuickStart Example.
+ *
+ * This example takes the following steps:
+ *
+ * 1. Create a GemFire Cache.
+ * 2. Get the example Region from the Cache.
+ * 3. Put an Entry (Key and Value pair) into the Region.
+ * 4. Get Entries from the Region put by other clients.
+ * 5. Close the Cache.
+ *
+ */
+
+// Use standard namespaces
+using System;
+using System.Threading;
+
+// Use the GemFire namespace
+using GemStone.GemFire.Cache;
+
+namespace GemStone.GemFire.Cache.QuickStart
+{
+  // The Interop QuickStart example.
+  class Interop
+  {
+    static void Main(string[] args)
+    {
+      try
+      {
+        // Create a GemFire Cache.
+        CacheFactory cacheFactory = CacheFactory.CreateCacheFactory();
+
+        Cache cache = cacheFactory.Set("cache-xml-file", "XMLs/clientInterop.xml").Create();
+
+        Console.WriteLine("CSHARP CLIENT: Created the GemFire Cache");
+
+        // Get the example Region from the Cache which is declared in the Cache XML file.
+        Region region = cache.GetRegion("exampleRegion");
+
+        Console.WriteLine("CSHARP CLIENT: Obtained the Region from the Cache");
+
+        // Put an Entry (Key and Value pair) into the Region using the direct/shortcut method.
+        region.Put("Key-CSHARP", "Value-CSHARP");
+
+        Console.WriteLine("CSHARP CLIENT: Put the C# Entry into the Region");
+
+        // Wait for all values to be available.
+        IGFSerializable value1 = null;
+        IGFSerializable value2 = null;
+        IGFSerializable value3 = null;
+        
+        while (value1 == null || value2 == null || value3 == null)
+        {
+          Console.WriteLine("CSHARP CLIENT: Checking server for keys...");
+          value1 = region.Get("Key-CPP");
+          value2 = region.Get("Key-CSHARP");
+          value3 = region.Get("Key-JAVA");
+          Thread.Sleep(1000);
+        }
+        
+        Console.WriteLine("CSHARP CLIENT: Key-CPP value is {0}", value1);
+        Console.WriteLine("CSHARP CLIENT: Key-CSHARP value is {0}", value2);
+        Console.WriteLine("CSHARP CLIENT: Key-JAVA value is {0}", value3);
+        
+        // Close the GemFire Cache.
+        cache.Close();
+
+        Console.WriteLine("CSHARP CLIENT: Closed the GemFire Cache");
+      }
+      // An exception should not occur
+      catch (GemFireException gfex)
+      {
+        Console.WriteLine("CSHARP CLIENT: Interop GemFire Exception: {0}", gfex.Message);
+      }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/interop/InteropJAVA.java
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/interop/InteropJAVA.java b/geode-client-native/quickstart/interop/InteropJAVA.java
new file mode 100644
index 0000000..5ad8788
--- /dev/null
+++ b/geode-client-native/quickstart/interop/InteropJAVA.java
@@ -0,0 +1,70 @@
+/*
+ * The Interop QuickStart Example.
+ *
+ * This example takes the following steps:
+ *
+ * 1. Create a GemFire Cache.
+ * 2. Get the example Region from the Cache.
+ * 3. Put an Entry (Key and Value pair) into the Region.
+ * 4. Get Entries from the Region put by other clients.
+ * 5. Close the Cache.
+ *
+ */
+ 
+//package quickstart;
+
+//include the required packages.
+import java.util.Properties;
+import com.gemstone.gemfire.cache.client.ClientCache;
+import com.gemstone.gemfire.cache.client.ClientCacheFactory;
+import com.gemstone.gemfire.cache.Region;
+import com.gemstone.gemfire.distributed.DistributedSystem;
+
+// The Interop QuickStart example.
+public class InteropJAVA {
+  
+  public static void main(String [] args) throws Exception {
+    try
+    {
+      // Create the cache which causes the cache-xml-file to be parsed
+      ClientCache cache = (new ClientCacheFactory()).set("mcast-port", "0").set("cache-xml-file", "XMLs/clientInteropJava.xml").create();
+  
+      // Get the exampleRegion which is a subregion of /root
+      Region exampleRegion = cache.getRegion("exampleRegion");
+      System.out.println("JAVA CLIENT: Example region, " + exampleRegion.getFullPath() + ", created in cache. ");
+  
+      // Put an Entry (Key and Value pair) into the Region using the direct/shortcut method.
+      exampleRegion.put("Key-JAVA", "Value-JAVA");
+  
+      System.out.println("JAVA CLIENT: Put the Java Entry into the Region.");
+      
+      // Wait for all values to be available.
+      Object value1 = null;
+      Object value2 = null;
+      Object value3 = null;
+      
+      while (value1 == null || (args.length > 1 && value2 == null) || value3 == null)
+      {
+        System.out.println("JAVA CLIENT: Checking server for keys...");
+        value1 = exampleRegion.get("Key-CPP");
+        value2 = exampleRegion.get("Key-CSHARP");
+        value3 = exampleRegion.get("Key-JAVA");
+        Thread.sleep(1000);
+      }
+      
+      System.out.println("JAVA CLIENT: Key-CPP value is " + value1);
+      System.out.println("JAVA CLIENT: Key-CSHARP value is " + value2);
+      System.out.println("JAVA CLIENT: Key-JAVA value is " + value3);
+      
+      // Close the cache and disconnect from GemFire distributed system
+      System.out.println("JAVA CLIENT: Closing the cache and disconnecting.");
+      cache.close();
+    }
+    // An exception should not occur
+    catch(Exception gemfireExcp)
+    {
+      System.out.println("JAVA CLIENT: Interop GemFire Exception: " + gemfireExcp.getMessage());
+    }
+  }
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/overview.gif
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/overview.gif b/geode-client-native/quickstart/overview.gif
new file mode 100644
index 0000000..753ddd5
Binary files /dev/null and b/geode-client-native/quickstart/overview.gif differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/quickstart.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/quickstart.xml b/geode-client-native/quickstart/quickstart.xml
new file mode 100644
index 0000000..55b5ce5
--- /dev/null
+++ b/geode-client-native/quickstart/quickstart.xml
@@ -0,0 +1,194 @@
+<?xml version="1.0"?>
+
+<!-- This is the Ant build file for running quickstart examples.  It is designed 
+     to be invoked from the build.xml Ant script in the top level directory
+     of the GemFire tree, and expects to inherit the properties set
+     there.
+  -->
+<project name ="gemfire" default="usage">
+  <description>Runs GemFire quickstart examples</description>
+  <target name="usage">
+    <echo>
+    This script is designed to be invoked from the build.xml script
+    in the base directory.
+    </echo>
+  </target>
+
+  <target name="-run-test">
+
+   <condition property="OPENSSL" value="//inf1/shared/where/cplusplus/thirdparty/windows/openssl/ssllibs">
+     <os family="windows"/>
+   </condition>
+   <condition property="OPENSSL" value="/export/gcm/where/cplusplus/thirdparty/linux/openssl/ssllibs">
+     <not><os family="windows"/></not>
+   </condition>
+ 
+   
+   <condition property="csharp">
+     <equals arg1="${runscript.file}" arg2="${product.dir}/SampleCode/quickstart/runcs.bat"/>
+   </condition>
+
+   <condition property="cpp">
+    <or> 
+      <equals arg1="${runscript.file}" arg2="${product.dir}/SampleCode/quickstart/runcpp.bat"/>
+      <equals arg1="${runscript.file}" arg2="${product.dir}/SampleCode/quickstart/runcpp.sh"/>
+    </or> 
+   </condition>
+
+  <conditional if="csharp">
+    <property name="folderType" value="csharp"/> 
+    <condition property="quickstart" value="${csharp.quickstart}">
+      <isset property="csharp.quickstart"/>
+    </condition>
+    <conditional unless="quickstart">
+      <property name="thisTestOk" value="true"/>
+    </conditional>
+    <conditional if="quickstart">
+      <condition property="thisTestOk">
+        <equals arg1="${testName}" arg2="${csharp.quickstart}"/>
+      </condition>
+    </conditional>
+  </conditional> 
+ 
+  <conditional if="cpp"> 
+    <property name="folderType" value="cpp"/>
+    <condition property="quickstart" value="${cpp.quickstart}">
+      <isset property="cpp.quickstart"/>
+    </condition>
+    <conditional unless="quickstart">
+      <property name="thisTestOk" value="true"/>
+    </conditional>
+    <conditional if="quickstart">
+      <condition property="thisTestOk">
+        <equals arg1="${testName}" arg2="${cpp.quickstart}"/>
+      </condition>
+    </conditional>
+  </conditional>
+
+  <condition property="okToRun">
+    <isset property="thisTestOk"/>
+  </condition>
+
+  <conditional unless="okToRun">
+   <echo level="info" message="Skipping test ${testName}"/>
+  </conditional>
+
+  <conditional if="okToRun">
+   <mkdir dir="${tests.quickstart.out.dir}/${folderType}/${testName}"/>
+    <condition property="test_name" value="${testName}">
+      <isset property="thisTestOk"/>
+    </condition>
+    <tstamp>
+      <format property="test.time" pattern="HH:mm:ss"/>
+    </tstamp>
+    <echo level="info" message="${test.time}: ${testName} "/> 
+    <property environment="env"/>
+    
+    <exec dir="${product.dir}/SampleCode/quickstart"
+         executable="${runscript.file}"
+         output="${tests.quickstart.out.dir}/${folderType}/${testName}/${testName}.out"
+         failonerror="false" resultproperty="ExitCode">
+    <!-- Setting the environment configuration -->
+      <env key="GEMFIRE" path="${gfe.dir}"/>
+      <env key="GFCPP" path="${product.dir}"/>
+      <env key="PATH" path="${java.home}/bin:${GEMFIRE}/bin:${env.PATH}"/>
+      <env key="OPENSSL" value="${OPENSSL}"/>
+      <env key="LD_LIBRARY_PATH" value="${OPENSSL}/lib"/>
+      <env key="LD_LIBRARY_PATH" value="${OPENSSL}/bin"/>
+      <arg value="${test_name}"/>
+   </exec>
+  <condition property="TestFailed">
+    <not>
+      <equals arg1="${ExitCode}" arg2="0"/>
+    </not>
+  </condition>
+
+ <conditional if="TestFailed">
+    <antcall target="moveDir">
+      <param name="test_name" value="${test_name}"/>
+      <param name="folderType" value="${folderType}"/>
+   </antcall>
+  </conditional>
+  <conditional unless="TestFailed">
+    <antcall target="moveDir">
+     <param name="test_name" value="${test_name}"/>
+     <param name="folderType" value="${folderType}"/>
+   </antcall>
+ </conditional>
+ </conditional>
+ <fail message="Output can be found at ${tests.quickstart.out.dir}/${folderType}/${test_name}/${testName}.out" if="TestFailed"/>
+
+</target>
+
+ <target name="moveDir">
+   <move todir="${tests.quickstart.out.dir}/${folderType}/${test_name}">
+     <fileset dir="${product.dir}/SampleCode/quickstart">
+       <include name="gfecs*/*"/>
+     </fileset>
+   </move>
+ </target>
+
+
+<target name="quickstart-tests">
+
+    <echo>running tests</echo>
+    <antcall target="-run-test">
+      <param name="testName" value="BasicOperations"/>
+    </antcall>
+    <antcall target="-run-test">
+       <param name="testName" value="CqQuery"/>
+    </antcall>
+    <antcall target="-run-test">
+      <param name="testName" value="DataExpiration"/>
+    </antcall>
+    <antcall target="-run-test">
+      <param name="testName" value="Delta"/>
+    </antcall>
+    <antcall target="-run-test">
+      <param name="testName" value="DistributedSystem"/>
+    </antcall>
+    <antcall target="-run-test">
+      <param name="testName" value="DurableClient"/>
+    </antcall>
+    <antcall target="-run-test">
+      <param name="testName" value="Exceptions"/>
+    </antcall>
+    <antcall target="-run-test">
+      <param name="testName" value="ExecuteFunctions"/>
+    </antcall>
+    <antcall target="-run-test">
+      <param name="testName" value="HACache"/>
+    </antcall>
+    <antcall target="-run-test">
+      <param name="testName" value="LoaderListenerWriter"/>
+    </antcall>
+    <antcall target="-run-test">
+      <param name="testName" value="MultiuserSecurity"/>
+    </antcall>
+    <antcall target="-run-test">
+      <param name="testName" value="PoolCqQuery"/>
+    </antcall>
+    <antcall target="-run-test">
+      <param name="testName" value="PoolRemoteQuery"/>
+    </antcall>
+    <antcall target="-run-test">
+      <param name="testName" value="PoolWithEndpoints"/>
+    </antcall>
+    <antcall target="-run-test">
+      <param name="testName" value="PutAllGetAllOperations"/>
+    </antcall>
+    <antcall target="-run-test">
+      <param name="testName" value="RefIDExample"/>
+    </antcall>
+    <antcall target="-run-test">
+      <param name="testName" value="RegisterInterest"/>
+    </antcall>
+    <antcall target="-run-test">
+      <param name="testName" value="RemoteQuery"/>
+    </antcall>
+    <antcall target="-run-test">
+      <param name="testName" value="Security"/>
+    </antcall>
+</target>
+
+</project>


[33/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/XMLs/serverExceptions.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/XMLs/serverExceptions.xml b/geode-client-native/quickstart/XMLs/serverExceptions.xml
new file mode 100644
index 0000000..3d47610
--- /dev/null
+++ b/geode-client-native/quickstart/XMLs/serverExceptions.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+
+<!-- serverExceptions.xml
+     Configures a server to for clients at port 40404.
+-->
+
+<!DOCTYPE cache PUBLIC
+  "-//GemStone Systems, Inc.//GemFire Declarative Caching 6.5//EN"
+  "http://www.gemstone.com/dtd/cache6_5.dtd">
+<cache>
+  <cache-server port="40404"/>
+	<region name="exampleRegion">
+    	<region-attributes scope="distributed-no-ack" data-policy="replicate"/>
+    </region>
+    <region name="exampleRegion2">
+    	<region-attributes scope="distributed-no-ack" data-policy="replicate"/>
+    </region>
+</cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/XMLs/serverExecuteFunctions.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/XMLs/serverExecuteFunctions.xml b/geode-client-native/quickstart/XMLs/serverExecuteFunctions.xml
new file mode 100755
index 0000000..d339e25
--- /dev/null
+++ b/geode-client-native/quickstart/XMLs/serverExecuteFunctions.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+
+
+<!DOCTYPE cache PUBLIC
+  "-//GemStone Systems, Inc.//GemFire Declarative Caching 6.5//EN"
+  "http://www.gemstone.com/dtd/cache6_5.dtd">
+<cache>
+	<cache-server port="50505">
+	<group>ServerGroup1</group>
+	</cache-server>
+	<vm-root-region name='partition_region'>
+		<region-attributes data-policy="partition"></region-attributes>
+	</vm-root-region>
+  <function-service>
+  	<function>
+  		<class-name>javaobject.MultiGetFunctionI</class-name>
+  	</function>
+  	<function>
+  		<class-name>javaobject.MultiPutFunctionI</class-name>
+  	</function>
+  	<function>
+  		<class-name>javaobject.MultiGetFunction</class-name>
+  	</function>
+  	<function>
+  		<class-name>javaobject.MultiPutFunction</class-name>
+  	</function>
+  </function-service>
+</cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/XMLs/serverExecuteFunctions2.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/XMLs/serverExecuteFunctions2.xml b/geode-client-native/quickstart/XMLs/serverExecuteFunctions2.xml
new file mode 100755
index 0000000..5d49119
--- /dev/null
+++ b/geode-client-native/quickstart/XMLs/serverExecuteFunctions2.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+
+
+<!DOCTYPE cache PUBLIC
+  "-//GemStone Systems, Inc.//GemFire Declarative Caching 6.5//EN"
+  "http://www.gemstone.com/dtd/cache6_5.dtd">
+<cache>
+	<cache-server port="40404">
+	<group>ServerGroup1</group>
+	</cache-server>
+	<vm-root-region name='partition_region'>
+		<region-attributes data-policy="partition"></region-attributes>
+	</vm-root-region>
+  <function-service>
+  	<function>
+  		<class-name>javaobject.MultiGetFunctionI</class-name>
+  	</function>
+  	<function>
+  		<class-name>javaobject.MultiPutFunctionI</class-name>
+  	</function>
+  	<function>
+  		<class-name>javaobject.MultiGetFunction</class-name>
+  	</function>
+  	<function>
+  		<class-name>javaobject.MultiPutFunction</class-name>
+  	</function>
+  </function-service>
+</cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/XMLs/serverHACache.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/XMLs/serverHACache.xml b/geode-client-native/quickstart/XMLs/serverHACache.xml
new file mode 100644
index 0000000..d60b898
--- /dev/null
+++ b/geode-client-native/quickstart/XMLs/serverHACache.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+
+<!-- serverHACache.xml
+     Configures a server to for clients at port 40405.
+-->
+
+<!DOCTYPE cache PUBLIC
+  "-//GemStone Systems, Inc.//GemFire Declarative Caching 6.5//EN"
+  "http://www.gemstone.com/dtd/cache6_5.dtd">
+<cache>
+  <cache-server port="40405"/>
+    <region name="exampleRegion">
+      <region-attributes scope="distributed-ack"  mirror-type="keys-values" statistics-enabled="true">
+        <entry-time-to-live>
+          <expiration-attributes timeout="5" action="destroy"/>
+        </entry-time-to-live>
+      </region-attributes>
+    </region>
+</cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/XMLs/serverHACache2.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/XMLs/serverHACache2.xml b/geode-client-native/quickstart/XMLs/serverHACache2.xml
new file mode 100644
index 0000000..c658b99
--- /dev/null
+++ b/geode-client-native/quickstart/XMLs/serverHACache2.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+
+<!-- serverHACache2.xml
+     Configures a server to for clients at port 40404.
+-->
+
+<!DOCTYPE cache PUBLIC
+  "-//GemStone Systems, Inc.//GemFire Declarative Caching 6.5//EN"
+  "http://www.gemstone.com/dtd/cache6_5.dtd">
+<cache>
+  <cache-server port="40404"/>
+    <region name="exampleRegion">
+      <region-attributes scope="distributed-ack"  mirror-type="keys-values" statistics-enabled="true">
+        <entry-time-to-live>
+          <expiration-attributes timeout="5" action="destroy"/>
+        </entry-time-to-live>
+      </region-attributes>
+    </region>
+</cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/XMLs/serverInterop.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/XMLs/serverInterop.xml b/geode-client-native/quickstart/XMLs/serverInterop.xml
new file mode 100644
index 0000000..f24b5d8
--- /dev/null
+++ b/geode-client-native/quickstart/XMLs/serverInterop.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+
+<!-- serverInterop.xml
+     Configures a server to for clients at port 40404.
+-->
+
+<!DOCTYPE cache PUBLIC
+  "-//GemStone Systems, Inc.//GemFire Declarative Caching 6.5//EN"
+  "http://www.gemstone.com/dtd/cache6_5.dtd">
+<cache>
+  <cache-server port="40404"/>
+  <region name="exampleRegion">
+    <region-attributes scope="distributed-no-ack" data-policy="replicate"/>
+  </region>
+</cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/XMLs/serverLoaderListenerWriter.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/XMLs/serverLoaderListenerWriter.xml b/geode-client-native/quickstart/XMLs/serverLoaderListenerWriter.xml
new file mode 100644
index 0000000..cbaf8ac
--- /dev/null
+++ b/geode-client-native/quickstart/XMLs/serverLoaderListenerWriter.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+
+<!-- serverLoaderListenerWriter.xml
+     Configures a server to for clients at port 40404.
+     The example region also is configured with a loader, listener and writer. 
+-->
+
+<!DOCTYPE cache PUBLIC
+  "-//GemStone Systems, Inc.//GemFire Declarative Caching 6.5//EN"
+  "http://www.gemstone.com/dtd/cache6_5.dtd">
+<cache>
+  <cache-server port="40404"/>
+    <region name="exampleRegion">
+      <region-attributes scope="distributed-no-ack" data-policy="replicate"/>
+    </region>
+</cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/XMLs/serverMultiuserSecurity.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/XMLs/serverMultiuserSecurity.xml b/geode-client-native/quickstart/XMLs/serverMultiuserSecurity.xml
new file mode 100755
index 0000000..5893b2e
--- /dev/null
+++ b/geode-client-native/quickstart/XMLs/serverMultiuserSecurity.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+
+<!-- serverMultiuserSecurity.xml
+     Configures a server to for clients at port 40404.
+-->
+
+<!DOCTYPE cache PUBLIC
+  "-//GemStone Systems, Inc.//GemFire Declarative Caching 6.5//EN"
+  "http://www.gemstone.com/dtd/cache6_5.dtd">
+<cache>
+  <cache-server port="40404"/>
+  <region name="partition_region">
+    <region-attributes  data-policy="partition"/>
+  </region>
+  <function-service>
+  	<function>
+  		<class-name>javaobject.MultiGetFunctionI</class-name>
+  	</function>  	
+  </function-service>
+</cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/XMLs/serverPdxAutoSerializer.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/XMLs/serverPdxAutoSerializer.xml b/geode-client-native/quickstart/XMLs/serverPdxAutoSerializer.xml
new file mode 100644
index 0000000..0daa404
--- /dev/null
+++ b/geode-client-native/quickstart/XMLs/serverPdxAutoSerializer.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<!DOCTYPE cache PUBLIC
+  "-//GemStone Systems, Inc.//GemFire Declarative Caching 6.5//EN"
+  "http://www.gemstone.com/dtd/cache6_5.dtd">
+<cache>
+
+  <cache-server port="40404">
+	</cache-server>
+  
+    <region name="Portfolios">    
+      <region-attributes scope="distributed-ack" mirror-type="keys-values">
+      </region-attributes>
+    </region>
+  
+</cache> 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/XMLs/serverPdxInstance.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/XMLs/serverPdxInstance.xml b/geode-client-native/quickstart/XMLs/serverPdxInstance.xml
new file mode 100755
index 0000000..69fcf2d
--- /dev/null
+++ b/geode-client-native/quickstart/XMLs/serverPdxInstance.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<!DOCTYPE cache PUBLIC
+  "-//GemStone Systems, Inc.//GemFire Declarative Caching 6.5//EN"
+  "http://www.gemstone.com/dtd/cache6_5.dtd">
+<cache>
+
+  <cache-server port="40404">
+	</cache-server>
+  
+    <region name="Person">    
+      <region-attributes scope="distributed-ack" mirror-type="keys-values">
+      </region-attributes>
+    </region>
+  
+</cache> 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/XMLs/serverPdxRemoteQuery.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/XMLs/serverPdxRemoteQuery.xml b/geode-client-native/quickstart/XMLs/serverPdxRemoteQuery.xml
new file mode 100644
index 0000000..0daa404
--- /dev/null
+++ b/geode-client-native/quickstart/XMLs/serverPdxRemoteQuery.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<!DOCTYPE cache PUBLIC
+  "-//GemStone Systems, Inc.//GemFire Declarative Caching 6.5//EN"
+  "http://www.gemstone.com/dtd/cache6_5.dtd">
+<cache>
+
+  <cache-server port="40404">
+	</cache-server>
+  
+    <region name="Portfolios">    
+      <region-attributes scope="distributed-ack" mirror-type="keys-values">
+      </region-attributes>
+    </region>
+  
+</cache> 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/XMLs/serverPdxSerializer.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/XMLs/serverPdxSerializer.xml b/geode-client-native/quickstart/XMLs/serverPdxSerializer.xml
new file mode 100755
index 0000000..69fcf2d
--- /dev/null
+++ b/geode-client-native/quickstart/XMLs/serverPdxSerializer.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<!DOCTYPE cache PUBLIC
+  "-//GemStone Systems, Inc.//GemFire Declarative Caching 6.5//EN"
+  "http://www.gemstone.com/dtd/cache6_5.dtd">
+<cache>
+
+  <cache-server port="40404">
+	</cache-server>
+  
+    <region name="Person">    
+      <region-attributes scope="distributed-ack" mirror-type="keys-values">
+      </region-attributes>
+    </region>
+  
+</cache> 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/XMLs/serverPoolCqQuery.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/XMLs/serverPoolCqQuery.xml b/geode-client-native/quickstart/XMLs/serverPoolCqQuery.xml
new file mode 100755
index 0000000..7bfce2f
--- /dev/null
+++ b/geode-client-native/quickstart/XMLs/serverPoolCqQuery.xml
@@ -0,0 +1,160 @@
+<?xml version="1.0"?>
+<!DOCTYPE cache PUBLIC
+  "-//GemStone Systems, Inc.//GemFire Declarative Caching 6.5//EN"
+  "http://www.gemstone.com/dtd/cache6_5.dtd">
+<cache>
+
+  <cache-server port="50505" />
+    
+    <region name="exampleRegion">
+      <region-attributes scope="distributed-ack" mirror-type="keys-values"/>
+    </region>
+    
+    <region name="Portfolios">
+    
+      <region-attributes scope="distributed-ack" mirror-type="keys-values">
+      </region-attributes>
+      
+      <entry>
+      <key><string>Key1</string></key>
+      <value>
+        <declarable>
+          <class-name>javaobject.Portfolio</class-name>
+          <parameter name="ID">
+            <string>1</string>
+          </parameter>
+          <parameter name="pkid">
+            <string>1</string>
+          </parameter>
+          <parameter name="type">
+            <string>type1</string>
+          </parameter>
+          <parameter name="status">
+            <string>active</string>
+          </parameter>
+          <parameter name="newVal">
+            <string>CCCCC</string>
+          </parameter>
+          <parameter name="position1">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>SUN</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>3900</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>3400.893475</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>3400</string>
+                </parameter>
+                <parameter name="secType">
+                    <string>r</string>
+                </parameter>
+                <parameter name="pid">
+                    <string>345</string>
+                </parameter>
+            </declarable>
+          </parameter>
+          <parameter name="position2">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>IBM</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>4600</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>9900.884732</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>8765</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>p</string>
+                </parameter>
+                <parameter name="pid">
+                   <string>123</string>
+                </parameter>
+            </declarable>
+          </parameter>
+        </declarable>
+      </value>
+     </entry>
+     
+	 <entry>
+      <key><string>Key1</string></key>
+      <value>
+        <declarable>
+          <class-name>javaobject.newapi.Portfolio</class-name>
+          <parameter name="ID">
+            <string>1</string>
+          </parameter>
+          <parameter name="pkid">
+            <string>1</string>
+          </parameter>
+          <parameter name="type">
+            <string>type1</string>
+          </parameter>
+          <parameter name="status">
+            <string>active</string>
+          </parameter>
+          <parameter name="newVal">
+            <string>CCCCC</string>
+          </parameter>
+          <parameter name="position1">
+            <declarable>
+                <class-name>javaobject.newapi.Position</class-name>
+                <parameter name="secId">
+                    <string>SUN</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>3900</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>3400.893475</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>3400</string>
+                </parameter>
+                <parameter name="secType">
+                    <string>r</string>
+                </parameter>
+                <parameter name="pid">
+                    <string>345</string>
+                </parameter>
+            </declarable>
+          </parameter>
+          <parameter name="position2">
+            <declarable>
+                <class-name>javaobject.newapi.Position</class-name>
+                <parameter name="secId">
+                    <string>IBM</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>4600</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>9900.884732</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>8765</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>p</string>
+                </parameter>
+                <parameter name="pid">
+                   <string>123</string>
+                </parameter>
+            </declarable>
+          </parameter>
+        </declarable>
+      </value>
+     </entry>
+	 
+    </region>
+  
+</cache> 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/XMLs/serverPoolRemoteQuery.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/XMLs/serverPoolRemoteQuery.xml b/geode-client-native/quickstart/XMLs/serverPoolRemoteQuery.xml
new file mode 100755
index 0000000..b3fa9d4
--- /dev/null
+++ b/geode-client-native/quickstart/XMLs/serverPoolRemoteQuery.xml
@@ -0,0 +1,162 @@
+<?xml version="1.0"?>
+<!DOCTYPE cache PUBLIC
+  "-//GemStone Systems, Inc.//GemFire Declarative Caching 6.5//EN"
+  "http://www.gemstone.com/dtd/cache6_5.dtd">
+<cache>
+
+  <cache-server port="40404">
+	<group>ServerGroup1</group>
+	</cache-server>
+  
+    <region name="exampleRegion">
+      <region-attributes scope="distributed-ack" mirror-type="keys-values"/>
+    </region>
+    
+    <region name="Portfolios">
+    
+      <region-attributes scope="distributed-ack" mirror-type="keys-values">
+      </region-attributes>
+      
+      <entry>
+      <key><string>Key1</string></key>
+      <value>
+        <declarable>
+          <class-name>javaobject.Portfolio</class-name>
+          <parameter name="ID">
+            <string>1</string>
+          </parameter>
+          <parameter name="pkid">
+            <string>1</string>
+          </parameter>
+          <parameter name="type">
+            <string>type1</string>
+          </parameter>
+          <parameter name="status">
+            <string>active</string>
+          </parameter>
+          <parameter name="newVal">
+            <string>CCCCC</string>
+          </parameter>
+          <parameter name="position1">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>SUN</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>3900</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>3400.893475</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>3400</string>
+                </parameter>
+                <parameter name="secType">
+                    <string>r</string>
+                </parameter>
+                <parameter name="pid">
+                    <string>345</string>
+                </parameter>
+            </declarable>
+          </parameter>
+          <parameter name="position2">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>IBM</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>4600</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>9900.884732</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>8765</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>p</string>
+                </parameter>
+                <parameter name="pid">
+                   <string>123</string>
+                </parameter>
+            </declarable>
+          </parameter>
+        </declarable>
+      </value>
+     </entry>
+     
+	 <entry>
+      <key><string>Key1</string></key>
+      <value>
+        <declarable>
+          <class-name>javaobject.newapi.Portfolio</class-name>
+          <parameter name="ID">
+            <string>1</string>
+          </parameter>
+          <parameter name="pkid">
+            <string>1</string>
+          </parameter>
+          <parameter name="type">
+            <string>type1</string>
+          </parameter>
+          <parameter name="status">
+            <string>active</string>
+          </parameter>
+          <parameter name="newVal">
+            <string>CCCCC</string>
+          </parameter>
+          <parameter name="position1">
+            <declarable>
+                <class-name>javaobject.newapi.Position</class-name>
+                <parameter name="secId">
+                    <string>SUN</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>3900</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>3400.893475</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>3400</string>
+                </parameter>
+                <parameter name="secType">
+                    <string>r</string>
+                </parameter>
+                <parameter name="pid">
+                    <string>345</string>
+                </parameter>
+            </declarable>
+          </parameter>
+          <parameter name="position2">
+            <declarable>
+                <class-name>javaobject.newapi.Position</class-name>
+                <parameter name="secId">
+                    <string>IBM</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>4600</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>9900.884732</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>8765</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>p</string>
+                </parameter>
+                <parameter name="pid">
+                   <string>123</string>
+                </parameter>
+            </declarable>
+          </parameter>
+        </declarable>
+      </value>
+     </entry>
+	 
+    </region>
+  
+</cache> 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/XMLs/serverPoolWithEndpoints.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/XMLs/serverPoolWithEndpoints.xml b/geode-client-native/quickstart/XMLs/serverPoolWithEndpoints.xml
new file mode 100755
index 0000000..a5cf8fb
--- /dev/null
+++ b/geode-client-native/quickstart/XMLs/serverPoolWithEndpoints.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+
+<!-- serverPoolWithEndpoints.xml
+     Configures a server to for clients at port 40404.
+-->
+
+<!DOCTYPE cache PUBLIC
+  "-//GemStone Systems, Inc.//GemFire Declarative Caching 6.5//EN"
+  "http://www.gemstone.com/dtd/cache6_5.dtd">
+<cache>
+  <cache-server port="40404"/>
+    <region name="exampleRegion">
+      <region-attributes scope="distributed-no-ack" data-policy="replicate"/>
+    </region>
+</cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/XMLs/serverPutAllGetAllOperations.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/XMLs/serverPutAllGetAllOperations.xml b/geode-client-native/quickstart/XMLs/serverPutAllGetAllOperations.xml
new file mode 100644
index 0000000..389b59d
--- /dev/null
+++ b/geode-client-native/quickstart/XMLs/serverPutAllGetAllOperations.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+
+<!-- serverPutAllGetAllOperations.xml
+     Configures a server to for clients at port 40404.
+-->
+
+<!DOCTYPE cache PUBLIC
+  "-//GemStone Systems, Inc.//GemFire Declarative Caching 6.5//EN"
+  "http://www.gemstone.com/dtd/cache6_5.dtd">
+<cache>
+  <cache-server port="40404"/>
+    <region name="exampleRegion">
+      <region-attributes scope="distributed-no-ack" data-policy="replicate"/>
+    </region>
+</cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/XMLs/serverRefIDExample.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/XMLs/serverRefIDExample.xml b/geode-client-native/quickstart/XMLs/serverRefIDExample.xml
new file mode 100644
index 0000000..0b7bda5
--- /dev/null
+++ b/geode-client-native/quickstart/XMLs/serverRefIDExample.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+
+<!-- serverRefIDExample.xml
+     Configures a server to for clients at port 40404.
+-->
+
+<!DOCTYPE cache PUBLIC
+  "-//GemStone Systems, Inc.//GemFire Declarative Caching 6.5//EN"
+  "http://www.gemstone.com/dtd/cache6_5.dtd">
+<cache>
+  <cache-server port="40404"/>
+  <region name="root1">
+    <region-attributes scope="distributed-no-ack" data-policy="replicate"/>    
+  </region>
+  <region name="root2">
+    <region-attributes scope="distributed-no-ack" data-policy="replicate"/>    
+  </region>
+</cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/XMLs/serverRegisterInterest.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/XMLs/serverRegisterInterest.xml b/geode-client-native/quickstart/XMLs/serverRegisterInterest.xml
new file mode 100644
index 0000000..198389d
--- /dev/null
+++ b/geode-client-native/quickstart/XMLs/serverRegisterInterest.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+
+<!-- serverRegisterInterest.xml
+     Configures a server to for clients at port 40404.
+-->
+
+<!DOCTYPE cache PUBLIC
+  "-//GemStone Systems, Inc.//GemFire Declarative Caching 6.5//EN"
+  "http://www.gemstone.com/dtd/cache6_5.dtd">
+<cache>
+  <cache-server port="40404"/>
+	<region name="exampleRegion">
+		<region-attributes scope="distributed-no-ack" data-policy="replicate"/>
+	</region>
+</cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/XMLs/serverRemoteQuery.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/XMLs/serverRemoteQuery.xml b/geode-client-native/quickstart/XMLs/serverRemoteQuery.xml
new file mode 100644
index 0000000..ad7da49
--- /dev/null
+++ b/geode-client-native/quickstart/XMLs/serverRemoteQuery.xml
@@ -0,0 +1,160 @@
+<?xml version="1.0"?>
+<!DOCTYPE cache PUBLIC
+  "-//GemStone Systems, Inc.//GemFire Declarative Caching 6.5//EN"
+  "http://www.gemstone.com/dtd/cache6_5.dtd">
+<cache>
+
+  <cache-server port="40404" />
+    
+    <region name="exampleRegion">
+      <region-attributes scope="distributed-ack" mirror-type="keys-values"/>
+    </region>
+    
+    <region name="Portfolios">
+    
+      <region-attributes scope="distributed-ack" mirror-type="keys-values">
+      </region-attributes>
+      
+      <entry>
+      <key><string>Key1</string></key>
+      <value>
+        <declarable>
+          <class-name>javaobject.Portfolio</class-name>
+          <parameter name="ID">
+            <string>1</string>
+          </parameter>
+          <parameter name="pkid">
+            <string>1</string>
+          </parameter>
+          <parameter name="type">
+            <string>type1</string>
+          </parameter>
+          <parameter name="status">
+            <string>active</string>
+          </parameter>
+          <parameter name="newVal">
+            <string>CCCCC</string>
+          </parameter>
+          <parameter name="position1">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>SUN</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>3900</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>3400.893475</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>3400</string>
+                </parameter>
+                <parameter name="secType">
+                    <string>r</string>
+                </parameter>
+                <parameter name="pid">
+                    <string>345</string>
+                </parameter>
+            </declarable>
+          </parameter>
+          <parameter name="position2">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>IBM</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>4600</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>9900.884732</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>8765</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>p</string>
+                </parameter>
+                <parameter name="pid">
+                   <string>123</string>
+                </parameter>
+            </declarable>
+          </parameter>
+        </declarable>
+      </value>
+     </entry>
+     
+	 <entry>
+      <key><string>Key1</string></key>
+      <value>
+        <declarable>
+          <class-name>javaobject.newapi.Portfolio</class-name>
+          <parameter name="ID">
+            <string>1</string>
+          </parameter>
+          <parameter name="pkid">
+            <string>1</string>
+          </parameter>
+          <parameter name="type">
+            <string>type1</string>
+          </parameter>
+          <parameter name="status">
+            <string>active</string>
+          </parameter>
+          <parameter name="newVal">
+            <string>CCCCC</string>
+          </parameter>
+          <parameter name="position1">
+            <declarable>
+                <class-name>javaobject.newapi.Position</class-name>
+                <parameter name="secId">
+                    <string>SUN</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>3900</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>3400.893475</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>3400</string>
+                </parameter>
+                <parameter name="secType">
+                    <string>r</string>
+                </parameter>
+                <parameter name="pid">
+                    <string>345</string>
+                </parameter>
+            </declarable>
+          </parameter>
+          <parameter name="position2">
+            <declarable>
+                <class-name>javaobject.newapi.Position</class-name>
+                <parameter name="secId">
+                    <string>IBM</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>4600</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>9900.884732</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>8765</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>p</string>
+                </parameter>
+                <parameter name="pid">
+                   <string>123</string>
+                </parameter>
+            </declarable>
+          </parameter>
+        </declarable>
+      </value>
+     </entry>
+	 
+    </region>
+  
+</cache> 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/XMLs/serverSecurity.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/XMLs/serverSecurity.xml b/geode-client-native/quickstart/XMLs/serverSecurity.xml
new file mode 100644
index 0000000..77f863e
--- /dev/null
+++ b/geode-client-native/quickstart/XMLs/serverSecurity.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+
+<!-- serverSecurity.xml
+     Configures a server to for clients at port 40404.
+-->
+
+<!DOCTYPE cache PUBLIC
+  "-//GemStone Systems, Inc.//GemFire Declarative Caching 6.5//EN"
+  "http://www.gemstone.com/dtd/cache6_5.dtd">
+<cache>
+  <cache-server port="40404"/>
+    <region name="exampleRegion">
+      <region-attributes scope="distributed-no-ack" data-policy="replicate"/>
+    </region>
+</cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/XMLs/serverTransactions.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/XMLs/serverTransactions.xml b/geode-client-native/quickstart/XMLs/serverTransactions.xml
new file mode 100644
index 0000000..edd48f0
--- /dev/null
+++ b/geode-client-native/quickstart/XMLs/serverTransactions.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+
+<!-- serverTransaction.xml
+     Configures a server to for clients at port 40404.
+-->
+
+<!DOCTYPE cache PUBLIC
+  "-//GemStone Systems, Inc.//GemFire Declarative Caching 6.5//EN"
+  "http://www.gemstone.com/dtd/cache6_5.dtd">
+<cache>
+  <cache-server port="40404"/>
+  <region name="exampleRegion">
+    <region-attributes scope="distributed-no-ack" data-policy="replicate"/>
+  </region>
+</cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/XMLs/serverTransactionsXA.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/XMLs/serverTransactionsXA.xml b/geode-client-native/quickstart/XMLs/serverTransactionsXA.xml
new file mode 100644
index 0000000..edd48f0
--- /dev/null
+++ b/geode-client-native/quickstart/XMLs/serverTransactionsXA.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+
+<!-- serverTransaction.xml
+     Configures a server to for clients at port 40404.
+-->
+
+<!DOCTYPE cache PUBLIC
+  "-//GemStone Systems, Inc.//GemFire Declarative Caching 6.5//EN"
+  "http://www.gemstone.com/dtd/cache6_5.dtd">
+<cache>
+  <cache-server port="40404"/>
+  <region name="exampleRegion">
+    <region-attributes scope="distributed-no-ack" data-policy="replicate"/>
+  </region>
+</cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/buildit.sh
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/buildit.sh b/geode-client-native/quickstart/buildit.sh
new file mode 100755
index 0000000..73bd0d3
--- /dev/null
+++ b/geode-client-native/quickstart/buildit.sh
@@ -0,0 +1,126 @@
+#!/bin/bash
+set -e
+
+if [ -z ${GFCPP:-} ]; then
+  echo GFCPP is not set.
+  exit 1
+fi
+if [ -z ${GEMFIRE:-} ]; then
+  echo GEMFIRE is not set.
+  exit 1
+fi
+
+echo Building GemFire QuickStart examples...
+
+OPT=-O3
+LIBDIR=lib
+platform=`uname`
+platformArch=`uname -p`
+if [ "$platform" = "SunOS" ]; then
+    ARCH="-m64"
+  CC=CC
+  CXX_FLAGS="-mt -D_RWSTD_MULTI_THREAD -DTHREAD=MULTI \
+    -D_REENTRANT $OPT $ARCH \
+    -I$GFCPP/include"
+    CXX_FLAGS="${CXX_FLAGS} -std=c++11"
+  LD_FLAGS="-L$GFCPP/$LIBDIR \
+    -R$GFCPP/$LIBDIR \
+    -lgfcppcache -lrt -lpthread -lkstat"
+elif [ "$platform" = "Linux" ]; then
+    ARCH="-m64"
+  CC=g++
+  CXX_FLAGS="-D_REENTRANT $OPT -Wall $ARCH \
+      -I$GFCPP/include"
+  LD_FLAGS="-L$GFCPP/$LIBDIR \
+      -Wl,-rpath,$GFCPP/$LIBDIR \
+      -lgfcppcache"
+else
+  echo "This script is not supported on this platform."
+  exit 1
+fi
+
+$GFCPP/bin/pdxautoserializer  --outDir=cpp/queryobjects  cpp/queryobjects/PortfolioPdxAuto.hpp 
+$GFCPP/bin/pdxautoserializer  --outDir=cpp/queryobjects  cpp/queryobjects/PositionPdxAuto.hpp
+
+$CC  $CXX_FLAGS \
+    cpp/HACache.cpp -o cpp/HACache $LD_FLAGS
+$CC  $CXX_FLAGS \
+    cpp/Exceptions.cpp -o cpp/Exceptions $LD_FLAGS
+$CC  $CXX_FLAGS \
+    cpp/BasicOperations.cpp -o cpp/BasicOperations $LD_FLAGS 
+$CC  $CXX_FLAGS \
+    cpp/DistributedSystem.cpp -o cpp/DistributedSystem $LD_FLAGS
+$CC  $CXX_FLAGS \
+    cpp/RefIDExample.cpp -o cpp/RefIDExample $LD_FLAGS
+$CC  $CXX_FLAGS \
+    cpp/PoolWithEndpoints.cpp -o cpp/PoolWithEndpoints $LD_FLAGS 
+$CC  $CXX_FLAGS \
+    cpp/DataExpiration.cpp \
+    cpp/plugins/SimpleCacheListener.cpp -o cpp/DataExpiration $LD_FLAGS
+$CC  $CXX_FLAGS \
+    cpp/LoaderListenerWriter.cpp \
+    cpp/plugins/SimpleCacheLoader.cpp \
+    cpp/plugins/SimpleCacheListener.cpp \
+    cpp/plugins/SimpleCacheWriter.cpp -o cpp/LoaderListenerWriter $LD_FLAGS
+$CC  $CXX_FLAGS \
+    cpp/DurableClient.cpp \
+    cpp/plugins/DurableCacheListener.cpp -o cpp/DurableClient $LD_FLAGS
+$CC  $CXX_FLAGS \
+    cpp/RegisterInterest.cpp -o cpp/RegisterInterest $LD_FLAGS
+$CC  $CXX_FLAGS \
+    cpp/Security.cpp -o cpp/Security $LD_FLAGS
+$CC  $CXX_FLAGS \
+    cpp/MultiuserSecurity.cpp -o cpp/MultiuserSecurity $LD_FLAGS
+$CC  $CXX_FLAGS \
+    cpp/RemoteQuery.cpp \
+    cpp/queryobjects/Portfolio.cpp \
+    cpp/queryobjects/Position.cpp -o cpp/RemoteQuery $LD_FLAGS
+$CC  $CXX_FLAGS \
+    cpp/PoolRemoteQuery.cpp \
+    cpp/queryobjects/Portfolio.cpp \
+    cpp/queryobjects/Position.cpp -o cpp/PoolRemoteQuery $LD_FLAGS
+$CC  $CXX_FLAGS \
+    cpp/CqQuery.cpp \
+    cpp/queryobjects/Portfolio.cpp \
+    cpp/queryobjects/Position.cpp -o cpp/CqQuery $LD_FLAGS
+
+$CC  $CXX_FLAGS \
+     cpp/PoolCqQuery.cpp \
+     cpp/queryobjects/Portfolio.cpp \
+     cpp/queryobjects/Position.cpp -o cpp/PoolCqQuery $LD_FLAGS
+
+$CC  $CXX_FLAGS \
+     cpp/Delta.cpp -o cpp/Delta $LD_FLAGS
+
+$CC  $CXX_FLAGS \
+    cpp/ExecuteFunctions.cpp  -o cpp/ExecuteFunctions $LD_FLAGS
+
+$CC  $CXX_FLAGS \
+    cpp/PoolCqQuery.cpp \
+    cpp/queryobjects/Portfolio.cpp \
+    cpp/queryobjects/Position.cpp -o  cpp/PoolCqQuery $LD_FLAGS
+$CC  $CXX_FLAGS \
+    interop/InteropCPP.cpp -o interop/InteropCPP $LD_FLAGS
+$CC  $CXX_FLAGS \
+    cpp/PutAllGetAllOperations.cpp -o cpp/PutAllGetAllOperations $LD_FLAGS
+$CC  $CXX_FLAGS \
+    cpp/Transactions.cpp -o cpp/Transactions $LD_FLAGS
+$CC  $CXX_FLAGS \
+    cpp/TransactionsXA.cpp -o cpp/TransactionsXA $LD_FLAGS
+$CC  $CXX_FLAGS \
+    cpp/PdxInstance.cpp -o cpp/PdxInstance $LD_FLAGS
+$CC  $CXX_FLAGS \
+    cpp/PdxSerializer.cpp -o cpp/PdxSerializer $LD_FLAGS
+$CC  $CXX_FLAGS \
+    cpp/PdxRemoteQuery.cpp \
+    cpp/queryobjects/PortfolioPdx.cpp \
+    cpp/queryobjects/PositionPdx.cpp -o cpp/PdxRemoteQuery $LD_FLAGS
+
+$CC  $CXX_FLAGS \
+    cpp/PdxAutoSerializer.cpp \
+    cpp/queryobjects/PortfolioPdxAuto.cpp \
+    cpp/queryobjects/PositionPdxAuto.cpp  \
+    cpp/queryobjects/testobject_PortfolioPdxAutoSerializable.cpp \
+    cpp/queryobjects/testobject_PositionPdxAutoSerializable.cpp -o cpp/PdxAutoSerializer $LD_FLAGS
+
+javac -classpath $GEMFIRE/lib/gemfire.jar interop/InteropJAVA.java

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/buildit_10.bat
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/buildit_10.bat b/geode-client-native/quickstart/buildit_10.bat
new file mode 100755
index 0000000..539ed5b
--- /dev/null
+++ b/geode-client-native/quickstart/buildit_10.bat
@@ -0,0 +1,47 @@
+@echo off
+
+rem Builds both C++ and C# quickstart examples
+rem Run from Visual Studio 200X Command Prompt to find MSBuild and VCBuild
+rem GFCPP must be set
+rem GEMFIRE must be set
+
+if not "%GFCPP%"=="" goto checkGEMFIRE
+
+echo GFCPP is not set.
+goto finished
+
+:checkGEMFIRE
+
+if not "%GEMFIRE%"=="" goto startbuild
+
+echo GEMFIRE is not set.
+goto finished
+
+:startbuild
+
+echo Generating Pdx Auto files ...
+
+
+%GFCPP%\bin\pdxautoserializer.exe  --outDir=cpp\queryobjects  cpp\queryobjects\PortfolioPdxAuto.hpp 
+%GFCPP%\bin\pdxautoserializer.exe  --outDir=cpp\queryobjects  cpp\queryobjects\PositionPdxAuto.hpp
+
+
+echo Building GemFire C++ and C# QuickStart examples...
+set is64bit=__IS_64_BIT__
+echo 64 bit set %is64bit%
+if not %is64bit%==1 goto else
+msbuild.exe quickstart_csharp.sln /p:Platform="x64" /p:Configuration=Release
+if not "%ERRORLEVEL%" == "0" exit /B 1
+msbuild.exe quickstart_cpp.sln /p:Platform="x64" /p:Configuration=Release  /nologo
+if not "%ERRORLEVEL%" == "0" exit /B 1
+javac.exe -classpath "%GEMFIRE%\lib\gemfire.jar" interop/InteropJAVA.java
+if not "%ERRORLEVEL%" == "0" exit /B 1
+goto finished 
+:else
+msbuild.exe quickstart_csharp_10.sln /p:Platform="Mixed Platforms" /p:Configuration=Release
+if not "%ERRORLEVEL%" == "0" exit /B 1
+msbuild.exe quickstart_cpp_10.sln /p:Platform="Win32" /p:Configuration=Release /nologo
+if not "%ERRORLEVEL%" == "0" exit /B 1
+javac.exe -classpath "%GEMFIRE%\lib\gemfire.jar" interop/InteropJAVA.java
+
+:finished

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cleanup.bat
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cleanup.bat b/geode-client-native/quickstart/cleanup.bat
new file mode 100644
index 0000000..08d43ef
--- /dev/null
+++ b/geode-client-native/quickstart/cleanup.bat
@@ -0,0 +1,9 @@
+@echo off
+
+echo Deleting GemFire Statistics and Log files...
+
+del /q *.gfs
+del /q gfecs\*.*
+rmdir gfecs
+del /q gfecs2\*.*
+rmdir gfecs2
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cleanup.sh
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cleanup.sh b/geode-client-native/quickstart/cleanup.sh
new file mode 100755
index 0000000..ac5f665
--- /dev/null
+++ b/geode-client-native/quickstart/cleanup.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+
+echo Deleting GemFire Statistics and Log files...
+
+rm -f *.gfs
+rm -f gfecs/*
+rmdir gfecs
+if [ -d gfecs2 ]
+then
+  rm -f gfecs2/*
+  rmdir gfecs2
+fi
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/BasicOperations.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/BasicOperations.cpp b/geode-client-native/quickstart/cpp/BasicOperations.cpp
new file mode 100644
index 0000000..5d7ee38
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/BasicOperations.cpp
@@ -0,0 +1,101 @@
+/*
+ * The BasicOperations QuickStart Example.
+ *
+ * This example takes the following steps:
+ *
+ * 1. Create a GemFire Cache.
+ * 2. Create the example Region Programmatically.
+ * 3.a. Put Entries (Key and Value pairs) into the Region.
+ * 3.b. If in 64 bit mode put over 4 GB data to demonstrate capacity.
+ * 4. Get Entries from the Region.
+ * 5. Invalidate an Entry in the Region.
+ * 6. Destroy an Entry in the Region.
+ * 7. Close the Cache.
+ *
+ */
+
+
+// Include the GemFire library.
+#include <gfcpp/GemfireCppCache.hpp>
+
+// Use the "gemfire" namespace.
+using namespace gemfire;
+
+// The BasicOperations QuickStart example.
+int main(int argc, char ** argv)
+{
+  try
+  {
+    // Create a GemFire Cache.
+    CacheFactoryPtr cacheFactory = CacheFactory::createCacheFactory();
+    
+    CachePtr cachePtr = cacheFactory->create();       
+    
+    LOGINFO("Created the GemFire Cache");
+    
+    RegionFactoryPtr regionFactory = cachePtr->createRegionFactory(CACHING_PROXY);
+    
+    LOGINFO("Created the RegionFactory");
+    
+    // Create the example Region Programmatically.
+    RegionPtr regionPtr = regionFactory->create("exampleRegion");
+    
+    LOGINFO("Created the Region Programmatically.");
+    
+    // Put an Entry (Key and Value pair) into the Region using the direct/shortcut method.
+    regionPtr->put("Key1", "Value1");
+    LOGINFO("Put the first Entry into the Region");     
+    
+    // Put an Entry into the Region by manually creating a Key and a Value pair.
+    CacheableKeyPtr keyPtr = CacheableInt32::create(123);
+    CacheablePtr valuePtr = CacheableString::create("123");
+    regionPtr->put(keyPtr, valuePtr);
+    
+    LOGINFO("Put the second Entry into the Region");
+    
+#if ( defined(_WIN64) || defined(__sparcv9) || defined(__x86_64__) )
+    // Put just over 4 GB of data locally
+    char * text = new char[1024 * 1024 /* 1 MB */];
+    memset(text, 'A', 1024 * 1024 - 1);
+    text[1024 * 1024 - 1] = '\0';
+    
+    for (int item = 0; item < ( 5 * 1024 /* 5 GB */ ); item++)
+    {
+      regionPtr->localPut(item, text);
+    }
+    
+    LOGINFO("Put over 4 GB data locally");
+#endif // 64-bit
+    
+    // Get Entries back out of the Region.
+    CacheablePtr result1Ptr = regionPtr->get("Key1");
+    
+    LOGINFO("Obtained the first Entry from the Region");
+    
+    CacheablePtr result2Ptr = regionPtr->get(keyPtr);
+    
+    LOGINFO("Obtained the second Entry from the Region");
+    
+    // Invalidate an Entry in the Region.
+    regionPtr->invalidate("Key1");
+    
+    LOGINFO("Invalidated the first Entry in the Region");
+    
+    // Destroy an Entry in the Region.
+    regionPtr->destroy(keyPtr);
+    
+    LOGINFO("Destroyed the second Entry in the Region");
+    
+    // Close the GemFire Cache.
+    cachePtr->close();
+    
+    LOGINFO("Closed the GemFire Cache");
+    
+  }
+  // An exception should not occur
+  catch(const Exception & gemfireExcp)
+  {    
+    LOGERROR("BasicOperations GemFire Exception: %s", gemfireExcp.getMessage());
+  }
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/CMakeLists.txt b/geode-client-native/quickstart/cpp/CMakeLists.txt
new file mode 100755
index 0000000..6e2dd94
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/CMakeLists.txt
@@ -0,0 +1,117 @@
+cmake_minimum_required(VERSION 3.4)
+project(nativeclient.quickstart.cpp)
+
+file(GLOB SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.cpp")
+
+#target_link_libraries(${QUICKSTART_UTILS_LIB}
+#  PRIVATE
+#    ${ACE_STATIC_LIB}
+#  PUBLIC
+#    gfcppcache
+#)
+#add_dependencies(${QUICKSTART_UTILS_LIB} ACE)
+
+# Function to resolve both config and generate stage variables.
+macro(generate_config INPUT TEMP OUTPUT)
+    configure_file(${INPUT} ${TEMP})
+    file(GENERATE OUTPUT ${OUTPUT}
+      INPUT ${TEMP}
+      CONDITION 1
+    )
+endmacro()
+
+# TODO: Switch to the following when we support cmake install of nativeclient
+#find_package(CPPCache REQUIRED)
+
+set(SAV_CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
+
+foreach(FILE ${SOURCES})
+  string(REGEX REPLACE "\\.cpp" "" QUICKSTART ${FILE})
+  set(QUICKSTARTS ${QUICKSTARTS} ${QUICKSTART})
+  
+  set(EXTRA_SOURCES "")
+  
+  if (${QUICKSTART} STREQUAL "CqQuery") 
+    add_definitions(-DBUILD_TESTOBJECT)
+    set(EXTRA_SOURCES
+      ${CMAKE_CURRENT_SOURCE_DIR}/queryobjects/Portfolio.cpp
+      ${CMAKE_CURRENT_SOURCE_DIR}/queryobjects/Position.cpp)
+    
+  elseif (${QUICKSTART} STREQUAL "DataExpiration")
+    add_definitions(-DBUILD_TESTOBJECT)
+    set(EXTRA_SOURCES
+      ${CMAKE_CURRENT_SOURCE_DIR}/plugins/SimpleCacheListener.cpp)   
+      
+  elseif (${QUICKSTART} STREQUAL "DurableClient")
+    add_definitions(-DBUILD_TESTOBJECT)
+    set(EXTRA_SOURCES
+      ${CMAKE_CURRENT_SOURCE_DIR}/plugins/DurableCacheListener.cpp)  
+      
+  elseif (${QUICKSTART} STREQUAL "LoaderListenerWriter")
+    add_definitions(-DBUILD_TESTOBJECT)
+    set(EXTRA_SOURCES
+      ${CMAKE_CURRENT_SOURCE_DIR}/plugins/SimpleCacheListener.cpp    
+      ${CMAKE_CURRENT_SOURCE_DIR}/plugins/SimpleCacheLoader.cpp   
+      ${CMAKE_CURRENT_SOURCE_DIR}/plugins/SimpleCacheWriter.cpp)   
+     
+  elseif (${QUICKSTART} STREQUAL "PdxAutoSerializer")
+    add_definitions(-DBUILD_TESTOBJECT)
+    set(EXTRA_SOURCES
+      ${CMAKE_CURRENT_SOURCE_DIR}/queryobjects/testobject_PortfolioPdxAutoSerializable.cpp 
+      ${CMAKE_CURRENT_SOURCE_DIR}/queryobjects/testobject_PositionPdxAutoSerializable.cpp       
+      ${CMAKE_CURRENT_SOURCE_DIR}/queryobjects/PortfolioPdxAuto.cpp    
+      ${CMAKE_CURRENT_SOURCE_DIR}/queryobjects/PositionPdxAuto.cpp)
+    
+  elseif (${QUICKSTART} STREQUAL "PdxRemoteQuery")
+    add_definitions(-DBUILD_TESTOBJECT)
+    set(EXTRA_SOURCES
+      ${CMAKE_CURRENT_SOURCE_DIR}/queryobjects/PortfolioPdx.cpp    
+      ${CMAKE_CURRENT_SOURCE_DIR}/queryobjects/PositionPdx.cpp)  
+    
+  elseif (${QUICKSTART} STREQUAL "PoolCqQuery")
+    add_definitions(-DBUILD_TESTOBJECT)
+    set(EXTRA_SOURCES
+      ${CMAKE_CURRENT_SOURCE_DIR}/queryobjects/Portfolio.cpp    
+      ${CMAKE_CURRENT_SOURCE_DIR}/queryobjects/Position.cpp)  
+    
+  elseif (${QUICKSTART} STREQUAL "PoolRemoteQuery")
+    add_definitions(-DBUILD_TESTOBJECT)
+    set(EXTRA_SOURCES
+      ${CMAKE_CURRENT_SOURCE_DIR}/queryobjects/Portfolio.cpp    
+      ${CMAKE_CURRENT_SOURCE_DIR}/queryobjects/Position.cpp) 
+    
+  elseif (${QUICKSTART} STREQUAL "RemoteQuery")
+    add_definitions(-DBUILD_TESTOBJECT)
+    set(EXTRA_SOURCES
+      ${CMAKE_CURRENT_SOURCE_DIR}/queryobjects/Portfolio.cpp    
+      ${CMAKE_CURRENT_SOURCE_DIR}/queryobjects/Position.cpp)       
+    
+  endif()
+  
+  add_executable(${QUICKSTART} ${FILE} ${EXTRA_SOURCES})
+  
+  set(CMAKE_CXX_FLAGS "${SAV_CMAKE_CXX_FLAGS} /I$(GFCPP)\\include")
+  #include_directories("${GFCPP_INCLUDE}")
+  
+
+
+  target_link_libraries(${QUICKSTART}
+    PRIVATE
+    PUBLIC "$(GFCPP)\\lib\\gfcppcache.lib")  
+
+  #set(TEST_DIR ${CMAKE_CURRENT_BINARY_DIR}/.tests/${TEST})
+    
+endforeach()
+
+##TODO is this correct for config.h
+#include_directories(${CMAKE_BINARY_DIR}/cppcache)
+#include_directories(${CMAKE_BINARY_DIR}/cppcache/include)
+##TODO this is really odd
+#include_directories(${CMAKE_SOURCE_DIR}/cppcache)
+#include_directories(${CMAKE_SOURCE_DIR}/cppcache/impl)
+##TODO this is really bad that we include the root of tests
+#include_directories(${CMAKE_SOURCE_DIR}/tests)
+##TODO fix dependencies include paths
+#include_directories(${DEPENDENCIES_ACE_DIR}/include)
+
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/CqQuery.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/CqQuery.cpp b/geode-client-native/quickstart/cpp/CqQuery.cpp
new file mode 100644
index 0000000..e51ae36
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/CqQuery.cpp
@@ -0,0 +1,175 @@
+/*
+ * The Continuous Query QuickStart Example.
+ *
+ * This example takes the following steps:
+ *
+ * 1. Create a GemFire Cache Programmatically.
+ * 2. Create the example Region Programmatically.
+ * 3. Populate some query objects on the Region.
+ * 4. Register a cqQuery listener
+ * 5. Execute a cqQuery with initial Results 
+ * 6. Close the Cache.
+ *
+ */
+
+// Include the GemFire library.
+#include <gfcpp/GemfireCppCache.hpp>
+
+// Include our Query objects, viz. Portfolio and Position.
+#include "queryobjects/Portfolio.hpp"
+#include "queryobjects/Position.hpp"
+
+// Use the "gemfire" namespace.
+using namespace gemfire;
+
+// Use the "testobject" namespace for the query objects.
+using namespace testobject;
+
+class MyCqListener : public CqListener {
+  public:
+  void onEvent(const CqEvent& cqe)
+  {
+    char* opStr = (char*)"Default";
+    PortfolioPtr portfolio( dynamic_cast<Portfolio*> (cqe.getNewValue().ptr() ));
+    CacheableStringPtr key( dynamic_cast<CacheableString*> (cqe.getKey().ptr() ));
+    switch (cqe.getQueryOperation())
+    {
+      case CqOperation::OP_TYPE_CREATE:
+      {
+        opStr = (char*)"CREATE";
+        break;
+      }
+      case CqOperation::OP_TYPE_UPDATE:
+      {
+        opStr = (char*)"UPDATE";
+        break;
+      }
+      case CqOperation::OP_TYPE_DESTROY:
+      {
+        opStr = (char*)"UPDATE";
+        break;
+      }
+        default:
+        break;
+     } 
+     LOGINFO("MyCqListener::OnEvent called with %s, key[%s], value=(%ld,%s)",
+	 opStr, key->asChar(), portfolio->getID(), portfolio->getPkid()->asChar()); 
+  }
+
+  void onError(const CqEvent& cqe){
+    LOGINFO("MyCqListener::OnError called");
+  }
+
+  void close(){
+    LOGINFO("MyCqListener::close called");
+  }
+};
+
+// The CqQuery QuickStart example.
+int main(int argc, char ** argv)
+{
+  try
+  {
+    // Create a GemFire Cache Programmatically.
+    CacheFactoryPtr cacheFactory = CacheFactory::createCacheFactory();
+
+    CachePtr cachePtr = cacheFactory->addServer("localhost", 50505)
+                                    ->setSubscriptionEnabled(true)
+                                    ->create();   
+    
+    LOGINFO("Created the GemFire Cache");
+    
+    RegionFactoryPtr regionFactory = cachePtr->createRegionFactory(PROXY);
+    
+    LOGINFO("Created the RegionFactory");
+    
+    // Create the example Region programmatically.
+    RegionPtr regionPtr = regionFactory->create("Portfolios");
+
+    // Register our Serializable/Cacheable Query objects, viz. Portfolio and Position.
+    Serializable::registerType( Portfolio::createDeserializable);
+    Serializable::registerType( Position::createDeserializable);
+
+    LOGINFO("Registered Serializable Query Objects");
+
+    // Populate the Region with some Portfolio objects.
+    PortfolioPtr port1Ptr(new Portfolio(1 /*ID*/, 10 /*size*/));
+    PortfolioPtr port2Ptr(new Portfolio(2 /*ID*/, 20 /*size*/));
+    PortfolioPtr port3Ptr(new Portfolio(3 /*ID*/, 30 /*size*/));
+    regionPtr->put("Key1", port1Ptr);
+    regionPtr->put("Key2", port2Ptr);
+    regionPtr->put("Key3", port3Ptr);
+
+    LOGINFO("Populated some Portfolio Objects");
+
+    // Get the QueryService from the Cache.
+    QueryServicePtr qrySvcPtr = cachePtr->getQueryService();
+
+    //Create CqAttributes and Install Listener
+    CqAttributesFactory cqFac;
+    CqListenerPtr cqLstner (new MyCqListener());
+    cqFac.addCqListener(cqLstner);
+    CqAttributesPtr cqAttr = cqFac.create();
+
+    //create a new Cq Query
+    const char* qryStr = "select * from /Portfolios p where p.ID < 5";
+    CqQueryPtr qry = qrySvcPtr->newCq((char*)"MyCq", qryStr, cqAttr);
+  
+    //execute Cq Query with initial Results
+    CqResultsPtr resultsPtr  = qry->executeWithInitialResults();
+    
+    //make change to generate cq events
+    regionPtr->put("Key3", port1Ptr);
+    regionPtr->put("Key2", port2Ptr);
+    regionPtr->put("Key1", port3Ptr);
+
+    LOGINFO("ResultSet Query returned %d rows", resultsPtr->size());
+
+    // Iterate through the rows of the query result.
+    SelectResultsIterator iter = resultsPtr->getIterator();
+    while (iter.hasNext())
+    {
+        SerializablePtr ser = iter.next();
+        if (ser != NULLPTR) {
+          LOGINFO (" query pulled object %s\n", ser->toString()->asChar());
+          
+          StructPtr stPtr(dynamic_cast<Struct*>  (ser.ptr() ));                    
+          if (stPtr != NULLPTR)
+          {
+            LOGINFO(" got struct ptr ");
+            SerializablePtr serKey = (*(stPtr.ptr()))["key"];           
+            if (serKey != NULLPTR)
+            {
+              LOGINFO("got struct key %s\n", serKey->toString()->asChar());
+            }
+              
+            SerializablePtr serVal = (*(stPtr.ptr()))["value"];
+            
+            if (serVal != NULLPTR)
+            {
+              LOGINFO("  got struct value %s\n", serVal->toString()->asChar());
+            }
+          }
+        }
+        else {
+          printf("query pulled bad object\n");
+        }       
+    }
+    // Stop the GemFire Continuous query.
+    qry->stop();
+    // Close the GemFire Continuous query.
+    qry->close();
+
+    // Close the GemFire Cache.
+    cachePtr->close();
+
+    LOGINFO("Closed the GemFire Cache");
+
+  }
+  // An exception should not occur
+  catch(const Exception & gemfireExcp)
+  {
+    LOGERROR("CqQuery GemFire Exception: %s", gemfireExcp.getMessage());
+  }
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/DataExpiration.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/DataExpiration.cpp b/geode-client-native/quickstart/cpp/DataExpiration.cpp
new file mode 100644
index 0000000..48ea03d
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/DataExpiration.cpp
@@ -0,0 +1,105 @@
+/*
+ * The DataExpiration QuickStart Example.
+ *
+ * This example takes the following steps:
+ *
+ *  1. Create a GemFire Cache programmatically.
+ *  2. Create the example Region programmatically.
+ *  3. Set the SimpleCacheListener plugin on the Region.
+ *  4. Put 3 Entries into the Region.
+ *  5. Get the Entry Idle Timeout setting from the Region.
+ *  6. Count the Keys in the Region before the Timeout duration elapses.
+ *  7. Wait for the Timeout Expiration Action to be reported by the SimpleCacheListener.
+ *  8. Count the remaining Keys in the Region after the Timeout duration elapses.
+ *  9. Close the Cache.
+ * 
+ */
+
+// Include the GemFire library.
+#include <gfcpp/GemfireCppCache.hpp>
+
+// Include the SimpleCacheListener plugin.
+#include "plugins/SimpleCacheListener.hpp"
+
+// Use the "gemfire" namespace.
+using namespace gemfire;
+
+// The DataExpiration QuickStart example.
+int main(int argc, char ** argv)
+{
+  try
+  {
+    // Create a GemFire Cache Programmatically.
+    CacheFactoryPtr cacheFactory = CacheFactory::createCacheFactory();
+
+    CachePtr cachePtr = cacheFactory->setSubscriptionEnabled(true)
+                                    ->create();
+
+    LOGINFO("Created the GemFire Cache");
+
+    RegionFactoryPtr regionFactory = cachePtr->createRegionFactory(CACHING_PROXY);
+
+    LOGINFO("Created the RegionFactory");
+
+
+    // Create the example Region programmatically.
+    RegionPtr regionPtr = regionFactory
+      ->setEntryIdleTimeout(ExpirationAction::DESTROY, 10)
+      ->create("exampleRegion");
+
+    LOGINFO("Created the Region from the Cache");
+
+    // Plugin the SimpleCacheListener to the Region.
+    AttributesMutatorPtr attrMutatorPtr = regionPtr->getAttributesMutator();
+    attrMutatorPtr->setCacheListener(CacheListenerPtr(new SimpleCacheListener()));
+
+    LOGINFO("Set the SimpleCacheListener on the Region");
+
+    // Put 3 Entries into the Region
+    regionPtr->put("Key1", "Value1");
+    regionPtr->put("Key2", "Value2");
+    regionPtr->put("Key3", "Value3");
+
+    LOGINFO("Put 3 Entries into the Region");
+
+    // Get the Entry Idle Timeout specified in the Cache XML file.
+    int entryIdleTimeout = regionPtr->getAttributes()->getEntryIdleTimeout();
+
+    LOGINFO("Got Entry Idle Timeout as %d seconds", entryIdleTimeout);
+
+    // Wait for half the Entry Idle Timeout duration, using gemfire::millisleep().
+    millisleep(entryIdleTimeout * 1000 / 2);
+
+    // Get the number of Keys remaining in the Region, should be all 3.
+    VectorOfCacheableKey keys;
+    regionPtr->keys(keys);
+
+    LOGINFO("Got %d keys before the Entry Idle Timeout duration elapsed", keys.size());
+
+    // Get 2 of the 3 Entries from the Region to "reset" their Idle Timeouts.
+    CacheablePtr value1Ptr = regionPtr->get("Key1");
+    CacheablePtr value2Ptr = regionPtr->get("Key2");
+
+    LOGINFO("The SimpleCacheListener should next report the expiration action");
+
+    // Wait for the entire Entry Idle Timeout duration, using gemfire::millisleep().
+    gemfire::millisleep(entryIdleTimeout * 1000);
+
+    // Get the number of Keys remaining in the Region, should be 0 now.
+    regionPtr->keys(keys);
+
+    LOGINFO("Got %d keys after the Entry Idle Timeout duration elapsed", keys.size());
+
+    // Close the GemFire Cache.
+    cachePtr->close();
+
+    LOGINFO("Closed the GemFire Cache");
+
+  }
+  // An exception should not occur
+  catch(const Exception & gemfireExcp)
+  {
+    LOGERROR("DataExpiration GemFire Exception: %s", gemfireExcp.getMessage());
+  }
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/Delta.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/Delta.cpp b/geode-client-native/quickstart/cpp/Delta.cpp
new file mode 100644
index 0000000..adaedc6
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/Delta.cpp
@@ -0,0 +1,93 @@
+// Include the GemFire library.
+
+/*
+ * The Delta QuickStart Example.
+ *
+ * This example takes the following steps:
+ *
+ * 1. Create a GemFire Cache.
+ * 2. Get the example Region from the Cache.
+ * 3. Put an Entry into the Region.
+ * 4. Set delta for a value.
+ * 5. Put entry with delta in region.
+ * 6. Local-invalidate entry in region.
+ * 7. Get entry from server.
+ * 8. Verify that delta was applied on server, by examining entry.
+ * 9. Close the Cache.
+ * 
+ */
+
+#include <gfcpp/GemfireCppCache.hpp>
+
+#include "deltaobjects/DeltaExample.hpp"
+
+// Use the "gemfire" namespace.
+using namespace gemfire;
+
+// The Delta QuickStart example.
+typedef SharedPtr<DeltaExample> DeltaExamplePtr;
+int main(int argc, char ** argv)
+{
+  try
+  {
+    // Create a GemFire Cache.
+    PropertiesPtr prptr = Properties::create();
+    prptr->insert("cache-xml-file", "XMLs/clientDelta.xml");
+
+    CacheFactoryPtr cacheFactory = CacheFactory::createCacheFactory(prptr);
+   
+    CachePtr cachePtr = cacheFactory->create();       
+
+    LOGINFO("Created the GemFire Cache");
+
+    // get the example Region.
+    RegionPtr regPtr = cachePtr->getRegion("exampleRegion");
+
+    LOGINFO("Obtained the Region from the Cache");
+
+    // Register our Serializable/Cacheable Delta objects, DeltaExample.
+    Serializable::registerType( DeltaExample::create );
+
+    //Creating Delta Object.
+    DeltaExample* ptr = new DeltaExample(10, 15, 20 );
+    CacheablePtr valPtr(ptr);
+    //Put the delta object. This will send the complete object to the server.
+    regPtr->put( "Key1", valPtr );
+    LOGINFO("Completed put for a delta object");
+    
+    //Changing state of delta object.
+    ptr->setField1( 9 );
+    
+    //Put delta object again. Since delta flag is set true it will calculate
+    //Delta and send only Delta to the server.
+    regPtr->put( "Key1", valPtr );
+    LOGINFO("Completed put with delta");
+    
+    //Locally invalidating the key.
+    regPtr->localInvalidate("Key1");
+    
+    //Fetching the value from server.
+    DeltaExamplePtr retVal = dynCast<DeltaExamplePtr> (regPtr->get("Key1"));
+    
+    //Verification
+    if( retVal->getField1() != 9 )
+      throw Exception("First field should have been 9");
+    if( retVal->getField2() != 15 )
+      throw Exception("Second field should have been 15");
+    if( retVal->getField3() != 20 )
+      throw Exception("Third field should have been 20");
+    LOGINFO("Delta has been successfully applied at server");
+
+    cachePtr->close();
+
+    LOGINFO("Closed the GemFire Cache");
+
+  }
+  // An exception should not occur
+
+  catch(const Exception & gemfireExcp)
+  {
+    LOGERROR("Delta GemFire Exception: %s", gemfireExcp.getMessage());
+  }
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/DistributedSystem.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/DistributedSystem.cpp b/geode-client-native/quickstart/cpp/DistributedSystem.cpp
new file mode 100755
index 0000000..51e3955
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/DistributedSystem.cpp
@@ -0,0 +1,125 @@
+/*
+ * The DistributedSystem QuickStart Example.
+ * This example creates two pools programatically.
+ * This example takes the following steps:
+ *
+ * 1. Create a GemFire Cache.
+ * 2. Now it creates Pool with poolName1.
+ * 3. Adds server(localhost:40404) to pool factory.
+ * 4. Creates region "root1" with pool.
+ * 5. Put Entries (Key and Value pairs) into the Region.
+ * 6. Get Entries from the Region.
+ * 7. Invalidate an Entry in the Region.
+ * 8. Destroy an Entry in the Region.
+ * 9. Now it creates another reagion "root2" with another pool "poolName2", which connects to the server(localhost:40405).
+ * 10. Now it do put/get operations.
+ * 10. Close the Cache.
+ *
+ */
+
+
+// Include the GemFire library.
+#include <gfcpp/GemfireCppCache.hpp>
+
+// Use the "gemfire" namespace.
+using namespace gemfire;
+
+
+void distributedsystem( CachePtr cachePtr, char * hostname, int port, char * poolName, char * regionName)
+{
+  try
+  {
+    //create pool factory to create the pool.
+    PoolFactoryPtr poolFacPtr = PoolManager::createFactory();
+
+    //adding host(endpoint) in pool
+    poolFacPtr->addServer(hostname, port);
+
+    //enabling subscription on pool
+    poolFacPtr->setSubscriptionEnabled(true);
+
+    //creating pool with name "examplePool"
+    poolFacPtr->create(poolName);
+
+    RegionFactoryPtr regionFactory = cachePtr->createRegionFactory(CACHING_PROXY);
+
+    LOGINFO("Created the RegionFactory");
+
+    //setting pool to attach with region    
+    regionFactory->setPoolName(poolName);
+
+    //creating first root region
+    RegionPtr regionPtr = regionFactory->create( regionName);
+    
+    LOGINFO("Created Region.");
+    
+    // Put an Entry (Key and Value pair) into the Region using the direct/shortcut method.
+    regionPtr->put("Key1", "Value1");
+    
+    LOGINFO("Put the first Entry into the Region");
+    
+    // Put an Entry into the Region by manually creating a Key and a Value pair.
+    CacheableKeyPtr keyPtr = CacheableInt32::create(123);
+    CacheablePtr valuePtr = CacheableString::create("123");
+    regionPtr->put(keyPtr, valuePtr);
+    
+    LOGINFO("Put the second Entry into the Region");
+    
+    // Get Entries back out of the Region.
+    CacheablePtr result1Ptr = regionPtr->get("Key1");
+    
+    LOGINFO("Obtained the first Entry from the Region");
+    
+    CacheablePtr result2Ptr = regionPtr->get(keyPtr);
+    
+    LOGINFO("Obtained the second Entry from the Region");
+    
+    // Invalidate an Entry in the Region.
+    regionPtr->invalidate("Key1");
+    
+    LOGINFO("Invalidated the first Entry in the Region");
+    
+    // Destroy an Entry in the Region.
+    regionPtr->destroy(keyPtr);
+    
+    LOGINFO("Destroyed the second Entry in the Region");
+    
+ 
+  }
+  // An exception should not occur
+  catch(const Exception & gemfireExcp)
+  {    
+    LOGERROR("DistributedSystem GemFire Exception: %s", gemfireExcp.getMessage());
+  }
+}
+
+
+// The DistributedSystem QuickStart example.
+int main(int argc, char ** argv)
+{
+  try
+  {
+    CacheFactoryPtr cacheFactory = CacheFactory::createCacheFactory();
+    
+    LOGINFO("Connected to the GemFire Distributed System");
+    
+    // Create a GemFire Cache.
+    CachePtr cachePtr = cacheFactory->create();
+
+    LOGINFO("Created the GemFire Cache");
+
+    distributedsystem( cachePtr, (char *)"localhost", 40404, (char *)"poolName1", (char *)"exampleRegion1");
+    distributedsystem( cachePtr, (char *)"localhost", 40405, (char *)"poolName2", (char *)"exampleRegion2");
+
+    // Close the GemFire Cache.
+    cachePtr->close();
+    
+    LOGINFO("Closed the GemFire Cache");
+  }
+  // An exception should not occur
+  catch(const Exception & gemfireExcp)
+  {    
+    LOGERROR("DistributedSystem GemFire Exception: %s", gemfireExcp.getMessage());
+  }
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/DurableClient.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/DurableClient.cpp b/geode-client-native/quickstart/cpp/DurableClient.cpp
new file mode 100644
index 0000000..d10c28e
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/DurableClient.cpp
@@ -0,0 +1,139 @@
+/*
+ * The Durable Client QuickStart Example.
+ *
+ * This example takes the following steps:
+ *
+ * 1. Create a GemFire Cache with durable client properties Programmatically.
+ * 2. Create the example Region Programmatically.
+ * 3. Set Cacelistener with "afterRegionLive implementation to region.
+ * 4. Register Interest to region with durable option
+ * 5. call to readyForEvent().
+ * 6. Close the Cache with keepalive options as true.
+ *
+ */
+
+
+// Include the GemFire library.
+#include <gfcpp/GemfireCppCache.hpp>
+
+//Include cachelistener
+#include "plugins/DurableCacheListener.hpp"
+
+// Use the "gemfire" namespace.
+using namespace gemfire;
+
+void RunDurableClient()
+{
+    // Create durable client's properties using api.
+    PropertiesPtr pp  = Properties::create();
+    pp->insert("durable-client-id", "DurableClientId");
+    pp->insert("durable-timeout", 300);
+
+    // Create a GemFire Cache Programmatically.
+    CacheFactoryPtr cacheFactory = CacheFactory::createCacheFactory(pp);
+    CachePtr cachePtr = cacheFactory->setSubscriptionEnabled(true)
+                                    ->create();
+
+    LOGINFO("Created the GemFire Cache Programmatically");
+    
+    RegionFactoryPtr regionFactory = cachePtr->createRegionFactory(CACHING_PROXY);
+
+    // Create the Region Programmatically.
+    RegionPtr regionPtr = regionFactory->create("exampleRegion");    
+
+    LOGINFO("Created the Region Programmatically");
+
+    // Plugin the CacheListener with afterRegionLive. "afterRegionLive()"  will be called
+    // after all the queued events are recieved by client
+    AttributesMutatorPtr attrMutatorPtr = regionPtr->getAttributesMutator();
+    attrMutatorPtr->setCacheListener(CacheListenerPtr(new DurableCacheListener()));
+
+    LOGINFO("DurableCacheListener set to region.");
+
+    // For durable Clients, Register Intrest can be durable or non durable ( default ),
+    // Unregister Interest APIs remain same.
+
+    VectorOfCacheableKey keys;
+    keys.push_back( CacheableString::create("Key-1") );
+    regionPtr->registerKeys(keys, true);
+
+    LOGINFO("Called Register Interest for Key-1 with isDurable as true");
+
+    //Send ready for Event message to Server( only for Durable Clients ).
+    //Server will send queued events to client after recieving this.
+    cachePtr->readyForEvents();
+
+    LOGINFO("Sent ReadyForEvents message to server");
+
+    //wait for some time to recieve events
+    gemfire::millisleep(1000);
+
+    // Close the GemFire Cache with keepalive = true.  Server will queue events for
+    // durable registered keys and will deliver all events when client will reconnect
+    // within timeout period and send "readyForEvents()"
+    cachePtr->close(true);
+
+    LOGINFO("Closed the GemFire Cache with keepalive as true");
+
+}
+void RunFeeder()
+{
+
+    CacheFactoryPtr cacheFactory = CacheFactory::createCacheFactory();
+    LOGINFO("Feeder connected to the GemFire Distributed System");
+
+    CachePtr cachePtr = cacheFactory->create();       
+    
+    LOGINFO("Created the GemFire Cache");
+    
+    RegionFactoryPtr regionFactory = cachePtr->createRegionFactory(PROXY);
+    
+    LOGINFO("Created the RegionFactory");
+    
+    // Create the Region Programmatically.
+    RegionPtr regionPtr = regionFactory->create("exampleRegion");
+
+    LOGINFO("Created the Region Programmatically.");
+
+    // create two keys in region
+    const char* keys[] = {"Key-1","Key-2" };
+    const char* vals[] = { "Value-1", "Value-2" };
+
+    for ( int i =0; i < 2; i++) 
+    {
+      CacheableKeyPtr keyPtr = createKey( keys[i] );
+      CacheableStringPtr valPtr = CacheableString::create( vals[i] );
+
+      regionPtr->create( keyPtr, valPtr );
+    }
+    LOGINFO("Created Key-1 and Key-2 in region. Durable interest was registered only for Key-1.");
+
+    // Close the GemFire Cache
+    cachePtr->close();
+
+    LOGINFO("Closed the GemFire Cache");
+
+}
+
+
+// The DurableClient QuickStart example.
+int main(int argc, char ** argv)
+{
+  try
+  {
+    //First Run of Durable Client
+    RunDurableClient();
+
+    //Intermediate Feeder, feeding events
+    RunFeeder();
+
+    //Reconnect Durable Client
+    RunDurableClient();
+  }
+  // An exception should not occur
+  catch(const Exception & gemfireExcp)
+  {
+    LOGERROR("DurableClient GemFire Exception: %s", gemfireExcp.getMessage());
+  }
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/Exceptions.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/Exceptions.cpp b/geode-client-native/quickstart/cpp/Exceptions.cpp
new file mode 100644
index 0000000..7e693ac
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/Exceptions.cpp
@@ -0,0 +1,120 @@
+/*
+ * The Exceptions QuickStart Example.
+ *
+ * This example takes the following steps:
+ *
+ * 1. Create CacheFactory using the user specified settings or from the gfcpp.properties file by default.
+ * 2. Create a GemFire Cache.
+ * 3. Get the example Regions from the Cache.
+ * 4. Perform some operations which should cause exceptions.
+ * 5. Close the Cache.
+ * 6. Put an Entry into the Region when Cache is already closed.
+ *
+ */
+
+
+// Include the GemFire library.
+#include <gfcpp/GemfireCppCache.hpp>
+
+// Use the "gemfire" namespace.
+using namespace gemfire;
+
+// The Exceptions QuickStart example.
+int main(int argc, char ** argv)
+{
+  try
+  {
+    // Create CacheFactory using the user specified settings or from the gfcpp.properties file by default.
+    PropertiesPtr prp = Properties::create();
+    prp->insert("cache-xml-file", "XMLs/clientExceptions.xml");
+
+    CacheFactoryPtr cacheFactory = CacheFactory::createCacheFactory(prp);
+
+    LOGINFO("Created CacheFactory");
+
+    // Create a GemFire Cache with the "clientExceptions.xml" Cache XML file.
+    CachePtr cachePtr = cacheFactory->setSubscriptionEnabled(true)->create();
+
+    LOGINFO("Created the GemFire Cache");
+
+    // Get the example Regions from the Cache which are declared in the Cache XML file.
+    RegionPtr regionPtr = cachePtr->getRegion("exampleRegion");
+    RegionPtr regionPtr2 = cachePtr->getRegion("exampleRegion2");
+
+    LOGINFO("Obtained the Regions from the Cache");
+
+    // Put an Entry (Key and Value pair) into the Region using the direct/shortcut method.
+    regionPtr->put("Key1", "Value1");
+
+    LOGINFO("Put the first Entry into the Region");
+
+    // Put an Entry into the Region by manually creating a Key and a Value pair.
+    CacheableKeyPtr keyPtr = CacheableInt32::create(123);
+    CacheablePtr valuePtr = CacheableString::create("123");
+    regionPtr->put(keyPtr, valuePtr);
+
+    LOGINFO("Put the second Entry into the Region");
+
+    // Get Entries back out of the Region.
+    CacheablePtr result1Ptr = regionPtr->get("Key1");
+
+    LOGINFO("Obtained the first Entry from the Region");
+
+    CacheablePtr result2Ptr = regionPtr->get(keyPtr);
+
+    LOGINFO("Obtained the second Entry from the Region");
+
+    //Destroy exampleRegion2.
+    UserDataPtr userDataPtr = NULLPTR;
+    regionPtr2->destroyRegion(userDataPtr);
+
+    try
+    {
+      // Try to Put an Entry into a destroyed Region.
+      regionPtr2->put("Key3", "Value3");
+
+      LOGINFO("UNEXPECTED: Put should not have succeeded");
+    }
+    catch (const RegionDestroyedException & gemfireExcp)
+    {
+      LOGINFO("Expected RegionDestroyedException: %s", gemfireExcp.getMessage());
+    }
+
+    try
+    {
+      //Its not valid to create two instances of Cache with different settings.
+      //If the settings are the same it returns the existing Cache instance.
+      CacheFactoryPtr cacheFactory2 = CacheFactory::createCacheFactory(prp);
+      CachePtr cachePtr1 = cacheFactory2->setSubscriptionEnabled(true)->addServer("localhost", 40405)->create();
+      LOGINFO("UNEXPECTED: Cache create should not have succeeded");
+    }
+    catch (const IllegalStateException & gemfireExcp)
+    {
+      LOGINFO("Expected IllegalStateException: %s", gemfireExcp.getMessage());
+    }
+
+   // Close the GemFire Cache.
+   cachePtr->close();
+
+   LOGINFO("Closed the GemFire Cache");
+
+   try
+   {
+     // Put an Entry into the Region when Cache is already closed.
+     regionPtr->put("Key1", "Value1");
+    
+     LOGINFO("UNEXPECTED: Put should not have succeeded");
+   }
+   catch (const RegionDestroyedException & gemfireExcp)
+   {
+     LOGINFO("Expected RegionDestroyedException: %s", gemfireExcp.getMessage());
+   }
+
+  }
+  // An exception should not occur
+  catch(const Exception & gemfireExcp)
+  {
+    LOGERROR("Exceptions GemFire Exception: %s", gemfireExcp.getMessage());
+  }
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/ExecuteFunctions.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/ExecuteFunctions.cpp b/geode-client-native/quickstart/cpp/ExecuteFunctions.cpp
new file mode 100644
index 0000000..ff372e7
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/ExecuteFunctions.cpp
@@ -0,0 +1,176 @@
+/*
+ * The Execute Function QuickStart Example.
+ *
+ * This example takes the following steps:
+ *
+ * 1. Create a GemFire Cache.
+ * 2. Create the example Region Programmatically.
+ * 3. Populate some objects on the Region.
+ * 4. Create Execute Objects
+ * 5. Execute Functions
+ * 6. Close the Cache.
+ *
+ */
+
+// Include the GemFire library.
+#include <gfcpp/GemfireCppCache.hpp>
+
+// Use the "gemfire" namespace.
+using namespace gemfire;
+
+char* getFuncIName = (char*)"MultiGetFunctionI";
+char* putFuncIName = (char*)"MultiPutFunctionI";
+char* getFuncName = (char*)"MultiGetFunction";
+char* putFuncName = (char*)"MultiPutFunction";
+
+
+// The Execute Function QuickStart example.
+int main(int argc, char ** argv)
+{
+  try
+  {
+    // Create CacheFactory using the settings from the gfcpp.properties file by default.
+    CacheFactoryPtr cacheFactory = CacheFactory::createCacheFactory();
+
+    LOGINFO("Created CacheFactory");
+    
+    // Create a GemFire Cache.
+    CachePtr cachePtr = cacheFactory->setSubscriptionEnabled(true)->addServer("localhost", 50505)->addServer("localhost", 40404)->create();
+    
+    LOGINFO("Created the GemFire Cache");
+    
+    // Create the example Region Programmatically
+    RegionPtr regPtr0 = cachePtr->createRegionFactory(CACHING_PROXY)->create("partition_region");
+    
+    LOGINFO("Created the Region");
+    
+    regPtr0->registerAllKeys();
+    char buf[128];
+    
+    CacheableVectorPtr resultList = CacheableVector::create();
+    for(int i=0; i < 34; i++)
+    {
+      sprintf(buf, "VALUE--%d", i);
+      CacheablePtr value(CacheableString::create(buf));
+
+      sprintf(buf, "KEY--%d", i);
+      CacheableKeyPtr key = CacheableKey::create(buf);
+      regPtr0->put(key, value);
+    }
+
+    bool getResult = true;
+    CacheableVectorPtr routingObj = CacheableVector::create();
+    for(int i=0; i < 34; i++)
+    {
+      if(i%2==0) continue;
+      sprintf(buf, "KEY--%d", i);
+      CacheableKeyPtr key = CacheableKey::create(buf);
+      routingObj->push_back(key);
+    }
+    //test data independant function with result on one server
+    LOGINFO("test data independant function with result on one server");
+    CacheablePtr args = routingObj;
+    ExecutionPtr exc = FunctionService::onServer((RegionServicePtr)cachePtr);
+    CacheableVectorPtr executeFunctionResult = 
+         exc->withArgs(args)->execute(getFuncIName, getResult)->getResult();
+    if(executeFunctionResult==NULLPTR)
+    {
+      LOGINFO("get executeFunctionResult is NULL");
+    } else 
+    {
+      for (int32_t item=0; item < executeFunctionResult->size(); item++)
+      {
+        CacheableArrayListPtr arrayList = dynCast<CacheableArrayListPtr>(executeFunctionResult->operator[](item));
+        for (int32_t pos=0; pos < arrayList->size(); pos++)
+        {
+          resultList->push_back(arrayList->operator[](pos));
+        }
+      }
+      sprintf(buf, "get: result count = %d", resultList->size());
+      LOGINFO(buf);
+      for(int32_t i=0; i < executeFunctionResult->size(); i++)
+      {
+         sprintf(buf, "get result[%d]=%s", i, dynCast<CacheableStringPtr>(resultList->operator[](i))->asChar());
+         LOGINFO(buf);
+      }
+    }
+
+    LOGINFO("test data independant function without result on one server");
+    getResult = false;
+    exc->withArgs(args)->execute(putFuncIName, getResult, 15, false);
+    LOGINFO("test data independant function with result on all servers");
+    getResult = true;
+    exc = FunctionService::onServers((RegionServicePtr)cachePtr);
+    executeFunctionResult = 
+         exc->withArgs(args)->execute(getFuncIName, getResult)->getResult();
+    if(executeFunctionResult==NULLPTR)
+    {
+      LOGINFO("get executeFunctionResult is NULL");
+    } else 
+    {
+      resultList->clear();
+      for (int32_t item=0; item < executeFunctionResult->size(); item++)
+      {
+        CacheableArrayListPtr arrayList = dynCast<CacheableArrayListPtr>(executeFunctionResult->operator[](item));
+        for (int32_t pos=0; pos < arrayList->size(); pos++)
+        {
+          resultList->push_back(arrayList->operator[](pos));
+        }
+      }
+      sprintf(buf, "get: result count = %d", resultList->size());
+      LOGINFO(buf);
+      for(int32_t i=0; i < executeFunctionResult->size(); i++)
+      {
+         sprintf(buf, "get result[%d]=%s", i, dynCast<CacheableStringPtr>(resultList->operator[](i))->asChar());
+         LOGINFO(buf);
+      }
+    }
+
+    getResult = false;
+    LOGINFO("test data independant function without result on all servers");
+    exc->withArgs(args)->execute(putFuncIName, getResult, 15, false);
+    LOGINFO("test data dependant function with result");
+    getResult = true;
+    args = CacheableBoolean::create( 1 );
+    exc = FunctionService::onRegion(regPtr0);
+    executeFunctionResult = 
+         exc->withFilter(routingObj)->withArgs(args)->execute(getFuncName, getResult)->getResult();
+    if(executeFunctionResult==NULLPTR)
+    {
+      LOGINFO( "execute on region: executeFunctionResult is NULL");
+    } else 
+    {
+      resultList->clear();
+      LOGINFO( "Execute on Region: result count = %d", executeFunctionResult->size());
+      for(int32_t i=0; i < executeFunctionResult->size(); i++)
+      {
+        CacheableArrayListPtr arrayList = dynCast<CacheableArrayListPtr>(executeFunctionResult->operator[](i));
+        for (int32_t pos=0; pos < arrayList->size(); pos++)
+        {
+          resultList->push_back(arrayList->operator[](pos));
+        }
+      }
+      sprintf(buf, "Execute on Region: result count = %d", resultList->size());
+      LOGINFO(buf);
+      
+      for(int32_t i=0; i < resultList->size(); i++)
+      {
+         sprintf(buf, "Execute on Region: result[%d]=%s", i, dynCast<CacheableStringPtr>(resultList->operator[](i))->asChar());
+         LOGINFO(buf);
+      }
+    }
+
+    LOGINFO("test data dependant function without result");
+    getResult = false;
+    exc->withFilter(routingObj)->withArgs(args)->execute(putFuncName, getResult, 15, false);
+    // Close the GemFire Cache.
+    cachePtr->close();
+
+    LOGINFO("Closed the GemFire Cache");
+  }
+  // An exception should not occur
+  catch(const Exception & gemfireExcp)
+  {
+    LOGERROR("Function Execution GemFire Exception: %s", gemfireExcp.getMessage());
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/FindCPPCache.cmake
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/FindCPPCache.cmake b/geode-client-native/quickstart/cpp/FindCPPCache.cmake
new file mode 100755
index 0000000..9701e4d
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/FindCPPCache.cmake
@@ -0,0 +1,50 @@
+#.rst:
+# FindNativeClientCPPCache
+# ------------------------
+#
+# Try to find the NativeClient cppcache library
+#
+# Once done this will define
+#
+# ::
+#
+#   NATIVECLIENT_CPPCACHE_FOUND - true when cmake has found the NativeClient CPPCache library
+#   NATIVECLIENT_CPPCACHE_INCLUDE_DIR - The NativeClient include directory
+#   NATIVECLIENT_CPPCACHE_LIBRARIES - The libraries needed to use NativeClient CPPCache library
+#   NATIVECLIENT_CPPCACH_DEFINITIONS - Compiler switches required for using NativeClient CPPCache library
+#   NATIVECLIENT_CPPCACH_VERSION_STRING - the version of NativeClient CPPCache library found
+
+#=============================================================================
+# Copyright 2006-2009 Kitware, Inc.
+# Copyright 2006 Alexander Neundorf <ne...@kde.org>
+#
+# Distributed under the OSI-approved BSD License (the "License");
+# see accompanying file Copyright.txt for details.
+#
+# This software is distributed WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the License for more information.
+#=============================================================================
+# (TODO: To distribute this file outside of CMake, substitute the full
+#  License text for the above reference.)
+
+#find_path(LIBXML2_INCLUDE_DIR NAMES libxml/xpath.h
+#   HINTS
+#   ${PC_LIBXML_INCLUDEDIR}
+#   ${PC_LIBXML_INCLUDE_DIRS}
+#   PATH_SUFFIXES libxml2
+#   )
+#
+#find_library(LIBXML2_LIBRARIES NAMES xml2 libxml2
+#   HINTS
+#   ${PC_LIBXML_LIBDIR}
+#   ${PC_LIBXML_LIBRARY_DIRS}
+#   )
+
+find_program(LIBXML2_XMLLINT_EXECUTABLE xmllint)
+
+set( NATIVECLIENT_CPPCACHE_VERSION_STRING "9.0" )
+set( NATIVECLIENT_CPPCACHE_FOUND "YES" )
+set( NATIVECLIENT_CPPCACHE_INCLUDE_DIR $ENV{GFCPP}/include ) # TODO: Replace with install directory
+set( NATIVECLIENT_CPPCACHE_LIBRARIES $ENV{GFCPP}/lib ) # TODO: Replace with install directory
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/GNUmakefile
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/GNUmakefile b/geode-client-native/quickstart/cpp/GNUmakefile
new file mode 100644
index 0000000..c7a72f7
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/GNUmakefile
@@ -0,0 +1,8 @@
+default: all
+
+SUBDIRS = queryobjects
+SUBS = execs
+
+execs: queryobjects
+
+include ../GNUmakefile.common
\ No newline at end of file



[19/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CacheableBuiltinsM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CacheableBuiltinsM.hpp b/geode-client-native/src/clicache/CacheableBuiltinsM.hpp
new file mode 100644
index 0000000..3cf0966
--- /dev/null
+++ b/geode-client-native/src/clicache/CacheableBuiltinsM.hpp
@@ -0,0 +1,662 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/CacheableBuiltins.hpp"
+#include "CacheableKeyM.hpp"
+#include "SerializableM.hpp"
+
+#include "DataInputM.hpp"
+#include "DataOutputM.hpp"
+#include "LogM.hpp"
+
+#include "GemFireClassIdsM.hpp"
+
+using namespace System;
+using namespace GemStone::GemFire::Cache::Internal;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      namespace Template
+      {
+          [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+       ref class BultinHashcodes  
+        {
+        public :
+          static int GetHash(bool val)
+          {
+            if (val) return 1231;
+            else return 1237;
+          }
+          
+          static int GetHash(int val)
+          {
+            return val;
+          }
+
+          static int GetHash(int16 val)
+          {
+            return val;
+          }
+
+          static int GetHash(uint16 val)
+          {
+            return val;
+          }
+
+          static int GetHash(uint32 val)
+          {
+            return val;
+          }
+
+          static int GetHash(Single val)
+          {
+            return val.GetHashCode();
+          }
+
+          static int GetHash(Byte val)
+          {
+            return val;
+          }
+
+          static int GetHash(long val)
+          {
+            return val.GetHashCode();
+          }
+
+          static int GetHash(double val)
+          {
+            return val.GetHashCode();
+          }
+
+          static int GetHash(int64_t val)
+          {
+            return val.GetHashCode();
+          }
+
+          static int GetHash(Object^ val)
+          {
+            return val->GetHashCode();;
+          }
+    
+        };
+
+        /// <summary>
+        /// An immutable template wrapper for C++ <c>CacheableKey</c>s that can
+        /// serve as a distributable key object for caching.
+        /// </summary>
+       //[Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+        template <typename TNative, typename TManaged, uint32_t TYPEID>
+        public ref class CacheableBuiltinKey
+          : public GemStone::GemFire::Cache::CacheableKey
+        {
+         public:
+          /// <summary>
+          /// Allocates a new instance 
+          /// </summary>
+          /*GemStone::GemFire::Cache::Internal::*/CacheableBuiltinKey()
+          {
+            //TODO:Hitesh 
+            gemfire::SharedPtr<TNative>& nativeptr = TNative::create();
+            SetSP(nativeptr.ptr());
+          }
+
+          /// <summary>
+          /// Allocates a new instance with the given value.
+          /// </summary>
+          /// <param name="value">the value of the new instance</param>
+          /*GemStone::GemFire::Cache::Internal::*/CacheableBuiltinKey(TManaged value)
+          {
+            m_value = value;
+          }
+
+          /// <summary>
+          /// Returns the classId of the instance being serialized.
+          /// This is used by deserialization to determine what instance
+          /// type to create and deserialize into.
+          /// </summary>
+          /// <returns>the classId</returns>
+          virtual property uint32_t ClassId
+          {
+            virtual uint32_t get() override
+            {
+              return TYPEID;
+            }
+          }
+
+          virtual void ToData(GemStone::GemFire::Cache::DataOutput^ output) override
+          {
+            output->WriteObject(m_value); 
+          }
+
+          virtual GemStone::GemFire::Cache::IGFSerializable^ FromData(GemStone::GemFire::Cache::DataInput^ input) override
+          {
+              input->ReadObject(m_value);
+              return this;          
+          }
+
+          virtual property uint32_t ObjectSize 
+          {
+            virtual uint32_t get() override
+            {
+              return (uint32_t) (sizeof(m_value));
+            }
+          }
+
+          /// <summary>
+          /// Return a string representation of the object.
+          /// This returns the string for the <c>Value</c> property.
+          /// </summary>
+          virtual String^ ToString() override
+          {
+            return m_value.ToString();
+          }
+
+          /// <summary>
+          /// Return true if this key matches other object.
+          /// It invokes the '==' operator of the underlying
+          /// native object.
+          /// </summary>
+          virtual bool Equals(GemStone::GemFire::Cache::ICacheableKey^ other) override
+          {
+            if (other == nullptr || other->ClassId != TYPEID)
+            {
+              return false;
+            }
+            /*GemStone::GemFire::Cache::Internal::*/CacheableBuiltinKey^ otherKey =
+              dynamic_cast</*GemStone::GemFire::Cache::Internal::*/CacheableBuiltinKey^>(other);
+
+            if (otherKey == nullptr)
+              return false;
+
+            return m_value.Equals(otherKey->Value);
+          }
+
+          virtual int32_t GetHashCode() override
+          {
+            //return m_value.GetHashCode();
+            return BultinHashcodes::GetHash(m_value);
+          }
+
+
+          /// <summary>
+          /// Return true if this key matches other object.
+          /// It invokes the '==' operator of the underlying
+          /// native object.
+          /// </summary>
+          virtual bool Equals(Object^ obj) override
+          {
+            /*GemStone::GemFire::Cache::Internal::*/CacheableBuiltinKey^ otherKey =
+              dynamic_cast</*GemStone::GemFire::Cache::Internal::*/CacheableBuiltinKey^>(obj);
+
+            if (otherKey == nullptr)
+              return false;
+           
+            return m_value.Equals(otherKey->Value);
+          }
+
+          /// <summary>
+          /// Comparison operator against another value.
+          /// </summary>
+          bool operator == (TManaged other)
+          {
+            return m_value.Equals(other.Value);
+          }
+
+          /// <summary>
+          /// Gets the value.
+          /// </summary>
+          property TManaged Value
+          {
+            inline TManaged get()
+            {
+              return m_value;
+            }
+          }
+
+        protected:
+
+          TManaged m_value;
+
+          /// <summary>
+          /// Protected constructor to wrap a native object pointer
+          /// </summary>
+          /// <param name="nativeptr">The native object pointer</param>
+          inline /*GemStone::GemFire::Cache::Internal::*/CacheableBuiltinKey(gemfire::Serializable* nativeptr)
+            : /*GemStone::GemFire::Cache::*/CacheableKey(nativeptr) {
+              //TODO:Hitesh ??
+           m_value = static_cast<TNative*>(nativeptr)->value();
+          }
+        };
+
+
+        /// <summary>
+        /// An immutable template array wrapper that can serve as a
+        /// distributable object for caching.
+        /// </summary>
+        //[Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+        template <typename TNative, typename TNativePtr, typename TManaged,
+          uint32_t TYPEID>
+        public ref class CacheableBuiltinArray
+          : public GemStone::GemFire::Cache::Serializable
+        {
+        public:
+
+          /// <summary>
+          /// Returns the classId of the instance being serialized.
+          /// This is used by deserialization to determine what instance
+          /// type to create and deserialize into.
+          /// </summary>
+          /// <returns>the classId</returns>
+          virtual property uint32_t ClassId
+          {
+            virtual uint32_t get() override
+            {
+              return TYPEID;
+            }
+          }
+
+          virtual void ToData(GemStone::GemFire::Cache::DataOutput^ output) override
+          {
+            output->WriteObject(m_value); 
+          }
+
+          virtual GemStone::GemFire::Cache::IGFSerializable^ FromData(GemStone::GemFire::Cache::DataInput^ input) override
+          {
+            input->ReadObject(m_value);
+            return this;
+          }
+
+          virtual property uint32_t ObjectSize 
+          {
+            virtual uint32_t get() override
+            {
+              return (uint32_t) (m_value->Length * sizeof(TManaged));
+            }
+          }
+          /// <summary>
+          /// Returns a copy of the underlying array.
+          /// </summary>
+          property array<TManaged>^ Value
+          {
+            inline array<TManaged>^ get()
+            {              
+              return m_value;
+            }
+          }
+
+          /// <summary>
+          /// Returns the size of this array.
+          /// </summary>
+          property int32_t Length
+          {
+            inline int32_t get()
+            {
+              return m_value->Length;
+            }
+          }
+
+          virtual String^ ToString() override
+          {
+            return m_value->ToString();
+          }
+
+          /// <summary>
+          /// Returns the value at the given index.
+          /// </summary>
+          property TManaged GFINDEXER(int32_t)
+          {
+            inline TManaged get(int32_t index)
+            {
+              return m_value[index];
+            }
+          }
+
+
+        protected:
+
+          array<TManaged>^ m_value;
+          /// <summary>
+          /// Protected constructor 
+          /// </summary>
+          inline /*GemStone::GemFire::Cache::Internal::*/CacheableBuiltinArray()
+          {
+            //TODO:Hitesh
+            gemfire::Serializable* sp = TNative::createDeserializable();
+            SetSP(sp);
+          }
+
+          /// <summary>
+          /// Protected constructor to wrap a native object pointer
+          /// </summary>
+          /// <param name="nativeptr">The native object pointer</param>
+          inline /*GemStone::GemFire::Cache::Internal::*/CacheableBuiltinArray(gemfire::Serializable* nptr)
+            : GemStone::GemFire::Cache::Serializable(nptr)
+          { 
+            //TODO:Hitesh ??
+             // ManagedPtrWrap< gemfire::Serializable,
+               // Internal::SBWrap<gemfire::Serializable> > nptr = nativeptr;
+              TNative* nativeptr = static_cast<TNative*>(nptr);
+              int32_t len = nativeptr->length();
+              if (len > 0)
+              {
+                array<TManaged>^ buffer = gcnew array<TManaged>(len);
+                pin_ptr<TManaged> pin_buffer = &buffer[0];
+
+                memcpy((void*)pin_buffer, nativeptr->value(),
+                  len * sizeof(TManaged));
+                m_value = buffer;
+              }
+          }
+
+          /// <summary>
+          /// Allocates a new instance copying from the given array.
+          /// </summary>
+          /// <remarks>
+          /// This method performs no argument checking which is the
+          /// responsibility of the caller.
+          /// </remarks>
+          /// <param name="buffer">the array to copy from</param>
+          /*GemStone::GemFire::Cache::Internal::*/CacheableBuiltinArray(array<TManaged>^ buffer)
+          {
+            m_value = buffer;
+            //setting local value as well
+            //m_value = gcnew array<TManaged>(buffer->Length);
+            //System::Array::Copy(buffer, 0, m_value,0, buffer->Length);             
+          }
+
+          /// <summary>
+          /// Allocates a new instance copying given length from the
+          /// start of given array.
+          /// </summary>
+          /// <remarks>
+          /// This method performs no argument checking which is the
+          /// responsibility of the caller.
+          /// </remarks>
+          /// <param name="buffer">the array to copy from</param>
+          /// <param name="length">length of array from start to copy</param>
+          /*GemStone::GemFire::Cache::Internal::*/CacheableBuiltinArray(array<TManaged>^ buffer, int32_t length)
+          {
+            //TODO:Hitesh
+            if (length > buffer->Length) {
+              length = buffer->Length;
+            }
+            //setting local value as well
+            m_value = gcnew array<TManaged>(length);
+            System::Array::Copy(buffer, 0, m_value,0, length);
+          }
+        };
+
+      }
+
+#define _GFCLI_CACHEABLE_KEY_DEF_(n, m, mt)                                   \
+      public ref class m : public /*GemStone::GemFire::Cache::*/Template::CacheableBuiltinKey<n, mt,        \
+        GemFireClassIds::m>                                                   \
+      {                                                                       \
+      public:                                                                 \
+         /** <summary>
+         *  Allocates a new instance with the given value.
+         *  </summary>
+         *  <param name="value">the value of the new instance</param>
+         */                                                                   \
+        inline m()                                                            \
+          : /*GemStone::GemFire::Cache::Internal::*/CacheableBuiltinKey() { }                                         \
+        /** <summary>
+         *  Allocates a new instance with the given value.
+         *  </summary>
+         *  <param name="value">the value of the new instance</param>
+         */                                                                   \
+        inline m(mt value)                                                    \
+          : /*GemStone::GemFire::Cache::Internal::*/CacheableBuiltinKey(value) { }                                    \
+        /** <summary>
+         *  Static function to create a new instance given value.
+         *  </summary>
+         *  <param name="value">the value of the new instance</param>
+         */                                                                   \
+        inline static m^ Create(mt value)                                     \
+        {                                                                     \
+          return gcnew m(value);                                              \
+        }                                                                     \
+        /** <summary>
+         * Explicit conversion operator to contained value type.
+         * </summary>
+         */                                                                   \
+        inline static explicit operator mt (m^ value)                         \
+        {                                                                     \
+          return value->Value;                                                \
+        }                                                                     \
+                                                                              \
+        /** <summary>
+         * Factory function to register this class.
+         * </summary>
+         */                                                                   \
+        static GemStone::GemFire::Cache::IGFSerializable^ CreateDeserializable()                        \
+        {                                                                     \
+          return gcnew m();                                       \
+        }                                                                     \
+                                                                              \
+      internal:                                                               \
+        static GemStone::GemFire::Cache::IGFSerializable^ Create(gemfire::Serializable* obj)            \
+        {                                                                     \
+          return (obj != nullptr ? gcnew m(obj) : nullptr);                   \
+        }                                                                     \
+                                                                              \
+      private:                                                                \
+        inline m(gemfire::Serializable* nativeptr)                            \
+        : /*GemStone::GemFire::Cache::Internal::*/CacheableBuiltinKey(nativeptr) { }                                \
+      };
+
+
+#define _GFCLI_CACHEABLE_ARRAY_DEF_(m, mt)                                    \
+      public ref class m : public GemStone::GemFire::Cache::Template::CacheableBuiltinArray<            \
+        gemfire::m, gemfire::m##Ptr, mt, GemFireClassIds::m>                  \
+      {                                                                       \
+      public:                                                                 \
+        /** <summary>
+         *  Static function to create a new instance copying
+         *  from the given array.
+         *  </summary>
+         *  <remarks>
+         *  Providing a null or zero size array will return a null object.
+         *  </remarks>
+         *  <param name="value">the array to create the new instance</param>
+         */                                                                   \
+        inline static m^ Create(array<mt>^ value)                             \
+        {                                                                     \
+          return (value != nullptr && value->Length > 0 ?                     \
+            gcnew m(value) : nullptr);                                        \
+        }                                                                     \
+        /** <summary>
+         *  Static function to create a new instance copying
+         *  from the given array.
+         *  </summary>
+         *  <remarks>
+         *  Providing a null or zero size array will return a null object.
+         *  </remarks>
+         *  <param name="value">the array to create the new instance</param>
+         */                                                                   \
+        inline static m^ Create(array<mt>^ value, int32_t length)               \
+        {                                                                     \
+          return (value != nullptr && value->Length > 0 ?                     \
+            gcnew m(value, length) : nullptr);                                \
+        }                                                                     \
+        /** <summary>
+         * Explicit conversion operator to contained array type.
+         * </summary>
+         */                                                                   \
+        inline static explicit operator array<mt>^ (m^ value)                 \
+        {                                                                     \
+          return (value != nullptr ? value->Value : nullptr);                 \
+        }                                                                     \
+                                                                              \
+        /** <summary>
+         * Factory function to register this class.
+         * </summary>
+         */                                                                   \
+        static GemStone::GemFire::Cache::IGFSerializable^ CreateDeserializable()                        \
+        {                                                                     \
+          return gcnew m();                                                   \
+        }                                                                     \
+                                                                              \
+      internal:                                                               \
+        static GemStone::GemFire::Cache::IGFSerializable^ Create(gemfire::Serializable* obj)            \
+        {                                                                     \
+          return (obj != nullptr ? gcnew m(obj) : nullptr);                  \
+        }                                                                     \
+                                                                              \
+      private:                                                                \
+        /** <summary>
+         * Allocates a new instance
+         *  </summary>
+         */                                                                   \
+        inline m()                                                            \
+          : /*GemStone::GemFire::Cache::Internal::*/CacheableBuiltinArray() { }                                       \
+        /** <summary>
+         * Allocates a new instance copying from the given array.
+         *  </summary>
+         *  <remarks>
+         *  Providing a null or zero size array will return a null object.
+         *  </remarks>
+         *  <param name="value">the array to create the new instance</param>
+         */                                                                   \
+        inline m(array<mt>^ value)                                            \
+          : /*GemStone::GemFire::Cache::Internal::*/CacheableBuiltinArray(value) { }                                  \
+        /** <summary>
+         * Allocates a new instance copying given length from the
+         * start of given array.
+         *  </summary>
+         *  <remarks>
+         *  Providing a null or zero size array will return a null object.
+         *  </remarks>
+         *  <param name="value">the array to create the new instance</param>
+         */                                                                   \
+        inline m(array<mt>^ value, int32_t length)                              \
+          : /*GemStone::GemFire::Cache::Internal::*/CacheableBuiltinArray(value, length) { }                          \
+        inline m(gemfire::Serializable* nativeptr)                            \
+          : /*GemStone::GemFire::Cache::Internal::*/CacheableBuiltinArray(nativeptr) { }                              \
+      };
+
+
+      // Built-in CacheableKeys
+
+      /// <summary>
+      /// An immutable wrapper for booleans that can serve
+      /// as a distributable key object for caching.
+      /// </summary>
+      _GFCLI_CACHEABLE_KEY_DEF_(gemfire::CacheableBoolean,
+        CacheableBoolean, bool);
+
+      /// <summary>
+      /// An immutable wrapper for bytes that can serve
+      /// as a distributable key object for caching.
+      /// </summary>
+      _GFCLI_CACHEABLE_KEY_DEF_(gemfire::CacheableByte,
+        CacheableByte, Byte);
+
+      /// <summary>
+      /// An immutable wrapper for 16-bit characters that can serve
+      /// as a distributable key object for caching.
+      /// </summary>
+      _GFCLI_CACHEABLE_KEY_DEF_(gemfire::CacheableWideChar,
+        CacheableCharacter, Char);
+
+      /// <summary>
+      /// An immutable wrapper for doubles that can serve
+      /// as a distributable key object for caching.
+      /// </summary>
+      _GFCLI_CACHEABLE_KEY_DEF_(gemfire::CacheableDouble,
+        CacheableDouble, Double);
+
+      /// <summary>
+      /// An immutable wrapper for floats that can serve
+      /// as a distributable key object for caching.
+      /// </summary>
+      _GFCLI_CACHEABLE_KEY_DEF_(gemfire::CacheableFloat,
+        CacheableFloat, Single);
+
+      /// <summary>
+      /// An immutable wrapper for 16-bit integers that can serve
+      /// as a distributable key object for caching.
+      /// </summary>
+      _GFCLI_CACHEABLE_KEY_DEF_(gemfire::CacheableInt16,
+        CacheableInt16, int16_t);
+
+      /// <summary>
+      /// An immutable wrapper for 32-bit integers that can serve
+      /// as a distributable key object for caching.
+      /// </summary>
+      _GFCLI_CACHEABLE_KEY_DEF_(gemfire::CacheableInt32,
+        CacheableInt32, int32_t);
+
+      /// <summary>
+      /// An immutable wrapper for 64-bit integers that can serve
+      /// as a distributable key object for caching.
+      /// </summary>
+      _GFCLI_CACHEABLE_KEY_DEF_(gemfire::CacheableInt64,
+        CacheableInt64, int64_t);
+
+
+      // Built-in Cacheable array types
+
+      /// <summary>
+      /// An immutable wrapper for byte arrays that can serve
+      /// as a distributable object for caching.
+      /// </summary>
+      _GFCLI_CACHEABLE_ARRAY_DEF_(CacheableBytes, Byte);
+
+      /// <summary>
+      /// An immutable wrapper for array of doubles that can serve
+      /// as a distributable object for caching.
+      /// </summary>
+      _GFCLI_CACHEABLE_ARRAY_DEF_(CacheableDoubleArray, Double);
+
+      /// <summary>
+      /// An immutable wrapper for array of floats that can serve
+      /// as a distributable object for caching.
+      /// </summary>
+      _GFCLI_CACHEABLE_ARRAY_DEF_(CacheableFloatArray, Single);
+
+      /// <summary>
+      /// An immutable wrapper for array of 16-bit integers that can serve
+      /// as a distributable object for caching.
+      /// </summary>
+      _GFCLI_CACHEABLE_ARRAY_DEF_(CacheableInt16Array, int16_t);
+
+      /// <summary>
+      /// An immutable wrapper for array of 32-bit integers that can serve
+      /// as a distributable object for caching.
+      /// </summary>
+      _GFCLI_CACHEABLE_ARRAY_DEF_(CacheableInt32Array, int32_t);
+
+      /// <summary>
+      /// An immutable wrapper for array of 64-bit integers that can serve
+      /// as a distributable object for caching.
+      /// </summary>
+      _GFCLI_CACHEABLE_ARRAY_DEF_(CacheableInt64Array, int64_t);
+
+      /// <summary>
+      /// An immutable wrapper for array of booleans that can serve
+      /// as a distributable object for caching.
+      /// </summary>
+      _GFCLI_CACHEABLE_ARRAY_DEF_(BooleanArray, bool);
+
+      /// <summary>
+      /// An immutable wrapper for array of 16-bit characters that can serve
+      /// as a distributable object for caching.
+      /// </summary>
+      _GFCLI_CACHEABLE_ARRAY_DEF_(CharArray, Char);
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CacheableDateM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CacheableDateM.cpp b/geode-client-native/src/clicache/CacheableDateM.cpp
new file mode 100644
index 0000000..46bd25e
--- /dev/null
+++ b/geode-client-native/src/clicache/CacheableDateM.cpp
@@ -0,0 +1,101 @@
+/*=========================================================================
+* Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+*=========================================================================
+*/
+
+#include "gf_includes.hpp"
+#include "CacheableDateM.hpp"
+#include "DataInputM.hpp"
+#include "DataOutputM.hpp"
+#include "LogM.hpp"
+//#include "GemFireClassIdsM.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      CacheableDate::CacheableDate(DateTime dateTime)
+        : m_dateTime(dateTime),m_hashcode(0)
+      {
+        // Round off dateTime to the nearest millisecond.
+        int64_t ticksToAdd = m_dateTime.Ticks % TimeSpan::TicksPerMillisecond;
+        ticksToAdd = (ticksToAdd >= (TimeSpan::TicksPerMillisecond / 2) ?
+          (TimeSpan::TicksPerMillisecond - ticksToAdd) : -ticksToAdd);
+        m_dateTime = m_dateTime.AddTicks(ticksToAdd);
+      }
+
+      void CacheableDate::ToData(DataOutput^ output)
+      {
+        TimeSpan epochSpan = m_dateTime - EpochTime;
+        int64_t millisSinceEpoch =
+          epochSpan.Ticks / TimeSpan::TicksPerMillisecond;
+        output->WriteInt64(millisSinceEpoch);
+      }
+
+      IGFSerializable^ CacheableDate::FromData(DataInput^ input)
+      {
+        DateTime epochTime = EpochTime;
+        int64_t millisSinceEpoch = input->ReadInt64();
+        m_dateTime = epochTime.AddTicks(
+          millisSinceEpoch * TimeSpan::TicksPerMillisecond);
+        return this;
+      }
+
+      uint32_t CacheableDate::ObjectSize::get()
+      { 
+        return (uint32_t)sizeof(DateTime); 
+      }
+
+      uint32_t CacheableDate::ClassId::get()
+      {
+        return GemFireClassIds::CacheableDate;
+      }
+
+      String^ CacheableDate::ToString()
+      {
+        return m_dateTime.ToString(
+          System::Globalization::CultureInfo::CurrentCulture);
+      }
+
+      int32_t CacheableDate::GetHashCode()
+      {
+        if (m_hashcode == 0) {
+          TimeSpan epochSpan = m_dateTime - EpochTime;
+          int64_t millitime =
+            epochSpan.Ticks / TimeSpan::TicksPerMillisecond;
+          m_hashcode =  (int) millitime ^ (int) ((int64)millitime >> 32);
+        }
+        return m_hashcode;
+      }
+
+      bool CacheableDate::Equals(GemStone::GemFire::Cache::ICacheableKey^ other)
+      {
+        if (other == nullptr ||
+          other->ClassId != GemFireClassIds::CacheableDate) {
+          return false;
+        }
+        return m_dateTime.Equals(static_cast<CacheableDate^>(
+          other)->m_dateTime);
+      }
+
+      bool CacheableDate::Equals(Object^ obj)
+      {
+        CacheableDate^ otherDate =
+          dynamic_cast<CacheableDate^>(obj);
+
+        if (otherDate != nullptr) {
+          return (m_dateTime == otherDate->m_dateTime);
+        }
+        return false;
+      }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CacheableDateM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CacheableDateM.hpp b/geode-client-native/src/clicache/CacheableDateM.hpp
new file mode 100644
index 0000000..41c4f0f
--- /dev/null
+++ b/geode-client-native/src/clicache/CacheableDateM.hpp
@@ -0,0 +1,164 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "ICacheableKey.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      /// <summary>
+      /// An immutable date wrapper that can serve as a distributable
+      /// key object for caching as well as being a string value.
+      /// </summary>
+        [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class CacheableDate
+        : public GemStone::GemFire::Cache::ICacheableKey
+      {
+      public:
+        /// <summary>
+        /// Allocates a new default instance.
+        /// </summary>
+        inline CacheableDate()
+          : m_dateTime() { }
+
+        /// <summary>
+        /// Initializes a new instance of the <c>CacheableDate</c> to the
+        /// given <c>System.DateTime</c> value.
+        /// </summary>
+        /// <param name="dateTime">
+        /// A <c>System.DateTime</c> value to initialize this instance.
+        /// </param>
+        CacheableDate(DateTime dateTime);
+
+        /// <summary>
+        /// Static function that returns a new default instance.
+        /// </summary>
+        inline static CacheableDate^ Create()
+        {
+          return gcnew CacheableDate();
+        }
+
+        /// <summary>
+        /// Static function that returns a new instance initialized to the
+        /// given <c>System.DateTime</c> value.
+        /// </summary>
+        inline static CacheableDate^ Create(DateTime dateTime)
+        {
+          return gcnew CacheableDate(dateTime);
+        }
+
+        // Region: IGFSerializable Members
+
+        /// <summary>
+        /// Serializes this object.
+        /// </summary>
+        /// <param name="output">
+        /// the DataOutput object to use for serializing the object
+        /// </param>
+        virtual void ToData(DataOutput^ output);
+
+        /// <summary>
+        /// Deserialize this object, typical implementation should return
+        /// the 'this' pointer.
+        /// </summary>
+        /// <param name="input">
+        /// the DataInput stream to use for reading the object data
+        /// </param>
+        /// <returns>the deserialized object</returns>
+        virtual IGFSerializable^ FromData(DataInput^ input);
+
+        /// <summary>
+        /// return the size of this object in bytes
+        /// </summary>
+        /// <summary>
+        /// return the size of this object in bytes
+        /// </summary>
+        virtual property uint32_t ObjectSize
+        {
+          virtual uint32_t get();
+        }
+
+        /// <summary>
+        /// Returns the classId of the instance being serialized.
+        /// This is used by deserialization to determine what instance
+        /// type to create and deserialize into.
+        /// </summary>
+        /// <returns>the classId</returns>
+        virtual property uint32_t ClassId
+        {
+          virtual uint32_t get();
+        }
+
+        /// <summary>
+        /// Return a string representation of the object.
+        /// </summary>
+        virtual String^ ToString() override;
+
+        // End Region: IGFSerializable Members
+
+
+        // Region: ICacheableKey Members
+
+        /// <summary>
+        /// Return the hashcode for this key.
+        /// </summary>
+        virtual int32_t GetHashCode() override;
+
+        /// <summary>
+        /// Return true if this key matches other object.
+        /// </summary>
+        virtual bool Equals(GemStone::GemFire::Cache::ICacheableKey^ other);
+
+        /// <summary>
+        /// Return true if this key matches other object.
+        /// </summary>
+        virtual bool Equals(Object^ obj) override;
+
+        // End Region: ICacheableKey Members
+
+        /// <summary>
+        /// Gets the <c>System.DateTime</c> value.
+        /// </summary>
+        property DateTime Value
+        {
+          inline DateTime get()
+          {
+            return m_dateTime;
+          }
+        }
+
+        /// <summary>
+        /// <c>DataTime</c> value since 1/1/1970
+        /// </summary>
+        static initonly DateTime EpochTime = DateTime(1970, 1, 1,
+          0, 0, 0, DateTimeKind::Utc);
+
+        /// <summary>
+        /// Factory function to register this class.
+        /// </summary>
+        static IGFSerializable^ CreateDeserializable()
+        {
+          return gcnew CacheableDate();
+        }
+
+      private:
+        DateTime m_dateTime;
+        int m_hashcode;
+      };
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CacheableFileNameM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CacheableFileNameM.cpp b/geode-client-native/src/clicache/CacheableFileNameM.cpp
new file mode 100644
index 0000000..0ecd298
--- /dev/null
+++ b/geode-client-native/src/clicache/CacheableFileNameM.cpp
@@ -0,0 +1,96 @@
+/*=========================================================================
+* Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+*=========================================================================
+*/
+
+#include "gf_includes.hpp"
+#include "CacheableFileNameM.hpp"
+#include "DataOutputM.hpp"
+#include "DataInputM.hpp"
+#include "GemFireClassIdsM.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      void CacheableFileName::ToData(DataOutput^ output)
+      {
+        if (m_str->Length <= 0xFFFF) {
+          output->WriteByte(gemfire::GemfireTypeIds::CacheableString);
+          output->WriteUTF(m_str);
+        }
+        else {
+          output->WriteByte(gemfire::GemfireTypeIds::CacheableStringHuge);
+          output->WriteUTFHuge(m_str);
+        }
+      }
+
+      IGFSerializable^ CacheableFileName::FromData(DataInput^ input)
+      {
+        unsigned char filetype = input->ReadByte();
+        if (filetype == gemfire::GemfireTypeIds::CacheableString) {
+          m_str = input->ReadUTF();
+        }
+        else {
+          m_str = input->ReadUTFHuge();
+        }
+        return this;
+      }
+
+      uint32_t CacheableFileName::ClassId::get()
+      {
+        return GemFireClassIds::CacheableFileName;
+      }
+
+      uint32_t CacheableFileName::ObjectSize::get()
+      {
+        return (uint32_t)(m_str->Length * sizeof(char));
+      }
+
+      int32_t CacheableFileName::GetHashCode()
+      {
+        if (m_str->IsNullOrEmpty(m_str)) {
+          return 0;
+        }
+        if (m_hashcode == 0) {
+          int localHashcode = 0;          
+          uint32_t prime = 31;
+
+          pin_ptr<const wchar_t> pin_value = PtrToStringChars( m_str );
+          for (int32_t i = 0; i < m_str->Length; i++) {
+            localHashcode = prime*localHashcode + Char::ToLower(pin_value[i]);
+          }    
+          m_hashcode  = localHashcode ^ 1234321;
+        }
+        return m_hashcode;
+      }
+
+      bool CacheableFileName::Equals(GemStone::GemFire::Cache::ICacheableKey^ other)
+      {
+        if (other == nullptr ||
+          other->ClassId != GemFireClassIds::CacheableFileName) {
+          return false;
+        }
+        return (m_str == static_cast<CacheableFileName^>(other)->m_str);
+      }
+
+      bool CacheableFileName::Equals(Object^ obj)
+      {
+        CacheableFileName^ otherFileName =
+          dynamic_cast<CacheableFileName^>(obj);
+
+        if (otherFileName != nullptr) {
+          return (m_str == otherFileName->m_str);
+        }
+        return false;
+      }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CacheableFileNameM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CacheableFileNameM.hpp b/geode-client-native/src/clicache/CacheableFileNameM.hpp
new file mode 100644
index 0000000..c998281
--- /dev/null
+++ b/geode-client-native/src/clicache/CacheableFileNameM.hpp
@@ -0,0 +1,159 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "ICacheableKey.hpp"
+
+
+using namespace System;
+
+using namespace GemStone::GemFire::Cache;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      /// <summary>
+      /// An immutable filename wrapper that can serve as a distributable
+      /// key object for caching as well as being a string value.
+      /// </summary>
+        [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class CacheableFileName : public ICacheableKey
+      {
+      public:
+        /// <summary>
+        /// Static function to create a new instance from the given string.
+        /// </summary>
+        inline static CacheableFileName^ Create(String^ value)
+        {
+          return (value != nullptr && value->Length > 0 ?
+            gcnew CacheableFileName(value) : nullptr);
+        }
+
+        /// <summary>
+        /// Static function to create a new instance from the
+        /// given character array.
+        /// </summary>
+        inline static CacheableFileName^ Create(array<Char>^ value)
+        {
+          return (value != nullptr && value->Length > 0 ?
+            gcnew CacheableFileName(value) : nullptr);
+        }
+
+        // Region: IGFSerializable Members
+
+        /// <summary>
+        /// Serializes this object.
+        /// </summary>
+        /// <param name="output">
+        /// the DataOutput object to use for serializing the object
+        /// </param>
+        virtual void ToData(DataOutput^ output);
+
+        /// <summary>
+        /// Deserialize this object, typical implementation should return
+        /// the 'this' pointer.
+        /// </summary>
+        /// <param name="input">
+        /// the DataInput stream to use for reading the object data
+        /// </param>
+        /// <returns>the deserialized object</returns>
+        virtual IGFSerializable^ FromData(DataInput^ input);
+
+        /// <summary>
+        /// return the size of this object in bytes
+        /// </summary>
+        virtual property uint32_t ObjectSize
+        {
+          virtual uint32_t get();
+        }
+
+        /// <summary>
+        /// Returns the classId of the instance being serialized.
+        /// This is used by deserialization to determine what instance
+        /// type to create and deserialize into.
+        /// </summary>
+        /// <returns>the classId</returns>
+        virtual property uint32_t ClassId
+        {
+          virtual uint32_t get();
+        }
+
+        /// <summary>
+        /// Return a string representation of the object.
+        /// This returns the same string as <c>Value</c> property.
+        /// </summary>
+        virtual String^ ToString() override
+        {
+          return m_str;
+        }
+
+        // End Region: IGFSerializable Members
+
+        // Region: ICacheableKey Members
+
+        /// <summary>
+        /// Return the hashcode for this key.
+        /// </summary>
+        virtual int32_t GetHashCode() override;
+
+        /// <summary>
+        /// Return true if this key matches other object.
+        /// </summary>
+        virtual bool Equals(ICacheableKey^ other);
+
+        /// <summary>
+        /// Return true if this key matches other object.
+        /// </summary>
+        virtual bool Equals(Object^ obj) override;
+
+        // End Region: ICacheableKey Members
+
+        /// <summary>
+        /// Gets the string value.
+        /// </summary>
+        property String^ Value
+        {
+          inline String^ get()
+          {
+            return m_str;
+          }
+        }
+
+      internal:
+        /// <summary>
+        /// Factory function to register this class.
+        /// </summary>
+        static IGFSerializable^ CreateDeserializable()
+        {
+          return gcnew CacheableFileName((String^)nullptr);
+        }
+
+      private:
+        /// <summary>
+        /// Allocates a new instance from the given string.
+        /// </summary>
+        inline CacheableFileName(String^ value)
+          : m_str(value == nullptr ? String::Empty : value),m_hashcode(0) { }
+
+        /// <summary>
+        /// Allocates a new instance copying from the given character array.
+        /// </summary>
+        inline CacheableFileName(array<Char>^ value)
+          : m_str(gcnew String(value)),m_hashcode(0) { }
+
+        String^ m_str;
+        int m_hashcode;
+      };
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CacheableHashMapM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CacheableHashMapM.cpp b/geode-client-native/src/clicache/CacheableHashMapM.cpp
new file mode 100644
index 0000000..212b86a
--- /dev/null
+++ b/geode-client-native/src/clicache/CacheableHashMapM.cpp
@@ -0,0 +1,68 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "CacheableHashMapM.hpp"
+#include "DataOutputM.hpp"
+#include "DataInputM.hpp"
+
+
+using namespace System;
+using namespace System::Collections::Generic;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      // Region: IGFSerializable Members
+
+      void CacheableHashMap::ToData(DataOutput^ output)
+      {
+        output->WriteArrayLen(this->Count);
+        for each (KeyValuePair<GemStone::GemFire::Cache::ICacheableKey^, IGFSerializable^> keyValPair in this) 
+        {
+          output->WriteObject(keyValPair.Key);
+          output->WriteObject(keyValPair.Value);
+        }        
+      }
+
+      IGFSerializable^ CacheableHashMap::FromData(DataInput^ input)
+      {
+        int len = input->ReadArrayLen();
+        if (len > 0)
+        {
+          for ( int i = 0; i < len; i++)
+          {
+            GemStone::GemFire::Cache::ICacheableKey^ key =
+              dynamic_cast<GemStone::GemFire::Cache::ICacheableKey^>(input->ReadObject());
+            IGFSerializable^ value = input->ReadObject();
+            this->Add(key, value);
+          }
+        }
+        return this;
+      }
+
+      uint32_t CacheableHashMap::ObjectSize::get()
+      {
+        uint32_t size = 0;
+        for each (KeyValuePair<GemStone::GemFire::Cache::ICacheableKey^, IGFSerializable^> keyValPair
+          in this) {
+          size += keyValPair.Key->ObjectSize;
+          if (keyValPair.Value != nullptr) {
+            size += keyValPair.Value->ObjectSize;
+          }
+        }
+        return size;
+      }
+
+      // End Region: IGFSerializable Members
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CacheableHashMapM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CacheableHashMapM.hpp b/geode-client-native/src/clicache/CacheableHashMapM.hpp
new file mode 100644
index 0000000..db29a01
--- /dev/null
+++ b/geode-client-native/src/clicache/CacheableHashMapM.hpp
@@ -0,0 +1,145 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "IGFSerializable.hpp"
+#include "ICacheableKey.hpp"
+#include "GemFireClassIdsM.hpp"
+
+
+using namespace System;
+using namespace System::Collections::Generic;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      /// <summary>
+      /// A mutable <c>ICacheableKey</c> to <c>IGFSerializable</c> hash map
+      /// that can serve as a distributable object for caching. This class
+      /// extends .NET generic <c>Dictionary</c> class.
+      /// </summary>
+        [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class CacheableHashMap
+        : public Dictionary<ICacheableKey^, IGFSerializable^>,
+        public IGFSerializable
+      {
+      public:
+        /// <summary>
+        /// Allocates a new empty instance.
+        /// </summary>
+        inline CacheableHashMap()
+          : Dictionary<ICacheableKey^, IGFSerializable^>()
+        { }
+
+        /// <summary>
+        /// Allocates a new instance copying from the given dictionary.
+        /// </summary>
+        /// <param name="dictionary">
+        /// The dictionary whose elements are copied to this HashMap.
+        /// </param>
+        inline CacheableHashMap(System::Collections::Generic::IDictionary<ICacheableKey^, IGFSerializable^>^
+          dictionary)
+          : Dictionary<ICacheableKey^, IGFSerializable^>(dictionary)
+        { }
+
+        /// <summary>
+        /// Allocates a new empty instance with given initial size.
+        /// </summary>
+        /// <param name="capacity">
+        /// The initial capacity of the HashMap.
+        /// </param>
+        inline CacheableHashMap(int32_t capacity)
+          : Dictionary<ICacheableKey^, IGFSerializable^>(capacity)
+        { }
+
+        /// <summary>
+        /// Static function to create a new empty instance.
+        /// </summary>
+        inline static CacheableHashMap^ Create()
+        {
+          return gcnew CacheableHashMap();
+        }
+
+        /// <summary>
+        /// Static function to create a new instance copying from the
+        /// given dictionary.
+        /// </summary>
+        inline static CacheableHashMap^ Create(
+          System::Collections::Generic::IDictionary<ICacheableKey^, IGFSerializable^>^ dictionary)
+        {
+          return gcnew CacheableHashMap(dictionary);
+        }
+
+        /// <summary>
+        /// Static function to create a new instance with given initial size.
+        /// </summary>
+        inline static CacheableHashMap^ Create(int32_t capacity)
+        {
+          return gcnew CacheableHashMap(capacity);
+        }
+
+        // Region: IGFSerializable Members
+
+        /// <summary>
+        /// Serializes this object.
+        /// </summary>
+        /// <param name="output">
+        /// the DataOutput object to use for serializing the object
+        /// </param>
+        virtual void ToData(DataOutput^ output);
+
+        /// <summary>
+        /// Deserialize this object, typical implementation should return
+        /// the 'this' pointer.
+        /// </summary>
+        /// <param name="input">
+        /// the DataInput stream to use for reading the object data
+        /// </param>
+        /// <returns>the deserialized object</returns>
+        virtual IGFSerializable^ FromData(DataInput^ input);
+
+        /// <summary>
+        /// return the size of this object in bytes
+        /// </summary>
+        virtual property uint32_t ObjectSize
+        {
+          virtual uint32_t get();
+        }
+
+        /// <summary>
+        /// Returns the classId of the instance being serialized.
+        /// This is used by deserialization to determine what instance
+        /// type to create and deserialize into.
+        /// </summary>
+        /// <returns>the classId</returns>
+        virtual property uint32_t ClassId
+        {
+          inline virtual uint32_t get()
+          {
+            return GemFireClassIds::CacheableHashMap;
+          }
+        }
+
+        // End Region: IGFSerializable Members
+
+        /// <summary>
+        /// Factory function to register this class.
+        /// </summary>
+        static IGFSerializable^ CreateDeserializable()
+        {
+          return gcnew CacheableHashMap();
+        }
+      };
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CacheableHashSetM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CacheableHashSetM.hpp b/geode-client-native/src/clicache/CacheableHashSetM.hpp
new file mode 100644
index 0000000..fd0b256
--- /dev/null
+++ b/geode-client-native/src/clicache/CacheableHashSetM.hpp
@@ -0,0 +1,551 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/CacheableBuiltins.hpp"
+#include "SerializableM.hpp"
+#include "ICacheableKey.hpp"
+
+using namespace System;
+using namespace System::Collections;
+using namespace System::Collections::Generic;
+
+//#pragma managed
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      namespace Internal
+      {
+        /// <summary>
+        /// A mutable <c>ICacheableKey</c> hash set wrapper that can serve as
+        /// a distributable object for caching.
+        /// </summary>
+          //[Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+        template <uint32_t TYPEID, typename HSTYPE>
+        public ref class CacheableHashSetType
+          : public Serializable,
+            public System::Collections::Generic::ICollection<ICacheableKey^>
+        {
+        public:
+
+        virtual void ToData(DataOutput^ output) override
+        {
+          output->WriteArrayLen(this->Count);
+
+          Internal::ManagedPtrWrap< gemfire::Serializable,
+              Internal::SBWrap<gemfire::Serializable> > nptr = NativePtr;
+          HSTYPE* set = static_cast<HSTYPE*>(nptr());
+          for (typename HSTYPE::Iterator iter = set->begin();
+              iter != set->end(); ++iter) {
+                GemStone::GemFire::Cache::ICacheableKey^ key = SafeUMKeyConvert((*iter).ptr());
+            output->WriteObject(key);
+          }
+        }
+
+        virtual IGFSerializable^ FromData(DataInput^ input) override
+        {
+          int len = input->ReadArrayLen();
+          if (len > 0)
+          {
+            for ( int i = 0; i < len; i++)
+            {
+              GemStone::GemFire::Cache::ICacheableKey^ key =
+                dynamic_cast<GemStone::GemFire::Cache::ICacheableKey^>(input->ReadObject());
+              this->Add(key);
+            }
+          }
+          return this;
+        }
+
+        virtual property uint32_t ObjectSize 
+        {
+          virtual uint32_t get() override
+          {
+            uint32_t size = 0;
+            for each (GemStone::GemFire::Cache::ICacheableKey^ key in this) {
+              if ( key != nullptr)
+                size += key->ObjectSize; 
+            }
+            return size;
+          }
+        }        
+
+          /// <summary>
+          /// Enumerator for <c>CacheableHashSet</c> class.
+          /// </summary>
+          ref class Enumerator sealed
+            : public Internal::UMWrap<typename HSTYPE::Iterator>,
+            public System::Collections::Generic::IEnumerator<ICacheableKey^>
+          {
+          public:                 
+
+            // Region: IEnumerator<ICacheableKey^> Members
+
+            /// <summary>
+            /// Gets the element in the collection at the current
+            /// position of the enumerator.
+            /// </summary>
+            /// <returns>
+            /// The element in the collection at the current position
+            /// of the enumerator.
+            /// </returns>
+            property ICacheableKey^ Current
+            {
+              virtual ICacheableKey^ get() =
+                System::Collections::Generic::IEnumerator<ICacheableKey^>::Current::get
+              {
+                if (!m_started) {
+                  throw gcnew System::InvalidOperationException(
+                    "Call MoveNext first.");
+                }
+                return SafeUMKeyConvert((*(*NativePtr())).ptr());
+              }
+            }
+
+            // End Region: IEnumerator<ICacheableKey^> Members
+
+            // Region: IEnumerator Members
+
+            /// <summary>
+            /// Advances the enumerator to the next element of the collection.
+            /// </summary>
+            /// <returns>
+            /// true if the enumerator was successfully advanced to the next
+            /// element; false if the enumerator has passed the end of
+            /// the collection.
+            /// </returns>
+            virtual bool MoveNext()
+            {
+              Internal::ManagedPtrWrap< typename HSTYPE::Iterator,
+                Internal::UMWrap<typename HSTYPE::Iterator> > nptr = NativePtr;
+              bool isEnd = nptr->isEnd();
+              if (!m_started) {
+                m_started = true;
+              }
+              else {
+                if (!isEnd) {
+                  (*nptr())++;
+                  isEnd = nptr->isEnd();
+                }
+              }
+              GC::KeepAlive(this);
+              return !isEnd;
+            }
+
+            /// <summary>
+            /// Sets the enumerator to its initial position, which is before
+            /// the first element in the collection.
+            /// </summary>
+            virtual void Reset()
+            {
+              NativePtr->reset();
+              m_started = false;
+            }
+
+            // End Region: IEnumerator Members
+
+          internal:
+            /// <summary>
+            /// Internal constructor to wrap a native object pointer
+            /// </summary>
+            /// <param name="nativeptr">The native object pointer</param>
+            inline Enumerator(typename HSTYPE::Iterator* nativeptr,
+                CacheableHashSetType<TYPEID, HSTYPE>^ set)
+              : Internal::UMWrap<typename HSTYPE::Iterator>(nativeptr, true), m_set(set) { }
+
+          internal: // private:
+            // Region: IEnumerator Members
+
+            /// <summary>
+            /// Gets the current element in the collection.
+            /// </summary>
+            /// <returns>
+            ///     The current element in the collection.
+            /// </returns>
+            /// <exception cref="System.InvalidOperationException">
+            /// The enumerator is positioned before the first element of
+            /// the collection or after the last element.
+            /// </exception>
+            property Object^ ICurrent
+            {
+              virtual Object^ get() sealed =
+                System::Collections::IEnumerator::Current::get
+              {
+                return Current;
+              }
+            }
+
+            // End Region: IEnumerator Members
+
+            bool m_started;
+
+            CacheableHashSetType<TYPEID, HSTYPE>^ m_set;
+          };
+
+          /// <summary>
+          /// Returns the classId of the instance being serialized.
+          /// This is used by deserialization to determine what instance
+          /// type to create and deserialize into.
+          /// </summary>
+          /// <returns>the classId</returns>
+          virtual property uint32_t ClassId
+          {
+            virtual uint32_t get() override
+            {
+              //return static_cast<HSTYPE*>(NativePtr())->classId() + 0x80000000;
+              return TYPEID;
+            }
+          }
+
+          /// <summary>
+          /// Get the largest possible size of the <c>CacheableHashSet</c>.
+          /// </summary>
+          property int32_t MaxSize
+          {
+            inline int32_t get()
+            {
+              return static_cast<HSTYPE*>(NativePtr())->max_size();
+            }
+          }
+
+          /// <summary>
+          /// True if the <c>CacheableHashSet</c>'s size is 0.
+          /// </summary>
+          property bool IsEmpty
+          {
+            inline bool get()
+            {
+              return static_cast<HSTYPE*>(NativePtr())->empty();
+            }
+          }
+
+          /// <summary>
+          /// Get the number of buckets used by the HashSet.
+          /// </summary>
+          property int32_t BucketCount
+          {
+            inline int32_t get()
+            {
+              return static_cast<HSTYPE*>(NativePtr())->bucket_count();
+            }
+          }
+
+          /// <summary>
+          /// Increases the bucket count to at least <c>size</c> elements.
+          /// </summary>
+          /// <param name="size">The new size of the HashSet.</param>
+          virtual void Resize(int32_t size) sealed
+          {
+            static_cast<HSTYPE*>(NativePtr())->resize(size);
+          }
+
+          /// <summary>
+          /// Swap the contents of this <c>CacheableHashSet</c>
+          /// with the given one.
+          /// </summary>
+          /// <param name="other">
+          /// The other CacheableHashSet to use for swapping.
+          /// </param>
+          virtual void Swap(CacheableHashSetType<TYPEID, HSTYPE>^ other) sealed
+          {
+            if (other != nullptr) {
+              static_cast<HSTYPE*>(NativePtr())->swap(
+                *static_cast<HSTYPE*>(other->NativePtr()));
+            }
+          }
+
+          // Region: ICollection<ICacheableKey^> Members
+
+          /// <summary>
+          /// Adds an item to the <c>CacheableHashSet</c>.
+          /// </summary>
+          /// <param name="item">
+          /// The object to add to the collection.
+          /// </param>
+          virtual void Add(ICacheableKey^ item)
+          {
+            _GF_MG_EXCEPTION_TRY
+
+              gemfire::CacheableKeyPtr nativeptr(SafeMKeyConvert(item));
+            static_cast<HSTYPE*>(NativePtr())->insert(nativeptr);
+
+            _GF_MG_EXCEPTION_CATCH_ALL
+          }
+
+          /// <summary>
+          /// Removes all items from the <c>CacheableHashSet</c>.
+          /// </summary>
+          virtual void Clear()
+          {
+            static_cast<HSTYPE*>(NativePtr())->clear();
+          }
+
+          /// <summary>
+          /// Determines whether the <c>CacheableHashSet</c> contains
+          /// a specific value.
+          /// </summary>
+          /// <param name="item">
+          /// The object to locate in the <c>CacheableHashSet</c>.
+          /// </param>
+          /// <returns>
+          /// true if item is found in the <c>CacheableHashSet</c>;
+          /// otherwise false.
+          /// </returns>
+          virtual bool Contains(ICacheableKey^ item)
+          {
+            return static_cast<HSTYPE*>(NativePtr())->contains(
+              gemfire::CacheableKeyPtr(SafeMKeyConvert(item)));
+          }
+
+          /// <summary>
+          /// Copies the elements of the <c>CacheableHashSet</c> to an
+          /// <c>System.Array</c>, starting at a particular
+          /// <c>System.Array</c> index.
+          /// </summary>
+          /// <param name="array">
+          /// The one-dimensional System.Array that is the destination of the
+          /// elements copied from <c>CacheableHashSet</c>. The
+          /// <c>System.Array</c> must have zero-based indexing.
+          /// </param>
+          /// <param name="arrayIndex">
+          /// The zero-based index in array at which copying begins.
+          /// </param>
+          /// <exception cref="IllegalArgumentException">
+          /// arrayIndex is less than 0 or array is null.
+          /// </exception>
+          /// <exception cref="OutOfRangeException">
+          /// arrayIndex is equal to or greater than the length of array.
+          /// -or-The number of elements in the source <c>CacheableHashSet</c>
+          /// is greater than the available space from arrayIndex to the end
+          /// of the destination array.
+          /// </exception>
+          virtual void CopyTo(array<ICacheableKey^>^ array, int32_t arrayIndex)
+          {
+            if (array == nullptr || arrayIndex < 0) {
+              throw gcnew IllegalArgumentException("CacheableHashSet.CopyTo():"
+                " array is null or array index is less than zero");
+            }
+            Internal::ManagedPtrWrap< gemfire::Serializable,
+              Internal::SBWrap<gemfire::Serializable> > nptr = NativePtr;
+            HSTYPE* set = static_cast<HSTYPE*>(nptr());
+            int32_t index = arrayIndex;
+
+            if (arrayIndex >= array->Length ||
+              array->Length < (arrayIndex + (int32_t)set->size())) {
+                throw gcnew OutOfRangeException("CacheableHashSet.CopyTo():"
+                  " array index is beyond the HashSet or length of given "
+                  "array is less than that required to copy all the "
+                  "elements from HashSet");
+            }
+            for (typename HSTYPE::Iterator iter = set->begin();
+              iter != set->end(); ++iter, ++index) {
+                array[index] = SafeUMKeyConvert((*iter).ptr());
+            }
+            GC::KeepAlive(this);
+          }
+
+          /// <summary>
+          /// Gets the number of elements contained in the
+          /// <c>CacheableHashSet</c>.
+          /// </summary>
+          virtual property int32_t Count
+          {
+            virtual int32_t get()
+            {
+              return static_cast<HSTYPE*>(NativePtr())->size();
+            }
+          }
+
+          /// <summary>
+          /// Removes the first occurrence of a specific object from the
+          /// <c>CacheableHashSet</c>.
+          /// </summary>
+          /// <param name="item">
+          /// The object to remove from the <c>CacheableHashSet</c>.
+          /// </param>
+          /// <returns>
+          /// true if item was successfully removed from the
+          /// <c>CacheableHashSet</c>; otherwise, false. This method also
+          /// returns false if item is not found in the original
+          /// <c>CacheableHashSet</c>.
+          /// </returns>
+          virtual bool Remove(ICacheableKey^ item)
+          {
+            return (static_cast<HSTYPE*>(NativePtr())->erase(
+              gemfire::CacheableKeyPtr(SafeMKeyConvert(item))) > 0);
+          }
+
+          /// <summary>
+          /// Gets a value indicating whether the collection is read-only.
+          /// </summary>
+          /// <returns>
+          /// always false for <c>CacheableHashSet</c>
+          /// </returns>
+          virtual property bool IsReadOnly
+          {
+            virtual bool get()
+            {
+              return false;
+            }
+          }
+
+          // End Region: ICollection<ICacheableKey^> Members
+
+          // Region: IEnumerable<ICacheableKey^> Members
+
+          /// <summary>
+          /// Returns an enumerator that iterates through the
+          /// <c>CacheableHashSet</c>.
+          /// </summary>
+          /// <returns>
+          /// A <c>System.Collections.Generic.IEnumerator</c> that
+          /// can be used to iterate through the <c>CacheableHashSet</c>.
+          /// </returns>
+          virtual System::Collections::Generic::IEnumerator<ICacheableKey^>^ GetEnumerator()
+          {
+            typename HSTYPE::Iterator* iter = new typename HSTYPE::Iterator(
+              static_cast<HSTYPE*>(NativePtr())->begin());
+
+            return gcnew Enumerator(iter, this);
+          }
+
+          // End Region: IEnumerable<ICacheableKey^> Members
+
+        internal:
+          /// <summary>
+          /// Factory function to register wrapper
+          /// </summary>
+          static IGFSerializable^ Create(gemfire::Serializable* obj)
+          {
+            return (obj != NULL ?
+              gcnew CacheableHashSetType<TYPEID,HSTYPE>(obj) : nullptr);
+          }
+
+        internal: //private:
+          // Region: IEnumerable Members
+
+          /// <summary>
+          /// Returns an enumerator that iterates through a collection.
+          /// </summary>
+          /// <returns>
+          /// An <c>System.Collections.IEnumerator</c> object that can be used
+          /// to iterate through the collection.
+          /// </returns>
+          virtual System::Collections::IEnumerator^ GetIEnumerator() sealed =
+            System::Collections::IEnumerable::GetEnumerator
+          {
+            return GetEnumerator();
+          }
+
+          // End Region: IEnumerable Members
+
+        protected:
+          /// <summary>
+          /// Private constructor to wrap a native object pointer
+          /// </summary>
+          /// <param name="nativeptr">The native object pointer</param>
+          inline CacheableHashSetType<TYPEID, HSTYPE>(gemfire::Serializable* nativeptr)
+            : Serializable(nativeptr) { }
+
+          /// <summary>
+          /// Allocates a new empty instance.
+          /// </summary>
+          inline CacheableHashSetType<TYPEID, HSTYPE>()
+            : Serializable(HSTYPE::createDeserializable())
+          { }
+
+          /// <summary>
+          /// Allocates a new empty instance with given initial size.
+          /// </summary>
+          /// <param name="size">The initial size of the HashSet.</param>
+          inline CacheableHashSetType<TYPEID,HSTYPE>(int32_t size)
+            : Serializable(HSTYPE::create(size).ptr())
+          { }
+        };
+      }
+
+#define _GFCLI_CACHEABLEHASHSET_DEF_(m, HSTYPE)                               \
+      public ref class m : public Internal::CacheableHashSetType<GemStone::GemFire::Cache::GemFireClassIds::m, HSTYPE>      \
+      {                                                                       \
+      public:                                                                 \
+        /** <summary>
+         *  Allocates a new empty instance.
+         *  </summary>
+         */                                                                   \
+        inline m()                                                            \
+           : Internal::CacheableHashSetType<GemStone::GemFire::Cache::GemFireClassIds::m, HSTYPE>() {}                      \
+                                                                              \
+        /** <summary>
+         *  Allocates a new instance with the given size.
+         *  </summary>
+         *  <param name="size">the intial size of the new instance</param>
+         */                                                                   \
+        inline m(int32_t size)                                                 \
+           : Internal::CacheableHashSetType<GemStone::GemFire::Cache::GemFireClassIds::m, HSTYPE>(size) {}                  \
+                                                                              \
+        /** <summary>
+         *  Static function to create a new empty instance.
+         *  </summary>
+         */                                                                   \
+        inline static m^ Create()                                             \
+        {                                                                     \
+          return gcnew m();                                                   \
+        }                                                                     \
+                                                                              \
+        /** <summary>
+         *  Static function to create a new instance with the given size.
+         *  </summary>
+         */                                                                   \
+        inline static m^ Create(int32_t size)                                  \
+        {                                                                     \
+          return gcnew m(size);                                               \
+        }                                                                     \
+                                                                              \
+        /* <summary>
+         * Factory function to register this class.
+         * </summary>
+         */                                                                   \
+        static IGFSerializable^ CreateDeserializable()                        \
+        {                                                                     \
+          return gcnew m();                                                   \
+        }                                                                     \
+                                                                              \
+      internal:                                                               \
+        static IGFSerializable^ Create(gemfire::Serializable* obj)            \
+        {                                                                     \
+          return gcnew m(obj);                                                \
+        }                                                                     \
+                                                                              \
+      internal: /* private: */                                                \
+        inline m(gemfire::Serializable* nativeptr)                            \
+          : Internal::CacheableHashSetType<GemStone::GemFire::Cache::GemFireClassIds::m, HSTYPE>(nativeptr) { }             \
+      };
+
+      /// <summary>
+      /// A mutable <c>ICacheableKey</c> hash set wrapper that can serve as
+      /// a distributable object for caching.
+      /// </summary>
+      _GFCLI_CACHEABLEHASHSET_DEF_(CacheableHashSet, gemfire::CacheableHashSet);
+
+      /// <summary>
+      /// A mutable <c>ICacheableKey</c> hash set wrapper that can serve as
+      /// a distributable object for caching. This is provided for compability
+      /// with java side though is functionally identical to
+      /// <c>CacheableHashSet</c> i.e. does not provide the linked semantics of
+      /// java <c>LinkedHashSet</c>.
+      /// </summary>
+      _GFCLI_CACHEABLEHASHSET_DEF_(CacheableLinkedHashSet, gemfire::CacheableLinkedHashSet);
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CacheableHashTableM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CacheableHashTableM.hpp b/geode-client-native/src/clicache/CacheableHashTableM.hpp
new file mode 100644
index 0000000..d41be2b
--- /dev/null
+++ b/geode-client-native/src/clicache/CacheableHashTableM.hpp
@@ -0,0 +1,103 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "CacheableHashMapM.hpp"
+
+
+using namespace System;
+using namespace System::Collections::Generic;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      /// <summary>
+      /// A mutable <c>ICacheableKey</c> to <c>IGFSerializable</c> hash table
+      /// that can serve as a distributable object for caching. This class
+      /// extends .NET generic <c>Dictionary</c> class.
+      /// </summary>
+        [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class CacheableHashTable
+        : public CacheableHashMap
+      {
+      public:
+
+        /// <summary>
+        /// Allocates a new empty instance.
+        /// </summary>
+        inline CacheableHashTable()
+          : CacheableHashMap()
+        { }
+
+        /// <summary>
+        /// Allocates a new instance copying from the given dictionary.
+        /// </summary>
+        /// <param name="dictionary">
+        /// The dictionary whose elements are copied to this HashTable.
+        /// </param>
+        inline CacheableHashTable(System::Collections::Generic::IDictionary<ICacheableKey^,
+          IGFSerializable^>^ dictionary)
+          : CacheableHashMap(dictionary)
+        { }
+
+        /// <summary>
+        /// Allocates a new empty instance with given initial size.
+        /// </summary>
+        /// <param name="capacity">
+        /// The initial capacity of the HashTable.
+        /// </param>
+        inline CacheableHashTable(int32_t capacity)
+          : CacheableHashMap(capacity)
+        { }
+
+
+        // Region: IGFSerializable Members
+
+        /// <summary>
+        /// Returns the classId of the instance being serialized.
+        /// This is used by deserialization to determine what instance
+        /// type to create and deserialize into.
+        /// </summary>
+        /// <returns>the classId</returns>
+        virtual property uint32_t ClassId
+        {
+          virtual uint32_t get() override
+          {
+            return GemFireClassIds::CacheableHashTable;
+          }
+        }
+
+        // End Region: IGFSerializable Members
+
+        /// <summary>
+        /// Factory function to register this class.
+        /// </summary>
+        static IGFSerializable^ CreateDeserializable()
+        {
+          return gcnew CacheableHashTable();
+        }
+
+      internal:
+
+        /// <summary>
+        /// Factory function to register this class.
+        /// </summary>
+        static IGFSerializable^ Create()
+        {
+          return gcnew CacheableHashTable();
+        }
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CacheableIdentityHashMapM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CacheableIdentityHashMapM.hpp b/geode-client-native/src/clicache/CacheableIdentityHashMapM.hpp
new file mode 100644
index 0000000..0cf078b
--- /dev/null
+++ b/geode-client-native/src/clicache/CacheableIdentityHashMapM.hpp
@@ -0,0 +1,119 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "CacheableHashMapM.hpp"
+#include "ICacheableKey.hpp"
+
+using namespace System;
+using namespace System::Collections::Generic;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      /// <summary>
+      /// A mutable <c>ICacheableKey</c> to <c>IGFSerializable</c> hash map
+      /// that can serve as a distributable object for caching. This class
+      /// extends .NET generic <c>Dictionary</c> class. This class is meant
+      /// as a means to interoperate with java server side
+      /// <c>IdentityHashMap</c> class objects but is intentionally not
+      /// intended to provide <c>java.util.IdentityHashMap</c> semantics.
+      /// </summary>
+        [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class CacheableIdentityHashMap
+        : public CacheableHashMap
+      {
+      public:
+        /// <summary>
+        /// Allocates a new empty instance.
+        /// </summary>
+        inline CacheableIdentityHashMap()
+          : CacheableHashMap()
+        { }
+
+        /// <summary>
+        /// Allocates a new instance copying from the given dictionary.
+        /// </summary>
+        /// <param name="dictionary">
+        /// The dictionary whose elements are copied to this HashMap.
+        /// </param>
+        inline CacheableIdentityHashMap(System::Collections::Generic::IDictionary<
+          ICacheableKey^, IGFSerializable^>^ dictionary)
+          : CacheableHashMap(dictionary)
+        { }
+
+        /// <summary>
+        /// Allocates a new empty instance with given initial size.
+        /// </summary>
+        /// <param name="capacity">
+        /// The initial capacity of the HashMap.
+        /// </param>
+        inline CacheableIdentityHashMap(int32_t capacity)
+          : CacheableHashMap(capacity)
+        { }
+
+        /// <summary>
+        /// Static function to create a new empty instance.
+        /// </summary>
+        inline static CacheableIdentityHashMap^ Create()
+        {
+          return gcnew CacheableIdentityHashMap();
+        }
+
+        /// <summary>
+        /// Static function to create a new instance copying from the
+        /// given dictionary.
+        /// </summary>
+        inline static CacheableIdentityHashMap^ Create(
+          System::Collections::Generic::IDictionary<ICacheableKey^, IGFSerializable^>^ dictionary)
+        {
+          return gcnew CacheableIdentityHashMap(dictionary);
+        }
+
+        /// <summary>
+        /// Static function to create a new instance with given initial size.
+        /// </summary>
+        inline static CacheableIdentityHashMap^ Create(int32_t capacity)
+        {
+          return gcnew CacheableIdentityHashMap(capacity);
+        }
+
+        // Region: IGFSerializable Members
+
+        /// <summary>
+        /// Returns the classId of the instance being serialized.
+        /// This is used by deserialization to determine what instance
+        /// type to create and deserialize into.
+        /// </summary>
+        /// <returns>the classId</returns>
+        virtual property uint32_t ClassId
+        {
+          virtual uint32_t get() override
+          {
+            return GemFireClassIds::CacheableIdentityHashMap;
+          }
+        }
+
+        // End Region: IGFSerializable Members
+
+        /// <summary>
+        /// Factory function to register this class.
+        /// </summary>
+        static IGFSerializable^ CreateDeserializable()
+        {
+          return gcnew CacheableIdentityHashMap();
+        }
+      };
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CacheableKeyM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CacheableKeyM.cpp b/geode-client-native/src/clicache/CacheableKeyM.cpp
new file mode 100644
index 0000000..28c4a8a
--- /dev/null
+++ b/geode-client-native/src/clicache/CacheableKeyM.cpp
@@ -0,0 +1,98 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "SerializableM.hpp"
+#include "CacheableKeyM.hpp"
+#include "CacheableStringM.hpp"
+#include "LogM.hpp"
+#include "CacheableBuiltinsM.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    { 
+      int32_t GemStone::GemFire::Cache::CacheableKey::GetHashCode()
+      {
+        return static_cast<gemfire::CacheableKey*>(NativePtr())->hashcode();
+      }
+
+      bool GemStone::GemFire::Cache::CacheableKey::Equals(GemStone::GemFire::Cache::ICacheableKey^ other)
+      {
+        if (other == nullptr || other->ClassId != ClassId) {
+          return false;
+        }
+        return static_cast<gemfire::CacheableKey*>(NativePtr())->operator==(
+          *static_cast<gemfire::CacheableKey*>(
+            ((GemStone::GemFire::Cache::CacheableKey^)other)->NativePtr()));
+      }
+
+      bool GemStone::GemFire::Cache::CacheableKey::Equals(Object^ obj)
+      {
+        GemStone::GemFire::Cache::CacheableKey^ otherKey =
+          dynamic_cast<GemStone::GemFire::Cache::CacheableKey^>(obj);
+
+        if (otherKey != nullptr) {
+          return static_cast<gemfire::CacheableKey*>(NativePtr())->operator==(
+            *static_cast<gemfire::CacheableKey*>(otherKey->NativePtr()));
+        }
+        return false;
+      }
+
+      GemStone::GemFire::Cache::CacheableKey::operator GemStone::GemFire::Cache::CacheableKey^ (Byte value)
+      {
+        return GemStone::GemFire::Cache::CacheableByte::Create(value);
+      }
+
+      GemStone::GemFire::Cache::CacheableKey::operator GemStone::GemFire::Cache::CacheableKey^ (bool value)
+      {
+        return GemStone::GemFire::Cache::CacheableBoolean::Create(value);
+      }
+
+      GemStone::GemFire::Cache::CacheableKey::operator GemStone::GemFire::Cache::CacheableKey^ (Char value)
+      {
+        return GemStone::GemFire::Cache::CacheableCharacter::Create(value);
+      }
+
+      GemStone::GemFire::Cache::CacheableKey::operator GemStone::GemFire::Cache::CacheableKey^ (Double value)
+      {
+        return GemStone::GemFire::Cache::CacheableDouble::Create(value);
+      }
+
+      GemStone::GemFire::Cache::CacheableKey::operator GemStone::GemFire::Cache::CacheableKey^ (Single value)
+      {
+        return GemStone::GemFire::Cache::CacheableFloat::Create(value);
+      }
+
+      GemStone::GemFire::Cache::CacheableKey::operator GemStone::GemFire::Cache::CacheableKey^ (int16_t value)
+      {
+        return GemStone::GemFire::Cache::CacheableInt16::Create(value);
+      }
+
+      GemStone::GemFire::Cache::CacheableKey::operator GemStone::GemFire::Cache::CacheableKey^ (int32_t value)
+      {
+        return GemStone::GemFire::Cache::CacheableInt32::Create(value);
+      }
+
+      GemStone::GemFire::Cache::CacheableKey::operator GemStone::GemFire::Cache::CacheableKey^ (int64_t value)
+      {
+        return GemStone::GemFire::Cache::CacheableInt64::Create(value);
+      }
+
+      GemStone::GemFire::Cache::CacheableKey::operator GemStone::GemFire::Cache::CacheableKey^ (String^ value)
+      {
+        return GemStone::GemFire::Cache::CacheableString::Create(value);
+      }
+    }
+  }
+}


[21/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/cclient/src/data_io.c
----------------------------------------------------------------------
diff --git a/geode-client-native/src/cclient/src/data_io.c b/geode-client-native/src/cclient/src/data_io.c
new file mode 100644
index 0000000..59d48bc
--- /dev/null
+++ b/geode-client-native/src/cclient/src/data_io.c
@@ -0,0 +1,312 @@
+#include "data_io.h"
+#include <stdio.h>
+/**
+ * Write an unsigned byte to the <code>DataOutput</code>.
+ *
+ * @param value the unsigned byte to be written
+ */
+inline void writeUnsigned(Buffer* buf, uint8_t value)
+{
+    ensureCapacity(buf,1);
+    writeNoCheck(buf, value);
+}
+
+/**
+ * Write a signed byte to the <code>DataOutput</code>.
+ *
+ * @param value the signed byte to be written
+ */
+inline void writeByte(Buffer* buf, int8_t value)
+{
+    writeUnsigned(buf, (uint8_t)value);
+}
+
+/**
+ * Read a signed byte from the <code>DataInput</code>.
+ *
+ * @param value output parameter to hold the signed byte read from stream
+ */
+inline void readByte(Buffer* buf, int8_t* value )
+{
+    //checkBufferSize(1);
+    *value = *(buf->m_buf++);
+}
+
+/**
+ *    * Read a 16-bit signed integer from the <code>DataInput</code>.
+ *       *
+ *          * @param value output parameter to hold the 16-bit signed integer
+ *             *   read from stream
+ *                */
+inline void readShort(Buffer* buf, int16_t* value )
+{
+//    checkBufferSize(2);
+    readUnsignedShort(buf, (uint16_t*)value );
+}
+
+
+/**
+ *    * Read a 16-bit unsigned integer from the <code>DataInput</code>.
+ *       *
+ *          * @param value output parameter to hold the 16-bit unsigned integer
+ *             *   read from stream
+ *                */
+inline void readUnsignedShort(Buffer* buf, uint16_t* value )
+{
+//    checkBufferSize(2);
+    uint16_t tmp = *(buf->m_buf++);
+    tmp = (tmp << 8) | *(buf->m_buf++);
+    *value = tmp;
+}
+
+
+/**
+ * Read a 32-bit signed integer from the <code>DataInput</code>.
+ *
+ * @param value output parameter to hold the 32-bit signed integer
+ *   read from stream
+ */
+inline void readInt(Buffer* buf, int32_t* value )
+{
+    //checkBufferSize(4);
+    readUnsignedInt(buf, (uint32_t*)value );
+}
+
+
+/**
+ * Read a 32-bit unsigned integer from the <code>DataInput</code>.
+ *
+ * @param value output parameter to hold the 32-bit unsigned integer
+ *   read from stream
+ */
+inline void readUnsignedInt(Buffer* buf, uint32_t* value )
+{
+    //checkBufferSize(4);
+    uint32_t tmp = *(buf->m_buf++);
+    tmp = (tmp << 8) | *(buf->m_buf++);
+    tmp = (tmp << 8) | *(buf->m_buf++);
+    tmp = (tmp << 8) | *(buf->m_buf++);
+    *value = tmp;
+}
+
+
+
+
+/**
+ * Write an array of unsigned bytes to the <code>DataOutput</code>.
+ *
+ * @param value the array of unsigned bytes to be written
+ * @param len the number of bytes from the start of array to be written
+ */
+inline void writeUnsignedBytes(Buffer* buf,  const uint8_t* bytes, int32_t len )
+{
+    if (len >= 0) {
+        ensureCapacity(buf, len + 5 );
+        writeArrayLen(buf,  bytes==NULL ? 0 : len ); // length of bytes...
+        if ( len > 0 && bytes != NULL) {
+            memcpy( buf->m_buf, bytes, len );
+            buf->m_buf += len;
+        }
+    } else {
+        writeByte(buf, (int8_t) -1 );
+    }
+}
+
+/**
+ * Write an array of signed bytes to the <code>DataOutput</code>.
+ *
+ * @param value the array of signed bytes to be written
+ * @param len the number of bytes from the start of array to be written
+ */
+inline void writeBytes(Buffer* buf,  const int8_t* bytes, int32_t len )
+{
+   // printf("bytes length: %d\n", len);
+    writeUnsignedBytes(buf, (const uint8_t*)bytes, len );
+}
+/**
+ * Write a 32-bit unsigned integer value to the <code>DataOutput</code>.
+ *
+ * @param value the 32-bit unsigned integer value to be written
+ */
+inline void writeUnsignedInt( Buffer* buf,uint32_t value )
+{
+    ensureCapacity(buf, 4 );
+    *(buf->m_buf++) = (uint8_t)(value >> 24);
+    *(buf->m_buf++) = (uint8_t)(value >> 16);
+    *(buf->m_buf++) = (uint8_t)(value >> 8);
+    *(buf->m_buf++) = (uint8_t)value;
+}
+
+/**
+ * Write a 32-bit signed integer value to the <code>DataOutput</code>.
+ *
+ * @param value the 32-bit signed integer value to be written
+ */
+inline void writeInt(Buffer* buf,  int32_t value )
+{
+    writeUnsignedInt(buf, (uint32_t)value );
+}
+
+/**
+ * Write a 64-bit unsigned integer value to the <code>DataOutput</code>.
+ *
+ * @param value the 64-bit unsigned integer value to be written
+ */
+inline void writeUnsignedLong( Buffer* buf,uint64_t value )
+{
+    ensureCapacity(buf, 8 );
+    *(buf->m_buf++) = (uint8_t)(value >> 56);
+    *(buf->m_buf++) = (uint8_t)(value >> 48);
+    *(buf->m_buf++) = (uint8_t)(value >> 40);
+    *(buf->m_buf++) = (uint8_t)(value >> 32);
+    *(buf->m_buf++) = (uint8_t)(value >> 24);
+    *(buf->m_buf++) = (uint8_t)(value >> 16);
+    *(buf->m_buf++) = (uint8_t)(value >> 8);
+    *(buf->m_buf++) = (uint8_t)value;
+}
+
+/**
+ * Write a 64-bit signed integer value to the <code>DataOutput</code>.
+ *
+ * @param value the 64-bit signed integer value to be written
+ */
+inline void writeLong(Buffer* buf,  int64_t value )
+{
+    writeUnsignedLong(buf, (uint64_t)value );
+}
+
+/**
+ * Write a 16-bit unsigned integer value to the <code>DataOutput</code>.
+ *
+ * @param value the 16-bit unsigned integer value to be written
+ */
+inline void writeUnsignedShort( Buffer* buf,uint16_t value )
+{
+    ensureCapacity(buf, 2 );
+    *(buf->m_buf++) = (uint8_t)(value >> 8);
+    *(buf->m_buf++) = (uint8_t)value;
+}
+
+/**
+ * Write a 16-bit signed integer value to the <code>DataOutput</code>.
+ *
+ * @param value the 16-bit signed integer value to be written
+ */
+inline void writeShort(Buffer* buf,  int16_t value )
+{
+    writeUnsignedShort(buf, (uint16_t)value );
+}
+
+/**
+ * Write a 32-bit signed integer array length value to the
+ * <code>DataOutput</code> in a manner compatible with java server's
+ * <code>DataSerializer.writeArrayLength</code>.
+ *
+ * @param value the 32-bit signed integer array length to be written
+ */
+inline void writeArrayLen(Buffer* buf,  int32_t len )
+{
+    if (len == -1) {
+        writeByte(buf, (int8_t) -1);
+    } else if (len <= 252) { // 252 is java's ((byte)-4 && 0xFF)
+        writeUnsigned(buf, (uint8_t)len);
+    } else if (len <= 0xFFFF) {
+        writeByte(buf, (int8_t) -2);
+        writeUnsignedShort(buf, (uint16_t)len);
+    } else {
+        writeByte(buf, (int8_t) -3);
+        writeInt(buf, len);
+    }
+}
+
+/**
+ * Advance the buffer cursor by the given offset.
+ *
+ * @param offset the offset by which to advance the cursor
+ */
+void advanceCursor(Buffer* buf, uint32_t offset)
+{
+    buf->m_buf += offset;
+}
+
+/**
+ * Rewind the buffer cursor by the given offset.
+ *
+ * @param offset the offset by which to rewind the cursor
+ */
+void rewindCursor(Buffer* buf, uint32_t offset)
+{
+    buf->m_buf -= offset;
+}
+
+/**
+ * Get the length of current data in the internal buffer of
+ * <code>DataOutput</code>.
+ */
+inline uint32_t getBufferLength(Buffer* buf) {
+    return (uint32_t)( buf->m_buf - buf->m_bytes );
+}
+
+inline uint8_t* getBuffer(Buffer* buf)
+{
+    return buf->m_bytes;
+}
+
+inline uint8_t* getCursor(Buffer* buf) {
+    return buf->m_buf;
+}
+
+// make sure there is room left for the requested size item.
+inline void ensureCapacity(Buffer* buf,  uint32_t size )
+{
+    uint32_t offset = (uint32_t)( buf->m_buf - buf->m_bytes );
+    if ( (buf->m_size - offset) < size ) {
+        uint32_t newSize = buf->m_size * 2 + (8192 * (size / 8192));
+        buf->m_size = newSize;
+        GF_RESIZE( buf->m_bytes, uint8_t, buf->m_size );
+        buf->m_buf = buf->m_bytes + offset;
+    }
+}
+
+inline void writeNoCheck(Buffer* buf, uint8_t value)
+{
+    //uint32_t offset = (uint32_t)( buf->m_buf - buf->m_bytes );
+    //printf("%d:%d\n",offset, buf->m_size);
+    *(buf->m_buf++) = value;
+}
+
+
+inline void initBuf(Buffer* buf)
+{
+    GF_ALLOC( buf->m_bytes, uint8_t, 8192 );
+    buf->m_buf = buf->m_bytes;
+    buf->m_size = 8192;
+}
+
+inline void clearBuf(Buffer* buf)
+{
+    GF_FREE(buf->m_bytes);
+    buf->m_bytes = NULL;
+    buf->m_buf = NULL;
+    buf->m_size = 0;
+}
+
+inline void writeASCII(Buffer* buf, const char* value)
+{
+    if ( value != NULL ) {
+      uint32_t length = (uint32_t)strlen( value );
+      uint16_t len = (uint16_t)( length > 0xFFFF ? 0xFFFF : length );
+      writeUnsignedShort(buf, len);
+      writeBytesOnly(buf, (int8_t*)value, len ); // K64
+    } else {
+      writeShort(buf, (uint16_t)0);
+    }
+}
+
+inline void writeBytesOnly(Buffer* buf,  const int8_t* bytes, int32_t len)
+{
+    ensureCapacity(buf, len);
+    memcpy(buf->m_buf, bytes, len);
+    buf->m_buf += len;
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/cclient/src/data_io.h
----------------------------------------------------------------------
diff --git a/geode-client-native/src/cclient/src/data_io.h b/geode-client-native/src/cclient/src/data_io.h
new file mode 100644
index 0000000..0e07320
--- /dev/null
+++ b/geode-client-native/src/cclient/src/data_io.h
@@ -0,0 +1,80 @@
+//=========================================================================
+// Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+// This product is protected by U.S. and international copyright
+// and intellectual property laws. Pivotal products are covered by
+// more patents listed at http://www.pivotal.io/patents.
+//========================================================================
+
+#ifndef __C_GEMFIRE_DATAOUTPUT_H__
+#define __C_GEMFIRE_DATAOUTPUT_H__
+
+#include <string.h>
+#include <stdlib.h>
+#include <stdint.h>
+
+/**
+ * @file
+ */
+
+/**
+ * C style memory allocation that throws OutOfMemoryException
+ * if it fails
+ */
+#define GF_ALLOC(v,t,s) \
+{ \
+    v = (t*)malloc((s) * sizeof(t)); \
+}
+
+/**
+ * C style memory re-allocation that throws OutOfMemoryException
+ * if it fails
+ */
+#define GF_RESIZE(v,t,s) \
+{ \
+    v = (t*)realloc(v, (s) * sizeof(t)); \
+}
+
+#define GF_FREE(v) free(v)
+
+typedef struct {
+  // memory m_buffer to encode to.
+  uint8_t* m_bytes;
+  // cursor.
+  uint8_t* m_buf;
+  // size of m_bytes.
+  uint32_t m_size;
+} Buffer;
+
+inline void writeUnsigned(Buffer* buf, uint8_t value);
+inline void writeByte(Buffer* buf, int8_t value);
+inline void writeUnsignedBytes(Buffer* buf,  const uint8_t* bytes, int32_t len );
+inline void writeBytes(Buffer* buf,  const int8_t* bytes, int32_t len );
+inline void writeBytesOnly(Buffer* buf,  const int8_t* bytes, int32_t len );
+inline void writeUnsignedInt( Buffer* buf,uint32_t value );
+inline void writeInt(Buffer* buf,  int32_t value );
+inline void writeUnsignedLong( Buffer* buf,uint64_t value );
+inline void writeLong(Buffer* buf,  int64_t value );
+inline void writeUnsignedShort( Buffer* buf,uint16_t value );
+inline void writeShort(Buffer* buf,  int16_t value );
+inline void writeArrayLen(Buffer* buf,  int32_t len );
+inline void writeASCII(Buffer* buf, const char* value);
+inline void writeNoCheck(Buffer* buf, uint8_t value);
+
+inline void readByte(Buffer* buf, int8_t* value );
+inline void readShort(Buffer* buf, int16_t* value );
+inline void readUnsignedShort(Buffer* buf, uint16_t* value );
+inline void readInt(Buffer* buf, int32_t* value );
+inline void readUnsignedInt(Buffer* buf, uint32_t* value );
+
+void advanceCursor(Buffer* buf, uint32_t offset);
+void rewindCursor(Buffer* buf, uint32_t offset);
+
+inline void initBuf(Buffer* buf);
+inline void clearBuf(Buffer* buf);
+inline uint32_t getBufferLength(Buffer* buf) ;
+inline uint8_t* getBuffer(Buffer* buf) ;
+inline uint8_t* getCursor(Buffer* buf) ;
+
+inline void ensureCapacity(Buffer* buf,  uint32_t size );
+
+#endif // __C_GEMFIRE_DATAOUTPUT_H__

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/cclient/src/gf_client.c
----------------------------------------------------------------------
diff --git a/geode-client-native/src/cclient/src/gf_client.c b/geode-client-native/src/cclient/src/gf_client.c
new file mode 100644
index 0000000..179dc5c
--- /dev/null
+++ b/geode-client-native/src/cclient/src/gf_client.c
@@ -0,0 +1,805 @@
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <netdb.h>
+#include <netinet/in.h>
+#include <sys/socket.h>
+#include <arpa/inet.h>
+#include <errno.h>
+#include<pthread.h>
+#include "data_io.h"
+#include "gf_client.h"
+
+
+#define RECIEVE_DATA(context, request, reply, len, resultcode) \
+    recieveData(context, &reply, len, resultcode);\
+if(*resultcode != NO_ERROR)\
+{\
+    clearBuf(&request);\
+    clearBuf(&reply);\
+    return;\
+}
+
+#define SEND_DATA(context, request, reply, resultcode) \
+    sendData(context, getBuffer(&request), getBufferLength(&request), resultcode);\
+if(*resultcode != NO_ERROR)\
+{\
+    clearBuf(&request);\
+    clearBuf(&reply);\
+    return;\
+}
+
+
+#define CLIENT_TO_SERVER 100
+#define REPLY_OK          59
+#define SECURITY_CREDENTIALS_NONE      0
+#define VERSION_ORDINAL_651   7 // since NC 3510
+#define CONFLATEBYTE 0
+#define ADDRSIZE 4
+#define DCPORT 12334
+#define VMKIND 13
+#define ROLEARRLENGTH 0
+#define REGION_NAME "/ROOT-REGION"
+#define TIMEOUT 5
+#define RAND_STRING_LEN 10
+const int32_t HEADER_LENGTH = 17;
+static int32_t synch_counter = 2;
+//static int32_t transactioID = 0;
+
+
+#define MAXBUF          1024
+
+enum TypeIdValues {
+    // Do not use IDs 5 and 6 which are used by .NET
+    // ManagedObject and ManagedObjectXml. If those are
+    // required then change those in GemfireTypeIdsM.hpp
+
+    // keep the following in alphabetical order please.
+    Properties = 11,
+    BooleanArray = 26,
+    CharArray = 27,
+    RegionAttributes = 30, // because there's no equivalence in java
+    CacheableUndefined = 31,
+    Struct = 32,
+    NullObj = 41,
+    CacheableString = 42,
+    CacheableBytes = 46,
+    CacheableInt16Array = 47,
+    CacheableInt32Array = 48,
+    CacheableInt64Array = 49,
+    CacheableFloatArray = 50,
+    CacheableDoubleArray = 51,
+    CacheableObjectArray = 52,
+    CacheableBoolean = 53,
+    CacheableWideChar = 54,
+    CacheableByte = 55,
+    CacheableInt16 = 56,
+    CacheableInt32 = 57,
+    CacheableInt64 = 58,
+    CacheableFloat = 59,
+    CacheableDouble = 60,
+    CacheableDate = 61,
+    CacheableFileName = 63,
+    CacheableStringArray = 64,
+    CacheableArrayList = 65,
+    CacheableHashSet = 66,
+    CacheableHashMap = 67,
+    CacheableTimeUnit = 68,
+    CacheableNullString = 69,
+    CacheableHashTable = 70,
+    CacheableVector = 71,
+    CacheableIdentityHashMap = 72,
+    CacheableLinkedHashSet = 73,
+    CacheableStack = 74,
+    CacheableASCIIString = 87,
+    CacheableASCIIStringHuge = 88,
+    CacheableStringHuge = 89
+};
+enum IdValues {
+    // keep the following in alphabetical order please.
+    ObjectTypeImpl = -61,
+    StructTypeImpl = -60,
+    CollectionTypeImpl = -59,
+    FixedIDDefault = 0,
+    FixedIDByte = 1,
+    FixedIDShort = 2,
+    FixedIDInt = 3,
+    FixedIDNone = 4,
+    CacheableToken = 14, // because there's no equivalence in java
+    CacheableObjectPartList = 25,
+    EventId = 36,
+    InterestResultPolicy = 37,
+    ClientProxyMembershipId = 38,
+    CacheableUserData4 = 37,
+    CacheableUserData2 = 38,
+    CacheableUserData = 39,
+    CacheableUserClass = 40,
+    Class = 43,
+    JavaSerializable = 44,
+    DataSerializable = 45,
+    InternalDistributedMember = 92,
+    EntryEventImpl = 105,
+    RegionEventImpl = 108,
+    ClientHealthStats = -126,
+    GatewayEventCallbackArgument = -56, // 0xC8
+    ClientConnectionRequest = -53,
+    ClientConnectionResponse = -50,
+    QueueConnectionRequest = -52,
+    QueueConnectionResponse = -49,
+    LocatorListRequest = -54,
+    LocatorListResponse = -51,
+    GetAllServersRequest = -43,
+    GetAllServersResponse = -42,
+    ClientReplacementRequest= -48
+};
+typedef enum {
+    /* Server couldn't read message; handle it like a server side
+       exception that needs retries */
+    INVALID = -1,
+    REQUEST = 0,
+    RESPONSE /* 1 */,
+    EXCEPTION /* 2 */,
+    REQUEST_DATA_ERROR /* 3 */,
+    DATA_NOT_FOUND_ERROR /* 4 Not in use */,
+    PING /* 5 */,
+    REPLY /* 6 */,
+    PUT /* 7 */,
+    PUT_DATA_ERROR /* 8 */,
+    DESTROY /* 9 */,
+    DESTROY_DATA_ERROR /* 10 */,
+    DESTROY_REGION /* 11 */,
+    DESTROY_REGION_DATA_ERROR /* 12 */,
+    CLIENT_NOTIFICATION /* 13 */,
+    UPDATE_CLIENT_NOTIFICATION /* 14 */,
+    LOCAL_INVALIDATE /* 15 */,
+    LOCAL_DESTROY /* 16 */,
+    LOCAL_DESTROY_REGION /* 17 */,
+    CLOSE_CONNECTION /* 18 */,
+    PROCESS_BATCH /* 19 */,
+    REGISTER_INTEREST /* 20 */,
+    REGISTER_INTEREST_DATA_ERROR /* 21 */,
+    UNREGISTER_INTEREST /* 22 */,
+    UNREGISTER_INTEREST_DATA_ERROR /* 23 */,
+    REGISTER_INTEREST_LIST /* 24 */,
+    UNREGISTER_INTEREST_LIST /* 25 */,
+    UNKNOWN_MESSAGE_TYPE_ERROR /* 26 */,
+    LOCAL_CREATE /* 27 */,
+    LOCAL_UPDATE /* 28 */,
+    CREATE_REGION /* 29 */,
+    CREATE_REGION_DATA_ERROR /* 30 */,
+    MAKE_PRIMARY /* 31 */,
+    RESPONSE_FROM_PRIMARY /* 32 */,
+    RESPONSE_FROM_SECONDARY /* 33 */,
+    QUERY /* 34 */,
+    QUERY_DATA_ERROR /* 35 */,
+    CLEAR_REGION /* 36 */,
+    CLEAR_REGION_DATA_ERROR /* 37 */,
+    CONTAINS_KEY /* 38 */,
+    CONTAINS_KEY_DATA_ERROR /* 39 */,
+    KEY_SET /* 40 */,
+    KEY_SET_DATA_ERROR /* 41 */,
+    EXECUTECQ_MSG_TYPE /* 42 */,
+    EXECUTECQ_WITH_IR_MSG_TYPE /*43 */,
+    STOPCQ_MSG_TYPE /*44*/,
+    CLOSECQ_MSG_TYPE /*45 */,
+    CLOSECLIENTCQS_MSG_TYPE /*46*/,
+    CQDATAERROR_MSG_TYPE /*47 */,
+    GETCQSTATS_MSG_TYPE /*48 */,
+    MONITORCQ_MSG_TYPE /*49 */,
+    CQ_EXCEPTION_TYPE /*50 */,
+    REGISTER_INSTANTIATORS = 51 /* 51 */,
+    PERIODIC_ACK = 52 /* 52 */,
+    CLIENT_READY /* 53 */,
+    CLIENT_MARKER /* 54 */,
+    INVALIDATE_REGION /* 55 */,
+    PUTALL /* 56 */,
+    GET_ALL = 57 /* 57 */,
+    GET_ALL_DATA_ERROR /* 58 */,
+    EXECUTE_REGION_FUNCTION = 59 /* 59 */,
+    EXECUTE_REGION_FUNCTION_RESULT /* 60 */,
+    EXECUTE_REGION_FUNCTION_ERROR /* 61 */,
+    EXECUTE_FUNCTION /* 62 */,
+    EXECUTE_FUNCTION_RESULT /* 63 */,
+    EXECUTE_FUNCTION_ERROR /* 64 */,
+    CLIENT_REGISTER_INTEREST = 65 /* 65 */,
+    CLIENT_UNREGISTER_INTEREST = 66,
+    REGISTER_DATASERIALIZERS = 67,
+    REQUEST_EVENT_VALUE = 68,
+    REQUEST_EVENT_VALUE_ERROR = 69, /*69*/
+    PUT_DELTA_ERROR = 70, /*70*/
+    GET_CLIENT_PR_METADATA = 71, /*71*/
+    RESPONSE_CLIENT_PR_METADATA = 72, /*72*/
+    GET_CLIENT_PARTITION_ATTRIBUTES = 73, /*73*/
+    RESPONSE_CLIENT_PARTITION_ATTRIBUTES =74, /*74*/
+    GET_CLIENT_PR_METADATA_ERROR = 75, /*75*/
+    GET_CLIENT_PARTITION_ATTRIBUTES_ERROR = 76, /*76*/
+    USER_CREDENTIAL_MESSAGE = 77,
+    REMOVE_USER_AUTH = 78, 
+    QUERY_WITH_PARAMETERS = 80
+
+} MsgType;
+/*
+int32_t incTransactionID()
+{
+    return 1;//transactioID++;
+}
+*/
+int64_t getAndIncEid(CONTEXT* context)
+{
+    return context->eidSeq++;
+}
+
+void printData(uint8_t* buf, int32_t len)
+{
+    int32_t i;
+    printf("\n");
+    for(i = 0; i < len; i++)
+    {
+        printf("%d ", buf[i]);
+    }
+    printf("\n");
+}
+
+void recieveData(CONTEXT* context, Buffer* buf, uint32_t len, int32_t* resultcode)
+{
+    time_t startTime = time(NULL); 
+    uint32_t origLen = len;
+
+    while(len > 0 && (time(NULL) - startTime) < TIMEOUT )
+    {
+        int8_t buffer[MAXBUF];
+        bzero(buffer, MAXBUF);
+        int32_t recLen = recv(context->sockfd, buffer, len > MAXBUF?MAXBUF:len, 0);
+        if(recLen > 0)
+        {
+            len -= recLen;
+            writeBytesOnly(buf, buffer, recLen);
+        } else if(recLen == 0)
+        {
+            *resultcode = CONNECTION_ERROR;
+            //printf("closed connection");
+            return;
+        }
+    }
+
+    //printf("recieve");
+    //printData(getBuffer(buf), getBufferLength(buf));
+
+    if(len == 0)
+        rewindCursor(buf, origLen);
+    *resultcode =  (len > 0)?CONNECTION_ERROR:NO_ERROR;
+}
+
+
+
+void sendData(CONTEXT* context, uint8_t* buf, int32_t len, int32_t* resultcode)
+{
+    time_t startTime = time(NULL); 
+    uint32_t sentLen = 0;
+    //printf("send[%d]", len);
+    //printData(buf, len);
+    while(len > 0 && (time(NULL) - startTime) < TIMEOUT )
+    {
+        int32_t sendLen = send(context->sockfd, (buf + sentLen), len, 0);
+        //printf("sent %d bytes\n", sendLen);
+        if(sendLen > 0)
+        {
+            len -= sendLen;
+            sentLen += sendLen;
+        } else if(sendLen == 0)
+        {
+            *resultcode = CONNECTION_ERROR;
+            //printf("closed connection");
+            return;
+        }
+
+    }
+
+    *resultcode = (len > 0)?CONNECTION_ERROR:NO_ERROR;
+}
+
+CONTEXT* createContext(char* host, char* port)
+{
+
+    struct addrinfo hints;
+    struct addrinfo *result, *rp;
+    int sfd, s;
+
+    /* Obtain address(es) matching host/port */
+
+    memset(&hints, 0, sizeof(struct addrinfo));
+    hints.ai_family = AF_UNSPEC;
+    hints.ai_socktype = SOCK_STREAM;
+    hints.ai_flags = 0;
+    hints.ai_protocol = 0;
+
+    s = getaddrinfo(host, port, &hints, &result);
+    if (s != 0) {
+        return NULL;
+    }
+
+    /* getaddrinfo() returns a list of address structures.
+       Try each address until we successfully connect(2).
+       If socket(2) (or connect(2)) fails, we (close the socket
+       and) try the next address. */
+
+    for (rp = result; rp != NULL; rp = rp->ai_next) {
+        sfd = socket(rp->ai_family, rp->ai_socktype,
+                rp->ai_protocol);
+        struct timeval tv;
+        int32_t timeout=1000;
+
+        tv.tv_sec = timeout / 1000 ;
+        tv.tv_usec = ( timeout % 1000) * 1000  ;
+
+        setsockopt (sfd, SOL_SOCKET, SO_RCVTIMEO, (char 
+                    *)&tv, sizeof tv);
+        if (sfd == -1)
+            continue;
+
+        if (connect(sfd, rp->ai_addr, rp->ai_addrlen) != -1)
+            break;                  /* Success */
+
+        close(sfd);
+    }
+
+    if (rp == NULL) {               /* No address succeeded */
+        //fprintf(stderr, "Could not connect\n");
+        //exit(EXIT_FAILURE);
+        return NULL;
+    }
+
+    CONTEXT* context = (CONTEXT*)malloc(sizeof(CONTEXT));
+    context->sockfd = sfd;
+    context->eidSeq = 0;
+
+    return context;
+}
+
+void createRandString(char *randString)
+{
+    const char selectChars[] =
+        "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_";
+    const uint32_t numChars = (sizeof(selectChars) / sizeof(char)) - 1;
+    strcpy(randString, "GFNative_");
+    uint32_t startIndex = strlen(randString);
+    uint32_t seed = getpid() + time(NULL);
+    srand(seed);
+    uint32_t index;
+    for (index = 0; index < RAND_STRING_LEN; ++index) {
+        randString[startIndex + index] = selectChars[rand() % numChars];
+    }
+    randString[startIndex + RAND_STRING_LEN] = '\0';
+}
+
+void writeClientProxyMembershipId(Buffer* buf)
+{
+    struct hostent *host;     /* host information */
+    //struct in_addr h_addr;    /* internet address */
+    char hostName[1024];
+    gethostname(hostName, 1023);
+    host = gethostbyname(hostName);
+    char randString[1024];
+    createRandString(randString);
+
+    Buffer memId;
+    initBuf(&memId);
+
+    writeByte(&memId, (int8_t)FixedIDByte);
+    writeByte(&memId, (int8_t)InternalDistributedMember);
+    writeArrayLen(&memId, ADDRSIZE);
+    writeInt(&memId, (int32_t)(*(host->h_addr_list[0])));
+    //m_memID.writeInt((int32_t)hostPort);
+    writeInt(&memId, (int32_t)synch_counter);
+    writeByte(&memId, (int8_t)CacheableASCIIString);
+    writeASCII(&memId, host->h_name  );
+    writeByte(&memId, (int8_t)0); // splitbrain flags
+
+    writeInt(&memId, (int32_t)DCPORT);
+
+    writeInt(&memId, (int32_t)getpid());
+    writeByte(&memId, (int8_t)VMKIND);
+    writeArrayLen(&memId, ROLEARRLENGTH);
+    writeByte(&memId, (int8_t)CacheableASCIIString);
+    writeASCII(&memId, "default_GemfireDS");
+    writeByte(&memId, (int8_t)CacheableASCIIString);
+    writeASCII(&memId, randString);
+    writeByte(&memId, (int8_t)CacheableASCIIString);
+    writeASCII(&memId, "");
+    writeInt(&memId, (int32_t)300);
+    writeUnsignedBytes(buf, getBuffer(&memId), getBufferLength(&memId));
+
+
+    clearBuf(&memId);
+}
+
+void doHandshake(CONTEXT* context, int32_t* resultcode)
+{
+    Buffer request;
+    initBuf(&request);
+    Buffer reply;
+    initBuf(&reply);
+    *resultcode = NO_ERROR;
+
+    writeByte(&request, (int8_t)CLIENT_TO_SERVER );
+    writeByte(&request, (int8_t)VERSION_ORDINAL_651);
+    writeByte(&request, (int8_t)REPLY_OK);
+    writeInt(&request, (int32_t)0x7fffffff - 10000 );
+    // Write header for byte FixedID since GFE 5.7
+    writeByte(&request, (int8_t)FixedIDByte);
+    //Writing byte for ClientProxyMembershipID class id=38 as registered on the java server.
+    writeByte(&request, (int8_t)ClientProxyMembershipId);
+    /* calc memId */
+    writeClientProxyMembershipId(&request);
+    // writeBytes(&request, (int8_t *)memIdBuffer, memIdBufferLength);
+    writeInt(&request,(int32_t)1);
+    writeByte(&request, (int8_t)CONFLATEBYTE);
+    writeUnsigned(&request, (uint8_t)SECURITY_CREDENTIALS_NONE);
+
+    SEND_DATA(context, request, reply, resultcode)
+
+        //sendData(context, getBuffer(&buf), getBufferLength(&buf));
+        /*---Get "Hello?"---*/
+        //int recLen = 1;
+        //    recieveData(context, &reply, 7);
+        RECIEVE_DATA(context, request, reply, 7, resultcode)
+
+        int8_t acceptance_code;
+    int8_t serverQueueStatus;
+    int8_t recvMsgLenByte;
+    int32_t queueSize;
+    readByte(&reply, &acceptance_code);
+    readByte(&reply, &serverQueueStatus);
+    readInt(&reply, &queueSize);
+    readByte(&reply, &recvMsgLenByte);
+    int32_t recvMsgLen = recvMsgLenByte;
+    if (recvMsgLen== -2) {
+        int16_t recvMsgLenShort = 0;
+        //        recieveData(context, &reply, 2);
+        RECIEVE_DATA(context, request, reply, 2, resultcode)
+            readShort(&reply, &recvMsgLenShort);
+        recvMsgLen = recvMsgLenShort;
+    }
+    else if (recvMsgLen == -3) {
+        //        recieveData(context, &reply, 4);
+        RECIEVE_DATA(context, request, reply, 4, resultcode)
+            readInt(&reply, &recvMsgLen);
+    }
+    //recieveData(context, &reply, recvMsgLen);
+    RECIEVE_DATA(context, request, reply, recvMsgLen, resultcode)
+        advanceCursor(&reply, recvMsgLen);
+    uint16_t recvMsgLen2 = 0;
+    //recieveData(context, &reply, 2);
+    RECIEVE_DATA(context, request, reply,2, resultcode)
+        readUnsignedShort(&reply, &recvMsgLen2);
+    //recieveData(context, &reply, recvMsgLen2);
+    RECIEVE_DATA(context, request, reply, recvMsgLen2, resultcode)
+        advanceCursor(&reply, recvMsgLen2);
+    int8_t isDeltaEnabledOnServer;
+    //recieveData(context, &reply, 1);
+    RECIEVE_DATA(context, request, reply, 1, resultcode)
+        readByte(&reply, &isDeltaEnabledOnServer);
+    if(acceptance_code != REPLY_OK)
+    {
+        *resultcode = HANDSHAKE_ERROR;
+    }
+    clearBuf(&request);
+    clearBuf(&reply);
+}
+
+
+void gf_write_header(Buffer* buf, uint32_t msgType, uint32_t numOfParts)
+{
+
+    writeInt(buf, (int32_t)msgType);
+    writeInt(buf, (int32_t)0); // write a dummy message len('0' here). At the end write the length at the (buffer + 4) offset.
+    writeInt(buf, (int32_t)numOfParts);
+    writeInt(buf, (int32_t)1);
+    writeByte(buf, (int8_t)0x0);
+}
+
+void write_region_part(Buffer* buf, char* regionName)
+{
+    int32_t len = strlen(regionName);
+    writeInt(buf, len);
+    writeByte(buf, (int8_t)0); // isObject = 0
+    writeBytesOnly(buf, (int8_t *)regionName, len);
+}
+
+void write_null_object(Buffer* buf)
+{
+    //write size
+    writeInt(buf, (int32_t)1);
+    //write isobject
+    writeByte(buf, (int8_t)1);
+    //write actual object
+    writeByte(buf, (int8_t)NullObj);
+}
+
+void write_int_part(Buffer* buf,  int32_t intValue)
+{
+    writeInt(buf, (int32_t) 4);
+    writeByte(buf, (int8_t) 0);
+    writeInt(buf, intValue);
+}
+
+void write_string_part(Buffer* buf, const char* strValue)
+{
+    //write size
+    writeInt(buf, (int32_t)0);
+    //write isobject
+    writeByte(buf, (int8_t)1);
+    int32_t before = getBufferLength(buf);
+    writeByte(buf, (int8_t)CacheableASCIIString);
+    writeASCII(buf, strValue);
+    int32_t after = getBufferLength(buf);
+    int32_t sizeOfObj = after - before;
+    rewindCursor(buf, sizeOfObj + 1 + 4);
+    writeInt(buf, sizeOfObj);
+    advanceCursor(buf, sizeOfObj + 1);
+}
+
+void write_bool_part(Buffer* buf, int8_t boolValue)
+{
+    //write size
+    writeInt(buf, (int32_t)2);
+    //write isobject
+    writeByte(buf, (int8_t)1);
+    writeByte(buf, (int8_t)CacheableBoolean);
+    writeByte(buf, (int8_t)boolValue);
+}
+
+void write_bytes_part(Buffer* buf, const int8_t* bytes, int32_t len)
+{
+    //write size
+    writeInt(buf, (int32_t)1);
+    //write isobject
+    writeByte(buf, (int8_t)0);
+    int32_t before = getBufferLength(buf);
+    writeBytesOnly(buf, bytes, len);
+    int32_t after = getBufferLength(buf);
+    int32_t sizeOfObj = after - before;
+    rewindCursor(buf, sizeOfObj + 1 + 4);
+    writeInt(buf, sizeOfObj);
+    advanceCursor(buf, sizeOfObj + 1);
+}
+
+void write_id_part(CONTEXT* context, Buffer* buf)
+{
+    // ARB: Write EventId threadid and seqno.
+    int32_t idsBufferLength = 18;
+    writeInt(buf, idsBufferLength);
+    writeUnsigned(buf, (uint8_t) 0);
+    char longCode = 3;
+    writeUnsigned(buf, (uint8_t) longCode);
+    writeLong(buf, pthread_self());
+    writeUnsigned(buf, (uint8_t) longCode);
+    writeLong(buf, getAndIncEid(context));
+}
+
+void write_message_length(Buffer* buf)
+{
+    uint32_t totalLen = getBufferLength(buf);
+    uint32_t g_headerLen = 17;
+    uint32_t msgLen = totalLen - g_headerLen;
+    //printf("msglen: %d\n", msgLen);
+    rewindCursor(buf, totalLen - 4); // msg len is written after the msg type which is of 4 bytes ...
+    writeInt(buf, (int32_t)msgLen);
+    advanceCursor(buf, totalLen - 8); // after writing 4 bytes for msg len you are already 8 bytes ahead from the beginning.
+}
+
+void gf_put(CONTEXT * context, const char * uuid, const int8_t * data, int32_t len, int32_t * resultcode)
+{
+    Buffer request;
+    initBuf(&request);
+    Buffer reply;
+    initBuf(&reply);
+    *resultcode = NO_ERROR;
+
+    gf_write_header(&request, PUT, 7);
+    write_region_part(&request, REGION_NAME);
+    write_null_object(&request);
+    write_int_part(&request, 0);
+    write_string_part(&request, uuid);
+    write_bool_part(&request, 0);
+    write_bytes_part(&request, data, len);
+    write_id_part(context, &request);
+    write_message_length(&request);
+
+    SEND_DATA(context, request, reply, resultcode)
+        // int err = sendData(context, getBuffer(&buf), getBufferLength(&buf));
+        /*---Get "Hello?"---*/
+        //int recLen = 1;
+
+        RECIEVE_DATA(context, request, reply, HEADER_LENGTH, resultcode)
+        //err = recieveData(context, &reply, HEADER_LENGTH);
+        //printf("put error: %d\n", *resultcode);
+    int32_t msgType;
+    int32_t msgLen;
+
+    readInt(&reply, &msgType);
+    readInt(&reply, &msgLen);
+    advanceCursor(&reply, HEADER_LENGTH - 8);
+
+    RECIEVE_DATA(context, request, reply, msgLen, resultcode)
+        if(msgType != REPLY)
+        {
+            *resultcode = OPERATION_ERROR;
+            clearBuf(&request);
+            clearBuf(&reply);
+        }
+    //err = recieveData(context, &reply, msgLen);
+}
+
+void gf_get(CONTEXT * context, const char * uuid, int8_t* data, uint32_t len, int32_t * resultcode)
+{
+    Buffer request;
+    initBuf(&request);
+    Buffer reply;
+    initBuf(&reply);
+    *resultcode = NO_ERROR;
+
+    gf_write_header(&request, REQUEST, 2);
+    write_region_part(&request, REGION_NAME);
+    write_string_part(&request, uuid);
+    write_message_length(&request);
+
+    SEND_DATA(context, request, reply, resultcode)
+
+        //int err = sendData(context, getBuffer(&buf), getBufferLength(&buf));
+
+        RECIEVE_DATA(context, request, reply, HEADER_LENGTH, resultcode)
+        //err = recieveData(context, &reply, HEADER_LENGTH);
+        int32_t msgType;
+    int32_t msgLen;
+
+    readInt(&reply, &msgType);
+    readInt(&reply, &msgLen);
+    advanceCursor(&reply, HEADER_LENGTH - 8);
+
+    //err = recieveData(context, &reply, msgLen);
+    RECIEVE_DATA(context, request, reply, msgLen, resultcode)
+        if(msgType != RESPONSE)
+        {
+            *resultcode = OPERATION_ERROR;
+            clearBuf(&request);
+            clearBuf(&reply);
+            return;
+        }
+    uint32_t dataLen;
+    readUnsignedInt(&reply, &dataLen);
+    int8_t isObj;
+    readByte(&reply, &isObj);
+    memcpy(data, getCursor(&reply), dataLen);
+}
+
+void gf_destroy(CONTEXT * context, const char * uuid, int32_t * resultcode)
+{
+    Buffer request;
+    initBuf(&request);
+    Buffer reply;
+    initBuf(&reply);
+    *resultcode = NO_ERROR;
+
+    gf_write_header(&request, DESTROY, 5);
+    write_region_part(&request, REGION_NAME);
+    write_string_part(&request, uuid);
+    write_null_object(&request);
+    write_null_object(&request);
+    write_id_part(context, &request);
+    write_message_length(&request);
+
+    SEND_DATA(context, request, reply, resultcode)
+
+        //    int err = sendData(context, getBuffer(&buf), getBufferLength(&buf));
+        /*---Get "Hello?"---*/
+        //int recLen = 1;
+
+        RECIEVE_DATA(context, request, reply, HEADER_LENGTH, resultcode)
+
+        //    err = recieveData(context, &reply, HEADER_LENGTH);
+        //printf("destroy error: %d\n", *resultcode);
+    int32_t msgType;
+    int32_t msgLen;
+
+    readInt(&reply, &msgType);
+    readInt(&reply, &msgLen);
+    advanceCursor(&reply, HEADER_LENGTH - 8);
+
+    //    err = recieveData(context, &reply, msgLen);
+    RECIEVE_DATA(context, request, reply, msgLen, resultcode)
+        if(msgType != REPLY)
+        {
+            *resultcode = OPERATION_ERROR;
+            clearBuf(&request);
+            clearBuf(&reply);
+        }
+}
+
+void gf_ping(CONTEXT* context, int32_t* resultcode)
+{
+    Buffer request;
+    initBuf(&request);
+    Buffer reply;
+    initBuf(&reply);
+    *resultcode = NO_ERROR;
+
+    writeInt(&request, (int32_t)PING);
+    writeInt(&request, (int32_t)0);// 17 is fixed message len ...  PING only has a header.
+    writeInt(&request, (int32_t)0);// Number of parts.
+    writeInt(&request, (int32_t)0);
+    writeByte(&request, (int8_t)0);// Early ack is '0'.
+    SEND_DATA(context, request, reply, resultcode)
+        RECIEVE_DATA(context, request, reply, HEADER_LENGTH, resultcode)
+
+        int32_t msgType;
+    int32_t msgLen;
+
+    readInt(&reply, &msgType);
+    readInt(&reply, &msgLen);
+    advanceCursor(&reply, HEADER_LENGTH - 8);
+
+    //    err = recieveData(context, &reply, msgLen);
+    RECIEVE_DATA(context, request, reply, msgLen, resultcode)
+        if(msgType != REPLY)
+        {
+            *resultcode = OPERATION_ERROR;
+            clearBuf(&request);
+            clearBuf(&reply);
+        }
+}
+
+void gf_disconnect(CONTEXT * context, int32_t * resultcode)
+{
+    Buffer request;
+    initBuf(&request);
+    Buffer reply;
+    initBuf(&reply);
+    *resultcode = NO_ERROR;
+
+    writeInt(&request, (int32_t)CLOSE_CONNECTION);
+    writeInt(&request,(int32_t)6);
+    writeInt(&request,(int32_t)1);// Number of parts.
+    //int32_t txId = TcrMessage::m_transactionId++;
+    writeInt(&request,(int32_t)0);
+    writeByte(&request, (int8_t)0);// Early ack is '0'.
+    // last two parts are not used ... setting zero in both the parts.
+    writeInt(&request,(int32_t)1); // len is 1
+    writeByte(&request,(int8_t)0);// is obj is '0'.
+    // cast away constness here since we want to modify this
+    writeByte(&request,(int8_t)0);// keepalive is '0'. 
+    SEND_DATA(context, request, reply, resultcode)
+
+        int32_t error = close(context->sockfd);
+    if(error == 0) {
+        *resultcode = NO_ERROR;
+    } else {
+        *resultcode = CONNECTION_ERROR;
+    }
+
+    free(context);
+}
+
+CONTEXT* gf_connect(char* host, char* port, int32_t* resultcode)
+{
+    CONTEXT* context = createContext(host, port);
+
+    if(context == NULL)
+    {
+        *resultcode = CONNECTION_ERROR;
+        //printf("CONNECTION ERROR");
+    } else {
+        doHandshake(context, resultcode);
+        if(*resultcode != NO_ERROR)
+        {
+            int32_t error;
+            //printf("HANDSHAKE ERROR");
+            *resultcode = HANDSHAKE_ERROR;
+            gf_disconnect(context, &error);
+            context = NULL;
+        }
+    }
+
+    return context;
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/cclient/src/gf_client.h
----------------------------------------------------------------------
diff --git a/geode-client-native/src/cclient/src/gf_client.h b/geode-client-native/src/cclient/src/gf_client.h
new file mode 100644
index 0000000..1728d2e
--- /dev/null
+++ b/geode-client-native/src/cclient/src/gf_client.h
@@ -0,0 +1,88 @@
+#ifndef __C_GEMFIRE_CLIENT_H__
+#define __C_GEMFIRE_CLIENT_H__
+
+#include <stdint.h>
+
+typedef struct 
+{
+    int32_t sockfd;
+    int64_t eidSeq;
+} CONTEXT;
+
+
+enum error_codes {
+    NO_ERROR,
+    CONNECTION_ERROR = 1,
+    HANDSHAKE_ERROR,
+    OPERATION_ERROR
+};
+
+/*
+ * Establish a connection with the specified GemFire endpoint.
+ *
+ * @param host the hostname to connect.
+ * @param port the port to connect.
+ * @param resultcode the result code returned to the caller.
+ * @returns a pointer to the context required for further operations.
+ */
+
+CONTEXT* gf_connect(char * host, char* port, int32_t * resultcode);
+
+/*
+ * Close down a connection previously established with a GemFire endpoint.
+ *
+ * @param CONTEXT the context of the connection to close.
+ * @param resultcode the result code returned to the caller.
+ */
+
+void gf_disconnect(CONTEXT * context, int32_t * resultcode);
+
+/*
+ * Store data associated with the specified UUID into the GemFire system.
+ * Callee does not free the data.
+ *
+ * @param CONTEXT the context of the connection to use.
+ * @param region the GemFire region where the data goes.
+ * @param uuid the UUID key associated with the data.
+ * @param data a pointer to the data to store.
+ * @param len the byte length of the data.
+ * @param resultcode the result code returned to the caller.
+ */
+
+void gf_put(CONTEXT * context, const char * uuid, const int8_t * data, int32_t len, int32_t * resultcode);
+
+/*
+ * Read data associated with the specified UUID from GemFire.
+ * Caller must free the returned data.
+ *
+ * @param CONTEXT the context of the connection to use.
+ * @param region the GemFire region from where the data is retrieved.
+ * @param uuid the UUID key associated with the data.
+ * @param len the byte length of the data being returned.
+ * @param resultcode the result code returned to the caller.
+ */
+
+void gf_get(CONTEXT * context, const char * uuid, int8_t* data, uint32_t len, int32_t * resultcode);
+
+/*
+ * Destroy the data associated with the specified UUID key from the GemFire system.
+ *
+ * @param CONTEXT the context of the connection to use.
+ * @param region the GemFire region from where the data is cleared.
+ * @param uuid the UUID key associated with the data.
+ * @param resultcode the result code returned to the caller.
+ */
+
+void gf_destroy(CONTEXT * context, const char * uuid, int32_t * resultcode);
+
+/*
+ * Send a ping message to the server 
+ *
+ * @param CONTEXT the context of the connection to use.
+ * @param resultcode the result code returned to the caller.
+ */
+
+void gf_ping(CONTEXT* context, int32_t* resultcode);
+
+#endif
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/AttributesFactoryM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/AttributesFactoryM.cpp b/geode-client-native/src/clicache/AttributesFactoryM.cpp
new file mode 100644
index 0000000..b548380
--- /dev/null
+++ b/geode-client-native/src/clicache/AttributesFactoryM.cpp
@@ -0,0 +1,270 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "AttributesFactoryM.hpp"
+#include "RegionM.hpp"
+#include "impl/ManagedCacheLoader.hpp"
+#include "impl/ManagedCacheWriter.hpp"
+#include "impl/ManagedCacheListener.hpp"
+#include "impl/ManagedPartitionResolver.hpp"
+#include "impl/ManagedFixedPartitionResolver.hpp"
+#include "RegionAttributesM.hpp"
+#include "PropertiesM.hpp"
+#include "ICacheLoader.hpp"
+#include "ICacheWriter.hpp"
+#include "ICacheListener.hpp"
+#include "IPartitionResolver.hpp"
+#include "IFixedPartitionResolver.hpp"
+#include "impl/SafeConvert.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      AttributesFactory::AttributesFactory( RegionAttributes^ regionAttributes )
+        : UMWrap( )
+      {
+        gemfire::RegionAttributesPtr attribptr(
+          GetNativePtr<gemfire::RegionAttributes>( regionAttributes ) );
+        SetPtr( new gemfire::AttributesFactory( attribptr ), true );
+      }
+
+      // CALLBACKS
+
+      void AttributesFactory::SetCacheLoader( ICacheLoader^ cacheLoader )
+      {
+        gemfire::CacheLoaderPtr loaderptr;
+        if ( cacheLoader != nullptr ) {
+          loaderptr = new gemfire::ManagedCacheLoader( cacheLoader );
+        }
+        NativePtr->setCacheLoader( loaderptr );
+      }
+
+      void AttributesFactory::SetCacheWriter( ICacheWriter^ cacheWriter )
+      {
+        gemfire::CacheWriterPtr writerptr;
+        if ( cacheWriter != nullptr ) {
+          writerptr = new gemfire::ManagedCacheWriter( cacheWriter );
+        }
+        NativePtr->setCacheWriter( writerptr );
+      }
+
+      void AttributesFactory::SetCacheListener( ICacheListener^ cacheListener )
+      {
+        gemfire::CacheListenerPtr listenerptr;
+        if ( cacheListener != nullptr ) {
+          listenerptr = new gemfire::ManagedCacheListener( cacheListener );
+        }
+        NativePtr->setCacheListener( listenerptr );
+      }
+
+      void AttributesFactory::SetPartitionResolver( IPartitionResolver^ partitionresolver )
+      {
+        gemfire::PartitionResolverPtr resolverptr;
+        if ( partitionresolver != nullptr ) {
+          IFixedPartitionResolver^ resolver = dynamic_cast<IFixedPartitionResolver^>(partitionresolver);
+          if (resolver != nullptr) {
+            resolverptr = new gemfire::ManagedFixedPartitionResolver( resolver );            
+          }
+          else {
+            resolverptr = new gemfire::ManagedPartitionResolver( partitionresolver );
+          } 
+        }
+        NativePtr->setPartitionResolver( resolverptr );
+      }
+
+      void AttributesFactory::SetCacheLoader( String^ libPath, String^ factoryFunctionName )
+      {
+        ManagedString mg_libpath( libPath );
+        ManagedString mg_factoryFunctionName( factoryFunctionName );
+
+        NativePtr->setCacheLoader( mg_libpath.CharPtr,
+          mg_factoryFunctionName.CharPtr );
+      }
+
+      void AttributesFactory::SetCacheWriter( String^ libPath, String^ factoryFunctionName )
+      {
+        ManagedString mg_libpath( libPath );
+        ManagedString mg_factoryFunctionName( factoryFunctionName );
+
+        NativePtr->setCacheWriter( mg_libpath.CharPtr,
+          mg_factoryFunctionName.CharPtr );
+      }
+
+      void AttributesFactory::SetCacheListener( String^ libPath, String^ factoryFunctionName )
+      {
+        ManagedString mg_libpath( libPath );
+        ManagedString mg_factoryFunctionName( factoryFunctionName );
+
+        NativePtr->setCacheListener( mg_libpath.CharPtr,
+          mg_factoryFunctionName.CharPtr );
+      }
+
+      void AttributesFactory::SetPartitionResolver( String^ libPath, String^ factoryFunctionName )
+      {
+        ManagedString mg_libpath( libPath );
+        ManagedString mg_factoryFunctionName( factoryFunctionName );
+
+        NativePtr->setPartitionResolver( mg_libpath.CharPtr,
+          mg_factoryFunctionName.CharPtr );
+      }
+
+      // EXPIRATION ATTRIBUTES
+
+      void AttributesFactory::SetEntryIdleTimeout( ExpirationAction action, uint32_t idleTimeout )
+      {
+        NativePtr->setEntryIdleTimeout(
+          static_cast<gemfire::ExpirationAction::Action>( action ), idleTimeout );
+      }
+
+      void AttributesFactory::SetEntryTimeToLive( ExpirationAction action, uint32_t timeToLive )
+      {
+        NativePtr->setEntryTimeToLive(
+          static_cast<gemfire::ExpirationAction::Action>( action ), timeToLive );
+      }
+
+      void AttributesFactory::SetRegionIdleTimeout( ExpirationAction action, uint32_t idleTimeout )
+      {
+        NativePtr->setRegionIdleTimeout(
+          static_cast<gemfire::ExpirationAction::Action>( action ), idleTimeout );
+      }
+
+      void AttributesFactory::SetRegionTimeToLive( ExpirationAction action, uint32_t timeToLive )
+      {
+        NativePtr->setRegionTimeToLive(
+          static_cast<gemfire::ExpirationAction::Action>( action ), timeToLive );
+      }
+
+      // PERSISTENCE
+
+      void AttributesFactory::SetPersistenceManager( String^ libPath,
+        String^ factoryFunctionName )
+      {
+        SetPersistenceManager( libPath, factoryFunctionName, nullptr );
+      }
+
+      void AttributesFactory::SetPersistenceManager( String^ libPath,
+        String^ factoryFunctionName, Properties^ config )
+      {
+        ManagedString mg_libpath( libPath );
+        ManagedString mg_factoryFunctionName( factoryFunctionName );
+        gemfire::PropertiesPtr configptr(
+          GetNativePtr<gemfire::Properties>( config ) );
+
+        NativePtr->setPersistenceManager( mg_libpath.CharPtr,
+          mg_factoryFunctionName.CharPtr, configptr );
+      }
+
+      // DISTRIBUTION ATTRIBUTES
+
+      void AttributesFactory::SetScope( ScopeType scopeType )
+      {
+        NativePtr->setScope(
+          static_cast<gemfire::ScopeType::Scope>( scopeType ) );
+      }
+
+      // STORAGE ATTRIBUTES
+
+      void AttributesFactory::SetClientNotificationEnabled(
+        bool clientNotificationEnabled )
+      {
+        NativePtr->setClientNotificationEnabled( clientNotificationEnabled );
+      }
+
+      void AttributesFactory::SetEndpoints( String^ endpoints )
+      {
+        ManagedString mg_endpoints( endpoints );
+
+        NativePtr->setEndpoints( mg_endpoints.CharPtr );
+      }
+
+      void AttributesFactory::SetPoolName( String^ poolName )
+      {
+        ManagedString mg_poolName( poolName );
+
+        NativePtr->setPoolName( mg_poolName.CharPtr );
+      }
+
+      // MAP ATTRIBUTES
+
+      void AttributesFactory::SetInitialCapacity( int32_t initialCapacity )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          NativePtr->setInitialCapacity( initialCapacity );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void AttributesFactory::SetLoadFactor( Single loadFactor )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          NativePtr->setLoadFactor( loadFactor );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void AttributesFactory::SetConcurrencyLevel( int32_t concurrencyLevel )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          NativePtr->setConcurrencyLevel( concurrencyLevel );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void AttributesFactory::SetLruEntriesLimit( uint32_t entriesLimit )
+      {
+        NativePtr->setLruEntriesLimit( entriesLimit );
+      }
+
+      void AttributesFactory::SetDiskPolicy( DiskPolicyType diskPolicy )
+      {
+        NativePtr->setDiskPolicy(
+          static_cast<gemfire::DiskPolicyType::PolicyType>( diskPolicy ) );
+      }
+
+      void AttributesFactory::SetCachingEnabled( bool cachingEnabled )
+      {
+        NativePtr->setCachingEnabled( cachingEnabled );
+      }
+
+      void AttributesFactory::SetCloningEnabled( bool cloningEnabled )
+      {
+        NativePtr->setCloningEnabled( cloningEnabled );
+      }
+      
+      void AttributesFactory::SetConcurrencyChecksEnabled( bool concurrencyChecksEnabled )
+      {
+        NativePtr->setConcurrencyChecksEnabled( concurrencyChecksEnabled );
+      }
+
+      // FACTORY METHOD 
+
+      RegionAttributes^ AttributesFactory::CreateRegionAttributes( )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::RegionAttributesPtr& nativeptr (
+            NativePtr->createRegionAttributes( ) );
+          return RegionAttributes::Create( nativeptr.ptr( ) );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/AttributesFactoryM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/AttributesFactoryM.hpp b/geode-client-native/src/clicache/AttributesFactoryM.hpp
new file mode 100644
index 0000000..a2510e8
--- /dev/null
+++ b/geode-client-native/src/clicache/AttributesFactoryM.hpp
@@ -0,0 +1,517 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/AttributesFactory.hpp"
+#include "impl/NativeWrapper.hpp"
+#include "ExpirationActionM.hpp"
+#include "DiskPolicyTypeM.hpp"
+#include "ScopeTypeM.hpp"
+
+#include "ICacheLoader.hpp"
+#include "ICacheWriter.hpp"
+#include "ICacheListener.hpp"
+#include "IPartitionResolver.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache 
+    {
+
+      ref class RegionAttributes;
+      ref class Properties;
+      //interface class ICacheLoader;
+      //interface class ICacheWriter;
+      //interface class ICacheListener;
+      //interface class IPartitionResolver;
+
+
+      /// <summary>
+      /// Factory class to create instances of <see cref="RegionAttributes" />.
+      /// </summary>
+      /// <remarks>
+      /// An <see cref="AttributesFactory" />
+      /// instance maintains state for creating <see cref="RegionAttributes" /> instances.
+      /// The setter methods are used to change the settings that will be used for
+      /// creating the next attributes instance with the <see cref="CreateRegionAttributes" />
+      /// method. If you create a factory with the default constructor, then the
+      /// factory is set up to create attributes with all default settings. You can
+      /// also create a factory by providing a preset <see cref="RegionAttributes" />.
+      /// <para>
+      /// Once a <see cref="RegionAttributes" /> is created, it can only be modified
+      /// after it has been used to create a <see cref="Region" />, and then only by
+      /// using an <see cref="AttributesMutator" /> obtained from the region.
+      /// </para><para>
+      /// <h3>Attributes</h3>
+      /// <h4>Callbacks</h4>
+      /// <dl>
+      /// <dt><see cref="ICacheLoader" /> [<em>default:</em> null]</dt>
+      ///     <dd>User-implemented plug-in for loading data on cache misses.<br />
+      ///        see <see cref="SetCacheLoader" />,
+      ///            <see cref="RegionAttributes.CacheLoader" /></dd>
+      ///
+      /// <dt><see cref="ICacheWriter" /> [<em>default:</em> null]</dt>
+      ///     <dd>User-implemented plug-in for intercepting cache modifications, e.g.
+      ///         for writing to an external data source.<br />
+      ///         see <see cref="SetCacheWriter" />,
+      ///             <see cref="RegionAttributes.CacheWriter" /></dd>
+      ///
+      /// <dt><see cref="ICacheListener" /> [<em>default:</em> null]</dt>
+      ///     <dd>User-implemented plug-in for receiving and handling cache-related events.<br />
+      ///         see <see cref="SetCacheListener" />,
+      ///             <see cref="RegionAttributes.CacheListener" /></dd>
+      ///
+      /// <dt><see cref="IPartitionResolver" /> [<em>default:</em> null]</dt>
+      ///     <dd>User-implemented plug-in for custom partitioning.<br />
+      ///         see <see cref="SetPartitionResolver" />,
+      ///             <see cref="RegionAttributes.PartitionResolver" /></dd>
+      /// </dl>
+      /// <h4>Expiration</h4>
+      /// <dl>
+      /// <dt>RegionTimeToLive [<em>default:</em> no expiration]</dt>
+      ///     <dd>Expiration configuration for the entire region based on the
+      ///     lastModifiedTime ( <see cref="CacheStatistics.LastModifiedTime" /> ).<br />
+      ///         see <see cref="SetRegionTimeToLive" />,
+      ///             <see cref="RegionAttributes.RegionTimeToLive" />,
+      ///             <see cref="AttributesMutator.SetRegionTimeToLive" /></dd>
+      ///
+      /// <dt>RegionIdleTimeout [<em>default:</em> no expiration]</dt>
+      ///     <dd>Expiration configuration for the entire region based on the
+      ///         lastAccessedTime ( <see cref="CacheStatistics.LastAccessedTime" /> ).<br />
+      ///         see <see cref="SetRegionIdleTimeout" />,
+      ///             <see cref="RegionAttributes.RegionIdleTimeout" />,
+      ///             <see cref="AttributesMutator.SetRegionIdleTimeout" /></dd>
+      ///
+      /// <dt>EntryTimeToLive [<em>default:</em> no expiration]</dt>
+      ///     <dd>Expiration configuration for individual entries based on the
+      ///     lastModifiedTime ( <see cref="CacheStatistics.LastModifiedTime" /> ).<br />
+      ///         see <see cref="SetEntryTimeToLive" />,
+      ///             <see cref="RegionAttributes.EntryTimeToLive" />,
+      ///             <see cref="AttributesMutator.SetEntryTimeToLive" /></dd>
+      ///
+      /// <dt>EntryIdleTimeout [<em>default:</em> no expiration]</dt>
+      ///     <dd>Expiration configuration for individual entries based on the
+      ///         lastAccessedTime ( <see cref="CacheStatistics.LastAccessedTime" /> ).<br />
+      ///         see <see cref="SetEntryIdleTimeout" />,
+      ///             <see cref="RegionAttributes.EntryIdleTimeout" />,
+      ///             <see cref="AttributesMutator.SetEntryIdleTimeout" /></dd>
+      /// </dl>
+      /// <h4>Distribution</h4>
+      /// <dl>
+      /// <dt><see cref="ScopeType" /> [<em>default:</em> <tt>ScopeType.DistributedNoAck</tt>]</dt>
+      ///     <dd>The C++ cache can contain either local regions or distributed regions. 
+      ///         Distributed regions are configured with servers that they distribute 
+      ///         their operations to upto. Locally scoped regions do not have any 
+      ///         distribution behavior. GFE native client regions scoped as 
+      ///         ScopeType.DistributedNoAck and ScopeType.DistributedAck have identical
+      ///         distribution behavior.<br />
+      ///         see <see cref="SetScope" />,
+      ///             <see cref="RegionAttributes.Scope" /></dd>
+      /// </dl>
+      /// <h4>Storage</h4>
+      /// <dl>
+      /// <dt>InitialCapacity [<em>default:</em> <tt>16</tt>]</dt>
+      ///     <dd>The initial capacity of the map used for storing the entries.<br />
+      ///         see <see cref="SetInitialCapacity" />,
+      ///             <see cref="RegionAttributes.InitialCapacity" /></dd>
+      ///
+      /// <dt>LoadFactor [<em>default:</em> <tt>0.75</tt>]</dt>
+      ///     <dd>The load factor of the map used for storing the entries.<br />
+      ///         see <see cref="SetLoadFactor" />,
+      ///             <see cref="RegionAttributes.LoadFactor" /></dd>
+      ///
+      /// <dt>ConcurrencyLevel [<em>default:</em> <tt>16</tt>]</dt>
+      ///     <dd>The allowed concurrency among updates to values in the region
+      ///         is guided by the <tt>concurrencyLevel</tt>, which is used as a hint
+      ///         for internal sizing. The actual concurrency will vary.
+      ///         Ideally, you should choose a value to accommodate as many
+      ///         threads as will ever concurrently modify values in the region. Using a
+      ///         significantly higher value than you need can waste space and time,
+      ///         and a significantly lower value can lead to thread contention. But
+      ///         overestimates and underestimates within an order of magnitude do
+      ///         not usually have much noticeable impact. A value of one is
+      ///         appropriate when it is known that only one thread will modify
+      ///         and all others will only read.<br />
+      ///         see <see cref="SetConcurrencyLevel" />,
+      ///             <see cref="RegionAttributes.ConcurrencyLevel" /></dd>
+      ///
+      /// </dl>
+      /// </para>
+      /// </remarks>
+      /// <seealso cref="RegionAttributes" />
+      /// <seealso cref="AttributesMutator" />
+      /// <seealso cref="Region.CreateSubRegion" />
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class AttributesFactory sealed
+        : public Internal::UMWrap<gemfire::AttributesFactory>
+      {
+      public:
+
+        /// <summary>
+        /// Creates a new <c>AttributesFactory</c> ready to create
+        /// a <c>RegionAttributes</c> with default settings.
+        /// </summary>
+        inline AttributesFactory( )
+          : UMWrap( new gemfire::AttributesFactory( ), true ) { }
+
+        /// <summary>
+        /// Creates a new instance of <c>AttributesFactory</c> ready to create
+        /// a <c>RegionAttributes</c> with the same settings as those in the
+        /// specified <c>RegionAttributes</c>.
+        /// </summary>
+        /// <param name="regionAttributes">
+        /// attributes used to initialize this AttributesFactory
+        /// </param>
+        AttributesFactory( RegionAttributes^ regionAttributes );
+
+        // CALLBACKS
+
+        /// <summary>
+        /// Sets the cache loader for the <c>RegionAttributes</c> being created.
+        /// </summary>
+        /// <param name="cacheLoader">
+        /// a user-defined cache loader, or null for no cache loader
+        /// </param>
+        void SetCacheLoader( ICacheLoader^ cacheLoader );
+
+        /// <summary>
+        /// Sets the cache writer for the <c>RegionAttributes</c> being created.
+        /// </summary>
+        /// <param name="cacheWriter">
+        /// user-defined cache writer, or null for no cache writer
+        /// </param>
+        void SetCacheWriter( ICacheWriter^ cacheWriter );
+
+        /// <summary>
+        /// Sets the CacheListener for the <c>RegionAttributes</c> being created.
+        /// </summary>
+        /// <param name="cacheListener">
+        /// user-defined cache listener, or null for no cache listener
+        /// </param>
+        void SetCacheListener( ICacheListener^ cacheListener );
+
+        /// <summary>
+        /// Sets the PartitionResolver for the <c>RegionAttributes</c> being created.
+        /// </summary>
+        /// <param name="partitionresolver">
+        /// user-defined partition resolver, or null for no partition resolver
+        /// </param>
+        void SetPartitionResolver( IPartitionResolver^ partitionresolver );
+
+        /// <summary>
+        /// Sets the library path for the library that will be invoked for the loader of the region.
+        /// </summary>
+        /// <param name="libPath">
+        /// library pathname containing the factory function.
+        /// </param>
+        /// <param name="factoryFunctionName">
+        /// Name of factory function that creates a <c>CacheLoader</c>
+        /// for a native library, or the name of the method in the form
+        /// {Namespace}.{Class Name}.{Method Name} that creates an
+        /// <c>ICacheLoader</c> for a managed library.
+        /// </param>
+        void SetCacheLoader( String^ libPath, String^ factoryFunctionName );
+
+        /// <summary>
+        /// Sets the library path for the library that will be invoked for the writer of the region.
+        /// </summary>
+        /// <param name="libPath">
+        /// library pathname containing the factory function.
+        /// </param>
+        /// <param name="factoryFunctionName">
+        /// Name of factory function that creates a <c>CacheWriter</c>
+        /// for a native library, or the name of the method in the form
+        /// {Namespace}.{Class Name}.{Method Name} that creates an
+        /// <c>ICacheWriter</c> for a managed library.
+        /// </param>
+        void SetCacheWriter( String^ libPath, String^ factoryFunctionName );
+
+        /// <summary>
+        /// Sets the library path for the library that will be invoked for the listener of the region.
+        /// </summary>
+        /// <param name="libPath">
+        /// library pathname containing the factory function.
+        /// </param>
+        /// <param name="factoryFunctionName">
+        /// Name of factory function that creates a <c>CacheListener</c>
+        /// for a native library, or the name of the method in the form
+        /// {Namespace}.{Class Name}.{Method Name} that creates an
+        /// <c>ICacheListener</c> for a managed library.
+        /// </param>
+        void SetCacheListener( String^ libPath, String^ factoryFunctionName );
+
+
+        /// <summary>
+        /// Sets the library path for the library that will be invoked for the partition resolver of the region.
+        /// </summary>
+        /// <param name="libPath">
+        /// library pathname containing the factory function.
+        /// </param>
+        /// <param name="factoryFunctionName">
+        /// Name of factory function that creates a <c>PartitionResolver</c>
+        /// for a native library, or the name of the method in the form
+        /// {Namespace}.{Class Name}.{Method Name} that creates an
+        /// <c>IPartitionResolver</c> for a managed library.
+        /// </param>
+        void SetPartitionResolver( String^ libPath, String^ factoryFunctionName );
+
+
+        // EXPIRATION ATTRIBUTES
+
+        /// <summary>
+        /// Sets the idleTimeout expiration attributes for region entries for the next
+        /// <c>RegionAttributes</c> created.
+        /// </summary>
+        /// <param name="action">
+        /// The expiration action for which to set the timeout.
+        /// </param>
+        /// <param name="idleTimeout">
+        /// the idleTimeout in seconds for entries in this region.
+        /// </param>
+        void SetEntryIdleTimeout( ExpirationAction action, uint32_t idleTimeout );
+
+        /// <summary>
+        /// Sets the timeToLive expiration attributes for region entries for the next
+        /// <c>RegionAttributes</c> created.
+        /// </summary>
+        /// <param name="action">
+        /// The expiration action for which to set the timeout.
+        /// </param>
+        /// <param name="timeToLive">
+        /// the timeToLive in seconds for entries in this region.
+        /// </param>
+        void SetEntryTimeToLive( ExpirationAction action, uint32_t timeToLive );
+
+        /// <summary>
+        /// Sets the idleTimeout expiration attributes for the region itself for the
+        /// next <c>RegionAttributes</c> created.
+        /// </summary>
+        /// <param name="action">
+        /// The expiration action for which to set the timeout.
+        /// </param>
+        /// <param name="idleTimeout">
+        /// the idleTimeout in seconds for the region as a whole.
+        /// </param>
+        void SetRegionIdleTimeout( ExpirationAction action, uint32_t idleTimeout );
+
+        /// <summary>
+        /// Sets the timeToLive expiration attributes for the region itself for the
+        /// next <c>RegionAttributes</c> created.
+        /// </summary>
+        /// <param name="action">
+        /// The expiration action for which to set the timeout.
+        /// </param>
+        /// <param name="timeToLive">
+        /// the timeToLive in seconds for the region as a whole.
+        /// </param>
+        void SetRegionTimeToLive( ExpirationAction action, uint32_t timeToLive );
+
+
+        // PERSISTENCE
+
+        /// <summary>
+        /// Sets the library path for the library that will be invoked for the persistence of the region.
+        /// If the region is being created from a client on a server, or on a server directly, then
+        /// This must be used to set the PersistenceManager.
+        /// </summary>
+        /// <param name="libPath">The path of the PersistenceManager shared library.</param>
+        /// <param name="factoryFunctionName">
+        /// The name of the factory function to create an instance of PersistenceManager object.
+        /// </param>
+        void SetPersistenceManager( String^ libPath, String^ factoryFunctionName );
+
+        /// <summary>
+        /// Sets the library path for the library that will be invoked for the persistence of the region.
+        /// If the region is being created from a client on a server, or on a server directly, then
+        /// This must be used to set the PersistenceManager.
+        /// </summary>
+        /// <param name="libPath">The path of the PersistenceManager shared library.</param>
+        /// <param name="factoryFunctionName">
+        /// The name of the factory function to create an instance of PersistenceManager object.
+        /// </param>
+        /// <param name="config">
+        /// The configuration properties to use for the PersistenceManager.
+        /// </param>
+        void SetPersistenceManager( String^ libPath, String^ factoryFunctionName,
+          Properties^ config );
+
+
+        // DISTRIBUTION ATTRIBUTES
+
+        /// <summary>
+        /// Sets the scope for the next <c>RegionAttributes</c> created.
+        /// </summary>
+        /// <param name="scopeType">
+        /// the type of scope to use for the region
+        /// </param>
+        [Obsolete("This method is obsolete since 3.5")]
+        void SetScope( ScopeType scopeType );
+
+
+        // STORAGE ATTRIBUTES
+
+        /// <summary>
+        /// Enables/disables client noficiations for a Thin client region.
+        /// </summary>
+        /// <param name="clientNotificationEnabled">
+        /// true if client notifications have to be enabled; false otherwise
+        /// </param>        
+        [Obsolete("This method is obsolete since 3.5; use PoolFactory.SetSubscriptionEnabled instead.")]
+        void SetClientNotificationEnabled(
+          bool clientNotificationEnabled );
+
+        /// <summary>
+        /// Set the endpoints for a Thin Client region.
+        /// </summary>
+        /// <remarks>
+        /// If the endpoints are set then the region is taken to be a Thin-client
+        /// region that interacts with the GemFire Java cacheserver.
+        /// </remarks>
+        /// <param name="endpoints">
+        /// The list of host:port pairs separated by commas.
+        /// </param>
+        [Obsolete("This method is obsolete since 3.5; use PoolFactory.AddServer or PoolFactory.AddLocator instead.")]
+        void SetEndpoints( String^ endpoints );
+
+        /// <summary>
+        /// Set the pool name for a Thin Client region.
+        /// </summary>
+        /// <remarks>
+        /// The pool with the name specified must be already created.
+        /// </remarks>
+        /// <param name="poolName">
+        /// The name of the pool to attach to this region.
+        /// </param>
+        void SetPoolName( String^ poolName );
+
+        // MAP ATTRIBUTES
+
+        /// <summary>
+        /// Sets the entry initial capacity for the <c>RegionAttributes</c>
+        /// being created. This value is used in initializing the map that
+        /// holds the entries.
+        /// </summary>
+        /// <param name="initialCapacity">the initial capacity of the entry map</param>
+        /// <exception cref="IllegalArgumentException">
+        /// if initialCapacity is nonpositive
+        /// </exception>
+        void SetInitialCapacity( int32_t initialCapacity );
+
+        /// <summary>
+        /// Sets the entry load factor for the next <c>RegionAttributes</c>
+        /// created. This value is
+        /// used in initializing the map that holds the entries.
+        /// </summary>
+        /// <param name="loadFactor">the load factor of the entry map</param>
+        /// <exception cref="IllegalArgumentException">
+        /// if loadFactor is nonpositive
+        /// </exception>
+        void SetLoadFactor( Single loadFactor );
+
+        /// <summary>
+        /// Sets the concurrency level of the next <c>RegionAttributes</c>
+        /// created. This value is used in initializing the map that holds the entries.
+        /// </summary>
+        /// <param name="concurrencyLevel">
+        /// the concurrency level of the entry map
+        /// </param>
+        /// <exception cref="IllegalArgumentException">
+        /// if concurrencyLevel is nonpositive
+        /// </exception>
+        void SetConcurrencyLevel( int32_t concurrencyLevel );
+
+        /// <summary>
+        /// Sets a limit on the number of entries that will be held in the cache.
+        /// If a new entry is added while at the limit, the cache will evict the
+        /// least recently used entry.
+        /// </summary>
+        /// <param name="entriesLimit">
+        /// The limit of the number of entries before eviction starts.
+        /// Defaults to 0, meaning no LRU actions will used.
+        /// </param>
+        void SetLruEntriesLimit( uint32_t entriesLimit );
+
+        /// <summary>
+        /// Sets the disk policy type for the next <c>RegionAttributes</c> created.
+        /// </summary>
+        /// <param name="diskPolicy">
+        /// the disk policy to use for the region
+        /// </param>
+        void SetDiskPolicy( DiskPolicyType diskPolicy );
+
+        /// <summary>
+        /// Set caching enabled flag for this region.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// If set to false, then no data is stored in the local process,
+        /// but events and distributions will still occur, and the region
+        /// can still be used to put and remove, etc...
+        /// </para><para>
+        /// The default if not set is 'true', 'false' is illegal for regions
+        /// of <c>ScopeType.Local</c> scope. 
+        /// </para>
+        /// </remarks>
+        /// <param name="cachingEnabled">
+        /// if true, cache data for this region in this process.
+        /// </param>
+        void SetCachingEnabled( bool cachingEnabled );
+        /// <summary>
+        /// Set cloning enabled flag for this region.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// If set to false, then there is no cloning will take place in case of delta.
+        /// Delta will be applied on the old value which will change old value in-place.
+        /// </para><para>
+        /// The default if not set is 'false'
+        /// of <c>ScopeType.Local</c> scope. 
+        /// </para>
+        /// </remarks>
+        /// <param name="cloningEnabled">
+        /// if true, clone old value before applying delta so that in-place change would not occour..
+        /// </param>
+        void SetCloningEnabled( bool cloningEnabled );
+
+         /// <summary>
+        /// Sets concurrency checks enabled flag for this region.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// If set to false, then the version checks will not occur.
+        /// </para><para>
+        /// The default if not set is 'true'
+        /// </para>
+        /// </remarks>
+        /// <param name="concurrencyChecksEnabled">
+        /// if true, version checks for region entries will occur.
+        /// </param>
+        void SetConcurrencyChecksEnabled( bool concurrencyChecksEnabled );
+
+        // FACTORY METHOD
+
+        /// <summary>
+        /// Creates a <c>RegionAttributes</c> with the current settings.
+        /// </summary>
+        /// <returns>the newly created <c>RegionAttributes</c></returns>
+        /// <exception cref="IllegalStateException">
+        /// if the current settings violate the <a href="compability.html">
+        /// compatibility</a> rules.
+        /// </exception>
+        RegionAttributes^ CreateRegionAttributes( );
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/AttributesMutatorM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/AttributesMutatorM.cpp b/geode-client-native/src/clicache/AttributesMutatorM.cpp
new file mode 100644
index 0000000..f30f08d
--- /dev/null
+++ b/geode-client-native/src/clicache/AttributesMutatorM.cpp
@@ -0,0 +1,145 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "AttributesMutatorM.hpp"
+#include "RegionM.hpp"
+#include "impl/ManagedCacheListener.hpp"
+#include "impl/ManagedCacheLoader.hpp"
+#include "impl/ManagedCacheWriter.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      int32_t AttributesMutator::SetEntryIdleTimeout( int32_t idleTimeout )
+      {
+        return NativePtr->setEntryIdleTimeout( idleTimeout );
+      }
+
+      ExpirationAction AttributesMutator::SetEntryIdleTimeoutAction(
+        ExpirationAction action )
+      {
+        return static_cast<ExpirationAction>(
+          NativePtr->setEntryIdleTimeoutAction(
+          static_cast<gemfire::ExpirationAction::Action>( action ) ) );
+      }
+
+      int32_t AttributesMutator::SetEntryTimeToLive( int32_t timeToLive )
+      {
+        return NativePtr->setEntryTimeToLive( timeToLive );
+      }
+
+      ExpirationAction AttributesMutator::SetEntryTimeToLiveAction(
+        ExpirationAction action )
+      {
+        return static_cast<ExpirationAction>(
+          NativePtr->setEntryTimeToLiveAction(
+          static_cast<gemfire::ExpirationAction::Action>( action ) ) );
+      }
+
+      int32_t AttributesMutator::SetRegionIdleTimeout( int32_t idleTimeout )
+      {
+        return NativePtr->setRegionIdleTimeout( idleTimeout );
+      }
+
+      ExpirationAction AttributesMutator::SetRegionIdleTimeoutAction(
+        ExpirationAction action )
+      {
+        return static_cast<ExpirationAction>(
+          NativePtr->setRegionIdleTimeoutAction(
+          static_cast<gemfire::ExpirationAction::Action>( action ) ) );
+      }
+
+      int32_t AttributesMutator::SetRegionTimeToLive( int32_t timeToLive )
+      {
+        return NativePtr->setRegionTimeToLive( timeToLive );
+      }
+
+      ExpirationAction AttributesMutator::SetRegionTimeToLiveAction(
+        ExpirationAction action )
+      {
+        return static_cast<ExpirationAction>(
+          NativePtr->setRegionTimeToLiveAction(
+          static_cast<gemfire::ExpirationAction::Action>( action ) ) );
+      }
+
+      uint32_t AttributesMutator::SetLruEntriesLimit( uint32_t entriesLimit )
+      {
+        return NativePtr->setLruEntriesLimit( entriesLimit );
+      }
+
+      void AttributesMutator::SetCacheListener( ICacheListener^ cacheListener )
+      {
+        gemfire::CacheListenerPtr listenerptr;
+        if (cacheListener != nullptr)
+        {
+          listenerptr = new gemfire::ManagedCacheListener( cacheListener );
+        }
+        NativePtr->setCacheListener( listenerptr );
+      }
+
+      void AttributesMutator::SetCacheListener( String^ libPath,
+        String^ factoryFunctionName )
+      {
+        ManagedString mg_libpath( libPath );
+        ManagedString mg_factoryFunctionName( factoryFunctionName );
+
+        NativePtr->setCacheListener( mg_libpath.CharPtr,
+          mg_factoryFunctionName.CharPtr );
+      }
+
+      void AttributesMutator::SetCacheLoader( ICacheLoader^ cacheLoader )
+      {
+        gemfire::CacheLoaderPtr loaderptr;
+        if (cacheLoader != nullptr)
+        {
+          loaderptr = new gemfire::ManagedCacheLoader( cacheLoader );
+        }
+        NativePtr->setCacheLoader( loaderptr );
+      }
+
+      void AttributesMutator::SetCacheLoader( String^ libPath,
+        String^ factoryFunctionName )
+      {
+        ManagedString mg_libpath( libPath );
+        ManagedString mg_factoryFunctionName( factoryFunctionName );
+
+        NativePtr->setCacheLoader( mg_libpath.CharPtr,
+          mg_factoryFunctionName.CharPtr );
+      }
+
+      void AttributesMutator::SetCacheWriter( ICacheWriter^ cacheWriter )
+      {
+        gemfire::CacheWriterPtr writerptr;
+        if (cacheWriter != nullptr)
+        {
+          writerptr = new gemfire::ManagedCacheWriter( cacheWriter );
+        }
+        NativePtr->setCacheWriter( writerptr );
+      }
+
+      void AttributesMutator::SetCacheWriter( String^ libPath,
+        String^ factoryFunctionName )
+      {
+        ManagedString mg_libpath( libPath );
+        ManagedString mg_factoryFunctionName( factoryFunctionName );
+
+        NativePtr->setCacheWriter( mg_libpath.CharPtr,
+          mg_factoryFunctionName.CharPtr );
+      }
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/AttributesMutatorM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/AttributesMutatorM.hpp b/geode-client-native/src/clicache/AttributesMutatorM.hpp
new file mode 100644
index 0000000..69b1d53
--- /dev/null
+++ b/geode-client-native/src/clicache/AttributesMutatorM.hpp
@@ -0,0 +1,255 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/AttributesMutator.hpp"
+#include "impl/NativeWrapper.hpp"
+#include "ExpirationActionM.hpp"
+#include "ICacheListener.hpp"
+#include "ICacheLoader.hpp"
+#include "ICacheWriter.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      /// <summary>
+      /// Supports modification of certain region attributes after the region
+      /// has been created.
+      /// </summary>
+      /// <remarks>
+      /// <para>
+      /// It is required that the attributes be completely initialized using an
+      /// <see cref="AttributesFactory" /> before creating the region.
+      /// AttributesMutator can be applied to adjusting and tuning a subset of
+      /// attributes that are modifiable at runtime.
+      /// </para><para>
+      /// The setter methods all return the previous value of the attribute.
+      /// </para>
+      /// </remarks>
+      /// <seealso cref="Region.GetAttributesMutator" />
+      /// <seealso cref="RegionAttributes" />
+      /// <seealso cref="AttributesFactory" />
+        [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class AttributesMutator sealed
+        : public Internal::SBWrap<gemfire::AttributesMutator>
+      {
+      public:
+
+        /// <summary>
+        /// Sets the idleTimeout duration for region entries.
+        /// </summary>
+        /// <param name="idleTimeout">
+        /// the idleTimeout in seconds for entries in this region, or 0 for no idle timeout
+        /// </param>
+        /// <returns>the previous value</returns>
+        /// <exception cref="IllegalStateException">
+        /// if the new idleTimeout changes entry expiration from
+        /// disabled to enabled or enabled to disabled.
+        /// </exception>
+        int32_t SetEntryIdleTimeout( int32_t idleTimeout );
+
+        /// <summary>
+        /// Sets the idleTimeout action for region entries.
+        /// </summary>
+        /// <param name="action">
+        /// the idleTimeout action for entries in this region
+        /// </param>
+        /// <returns>the previous action</returns>
+        ExpirationAction SetEntryIdleTimeoutAction( ExpirationAction action );
+
+        /// <summary>
+        /// Sets the timeToLive duration for region entries.
+        /// </summary>
+        /// <param name="timeToLive">
+        /// the timeToLive in seconds for entries in this region, or 0 to disable time-to-live
+        /// </param>
+        /// <returns>the previous value</returns>
+        /// <exception cref="IllegalStateException">
+        /// if the new timeToLive changes entry expiration from
+        /// disabled to enabled or enabled to disabled
+        /// </exception>
+        int32_t SetEntryTimeToLive( int32_t timeToLive );
+
+        /// <summary>
+        /// Set the timeToLive action for region entries.
+        /// </summary>
+        /// <param name="action">
+        /// the timeToLive action for entries in this region
+        /// </param>
+        /// <returns>the previous action</returns>
+        ExpirationAction SetEntryTimeToLiveAction( ExpirationAction action );
+
+        /// <summary>
+        /// Sets the idleTimeout duration for the region itself.
+        /// </summary>
+        /// <param name="idleTimeout">
+        /// the idleTimeout for this region, in seconds, or 0 to disable idle timeout
+        /// </param>
+        /// <returns>the previous value</returns>
+        /// <exception cref="IllegalStateException">
+        /// if the new idleTimeout changes region expiration from
+        /// disabled to enabled or enabled to disabled.
+        /// </exception>
+        int32_t SetRegionIdleTimeout( int32_t idleTimeout );
+
+        /// <summary>
+        /// Sets the idleTimeout action for the region itself.
+        /// </summary>
+        /// <param name="action">
+        /// the idleTimeout action for this region
+        /// </param>
+        /// <returns>the previous action</returns>
+        ExpirationAction SetRegionIdleTimeoutAction( ExpirationAction action );
+
+        /// <summary>
+        /// Sets the timeToLive duration for the region itself.
+        /// </summary>
+        /// <param name="timeToLive">
+        /// the timeToLive for this region, in seconds, or 0 to disable time-to-live
+        /// </param>
+        /// <returns>the previous value</returns>
+        /// <exception cref="IllegalStateException">
+        /// if the new timeToLive changes region expiration from
+        /// disabled to enabled or enabled to disabled.
+        /// </exception>
+        int32_t SetRegionTimeToLive( int32_t timeToLive );
+
+        /// <summary>
+        /// Sets the timeToLive action for the region itself.
+        /// </summary>
+        /// <param name="action">
+        /// the timeToLiv eaction for this region
+        /// </param>
+        /// <returns>the previous action</returns>
+        ExpirationAction SetRegionTimeToLiveAction( ExpirationAction action );
+
+        /// <summary>
+        /// Sets the maximum entry count in the region before LRU eviction.
+        /// </summary>
+        /// <param name="entriesLimit">the number of entries to allow, or 0 to disable LRU</param>
+        /// <returns>the previous value</returns>
+        /// <exception cref="IllegalStateException">
+        /// if the new entriesLimit changes LRU from
+        /// disabled to enabled or enabled to disabled.
+        /// </exception>
+        uint32_t SetLruEntriesLimit( uint32_t entriesLimit );
+
+        /// <summary>
+        /// Sets the CacheListener for the region.
+        /// The previous cache listener (if any) will be replaced with the given <c>cacheListener</c>.
+        /// </summary>
+        /// <param name="cacheListener">
+        /// user-defined cache listener, or null for no cache listener
+        /// </param>
+        void SetCacheListener( ICacheListener^ cacheListener );
+
+        /// <summary>
+        /// Sets the library path for the library that will be invoked for the listener of the region.
+        /// The previous cache listener will be replaced with a listener created
+        /// using the factory function provided in the given library.
+        /// </summary>
+        /// <param name="libPath">
+        /// library pathname containing the factory function.
+        /// </param>
+        /// <param name="factoryFunctionName">
+        /// Name of factory function that creates a <c>CacheListener</c>
+        /// for a native library, or the name of the method in the form
+        /// {Namespace}.{Class Name}.{Method Name} that creates an
+        /// <c>ICacheListener</c> for a managed library.
+        /// </param>
+        void SetCacheListener( String^ libPath, String^ factoryFunctionName );
+
+        /// <summary>
+        /// Sets the CacheLoader for the region.
+        /// The previous cache loader (if any) will be replaced with the given <c>cacheLoader</c>.
+        /// </summary>
+        /// <param name="cacheLoader">
+        /// user-defined cache loader, or null for no cache loader
+        /// </param>
+        void SetCacheLoader( ICacheLoader^ cacheLoader );
+
+        /// <summary>
+        /// Sets the library path for the library that will be invoked for the loader of the region.
+        /// The previous cache loader will be replaced with a loader created
+        /// using the factory function provided in the given library.
+        /// </summary>
+        /// <param name="libPath">
+        /// library pathname containing the factory function.
+        /// </param>
+        /// <param name="factoryFunctionName">
+        /// Name of factory function that creates a <c>CacheLoader</c>
+        /// for a native library, or the name of the method in the form
+        /// {Namespace}.{Class Name}.{Method Name} that creates an
+        /// <c>ICacheLoader</c> for a managed library.
+        /// </param>
+        void SetCacheLoader( String^ libPath, String^ factoryFunctionName );
+
+        /// <summary>
+        /// Sets the CacheListener for the region.
+        /// The previous cache writer (if any) will be replaced with the given <c>cacheWriter</c>.
+        /// </summary>
+        /// <param name="cacheWriter">
+        /// user-defined cache writer, or null for no cache writer
+        /// </param>
+        void SetCacheWriter( ICacheWriter^ cacheWriter );
+
+        /// <summary>
+        /// Sets the library path for the library that will be invoked for the writer of the region.
+        /// The previous cache writer will be replaced with a writer created
+        /// using the factory function provided in the given library.
+        /// </summary>
+        /// <param name="libPath">
+        /// library pathname containing the factory function.
+        /// </param>
+        /// <param name="factoryFunctionName">
+        /// Name of factory function that creates a <c>CacheWriter</c>
+        /// for a native library, or the name of the method in the form
+        /// {Namespace}.{Class Name}.{Method Name} that creates an
+        /// <c>ICacheWriter</c> for a managed library.
+        /// </param>
+        void SetCacheWriter( String^ libPath, String^ factoryFunctionName );
+
+
+      internal:
+        /// <summary>
+        /// Internal factory function to wrap a native object pointer inside
+        /// this managed class with null pointer check.
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        /// <returns>
+        /// The managed wrapper object; null if the native pointer is null.
+        /// </returns>
+        inline static AttributesMutator^ Create( gemfire::AttributesMutator* nativeptr )
+        {
+          return ( nativeptr != nullptr ?
+            gcnew AttributesMutator( nativeptr ) : nullptr );
+        }
+
+
+      private:
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline AttributesMutator( gemfire::AttributesMutator* nativeptr )
+          : SBWrap( nativeptr ) { }
+      };
+
+    }
+  }
+}



[41/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/ProductBrowser/com/examples/gemfire/net/Product.java
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/ProductBrowser/com/examples/gemfire/net/Product.java b/geode-client-native/examples/clicache/ProductBrowser/com/examples/gemfire/net/Product.java
new file mode 100755
index 0000000..20085e1
--- /dev/null
+++ b/geode-client-native/examples/clicache/ProductBrowser/com/examples/gemfire/net/Product.java
@@ -0,0 +1,201 @@
+package com.examples.gemfire.net;
+
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+
+import com.gemstone.gemfire.DataSerializable;
+import com.gemstone.gemfire.Instantiator;
+
+public class Product implements DataSerializable {
+	
+    private int ProductID;
+    private String Name;
+    private String ProductNumber;
+    private String MakeFlag;
+    private String FinishedGoodsFlag;
+    private String Color;
+    private int SafetyStockLevel;
+    private int ReorderPoint;
+    private double StandardCost;
+    private double ListPrice;
+    private int DaysToManufacture;
+    private String SellStartDate;
+    private String DiscontinuedDate;
+
+    static { // note that classID (7) must match C#
+        Instantiator.register(new Instantiator(Product.class, (byte) 0x07) {
+            public DataSerializable newInstance() {
+            	return new Product();
+        }
+        });
+    }
+
+        
+	public Product() {
+		// TODO Auto-generated constructor stub
+		
+	}
+	
+	public Product(int prodId, String prodName, String prodNum, String makeFlag, String finished, String color,
+            int safetyLock, int reorderPt, double stdCost, double listPrice, int mfgDays,
+            String startDate, String discDate)
+	{
+		ProductID = prodId;
+		Name = prodName;
+		ProductNumber = prodNum;
+		MakeFlag = makeFlag;
+		FinishedGoodsFlag = finished;
+		Color = color;
+		SafetyStockLevel = safetyLock;
+		ReorderPoint = reorderPt;
+		StandardCost = stdCost;
+		ListPrice = listPrice;
+		DaysToManufacture = mfgDays;
+		SellStartDate = startDate;
+		DiscontinuedDate = discDate;
+	}
+
+	public void fromData(DataInput input) throws IOException, ClassNotFoundException {
+
+			ProductID = input.readInt();
+			Name = input.readUTF();
+			ProductNumber = input.readUTF();
+			MakeFlag = input.readUTF();
+			FinishedGoodsFlag = input.readUTF();
+			Color = input.readUTF();
+			SafetyStockLevel = input.readInt();
+			ReorderPoint	= input.readInt();
+			StandardCost = input.readDouble();
+			ListPrice = input.readDouble();
+			DaysToManufacture = input.readInt();
+			SellStartDate = input.readUTF();
+			DiscontinuedDate = input.readUTF();
+	}
+
+	public void toData(DataOutput output) throws IOException {
+			output.writeInt(this.getProductID());
+			output.writeUTF(this.getName());
+			output.writeUTF(this.getProductNumber());
+			output.writeUTF(this.getMakeFlag());
+			output.writeUTF(this.getFinishedGoodsFlag());
+			output.writeUTF(this.getColor());
+			output.writeInt(this.getSafetyStockLevel());
+	        output.writeInt(this.getReorderPoint());
+	        output.writeDouble(this.getStandardCost());
+	        output.writeDouble(this.getListPrice());
+	        output.writeInt(this.getDaysToManufacture());
+	        output.writeUTF(this.getSellStartDate());
+	        output.writeUTF(this.getDiscontinuedDate());
+	}
+
+	public String getColor() {
+		return Color;
+	}
+
+	public void setColor(String color) {
+		Color = color;
+	}
+
+	public int getDaysToManufacture() {
+		return DaysToManufacture;
+	}
+
+	public void setDaysToManufacture(int daysToManufacture) {
+		DaysToManufacture = daysToManufacture;
+	}
+
+	public String getDiscontinuedDate() {
+		return DiscontinuedDate;
+	}
+
+	public void setDiscontinuedDate(String discontinuedDate) {
+		DiscontinuedDate = discontinuedDate;
+	}
+
+	public String getFinishedGoodsFlag() {
+		return FinishedGoodsFlag;
+	}
+
+	public void setFinishedGoodsFlag(String finishedGoodsFlag) {
+		FinishedGoodsFlag = finishedGoodsFlag;
+	}
+
+	public double getListPrice() {
+		return ListPrice;
+	}
+
+	public void setListPrice(double listPrice) {
+		ListPrice = listPrice;
+	}
+
+	public String getMakeFlag() {
+		return MakeFlag;
+	}
+
+	public void setMakeFlag(String makeFlag) {
+		MakeFlag = makeFlag;
+	}
+
+	public String getName() {
+		return Name;
+	}
+
+	public void setName(String name) {
+		Name = name;
+	}
+
+	public int getProductID() {
+		return ProductID;
+	}
+
+	public void setProductID(int productID) {
+		ProductID = productID;
+	}
+
+	public String getProductNumber() {
+		return ProductNumber;
+	}
+
+	public void setProductNumber(String productNumber) {
+		ProductNumber = productNumber;
+	}
+
+	public int getReorderPoint() {
+		return ReorderPoint;
+	}
+
+	public void setReorderPoint(int reorderPoint) {
+		ReorderPoint = reorderPoint;
+	}
+
+	public int getSafetyStockLevel() {
+		return SafetyStockLevel;
+	}
+
+	public void setSafetyStockLevel(int safetyStockLevel) {
+		SafetyStockLevel = safetyStockLevel;
+	}
+
+	public String getSellStartDate() {
+		return SellStartDate;
+	}
+
+	public void setSellStartDate(String sellStartDate) {
+		SellStartDate = sellStartDate;
+	}
+
+	public double getStandardCost() {
+		return StandardCost;
+	}
+
+	public void setStandardCost(double standardCost) {
+		StandardCost = standardCost;
+	}
+
+	public Class[] getSupportedClasses() {
+		// TODO Auto-generated method stub
+		return new Class[] {com.examples.gemfire.net.Product.class};
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/ProductBrowser/com/examples/gemfire/net/ProductBrowser.java
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/ProductBrowser/com/examples/gemfire/net/ProductBrowser.java b/geode-client-native/examples/clicache/ProductBrowser/com/examples/gemfire/net/ProductBrowser.java
new file mode 100755
index 0000000..1bda7a7
--- /dev/null
+++ b/geode-client-native/examples/clicache/ProductBrowser/com/examples/gemfire/net/ProductBrowser.java
@@ -0,0 +1,189 @@
+package com.examples.gemfire.net;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.InputStreamReader;
+import java.util.Iterator;
+import java.util.Properties;
+
+import com.gemstone.gemfire.DataSerializable;
+import com.gemstone.gemfire.DataSerializer;
+import com.gemstone.gemfire.Instantiator;
+import com.gemstone.gemfire.cache.AttributesFactory;
+import com.gemstone.gemfire.cache.Cache;
+import com.gemstone.gemfire.cache.CacheException;
+import com.gemstone.gemfire.cache.CacheFactory;
+import com.gemstone.gemfire.cache.Region;
+import com.gemstone.gemfire.cache.Scope;
+import com.gemstone.gemfire.cache.util.BridgeLoader;
+import com.gemstone.gemfire.cache.util.BridgeWriter;
+import com.gemstone.gemfire.distributed.DistributedSystem;
+
+
+public class ProductBrowser {
+
+	/**
+	 * @param args
+	 */
+	/** This example's connection to the distributed system */
+	private DistributedSystem system = null;
+
+	/** Cache <code>Region</code> currently reviewed by this example */
+	private Region productRegion;
+	
+	/** The cache used in the example */
+	private Cache cache;
+	
+	private File xmlFile = new File("product.xml");
+	
+	
+	public static void main(String[] args) {
+		// TODO Auto-generated method stub
+		
+		ProductBrowser client = new ProductBrowser();
+		try {
+			client.initialize();
+			client.go();
+		}
+		catch (CacheException ce)
+		{
+			ce.printStackTrace();
+		}
+		catch (Exception e)
+		{
+			System.out.println("\nException...");
+			e.printStackTrace();
+		}
+
+	}
+	
+	/*
+	 * Initialized the cache client.  Gemfire.properties and product.xml are required
+	 * for initialization.  No additional cache or region parameters are specified
+	 * programmatically
+	 */
+	private void initialize() throws CacheException, Exception  {	
+		Properties props = new Properties();
+		props.setProperty("cache-xml-file", this.xmlFile.toString());
+		system = DistributedSystem.connect(props);
+		cache = CacheFactory.create(system);
+		
+		productRegion = cache.getRegion("product");
+		
+		// register the product class for heterogeneous client access.
+		Instantiator.register(new Instantiator(Product.class, (byte) 0x07) {
+            public DataSerializable newInstance() {
+            	return new Product();
+        }
+        });
+		
+	}
+		
+	/*
+	 * Allows the user to search and create entries in the cache.
+	 */
+	private void go() throws CacheException, Exception
+	{
+		String command;
+		String key;
+		BufferedReader bin = new BufferedReader(new InputStreamReader(System.in));
+				
+		do { 
+			System.out.print("\n\n");
+			System.out.print("Enter the operation to execute.  'Get' to find an object, 'Put' to insert/update an object, or 'Exit' to end:  ");
+			
+			command = bin.readLine();
+			
+			if (command.equalsIgnoreCase("get"))
+			{
+				System.out.print("Enter the Product ID to search for:  ");
+				key = bin.readLine();
+				Product prod = (Product)productRegion.get(key);
+				
+				if (prod != null) {
+					System.out.println("Product ID =		" + prod.getProductID());
+					System.out.println("Product Name =		" + prod.getName());
+					System.out.println("Product Number =	" + prod.getProductNumber());
+					System.out.println("Color =			" + prod.getColor());
+					System.out.println("Stock Level = 		" + prod.getSafetyStockLevel());
+					System.out.println("Reorder Point = 	" + prod.getReorderPoint());
+					System.out.println("Product Cost =		" + prod.getStandardCost());
+					System.out.println("List Price = 		" + prod.getListPrice());
+					System.out.println("Available as of = 	" + prod.getSellStartDate());
+					System.out.println("Discontinue as of = 	" + prod.getDiscontinuedDate());
+				}
+				else {
+					System.out.println("Product not found in the cache.");
+				}
+			}
+			else if (command.equalsIgnoreCase("put"))
+			{
+				System.out.print("ProductId:  ");
+				String pId = bin.readLine();
+				Integer pKey = new Integer(pId);
+				
+				System.out.print("Product Name:  ");
+				String pName = bin.readLine();
+				
+				System.out.print("Product Number:  ");
+				String pNum = bin.readLine();
+				
+				System.out.print("Color:  ");
+				String color = bin.readLine();
+				
+				System.out.print("Stock Level (int):  ");
+				String stockLevel = bin.readLine();
+				
+				System.out.print("Reorder Point (int):  ");
+				String reorderPoint = bin.readLine();
+				
+				System.out.print("Product Cost (double):  ");
+				String cost = bin.readLine();
+				
+				System.out.print("List Price (double):  ");
+				String listPrice = bin.readLine();
+				
+				System.out.print("Available as of (string):  ");
+				String availableAsOf = bin.readLine();
+				
+				System.out.print("Discontinue as of (string):  ");
+				String discAsOf = bin.readLine();
+				
+				try {
+					// Populate the product object with the values specified and insert into the 
+					// cache.  Please note that no type checking is performed.  Entering an 
+					// invalid type will result in an exception 
+					Product prod = new Product();
+					prod.setProductID(pKey.intValue());
+					prod.setName(pName);
+					prod.setProductNumber(pNum);
+					prod.setMakeFlag("false");
+					prod.setFinishedGoodsFlag("false");
+					prod.setColor(color);
+					prod.setSafetyStockLevel(new Integer(stockLevel).intValue());
+					prod.setReorderPoint(new Integer(reorderPoint).intValue());
+					prod.setStandardCost(new Double(cost).doubleValue());
+					prod.setListPrice(new Double(listPrice).doubleValue());
+					prod.setDaysToManufacture(2);
+					prod.setSellStartDate(availableAsOf);
+					prod.setDiscontinuedDate(discAsOf);
+				
+					productRegion.put(pId, prod);
+				}
+				catch (NumberFormatException nfe)
+				{
+					System.out.println("\n\nException occurred populating the Product Object.  ");
+					System.out.println("------> Stock level, reorder point, list price and product cost must be numeric values");
+				}
+				catch (Exception re)
+				{
+					System.out.println("Eception occurred adding the object to the cache.  Exception is:");
+					re.printStackTrace();
+				}
+				
+			}
+		} while (!command.equalsIgnoreCase("exit"));
+	}
+	
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/ProductBrowser/defaultConfig/gemfire.properties
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/ProductBrowser/defaultConfig/gemfire.properties b/geode-client-native/examples/clicache/ProductBrowser/defaultConfig/gemfire.properties
new file mode 100644
index 0000000..b5b659c
--- /dev/null
+++ b/geode-client-native/examples/clicache/ProductBrowser/defaultConfig/gemfire.properties
@@ -0,0 +1,7 @@
+#Fri Dec 15 10:20:26 PST 2006
+cache-xml-file=product.xml
+mcast-port=10334
+mcast-address=239.192.81.1
+log-level=config
+log-file=productBrowserServer.log
+name=ProductBrowserServer
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/ProductBrowser/defaultConfig/product.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/ProductBrowser/defaultConfig/product.xml b/geode-client-native/examples/clicache/ProductBrowser/defaultConfig/product.xml
new file mode 100644
index 0000000..8f92be6
--- /dev/null
+++ b/geode-client-native/examples/clicache/ProductBrowser/defaultConfig/product.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<!DOCTYPE cache PUBLIC "-//GemStone Systems, Inc.//GemFire Declarative Caching 5.0//EN" "http://www.gemstone.com/dtd/cache6_0.dtd">
+<cache lock-lease="120" lock-timeout="60" search-timeout="300" is-server="true" copy-on-read="false">
+  <bridge-server port="40404" notify-by-subscription="true"/>
+  <region name="product">
+    <region-attributes/>
+  </region>
+</cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/ProductBrowser/gemfire.properties
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/ProductBrowser/gemfire.properties b/geode-client-native/examples/clicache/ProductBrowser/gemfire.properties
new file mode 100755
index 0000000..b5b659c
--- /dev/null
+++ b/geode-client-native/examples/clicache/ProductBrowser/gemfire.properties
@@ -0,0 +1,7 @@
+#Fri Dec 15 10:20:26 PST 2006
+cache-xml-file=product.xml
+mcast-port=10334
+mcast-address=239.192.81.1
+log-level=config
+log-file=productBrowserServer.log
+name=ProductBrowserServer
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/ProductBrowser/product.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/ProductBrowser/product.xml b/geode-client-native/examples/clicache/ProductBrowser/product.xml
new file mode 100755
index 0000000..3e87daf
--- /dev/null
+++ b/geode-client-native/examples/clicache/ProductBrowser/product.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+
+<!DOCTYPE cache PUBLIC
+  "-//GemStone Systems, Inc.//GemFire Declarative Caching 5.0//EN"
+  "http://www.gemstone.com/dtd/cache6_0.dtd">
+  
+<cache lock-lease="120" lock-timeout="60" search-timeout="300" is-server="true" copy-on-read="false">
+  <bridge-server port="40404" notify-by-subscription="true"/>
+  <region name="product">
+    <region-attributes scope="distributed-no-ack" data-policy="normal">
+    </region-attributes>
+  </region>
+</cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/UserObjects/AccountHistory.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/UserObjects/AccountHistory.cs b/geode-client-native/examples/clicache/UserObjects/AccountHistory.cs
new file mode 100644
index 0000000..a16b901
--- /dev/null
+++ b/geode-client-native/examples/clicache/UserObjects/AccountHistory.cs
@@ -0,0 +1,94 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *========================================================================
+ */
+
+using System;
+using System.Collections.Generic;
+
+namespace GemStone.GemFire.Cache.Examples
+{
+  class AccountHistory : IGFSerializable
+  {
+    #region Private members
+
+    private List<string> m_history;
+
+    #endregion
+
+    public AccountHistory()
+    {
+      m_history = new List<string>();
+    }
+
+    public void ShowAccountHistory()
+    {
+      Console.WriteLine("AccountHistory:");
+      foreach (string hist in m_history)
+      {
+        Console.WriteLine("\t{0}", hist);
+      }
+    }
+
+    public void AddLog(string entry)
+    {
+      m_history.Add(entry);
+    }
+
+    public static IGFSerializable CreateInstance()
+    {
+      return new AccountHistory();
+    }
+
+    #region IGFSerializable Members
+
+    public IGFSerializable FromData(DataInput input)
+    {
+      int len = input.ReadInt32();
+
+      m_history.Clear();
+      for (int i = 0; i < len; i++)
+      {
+        m_history.Add(input.ReadUTF());
+      }
+      return this;
+    }
+
+    public void ToData(DataOutput output)
+    {
+      output.WriteInt32(m_history.Count);
+      foreach (string hist in m_history)
+      {
+        output.WriteUTF(hist);
+      }
+    }
+
+    public UInt32 ClassId
+    {
+      get
+      {
+        return 0x05;
+      }
+    }
+    
+    public UInt32 ObjectSize
+    {
+      get
+      {
+        UInt32 objectSize = 0;
+        foreach (string hist in m_history)
+        {
+          objectSize += (UInt32)(hist == null ? 0 : sizeof(char) * hist.Length);
+        }
+        return objectSize;
+
+      }
+      
+    }
+
+    #endregion
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/UserObjects/BankAccount.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/UserObjects/BankAccount.cs b/geode-client-native/examples/clicache/UserObjects/BankAccount.cs
new file mode 100644
index 0000000..3f997e7
--- /dev/null
+++ b/geode-client-native/examples/clicache/UserObjects/BankAccount.cs
@@ -0,0 +1,130 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *========================================================================
+ */
+
+using System;
+
+namespace GemStone.GemFire.Cache.Examples
+{
+  class BankAccount : ICacheableKey
+  {
+    #region Private members
+
+    private int m_customerId;
+    private int m_accountId;
+
+    #endregion
+
+    #region Public accessors
+
+    public int Customer
+    {
+      get
+      {
+        return m_customerId;
+      }
+    }
+
+    public int Account
+    {
+      get
+      {
+        return m_accountId;
+      }
+    }
+
+    #endregion
+
+    public BankAccount(int customer, int account)
+    {
+      m_customerId = customer;
+      m_accountId = account;
+    }
+
+    // Our TypeFactoryMethod
+    public static IGFSerializable CreateInstance()
+    {
+      return new BankAccount(0, 0);
+    }
+
+    #region IGFSerializable Members
+
+    public void ToData(DataOutput output)
+    {
+      output.WriteInt32(m_customerId);
+      output.WriteInt32(m_accountId);
+    }
+
+    public IGFSerializable FromData(DataInput input)
+    {
+      m_customerId = input.ReadInt32();
+      m_accountId = input.ReadInt32();
+      return this;
+    }
+
+    public UInt32 ClassId
+    {
+      get
+      {
+        return 0x04;
+      }
+    }
+
+    public UInt32 ObjectSize
+    {
+      get
+      {
+        return (UInt32)(sizeof(Int32) + sizeof(Int32));
+      }
+    
+    }
+
+    #endregion
+
+    #region ICacheableKey Members
+
+    public bool Equals(ICacheableKey other)
+    {
+      BankAccount otherAccount = other as BankAccount;
+      if (otherAccount != null)
+      {
+        return (m_customerId == otherAccount.m_customerId) &&
+          (m_accountId == otherAccount.m_accountId);
+      }
+      return false;
+    }
+
+    public override int GetHashCode()
+    {
+      return (m_customerId ^ m_accountId);
+    }
+
+    #endregion
+
+    #region Overriden System.Object methods
+
+    public override bool Equals(object obj)
+    {
+      BankAccount otherAccount = obj as BankAccount;
+      if (otherAccount != null)
+      {
+        return (m_customerId == otherAccount.m_customerId) &&
+          (m_accountId == otherAccount.m_accountId);
+      }
+      return false;
+    }
+
+    // Also override ToString to get a nice string representation.
+    public override string ToString()
+    {
+      return string.Format("BankAccount( customer: {0}, account: {1} )",
+        m_customerId, m_accountId);
+    }
+
+    #endregion
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/UserObjects/Program.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/UserObjects/Program.cs b/geode-client-native/examples/clicache/UserObjects/Program.cs
new file mode 100644
index 0000000..3dd9111
--- /dev/null
+++ b/geode-client-native/examples/clicache/UserObjects/Program.cs
@@ -0,0 +1,73 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *========================================================================
+ */
+
+using System;
+
+namespace GemStone.GemFire.Cache.Examples
+{
+  class UserObjects
+  {
+    static void Main()
+    {
+      // Register the user-defined serializable type.
+      Serializable.RegisterType(AccountHistory.CreateInstance);
+      Serializable.RegisterType(BankAccount.CreateInstance);
+
+      // Create a GemFire Cache Programmatically.
+      CacheFactory cacheFactory = CacheFactory.CreateCacheFactory(null);
+      Cache cache = cacheFactory.SetSubscriptionEnabled(true).Create();
+
+      Console.WriteLine("Created the GemFire Cache");
+
+      RegionFactory regionFactory = cache.CreateRegionFactory(RegionShortcut.LOCAL);
+      Console.WriteLine("Created Region Factory");
+
+      // Create the example Region programmatically.
+      Region region = regionFactory
+        .Create("BankAccounts");
+
+      Console.WriteLine("Created the Region Programmatically.");
+
+      // Place some instances of BankAccount cache region.
+      BankAccount baKey = new BankAccount(2309, 123091);
+      AccountHistory ahVal = new AccountHistory();
+      ahVal.AddLog("Created account");
+      region.Put(baKey, ahVal);
+      Console.WriteLine("Put an AccountHistory in cache keyed with BankAccount.");
+
+      // Display the BankAccount information.
+      Console.WriteLine(baKey.ToString());
+
+      // Call custom behavior on instance of AccountHistory.
+      ahVal.ShowAccountHistory();
+
+      // Get a value out of the region.
+      AccountHistory history = region.Get(baKey) as AccountHistory;
+      if (history != null)
+      {
+        Console.WriteLine("Found AccountHistory in the cache.");
+        history.ShowAccountHistory();
+        history.AddLog("debit $1,000,000.");
+        region.Put(baKey, history);
+        Console.WriteLine("Updated AccountHistory in the cache.");
+      }
+
+      // Look up the history again.
+      history = region.Get(baKey) as AccountHistory;
+      if (history != null)
+      {
+        Console.WriteLine("Found AccountHistory in the cache.");
+        history.ShowAccountHistory();
+      }
+
+      // Close the cache.
+      cache.Close();
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/UserObjects/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/UserObjects/Properties/AssemblyInfo.cs b/geode-client-native/examples/clicache/UserObjects/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..52d496b
--- /dev/null
+++ b/geode-client-native/examples/clicache/UserObjects/Properties/AssemblyInfo.cs
@@ -0,0 +1,33 @@
+\ufeffusing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("GemFireUserObjects")]
+[assembly: AssemblyDescription("GemFire Simple Bank Example")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("GemStone Systems Inc.")]
+[assembly: AssemblyProduct("GemFireUserObjects")]
+[assembly: AssemblyCopyright("Copyright � GemStone Systems Inc. 2008")]
+[assembly: AssemblyTrademark("All Rights Reserved")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("446a6d15-e898-4fd5-8493-2076da55bd84")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+[assembly: AssemblyVersion("9.0.0.0")]
+[assembly: AssemblyFileVersion("9.0.0.0")]

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/UserObjects/UserObjects.csproj
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/UserObjects/UserObjects.csproj b/geode-client-native/examples/clicache/UserObjects/UserObjects.csproj
new file mode 100644
index 0000000..b88d985
--- /dev/null
+++ b/geode-client-native/examples/clicache/UserObjects/UserObjects.csproj
@@ -0,0 +1,87 @@
+\ufeff<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{9FF38F43-864D-45EB-AD38-2AC2AD272C9E}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>GemStone.GemFire.Cache.Examples</RootNamespace>
+    <AssemblyName>UserObjects</AssemblyName>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>2.0</OldToolsVersion>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <IntermediateOutputPath>$(OSBUILDDIR)\examples\clicache\Debug\UserObjects\</IntermediateOutputPath>
+    <OutputPath>$(OSBUILDDIR)\examples\clicache\Debug\UserObjects\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x86</PlatformTarget>
+    <NoWarn>618</NoWarn>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <IntermediateOutputPath>$(OSBUILDDIR)\examples\clicache\UserObjects\</IntermediateOutputPath>
+    <OutputPath>$(OSBUILDDIR)\examples\clicache\UserObjects\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x86</PlatformTarget>
+    <NoWarn>618</NoWarn>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <IntermediateOutputPath>$(OSBUILDDIR)\examples\clicache\Debug\UserObjects\</IntermediateOutputPath>
+    <OutputPath>$(OSBUILDDIR)\examples\clicache\Debug\UserObjects\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <NoWarn>618</NoWarn>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <IntermediateOutputPath>$(OSBUILDDIR)\examples\clicache\UserObjects\</IntermediateOutputPath>
+    <OutputPath>$(OSBUILDDIR)\examples\clicache\UserObjects\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <NoWarn>618</NoWarn>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="AccountHistory.cs" />
+    <Compile Include="BankAccount.cs" />
+    <Compile Include="Program.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\..\vs_projects\gfclicache\gfclicache.vcproj">
+      <Project>{B274E3B1-6A09-4322-952B-8BDA712892CE}</Project>
+      <Name>gfclicache</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/c-overview.dox
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/c-overview.dox b/geode-client-native/examples/dist/c-overview.dox
new file mode 100644
index 0000000..3cf17d9
--- /dev/null
+++ b/geode-client-native/examples/dist/c-overview.dox
@@ -0,0 +1,16 @@
+// This file contains external summary documentation for the GemFire C
+// API similar to an "overview.html" in Javadoc.  The document tags it
+// uses can be interpreted by DOxygen.
+
+/**
+ * @mainpage Examples of the GemFire Distributed C API
+ *
+ * The following programs provide examples of using the GemFire C API
+ * to access distributed cached data.
+ *
+ * \li cacheRunner.c is an interactive program that allows you to
+ *     explore the C API to the GemFire distributed cache
+ *
+ * \li ha.c allows you to experiment with GemFire's high availability
+ *     and failover features
+ */


[43/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/ExecuteFunctions/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/ExecuteFunctions/Properties/AssemblyInfo.cs b/geode-client-native/examples/clicache/ExecuteFunctions/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..ff516af
--- /dev/null
+++ b/geode-client-native/examples/clicache/ExecuteFunctions/Properties/AssemblyInfo.cs
@@ -0,0 +1,33 @@
+\ufeffusing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("GemFireExecuteFunctions")]
+[assembly: AssemblyDescription("GemFire Simple Bank Example")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("GemStone Systems Inc.")]
+[assembly: AssemblyProduct("GemFireExecuteFunctions")]
+[assembly: AssemblyCopyright("Copyright � GemStone Systems Inc. 2008")]
+[assembly: AssemblyTrademark("All Rights Reserved")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("446a6d15-e898-4fd5-8493-2076da55bd85")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+[assembly: AssemblyVersion("9.0.0.0")]
+[assembly: AssemblyFileVersion("9.0.0.0")]

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/ExecuteFunctions/README.html
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/ExecuteFunctions/README.html b/geode-client-native/examples/clicache/ExecuteFunctions/README.html
new file mode 100755
index 0000000..772fdf4
--- /dev/null
+++ b/geode-client-native/examples/clicache/ExecuteFunctions/README.html
@@ -0,0 +1,427 @@
+<html xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:w="urn:schemas-microsoft-com:office:word"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
+<meta name=ProgId content=Word.Document>
+<meta name=Generator content="Microsoft Word 11">
+<meta name=Originator content="Microsoft Word 11">
+<link rel=File-List href="README_files/filelist.xml">
+<title>ExecuteFunctions: Pivotal GemFire&#174; Native Client Example</title>
+<!--[if gte mso 9]><xml>
+ <o:DocumentProperties>
+  <o:Author>qhe</o:Author>
+  <o:Template>Normal</o:Template>
+  <o:LastAuthor>qhe</o:LastAuthor>
+  <o:Revision>4</o:Revision>
+  <o:TotalTime>13</o:TotalTime>
+  <o:Created>2008-10-29T17:56:00Z</o:Created>
+  <o:LastSaved>2008-10-29T18:10:00Z</o:LastSaved>
+  <o:Pages>1</o:Pages>
+  <o:Words>632</o:Words>
+  <o:Characters>3608</o:Characters>
+  <o:Company>GemStone Systems, Inc.</o:Company>
+  <o:Lines>30</o:Lines>
+  <o:Paragraphs>8</o:Paragraphs>
+  <o:CharactersWithSpaces>4232</o:CharactersWithSpaces>
+  <o:Version>11.6360</o:Version>
+ </o:DocumentProperties>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:WordDocument>
+  <w:SpellingState>Clean</w:SpellingState>
+  <w:GrammarState>Clean</w:GrammarState>
+  <w:ValidateAgainstSchemas/>
+  <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
+  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
+  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
+  <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
+ </w:WordDocument>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:LatentStyles DefLockedState="false" LatentStyleCount="156">
+ </w:LatentStyles>
+</xml><![endif]-->
+<style>
+<!--
+ /* Font Definitions */
+ @font-face
+	{font-family:Wingdings;
+	panose-1:5 0 0 0 0 0 0 0 0 0;
+	mso-font-charset:2;
+	mso-generic-font-family:auto;
+	mso-font-pitch:variable;
+	mso-font-signature:0 268435456 0 0 -2147483648 0;}
+ /* Style Definitions */
+ p.MsoNormal, li.MsoNormal, div.MsoNormal
+	{mso-style-parent:"";
+	margin:0in;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	font-family:"Times New Roman";
+	mso-fareast-font-family:"Times New Roman";}
+h1
+	{mso-margin-top-alt:auto;
+	margin-right:0in;
+	mso-margin-bottom-alt:auto;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	mso-outline-level:1;
+	font-size:24.0pt;
+	font-family:"Times New Roman";
+	font-weight:bold;}
+h2
+	{mso-margin-top-alt:auto;
+	margin-right:0in;
+	mso-margin-bottom-alt:auto;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	mso-outline-level:2;
+	font-size:18.0pt;
+	font-family:"Times New Roman";
+	font-weight:bold;}
+h4
+	{mso-margin-top-alt:auto;
+	margin-right:0in;
+	mso-margin-bottom-alt:auto;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	mso-outline-level:4;
+	font-size:12.0pt;
+	font-family:"Times New Roman";
+	font-weight:bold;}
+a:link, span.MsoHyperlink
+	{color:blue;
+	text-decoration:underline;
+	text-underline:single;}
+a:visited, span.MsoHyperlinkFollowed
+	{color:blue;
+	text-decoration:underline;
+	text-underline:single;}
+p
+	{mso-margin-top-alt:auto;
+	margin-right:0in;
+	mso-margin-bottom-alt:auto;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	font-family:"Times New Roman";
+	mso-fareast-font-family:"Times New Roman";}
+code
+	{font-family:"Courier New";
+	mso-ascii-font-family:"Courier New";
+	mso-fareast-font-family:"Times New Roman";
+	mso-hansi-font-family:"Courier New";
+	mso-bidi-font-family:"Courier New";}
+span.SpellE
+	{mso-style-name:"";
+	mso-spl-e:yes;}
+span.GramE
+	{mso-style-name:"";
+	mso-gram-e:yes;}
+@page Section1
+	{size:8.5in 11.0in;
+	margin:1.0in 1.25in 1.0in 1.25in;
+	mso-header-margin:.5in;
+	mso-footer-margin:.5in;
+	mso-paper-source:0;}
+div.Section1
+	{page:Section1;}
+ /* List Definitions */
+ @list l0
+	{mso-list-id:162935388;
+	mso-list-template-ids:1394253234;}
+@list l0:level1
+	{mso-level-number-format:bullet;
+	mso-level-text:\F0B7;
+	mso-level-tab-stop:.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Symbol;}
+@list l1
+	{mso-list-id:226569577;
+	mso-list-template-ids:-1947287032;}
+@list l1:level2
+	{mso-level-text:"%2\)";
+	mso-level-tab-stop:1.0in;
+	mso-level-number-position:left;
+	text-indent:-.25in;}
+@list l2
+	{mso-list-id:1273512360;
+	mso-list-template-ids:699437352;}
+@list l3
+	{mso-list-id:1483305081;
+	mso-list-template-ids:1760043970;}
+ol
+	{margin-bottom:0in;}
+ul
+	{margin-bottom:0in;}
+-->
+</style>
+<!--[if gte mso 10]>
+<style>
+ /* Style Definitions */
+ table.MsoNormalTable
+	{mso-style-name:"Table Normal";
+	mso-tstyle-rowband-size:0;
+	mso-tstyle-colband-size:0;
+	mso-style-noshow:yes;
+	mso-style-parent:"";
+	mso-padding-alt:0in 5.4pt 0in 5.4pt;
+	mso-para-margin:0in;
+	mso-para-margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:10.0pt;
+	font-family:"Times New Roman";
+	mso-ansi-language:#0400;
+	mso-fareast-language:#0400;
+	mso-bidi-language:#0400;}
+</style>
+<![endif]-->
+<meta http-equiv=Content-Style-Type content="text/css">
+</head>
+
+<IMG SRC="../../../docs/PIVOTAL_GemFire_190x81.png" BORDER="0">
+<body lang=EN-US link=blue vlink=blue style='tab-interval:.5in'>
+
+<div class=Section1>
+
+<div>
+
+<h1 align=center style='text-align:center'><span class=SpellE>ExecuteFunctions</span></h1>
+
+<h2 align=center style='text-align:center'>GemFire Native Client </h2>
+
+<h2 align=center style='text-align:center'>C# Programming Example</h2>
+
+</div>
+
+
+<div>
+
+<h2>About the <span class=SpellE>ExecuteFunctions</span> Example </h2>
+
+<p>The <span class=SpellE><code><span style='font-size:10.0pt'>ExecuteFunctions</span></code></span>
+example is a C# program that uses Microsoft .NET Framework 4.0 to access the
+GemFire C++ API for continuous query.</p>
+
+<blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'>
+
+<p><em>Microsoft .NET Framework 4.0 must be installed before running this
+example. For information about installing the .NET Framework, see the </em>GemFire
+Native Client User's Guide<em>.</em> </p>
+
+</blockquote>
+
+<p>The client application comes with a cache configuration file, <code><span
+style='font-size:10.0pt'><a href="HierarchicalClient.xml" target="_blank"><span
+class=SpellE>clientExecuteFunctions.xml</span></a></span></code>, which is configured to
+create a root region and establish the native client endpoints to the
+locally-run server by specifying <code><span style='font-size:10.0pt'>localhost<span
+class=GramE>:50505</span></span></code>. <span class=GramE>If java server is
+located on another host, change <span class=SpellE>localhost</span> to that
+host accordingly.</span></p>
+
+<p>The <span class=SpellE><code><span style='font-size:10.0pt'>ExecuteFunctions</span></code></span>
+cache listens for client requests at a specific port (see <code><span
+style='font-size:10.0pt'><a
+href="../../../quickstart/xml/hierarchicalserver.xml" target="_blank"><span
+class=SpellE>serverExecuteFunctions.xml</span></a></span></code>). The client connects
+to the cache server's port.</p>
+
+</div>
+
+<div>
+
+<h2><a name="configuring_environment"></a>Configuring the Environment </h2>
+
+<p>Examples that interact with a Java cache server require specific environment
+configurations so the Java cache server will run properly. Follow the
+configuration steps listed below that apply to your operating system: </p>
+
+</div>
+
+<div>
+
+<ol start=1 type=1>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;margin-bottom:12.0pt;
+     mso-list:l3 level1 lfo2;tab-stops:list .5in'>From the GemFire
+     product installation directory, configure your environment settings by
+     following the steps in <code><span style='font-size:10.0pt'>examples/EnvSetup.html</span></code>.
+     Refer to the developer's guide if you need help with this step.</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;margin-bottom:12.0pt;
+     mso-list:l3 level1 lfo2;tab-stops:list .5in'>Set the <code><span
+     style='font-size:10.0pt'>JAVA_HOME</span></code> and <code><span
+     style='font-size:10.0pt'>GF_JAVA_HOME</span></code> environment variables
+     to your installed Java JRE or JDK. See the Installation chapter of the <em>GemFire
+     User's Guide</em> for the versions of Java that
+     are compatible with GemFire. The <code><span style='font-size:
+     10.0pt'>JAVA_HOME</span></code> setting is for your applications, and <code><span
+     style='font-size:10.0pt'>GF_JAVA_HOME</span></code> is for the GemFire
+     scripts. You must have a compatible Java JRE or JDK installed and you must
+     set <code><span style='font-size:10.0pt'>JAVA_HOME</span></code> and <code><span
+     style='font-size:10.0pt'>GF_JAVA_HOME</span></code> to point to it.</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;margin-bottom:12.0pt;
+     mso-list:l3 level1 lfo2;tab-stops:list .5in'>Add <code><span
+     style='font-size:10.0pt'>$JAVA_HOME/bin</span></code> to the start of your
+     <code><span style='font-size:10.0pt'>PATH</span></code>. </li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l3 level1 lfo2;tab-stops:list .5in'>Add the GemFire <span
+     class=SpellE>quickstart</span> classes to your <code><span
+     style='font-size:10.0pt'>CLASSPATH</span></code>. </li>
+</ol>
+
+<p style='margin-left:.5in'><span class=GramE><strong><span style='font-size:
+10.0pt;font-family:"Courier New"'>set</span></strong></span><strong><span
+style='font-size:10.0pt;font-family:"Courier New"'> CLASSPATH=%GEMFIRE%\<span
+class=SpellE>quickstart\classes;%CLASSPATH</span>%</span></strong></p>
+
+<p>The following is a list of the environment configuration commands for the <span
+class=SpellE><code><span style='font-size:10.0pt'>ExecuteFunctions</span></code></span>
+example. Choose the set of commands that are appropriate for your operating
+system. The text that you type is shown in bold. These configurations only need
+to be performed for the sessions that invoke the Java cache server.</p>
+
+<p><strong>Bourne and <span class=SpellE>Korn</span> shells (<span
+class=SpellE>sh</span>, <span class=SpellE>ksh</span>, bash)</strong></p>
+
+<blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'>
+
+<p><code><span style='font-size:10.0pt'>% </span></code><span class=SpellE><strong><span
+style='font-size:10.0pt;font-family:"Courier New"'>cd</span></strong></span><strong><span
+style='font-size:10.0pt;font-family:"Courier New"'> <span class=SpellE>GemFireInstallDirectory</span></span></strong><span
+style='font-size:10.0pt;font-family:"Courier New"'><br>
+<code>% </code><strong><span style='font-family:"Courier New"'>CLASSPATH=$CLASSPATH<span
+class=GramE>:$</span>GEMFIRE/<span class=SpellE>quickstart</span>/classes;
+export CLASSPATH</span></strong><br>
+<code>% </code><span class=SpellE><strong><span style='font-family:"Courier New"'>cd</span></strong></span><strong><span
+style='font-family:"Courier New"'> $GEMFIRE/<span class=SpellE>quickstart</span></span></strong><br>
+<code>% </code><strong><span style='font-family:"Courier New"'>JAVA_HOME=&lt;Installed
+JRE PATH&gt;; export JAVA_HOME</span></strong><br>
+<code>% </code><strong><span style='font-family:"Courier New"'>GF_JAVA_HOME=$JAVA_HOME;
+export GF_JAVA_HOME</span></strong><br>
+<code>% </code><strong><span style='font-family:"Courier New"'>PATH=$JAVA_HOME/<span
+class=SpellE>bin:$PATH</span>; export PATH</span></strong></span></p>
+
+</blockquote>
+
+<p><strong>Windows</strong></p>
+
+<blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'>
+
+<p><code><span style='font-size:10.0pt'>&gt; </span></code><span class=SpellE><span
+class=GramE><strong><span style='font-size:10.0pt;font-family:"Courier New"'>cd</span></strong></span></span><strong><span
+style='font-size:10.0pt;font-family:"Courier New"'> <span class=SpellE>GemFireInstallDirectory</span></span></strong><span
+style='font-size:10.0pt;font-family:"Courier New"'><br>
+<code>&gt; </code><strong><span style='font-family:"Courier New"'>set
+CLASSPATH=%GEMFIRE%\<span class=SpellE>quickstart\classes;%CLASSPATH</span>%</span></strong><br>
+<code>&gt; </code><span class=SpellE><strong><span style='font-family:"Courier New"'>cd</span></strong></span><strong><span
+style='font-family:"Courier New"'> %GEMFIRE%\<span class=SpellE>quickstart</span></span></strong><br>
+<code>&gt; </code><strong><span style='font-family:"Courier New"'>set
+JAVA_HOME=&lt;Installed JRE PATH&gt;</span></strong><br>
+<code>&gt; </code><strong><span style='font-family:"Courier New"'>set
+GF_JAVA_HOME=%JAVA_HOME%</span></strong><br>
+<code>&gt; </code><strong><span style='font-family:"Courier New"'>set
+PATH=%JAVA_HOME%\<span class=SpellE>bin;%PATH</span>%</span></strong><code> </code></span></p>
+
+</blockquote>
+
+</div>
+
+<div>
+
+<h2>Starting <span class=SpellE>ExecuteFunctions</span> </h2>
+
+<p>To run the <span class=SpellE><code><span style='font-size:10.0pt'>ExecuteFunctions</span></code></span>
+example, create a session from the GemFire product directory and
+complete the following steps. Throughout this example, when you're prompted to
+enter the native client directory, replace the <span class=SpellE><code><span
+style='font-size:10.0pt'>xxxx</span></code></span> in <span class=SpellE><code><span
+style='font-size:10.0pt'>NativeClient_xxxx</span></code></span> with the actual
+four-digit product version number. Note that in the following steps, except ExecuteFunctions.exe,
+all other programs can be run on other operating system machines.</p>
+
+<p>This first session starts the Java cache server. <code><span
+style='mso-ansi-font-size:12.0pt;mso-bidi-font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></code></p>
+
+</div>
+
+<p style='margin-left:.5in'><span class=SpellE><code><b><span
+style='font-size:10.0pt'>cd examples\ExecuteFunctions</span></b></code></span><b><span
+style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></b></p>
+
+
+<ol start=1 type=1>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l2 level1 lfo3;tab-stops:list .5in'>Start Java server: </li>
+</ol>
+
+<p style='margin-left:.5in'><span class=SpellE><code><b><span
+style='font-size:10.0pt'>startServer.bat</span></b></code></span><b><span
+style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></b></p>
+
+<ol start=2 type=1>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l2 level1 lfo3;tab-stops:list .5in'>Create another session and go
+     to the <span class=SpellE><code><span style='font-size:10.0pt'>cli_ExecuteFunctions</span></code></span>
+     example directory: </li>
+</ol>
+
+<p style='margin-left:.5in'><span class=SpellE><span class=GramE><code><b><span
+style='font-size:10.0pt'>cd</span></b></code></span></span><code><b><span
+style='font-size:10.0pt'> <span class=SpellE>examples\cli_ExecuteFunctions</span></span></b></code></p>
+
+<ol start=3 type=1>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l2 level1 lfo3;tab-stops:list .5in'>Start the <span class=SpellE><code><span
+     style='font-size:10.0pt'>ExecuteFunctions</span></code></span> application:</li>
+</ol>
+
+<blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'>
+
+<p><code><b><span style='margin-left:.1in;font-size:10.0pt'>ExecuteFunctions.exe</span></b></code><b><span
+style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></b></p>
+
+</blockquote>
+
+<ol start=4 type=1>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l2 level1 lfo3;tab-stops:list .5in'>Start the <code><span
+     style='font-size:10.0pt'>updater</span></code> application. In another window:</li>
+</ol>
+<br>
+<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+margin-left:.5in'><span class=SpellE><span class=GramE><code><b><span
+style='font-size:10.0pt'>cd</span></b></code></span></span><code><b><span
+style='font-size:10.0pt'> <span class=SpellE>examples\ExecuteFunctions</span><o:p></o:p></span></b></code></p>
+
+<p style="margin-left:.25in"><code><b><span style='font-size:10.0pt'><span style='mso-spacerun:yes'>\ufffd\ufffd
+</span><span class=SpellE>runUpdater.bat</span> &lt;<span class=SpellE>itr</span>
+number&gt;, where <span class=SpellE>itr</span> number is the number of
+iterations you want this program to run, <span class=SpellE>e.g</span>, 500.</span></b></code><code><span
+style='mso-ansi-font-size:12.0pt;mso-bidi-font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></code></p>
+
+<ol start=5 type=1>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l2 level1 lfo3;tab-stops:list .5in'>Stop Java server. In the window where java server was started:</li>
+</ol>
+<br>
+<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+margin-left:.5in'><span class=SpellE><code><b><span style='font-size:10.0pt'>stopServer.bat</span></b></code></span></p>
+<br>
+</div>
+
+<p class=MsoNormal><a href="#Top">Top</a> </p>
+
+<p><br>
+<p><span class=GramE>Copyright &#169; 2006-2014 Pivotal Software, Inc. All rights reserved.
+This product is protected by U.S. and international copyright and intellectual
+property laws. Pivotal products are covered by one or more patents listed at
+http://www.pivotal.io/patents. </p>
+
+</div>
+
+</body>
+
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/HelloWorld/DocIndex.css
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/HelloWorld/DocIndex.css b/geode-client-native/examples/clicache/HelloWorld/DocIndex.css
new file mode 100644
index 0000000..4c7ce28
--- /dev/null
+++ b/geode-client-native/examples/clicache/HelloWorld/DocIndex.css
@@ -0,0 +1,1058 @@
+A.link {
+	color: blue;
+	text-decoration: underline;
+}
+A.visited {
+	color: purple;
+	text-decoration: underline;
+}
+A.active {
+	color: red;
+	text-decoration: underline;
+}
+LI.Appendix {
+	display: block;
+	text-align: left;
+	text-indent: -90.000000pt;
+	margin-top: 0.000000pt;
+	margin-bottom: 200.000000pt;
+	margin-right: 0.000000pt;
+	margin-left: 90.000000pt;
+	font-size: 36.000000pt;
+	font-weight: medium;
+	font-style: Italic;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Arial";
+}
+P.Body {
+	display: block;
+	text-align: left;
+	text-indent: 0pt;
+	margin-top: 5pt;
+	margin-bottom: 5pt;
+	margin-right: 0pt;
+	margin-left: 0pt;
+	font-size: 10pt;
+	font-weight: medium;
+	font-style: Regular;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Arial";
+}
+P.Body8 {
+	display: block;
+	text-align: left;
+	text-indent: 0.000000pt;
+	margin-top: 1.000000pt;
+	margin-bottom: 5.000000pt;
+	margin-right: 0.000000pt;
+	margin-left: 0.000000pt;
+	font-size: 8.000000pt;
+	font-weight: medium;
+	font-style: Regular;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Arial";
+}
+P.Body9 {
+	display: block;
+	text-align: left;
+	text-indent: 0.000000pt;
+	margin-top: 5.000000pt;
+	margin-bottom: 5.000000pt;
+	margin-right: 0.000000pt;
+	margin-left: 0.000000pt;
+	font-size: 9.000000pt;
+	font-weight: medium;
+	font-style: Regular;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Arial";
+}
+LI.Body {
+	display: block;
+	text-align: left;
+	text-indent: 0pt;
+	margin-top: 5pt;
+	margin-bottom: 5pt;
+	margin-right: 0pt;
+	margin-left: 0pt;
+	font-size: 10pt;
+	font-weight: medium;
+	font-style: Regular;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Arial";
+}
+LI.Bulleted {
+	display: block;
+	text-align: left;
+	text-indent: 0pt;
+	margin-top: 6pt;
+	margin-bottom: 6pt;
+	margin-right: 0pt;
+	margin-left: 18pt;
+	font-size: 10pt;
+	font-weight: medium;
+	font-style: Regular;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Arial";
+}
+LI.Bulleted-Indented {
+	display: block;
+	text-align: left;
+	text-indent: 0pt;
+	margin-top: 4pt;
+	margin-bottom: 4pt;
+	margin-right: 0pt;
+	margin-left: 36pt;
+	font-size: 10pt;
+	font-weight: medium;
+	font-style: Regular;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Arial";
+}
+P.CellBody {
+	display: block;
+	text-align: left;
+	text-indent: 0.000000pt;
+	margin-top: 0.000000pt;
+	margin-bottom: 1.000000pt;
+	margin-right: 0.000000pt;
+	margin-left: 0.000000pt;
+	font-size: 10.000000pt;
+	font-weight: medium;
+	font-style: regular;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Arial";
+}
+P.CellHeading {
+	display: block;
+	text-align: left;
+	text-indent: 0.000000pt;
+	margin-top: 0.000000pt;
+	margin-bottom: 0.000000pt;
+	margin-right: 0.000000pt;
+	margin-left: 0.000000pt;
+	font-size: 10.000000pt;
+	font-weight: Bold;
+	font-style: Regular;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Arial";
+}
+H1.Chapter, H2.Chapter, H3.Chapter, H4.Chapter, H5.Chapter, H6.Chapter {
+	display: block;
+	text-align: left;
+	text-indent: -90.000000pt;
+	margin-top: 0.000000pt;
+	margin-bottom: 200.000000pt;
+	margin-right: 0.000000pt;
+	margin-left: 90.000000pt;
+	font-size: 36.000000pt;
+	font-weight: medium;
+	font-style: Italic;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Times New Roman";
+}
+LI.ChapterEA {
+	display: block;
+	text-align: left;
+	text-indent: -90.000000pt;
+	margin-top: 0.000000pt;
+	margin-bottom: 20.000000pt;
+	margin-right: 0.000000pt;
+	margin-left: 90.000000pt;
+	font-size: 36.000000pt;
+	font-weight: medium;
+	font-style: Italic;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Times New Roman";
+}
+P.ChapterEA2 {
+	display: block;
+	text-align: left;
+	text-indent: 0.000000pt;
+	margin-top: 7.000000pt;
+	margin-bottom: 7.000000pt;
+	margin-right: 0.000000pt;
+	margin-left: 0.000000pt;
+	font-size: 14.000000pt;
+	font-weight: medium;
+	font-style: Regular;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Times New Roman";
+}
+P.Code {
+	display: block;
+	text-align: left;
+	text-indent: 0.000000pt;
+	margin-top: 0.000000pt;
+	margin-bottom: 0.000000pt;
+	margin-right: 0.000000pt;
+	margin-left: 0.000000pt;
+	font-size: 9.000000pt;
+	font-weight: medium;
+	font-style: normal;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Courier New";
+}
+P.Code-Indented {
+	display: block;
+	text-align: left;
+	text-indent: 0.000000pt;
+	margin-top: 0.000000pt;
+	margin-bottom: 0.000000pt;
+	margin-right: 0.000000pt;
+	margin-left: 18.000000pt;
+	font-size: 9.000000pt;
+	font-weight: medium;
+	font-style: normal;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Courier New";
+}
+P.Code-Wide {
+	display: block;
+	text-align: left;
+	text-indent: 0.000000pt;
+	margin-top: 0.000000pt;
+	margin-bottom: 0.000000pt;
+	margin-right: 0.000000pt;
+	margin-left: 0.000000pt;
+	font-size: 9.000000pt;
+	font-weight: medium;
+	font-style: Regular;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Courier New";
+}
+P.Company {
+	display: block;
+	text-align: left;
+	text-indent: 0.000000pt;
+	margin-top: 1.000000pt;
+	margin-bottom: 1.000000pt;
+	margin-right: 0.000000pt;
+	margin-left: 1.000076pt;
+	font-size: 10.000000pt;
+	font-weight: Bold;
+	font-style: Regular;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Arial";
+}
+P.Company-Copyright {
+	display: block;
+	text-align: left;
+	text-indent: 0.000000pt;
+	margin-top: 0.000000pt;
+	margin-bottom: 0.000000pt;
+	margin-right: 0.000000pt;
+	margin-left: 1.000076pt;
+	font-size: 8.000000pt;
+	font-weight: normal;
+	font-style: Regular;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Arial";
+}
+P.date-stamp {
+	display: block;
+	text-align: left;
+	text-indent: 0.000000pt;
+	margin-top: 0.000000pt;
+	margin-bottom: 0.000000pt;
+	margin-right: 0.000000pt;
+	margin-left: 0.000000pt;
+	font-size: 6.000000pt;
+	font-weight: medium;
+	font-style: Regular;
+	color: #ff0000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Arial";
+}
+P.Example-Caption {
+	display: block;
+	text-align: left;
+	text-indent: 0.000000pt;
+	margin-top: 6.000000pt;
+	margin-bottom: 0.000000pt;
+	margin-right: 0.000000pt;
+	margin-left: 0.000000pt;
+	font-size: 10.000000pt;
+	font-weight: medium;
+	font-style: Italic;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Times New Roman";
+}
+P.Example-End {
+	display: block;
+	text-align: left;
+	text-indent: 0.000000pt;
+	margin-top: 0.000000pt;
+	margin-bottom: 0.000000pt;
+	margin-right: 0.000000pt;
+	margin-left: 9.000000pt;
+	font-size: 10.000000pt;
+	font-weight: medium;
+	font-style: Regular;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Times New Roman";
+}
+LI.Example-Title {
+	display: block;
+	text-align: left;
+	text-indent: 0.000000pt;
+	margin-top: 10.000000pt;
+	margin-bottom: 5.000000pt;
+	margin-right: 0.000000pt;
+	margin-left: 9.000000pt;
+	font-size: 10.000000pt;
+	font-weight: Bold;
+	font-style: Regular;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Times New Roman";
+}
+P.Figure-Caption {
+	display: block;
+	text-align: left;
+	text-indent: 0.000000pt;
+	margin-top: 6.000000pt;
+	margin-bottom: 0.000000pt;
+	margin-right: 0.000000pt;
+	margin-left: 0.000000pt;
+	font-size: 10.000000pt;
+	font-weight: medium;
+	font-style: Italic;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Times New Roman";
+}
+H1.Figure-End, H2.Figure-End, H3.Figure-End, H4.Figure-End, H5.Figure-End, H6.Figure-End {
+	display: block;
+	text-align: left;
+	text-indent: 0.000000pt;
+	margin-top: 0.000000pt;
+	margin-bottom: 0.000000pt;
+	margin-right: 0.000000pt;
+	margin-left: 9.000000pt;
+	font-size: 10.000000pt;
+	font-weight: medium;
+	font-style: Regular;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Times New Roman";
+}
+H1.Figure-Title, H2.Figure-Title, H3.Figure-Title, H4.Figure-Title, H5.Figure-Title, H6.Figure-Title {
+	display: block;
+	text-align: left;
+	text-indent: 0.000000pt;
+	margin-top: 10.000000pt;
+	margin-bottom: 5.000000pt;
+	margin-right: 0.000000pt;
+	margin-left: 9.000000pt;
+	font-size: 10.000000pt;
+	font-weight: Bold;
+	font-style: Regular;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Times New Roman";
+}
+P.FigureBody10 {
+	display: block;
+	text-align: center;
+	text-indent: 0.000000pt;
+	margin-top: 0.000000pt;
+	margin-bottom: 0.000000pt;
+	margin-right: 0.000000pt;
+	margin-left: 0.000000pt;
+	font-size: 10.000000pt;
+	font-weight: medium;
+	font-style: Regular;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Times New Roman";
+}
+P.FigureBody10Left {
+	display: block;
+	text-align: left;
+	text-indent: 0.000000pt;
+	margin-top: 0.000000pt;
+	margin-bottom: 0.000000pt;
+	margin-right: 0.000000pt;
+	margin-left: 0.000000pt;
+	font-size: 10.000000pt;
+	font-weight: medium;
+	font-style: Regular;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Times New Roman";
+}
+P.FigureTag10 {
+	display: block;
+	text-align: center;
+	text-indent: 0.000000pt;
+	margin-top: 0.000000pt;
+	margin-bottom: 0.000000pt;
+	margin-right: 0.000000pt;
+	margin-left: 0.000000pt;
+	font-size: 10.000000pt;
+	font-weight: Bold;
+	font-style: Regular;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Arial";
+}
+P.FigureTag8 {
+	display: block;
+	text-align: center;
+	text-indent: 0.000000pt;
+	margin-top: 0.000000pt;
+	margin-bottom: 0.000000pt;
+	margin-right: 0.000000pt;
+	margin-left: 0.000000pt;
+	font-size: 8.000000pt;
+	font-weight: Bold;
+	font-style: Regular;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Arial";
+}
+P.FigureTag9 {
+	display: block;
+	text-align: center;
+	text-indent: 0.000000pt;
+	margin-top: 0.000000pt;
+	margin-bottom: 0.000000pt;
+	margin-right: 0.000000pt;
+	margin-left: 0.000000pt;
+	font-size: 9.000000pt;
+	font-weight: Bold;
+	font-style: Regular;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Arial";
+}
+P.footer {
+	display: block;
+	text-align: justify;
+	text-indent: 0.000000pt;
+	margin-top: 0.000000pt;
+	margin-bottom: 0.000000pt;
+	margin-right: 0.000000pt;
+	margin-left: 0.000000pt;
+	font-size: 8.000000pt;
+	font-weight: medium;
+	font-style: Regular;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Arial";
+}
+P.Hang-Indent {
+	display: block;
+	text-align: left;
+	text-indent: -72.000000pt;
+	margin-top: 6.000000pt;
+	margin-bottom: 6.000000pt;
+	margin-right: 0.000000pt;
+	margin-left: 90.000000pt;
+	font-size: 10.000000pt;
+	font-weight: medium;
+	font-style: Regular;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Times New Roman";
+}
+H1.Head-A, H2.Head-A, H3.Head-A, H4.Head-A, H5.Head-A, H6.Head-A {
+	display: block;
+	text-align: left;
+	text-indent: 0.000000pt;
+	margin-top: 24.000000pt;
+	margin-bottom: 6.000000pt;
+	margin-right: 0.000000pt;
+	margin-left: 0.000000pt;
+	font-size: 16.000000pt;
+	font-weight: Bold;
+	font-style: Regular;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Arial";
+}
+P.Head-A-noNum {
+	display: block;
+	text-align: left;
+	text-indent: 0.000000pt;
+	margin-top: 24.000000pt;
+	margin-bottom: 6.000000pt;
+	margin-right: 0.000000pt;
+	margin-left: 0.000000pt;
+	font-size: 16.000000pt;
+	font-weight: Bold;
+	font-style: Regular;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Arial";
+}
+H1.Head-B, H2.Head-B, H3.Head-B, H4.Head-B, H5.Head-B, H6.Head-B {
+	display: block;
+	text-align: left;
+	text-indent: 0.000000pt;
+	margin-top: 17.000000pt;
+	margin-bottom: 6.000000pt;
+	margin-right: 0.000000pt;
+	margin-left: 0.000000pt;
+	font-size: 14.000000pt;
+	font-weight: Bold;
+	font-style: normal;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Arial";
+}
+H1.Head-C, H2.Head-C, H3.Head-C, H4.Head-C, H5.Head-C, H6.Head-C {
+	display: block;
+	text-align: left;
+	text-indent: 0.000000pt;
+	margin-top: 14.000000pt;
+	margin-bottom: 4.000000pt;
+	margin-right: 0.000000pt;
+	margin-left: 0.000000pt;
+	font-size: 12.000000pt;
+	font-weight: Bold;
+	font-style: normal;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Arial";
+}
+P.Head-D {
+	display: block;
+	text-align: left;
+	text-indent: 0.000000pt;
+	margin-top: 12.000000pt;
+	margin-bottom: 0.000000pt;
+	margin-right: 0.000000pt;
+	margin-left: 0.000000pt;
+	font-size: 10.000000pt;
+	font-weight: Bold;
+	font-style: Regular;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Arial";
+}
+P.header {
+	display: block;
+	text-align: justify;
+	text-indent: 0.000000pt;
+	margin-top: 0.000000pt;
+	margin-bottom: 0.000000pt;
+	margin-right: 0.000000pt;
+	margin-left: 0.000000pt;
+	font-size: 8.000000pt;
+	font-weight: medium;
+	font-style: Regular;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Arial";
+}
+P.Indented {
+	display: block;
+	text-align: left;
+	text-indent: 0.000000pt;
+	margin-top: 6.000000pt;
+	margin-bottom: 6.000000pt;
+	margin-right: 0.000000pt;
+	margin-left: 18.000000pt;
+	font-size: 10.000000pt;
+	font-weight: medium;
+	font-style: Regular;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Arial";
+}
+P.IndentedTwice {
+	display: block;
+	text-align: left;
+	text-indent: 0.000000pt;
+	margin-top: 6.000000pt;
+	margin-bottom: 6.000000pt;
+	margin-right: 0.000000pt;
+	margin-left: 36.000000pt;
+	font-size: 10.000000pt;
+	font-weight: medium;
+	font-style: Regular;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Arial";
+}
+P.Note {
+	display: block;
+	text-align: left;
+	text-indent: 0.000000pt;
+	margin-top: 0.000000pt;
+	margin-bottom: 12.000000pt;
+	margin-right: 36.000000pt;
+	margin-left: 36.000000pt;
+	font-size: 10.000000pt;
+	font-weight: medium;
+	font-style: Italic;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Arial";
+}
+LI.Numbered {
+	display: block;
+	text-align: left;
+	text-indent: -18.000000pt;
+	margin-top: 6.000000pt;
+	margin-bottom: 6.000000pt;
+	margin-right: 0.000000pt;
+	margin-left: 18.000000pt;
+	font-size: 10.000000pt;
+	font-weight: medium;
+	font-style: Regular;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Arial";
+}
+LI.Numbered-1st {
+	display: block;
+	text-align: left;
+	text-indent: -18.000000pt;
+	margin-top: 6.000000pt;
+	margin-bottom: 6.000000pt;
+	margin-right: 0.000000pt;
+	margin-left: 18.000000pt;
+	font-size: 10.000000pt;
+	font-weight: medium;
+	font-style: Regular;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Arial";
+}
+LI.NumberedA {
+	display: block;
+	text-align: left;
+	text-indent: -18.000000pt;
+	margin-top: 6.000000pt;
+	margin-bottom: 6.000000pt;
+	margin-right: 0.000000pt;
+	margin-left: 36.000000pt;
+	font-size: 10.000000pt;
+	font-weight: medium;
+	font-style: Regular;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Arial";
+}
+LI.NumberedA-1st {
+	display: block;
+	text-align: left;
+	text-indent: -18.000000pt;
+	margin-top: 6.000000pt;
+	margin-bottom: 6.000000pt;
+	margin-right: 0.000000pt;
+	margin-left: 36.000000pt;
+	font-size: 10.000000pt;
+	font-weight: medium;
+	font-style: Regular;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Arial";
+}
+H1.TableTitle, H2.TableTitle, H3.TableTitle, H4.TableTitle, H5.TableTitle, H6.TableTitle {
+	display: block;
+	text-align: left;
+	text-indent: 0.000000pt;
+	margin-top: 0.000000pt;
+	margin-bottom: 0.000000pt;
+	margin-right: 0.000000pt;
+	margin-left: 9.000000pt;
+	font-size: 10.000000pt;
+	font-weight: Bold;
+	font-style: Regular;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Arial";
+}
+H1.Title-Date, H2.Title-Date, H3.Title-Date, H4.Title-Date, H5.Title-Date, H6.Title-Date {
+	display: block;
+	text-align: center;
+	text-indent: 0pt;
+	margin-top: 0pt;
+	margin-bottom: 15pt;
+	margin-right: 0pt;
+	margin-left: 0pt;
+	font-size: 12pt;
+	font-weight: medium;
+	font-style: normal;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Times New Roman";
+}
+H1.Title2, H2.Title2, H3.Title2, H4.Title2 {
+	display: block;
+	text-align: center;
+	text-indent: 0pt;
+	margin-top: 0pt;
+	margin-bottom: 0pt;
+	margin-right: 0pt;
+	margin-left: 0pt;
+	font-size: 24pt;
+	font-weight: Bold;
+	font-style: Italic;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Times New Roman";
+}
+H5.Title2, H6.Title2 {
+	display: block;
+	text-align: center;
+	text-indent: 0pt;
+	margin-top: 0pt;
+	margin-bottom: 0pt;
+	margin-right: 0pt;
+	margin-left: 0pt;
+	font-size: 16pt;
+	font-weight: Bold;
+	font-style: Italic;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Times New Roman";
+}
+H1.Version, H2.Version, H3.Version, H4.Version, H5.Version, H6.Version {
+	display: block;
+	text-align: center;
+	text-indent: 0pt;
+	margin-top: 0pt;
+	margin-bottom: 0pt;
+	margin-right: 0pt;
+	margin-left: 0pt;
+	font-size: 18pt;
+	font-weight: medium;
+	font-style: Regular;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Times New Roman";
+}
+EM.Body {
+	font-size: 10.000000pt;
+	font-weight: medium;
+	font-style: Regular;
+	font-family: "Arial";
+}
+EM.Body8 {
+	font-size: 8.000000pt;
+	font-weight: medium;
+	font-style: Regular;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Arial";
+}
+EM.Body9 {
+	font-size: 9.000000pt;
+	font-weight: medium;
+	font-style: Regular;
+	font-family: "Arial";
+}
+EM.Bold {
+	font-weight: Bold;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+}
+EM.Chapter- {
+	font-size: 75.000000pt;
+	font-weight: Bold;
+	font-style: Regular;
+	vertical-align: sub;
+	font-family: "Times New Roman";
+}
+EM.Code10Bold {
+	font-size: 10.000000pt;
+	font-weight: Bold;
+	font-style: Regular;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Courier New";
+}
+EM.Code9 {
+	font-size: 9pt;
+	font-weight: normal;
+	font-style: normal;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Courier New";
+}
+EM.FigureBody {
+	font-size: 8.000000pt;
+	font-weight: medium;
+	font-style: Regular;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Arial";
+}
+EM.FigureBoldWhite {
+	font-weight: Bold;
+	color: #ffffff;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+}
+EM.hypertext {
+	font-size: 10.000000pt;
+	font-weight: medium;
+	font-style: Regular;
+	color: #2328a8;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Times New Roman";
+}
+EM.Italic {
+	font-style: Italic;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+}
+EM.Subscript {
+	vertical-align: sub;
+}
+EM.Superscript {
+	vertical-align: super;
+}
+EM.Symbol9 {
+	font-size: 9.000000pt;
+	font-weight: medium;
+	font-style: Regular;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Symbol";
+}
+EM.SymbolFont {
+	font-family: "Symbol";
+}
+EM.TagTitle {
+	font-size: 16.000000pt;
+	font-weight: medium;
+	font-style: Italic;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Times New Roman";
+}
+EM.TextRed {
+	font-size: 10.000000pt;
+	font-weight: medium;
+	font-style: Regular;
+	color: #c45468;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Times New Roman";
+}
+EM.URL {
+	font-size: 10.000000pt;
+	font-weight: medium;
+	font-style: Regular;
+	color: #2328a8;
+	text-decoration: underline ;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Times New Roman";
+}
+EM.Webding {
+	font-size: 10.000000pt;
+	font-weight: medium;
+	font-style: Regular;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Webdings";
+}
+EM.webdingsRed {
+	font-size: 10.000000pt;
+	font-weight: medium;
+	font-style: Regular;
+	color: #c45468;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Webdings";
+}
+EM.webdingsRed8 {
+	font-size: 8.000000pt;
+	font-weight: medium;
+	font-style: Regular;
+	color: #c45468;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Webdings";
+}
+EM.zd10red {
+	font-size: 10.000000pt;
+	font-weight: medium;
+	font-style: Regular;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Times New Roman";
+}
+P.Body {
+
+	display: block;
+	text-align: left;
+	text-indent: 0pt;
+	margin-top: 5pt;
+	margin-bottom: 5pt;
+	margin-right: 0pt;
+	margin-left: 0pt;
+	font-size: 10pt;
+	font-weight: normal;
+	font-style: normal;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Arial";
+}
+P.Body {
+
+	display: block;
+	text-align: left;
+	text-indent: 0pt;
+	margin-top: 5pt;
+	margin-bottom: 5pt;
+	margin-right: 0pt;
+	margin-left: 0pt;
+	font-size: 10pt;
+	font-weight: normal;
+	font-style: normal;
+	color: #000000;
+	text-decoration: none;
+	vertical-align: baseline;
+	text-transform: none;
+	font-family: "Arial";
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/HelloWorld/HelloWorld.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/HelloWorld/HelloWorld.cs b/geode-client-native/examples/clicache/HelloWorld/HelloWorld.cs
new file mode 100644
index 0000000..6dab63d
--- /dev/null
+++ b/geode-client-native/examples/clicache/HelloWorld/HelloWorld.cs
@@ -0,0 +1,99 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *========================================================================
+ */
+
+using System;
+
+namespace GemStone.GemFire.Cache.Examples
+{
+  class HelloWorld
+  {
+
+    #region Local constants
+
+    //private static Cache cache = null;
+    private static Region region = null;
+
+    private static string strKey = "abc";
+    private static string strValue = "Hello, World!";
+
+    private static int intKey = 777;
+    private static int intValue = 12345678;
+
+    #endregion
+
+    static void Main()
+    {
+      try
+      {
+        // Create a GemFire Cache.
+        CacheFactory cacheFactory = CacheFactory.CreateCacheFactory(null);
+        Cache cache = cacheFactory.Create();
+
+        Console.WriteLine("Created the GemFire Cache");
+
+        RegionFactory regionFactory = cache.CreateRegionFactory(RegionShortcut.LOCAL);
+
+        // Create the example Region programmatically.
+        region = regionFactory.Create("exampledsregion");
+
+        // Put some entries
+        Console.WriteLine("{0}Putting entries", Environment.NewLine);
+        PutStr(strKey, strValue);
+        PutInt(intKey, intValue);
+
+        // Get the entries
+        Console.WriteLine("{0}Getting entries", Environment.NewLine);
+        string getStr = GetStr(strKey);
+        int getInt = GetInt(intKey);
+
+        // Close cache 
+        cache.Close();
+        Console.WriteLine("Closed the cache.");
+       
+      }
+      catch (Exception ex)
+      {
+        Console.WriteLine("{0}An exception occurred: {1}", Environment.NewLine, ex);
+        Console.WriteLine("---[ Press <Enter> to End the Application ]---");
+        Console.ReadLine();
+      }
+    }
+
+    #region Local functions
+
+    public static void PutInt(int key, int value)
+    {
+      region.Put(key, value);
+      Console.WriteLine("    Put integer -- key: " + key + "   value: " + value);
+    }
+
+    public static int GetInt(int key)
+    {
+      CacheableInt32 cValue = region.Get(key) as CacheableInt32;
+
+      Console.WriteLine("    Get integer -- key: " + key + "   value: " + cValue.Value);
+      return cValue.Value;
+    }
+
+    public static void PutStr(string key, string value)
+    {
+      region.Put(key, value);
+      Console.WriteLine("    Put string  -- key: " + key + "   value: " + value);
+    }
+
+    public static string GetStr(string key)
+    {
+      IGFSerializable cValue = region.Get(key);
+
+      Console.WriteLine("    Get string  -- key: " + key + "   value: " + cValue);
+      return cValue.ToString();
+    }
+
+    #endregion
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/HelloWorld/HelloWorld.csproj
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/HelloWorld/HelloWorld.csproj b/geode-client-native/examples/clicache/HelloWorld/HelloWorld.csproj
new file mode 100644
index 0000000..c0473c4
--- /dev/null
+++ b/geode-client-native/examples/clicache/HelloWorld/HelloWorld.csproj
@@ -0,0 +1,85 @@
+\ufeff<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{5DE79CEE-BEE8-404E-8365-2AE742001EEA}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>GemStone.GemFire.Cache.Examples</RootNamespace>
+    <AssemblyName>HelloWorld</AssemblyName>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>2.0</OldToolsVersion>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <IntermediateOutputPath>$(OSBUILDDIR)\examples\clicache\Debug\HelloWorld\</IntermediateOutputPath>
+    <OutputPath>$(OSBUILDDIR)\examples\clicache\Debug\HelloWorld\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x86</PlatformTarget>
+    <NoWarn>618</NoWarn>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <IntermediateOutputPath>$(OSBUILDDIR)\examples\clicache\HelloWorld\</IntermediateOutputPath>
+    <OutputPath>$(OSBUILDDIR)\examples\clicache\HelloWorld\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x86</PlatformTarget>
+    <NoWarn>618</NoWarn>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <IntermediateOutputPath>$(OSBUILDDIR)\examples\clicache\Debug\HelloWorld\</IntermediateOutputPath>
+    <OutputPath>$(OSBUILDDIR)\examples\clicache\Debug\HelloWorld\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <NoWarn>618</NoWarn>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <IntermediateOutputPath>$(OSBUILDDIR)\examples\clicache\HelloWorld\</IntermediateOutputPath>
+    <OutputPath>$(OSBUILDDIR)\examples\clicache\HelloWorld\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <NoWarn>618</NoWarn>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="HelloWorld.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\..\vs_projects\gfclicache\gfclicache.vcproj">
+      <Project>{B274E3B1-6A09-4322-952B-8BDA712892CE}</Project>
+      <Name>gfclicache</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/HelloWorld/HelloWorld.csproj.user
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/HelloWorld/HelloWorld.csproj.user b/geode-client-native/examples/clicache/HelloWorld/HelloWorld.csproj.user
new file mode 100644
index 0000000..957e734
--- /dev/null
+++ b/geode-client-native/examples/clicache/HelloWorld/HelloWorld.csproj.user
@@ -0,0 +1,5 @@
+\ufeff<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <ReferencePath>$(OSBUILDDIR)\hidden\lib\</ReferencePath>
+  </PropertyGroup>
+</Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/HelloWorld/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/HelloWorld/Properties/AssemblyInfo.cs b/geode-client-native/examples/clicache/HelloWorld/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..3326db0
--- /dev/null
+++ b/geode-client-native/examples/clicache/HelloWorld/Properties/AssemblyInfo.cs
@@ -0,0 +1,33 @@
+\ufeffusing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("GemFireHelloWorld")]
+[assembly: AssemblyDescription("GemFire Simple PutGet Example")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("GemStone Systems Inc.")]
+[assembly: AssemblyProduct("GemFireHelloWorld")]
+[assembly: AssemblyCopyright("Copyright � GemStone Systems Inc. 2008")]
+[assembly: AssemblyTrademark("All Rights Reserved")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("5b9cfc0d-3951-4b9f-9ffd-f7a50e9d2f1a")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+[assembly: AssemblyVersion("9.0.0.0")]
+[assembly: AssemblyFileVersion("9.0.0.0")]

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/HelloWorld/README.html
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/HelloWorld/README.html b/geode-client-native/examples/clicache/HelloWorld/README.html
new file mode 100644
index 0000000..56d8ce8
--- /dev/null
+++ b/geode-client-native/examples/clicache/HelloWorld/README.html
@@ -0,0 +1,117 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<HTML>
+	<HEAD>
+		<TITLE>HelloWorld: Pivotal GemFire Native&#174; Client C# Example</TITLE>
+		<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+		<META http-equiv="Content-Style-Type" content="text/css">
+		<META content="Adobe FrameMaker 7.0/HTML Export Filter" name="GENERATOR">
+		<LINK href="DocIndex.css" type="text/css" charset="ISO-8859-1" rel="STYLESHEET">
+			<style type="text/css">.style1 { FONT-FAMILY: "Courier New" }
+	BODY { BACKGROUND-COLOR: #ffffff }
+        <IMG SRC="../../../docs/PIVOTAL_GemFire_190x81.png" BORDER="0">
+	.style5 { FONT-WEIGHT: bold }
+	</style>
+	</HEAD>
+	<BODY>
+		<DIV>
+			<H4 class="Title2">HelloWorld</H4>
+			<P></P>
+			<H5 class="Title2"><A name="pgfId-1003977"></A>Pivotal GemFire&#174; Native Client C#
+				<H5 class="Title2"><A name="pgfId-1003982"></A>C# API Programming Example
+					<P></P>
+					<P class="Body"><A name="pgfId-1005899"></A>The <EM class="Code9">HelloWorld</EM> example 
+						demonstrates the simplest functionality of the GemFire Native Client C# product:
+					</P>
+					<OL class="Body">						
+						<LI class="Body">
+							<P class="Body">Create a GemFire cache.</P>
+						<LI class="Body">
+							<P class="Body">Create a local region.</P>
+						<LI class="Body">
+							<P class="Body">Put some keys and values into the region.</P>
+						<LI class="Body">
+							<P class="Body">Get those&nbsp;keys and values.</P>
+						<LI class="Body">
+							<P class="Body">Close the cache.</P>
+						</LI>
+					</OL>
+					<br>
+					<P class="Body"></EM>The sample code is located in the Native Client SampleCode <EM class="Code9">examples/HelloWorld</EM>.
+					</P>
+					<P class="Body"></EM>To view the GemFire manuals, the online API documentation, and 
+						the complete set of examples, see <EM class="Code9">docs/index.html</EM> in the Native Client Installation.
+					</P>
+					<EM class="Code9 style1">
+						<H2 class="Head-B"><A name="pgfId-1004038"></A>Setting Up the Environment
+							<P></P>
+							<P class="Body">Verify that there is a valid&nbsp;<EM class="Code9">gfCppLicense.zip </EM>
+								file, version 1.1, in the&nbsp;<EM class="Italic">GemFireProductDirectory</EM>.</P>
+							<P class="Body">Create a file in the projects&nbsp; <EM class="Code9">.../bin</EM>
+								directory named&nbsp;<EM class="Code9">gfcpp.properties</EM> containing the 
+								following two&nbsp;lines:</P>
+							<P class="Code-Indented"></A><A name="pgfId-1004053"># turn off most log messages </A>
+							</P>
+							<P class="Code-Indented">log-level=error&nbsp;
+							</P>
+							<P class="Body">The GemFire - C# product requires an environment variable, <FONT face="Courier New">GFCPP</FONT> for the product base path.</P>
+							<P class="Body">Cygwin:</P>
+							<P class="Code-Indented"><A name="pgfId-1004040"></A>export GFCPP=<EM class="Italic">GemFireProductDirectory</EM>
+							</P>
+							<P class="Code-Indented"><A name="pgfId-1004041"></A>export PATH=$GFCPP/bin:$PATH</P>
+							<P class="Body"><A name="pgfId-1004043"></A>Windows:</P>
+							<P class="Code-Indented"><A name="pgfId-1004041"></A>set GFCPP=<EM class="Italic">GemFireProductDirectory</EM>&nbsp;&nbsp;</P>
+							<P class="Code-Indented">PATH=%GFCPP%/bin;%PATH%</A></P>
+							<H2 class="Head-B"><A name="pgfId-1006430"></A>Running&nbsp;HelloWorld
+								<P></P>
+								<P class="Body"><A name="pgfId-1006097"></A>Run the <EM class="Code9">HelloWorld</EM>
+								executable. There are no command line arguments.
+								<P class="Body">Cygwin:</P>
+								<P class="Code-Indented">cd .../bin</P>
+								<P class="Code-Indented">./HelloWorld.exe
+								</P>
+								<P class="Code-Indented">
+								</P>
+								<P class="Body"><A name="pgfId-1004043"></A>Windows:
+								</P>
+								<STRONG><FONT face="Courier New">
+										<P class="Code-Indented">cd ...\bin</P>
+										<P class="Code-Indented">HelloWorld.exe
+										</P>
+										<P class="Code-Indented">
+									</FONT></STRONG><STRONG><FONT face="Courier New"></FONT></STRONG>
+								<P class="Body">&nbsp;</P>
+								<P class="Body">The output is:
+								</P>
+								<P class="Code-Indented">
+									<EM CLASS="Code9">Created the GemFire Cache</EM></P>
+								<P class="Code-Indented"><EM class="Code9"> </EM>
+								</P>
+								<P class="Code-Indented"><EM class="Code9">Putting entries </EM>
+								</P>
+								<P class="Code-Indented"><EM class="Code9"> Put string &nbsp;-- key: abc value: Hello, 
+										world! </EM>
+								</P>
+								<P class="Code-Indented"><EM class="Code9"><EM class="Code9"></EM><EM class="Code9"></EM><EM class="Code9"></EM>
+										Put integer -- key: 777 value: 12345678 </EM>
+								</P>
+								<P class="Code-Indented"><EM class="Code9"> </EM>
+								</P>
+								<P class="Code-Indented"><EM class="Code9">Getting entries </EM>
+								</P>
+								<P class="Code-Indented"><EM class="Code9"> Get string &nbsp;-- key: abc value: Hello, 
+										world! </EM>
+								</P>
+								<P class="Code-Indented"><EM class="Code9"> Get integer -- key: 777 value: 12345678 </EM>
+								</P>
+								<P class="Code-Indented"><EM class="Code9"></EM>&nbsp;</P>
+								<P class="Code-Indented"><EM class="Code9"> Closed the cache.</EM></P>
+								<P></P>
+								<P></P>
+								<P CLASS="Company">&nbsp;</P>
+								<P CLASS="Company-Copyright">Copyright &#169; 2006-2014 Pivotal Software, Inc. All rights reserved.  This product is protected by U.S. and international copyright and intellectual property laws. Pivotal products are covered by one or more patents listed at http://www.pivotal.io/patents.</P>
+								<P CLASS="Body">
+									<A NAME="pgfId-998290"></A>&nbsp;</P>
+		</DIV>
+		</H2></H2></EM></H5></H5>
+	</BODY>
+</HTML>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/HierarchicalClient/HierarchicalClient.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/HierarchicalClient/HierarchicalClient.cs b/geode-client-native/examples/clicache/HierarchicalClient/HierarchicalClient.cs
new file mode 100755
index 0000000..e4f92d7
--- /dev/null
+++ b/geode-client-native/examples/clicache/HierarchicalClient/HierarchicalClient.cs
@@ -0,0 +1,256 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ * 
+ * This example demonstrates client/server caching. This is a classic
+ * client-server architecture (versus peer-to-peer). This program starts a client 
+ * that connects to a server so it can request, update, and delete data. 
+ * 
+ * While this example uses a console application, it is not a requirement.
+ * 
+ * Please note that this example requires that the GemFire HierarchicalServer
+ * process to be running prior to execution.  To start the HierarchicalServer
+ * QuickStart example, please refer to the GemFire Quickstart documentation.
+ *
+//////////////////////////////////////////////////////////////////////////////*/
+using System;
+
+// These namespaces provide access to classes needed to interact with GemFire.
+using GemStone.GemFire.Cache;
+
+public class HierarchicalClient
+{
+  public static void Main()
+  {
+    DistributedSystem MyDistributedSystem = null;
+    Cache MyCache = null;
+    string sKey = null;
+    CacheableString sValue = null;
+
+    try
+    {
+      Console.WriteLine("* Connecting to the distributed system and creating the cache.");
+
+      /* Properties can be passed to GemFire through two different mechanisms: the 
+       * Properties object as is done below or the gemfire.properties file. The 
+       * settings passed in a Properties object take precedence over any settings
+       * in a file. This way the end-user cannot bypass any required settings.
+       * 
+       * Using a gemfire.properties file can be useful when you want to change the 
+       * behavior of certain settings without doing a new build, test, and deploy cycle.
+       * 
+       * See gemfire.properties for details on some of the other settings used in this 
+       * project.
+       * 
+       * For details on all of the possible settings and their respective values 
+       * that can be specified in this configuration file, see chapter 5, 
+       * "System Configuration", in the "System Administrator's Guide". This is
+       * installed in the docs\pdf folder under the GemFire installation folder
+       * (e.g., C:\Program Files\Gemfire5\docs\pdf\SystemAdmin.pdf).
+      */
+      Properties DistributedSystemProperties = new Properties();
+
+      DistributedSystemProperties.Insert("name", "CacheClient");
+
+      /* Specify the file whose contents are used to initialize the cache when it is created.
+       * 
+       * An XML file isn't needed at all because everything can be specified in  code--much
+       * as the "license-file" property is. However, it provides a convenient way
+       * to isolate common settings that can be updated without a build/test/deploy cycle.
+      */
+      DistributedSystemProperties.Insert("cache-xml-file", "HierarchicalClient.xml");
+
+      /* Define where the license file is located. It is very useful to do this in
+       * code vs. the gemfire.properties file, because it allows you to access the
+       * license used by the GemFire installation (as pointed to by the GEMFIRE
+       * environment variable).
+      */
+      DistributedSystemProperties.Insert("license-file", "../../gfCppLicense.zip");
+
+      DistributedSystemProperties.Insert("log-file", "./csharpclient.log");
+      DistributedSystemProperties.Insert("log-level", "finest");
+
+      /* Override the mcast-port setting so the client runs "standalone".
+         The client and server must run in separate distributed systems.
+      */
+      //DistributedSystemProperties.Insert("mcast-port", "0");
+
+      // Connect to the GemFire distributed system.
+      MyDistributedSystem = DistributedSystem.Connect("LocalDS", DistributedSystemProperties);
+
+      /*//////////////////////////////////////////////////////////////////////////////
+       * 
+       * Create the cache.
+       * 
+      //////////////////////////////////////////////////////////////////////////////*/
+
+      // Create the cache. This causes the cache-xml-file to be parsed.
+      MyCache = CacheFactory.Create("localCache", MyDistributedSystem);
+
+      /*//////////////////////////////////////////////////////////////////////////////
+       * 
+       * Create the region.
+       * 
+      //////////////////////////////////////////////////////////////////////////////*/
+
+      // Prepare the attributes needed to create a sub-region.
+      AttributesFactory MyAttributesFactory = new AttributesFactory();
+
+      /* The "scope" determines how changes to the local cache are "broadcast"
+       * to like-named regions in other caches.
+       * 
+       * For native clients DistributedAck and DistributedNoAck work
+       * identically.
+      */
+      MyAttributesFactory.SetScope(ScopeType.DistributedAck);
+
+      /* Endpoints is a  comma delimited list of logical names, hostnames, and ports of 
+       * "server" caches with which to connect. The endpoints parameter follows this syntax: 
+       * 
+       *      logicalName1=host1:port1, . . . ,logicalNameN=hostN:portN
+      */
+      MyAttributesFactory.SetEndpoints("localhost:40404");
+      MyAttributesFactory.SetClientNotificationEnabled(true);
+
+      /* Because of implementation details, it is best not to cache data in a root-level 
+       * region. There is nothing special about the name "root", it is just a good naming
+       * convention.
+       * 
+       * Get the "root" region from the cache and create a sub-region under it for the
+       * data.
+      */
+      Region MyExampleRegion = MyCache.GetRegion("root").CreateSubRegion(
+        "exampleRegion", MyAttributesFactory.CreateRegionAttributes());
+
+      Console.WriteLine(String.Format("{0}* Region, {1}, was created in the cache.",
+        Environment.NewLine, MyExampleRegion.FullPath));
+      Console.WriteLine("* Getting three values from the Hierarchical Server.");
+
+      // Retrieve several values from the cache.
+      for (int nCount = 0; nCount < 4; nCount++)
+      {
+        sKey = string.Format("Key{0}", nCount);
+
+        Console.WriteLine(String.Format("* Requesting object: {0}{1}",
+          sKey, Environment.NewLine));
+
+        /* Request the object from the cache. Because it doesn't exist in the local
+         * cache, it will be passed to the server. Because the server doesn't have
+         * it, the request will be passed to SimpleCacheLoader.Load().  The entry 
+         * returned is a string.
+        */
+        sValue = MyExampleRegion.Get(sKey) as CacheableString;
+
+        Console.WriteLine(String.Format("* Retrieved object: ({0})", sValue.ToString()));
+      }
+
+      Console.WriteLine("* If you look at the Cache Server's console, you can see the CacheListener notifications that happened in response to the gets.");
+      Console.WriteLine("{0}---[ Press <Enter> to continue. ]---", Environment.NewLine);
+
+
+      Console.ReadLine();
+
+      /*//////////////////////////////////////////////////////////////////////////////
+       * 
+       * Exercise the serialization and deserialization methods.
+       * 
+      //////////////////////////////////////////////////////////////////////////////*/
+
+      // Demonstrate the process needed to manually deserialize the object from the cache.
+      Console.WriteLine(string.Format("* Manually deserializing the object for Key0: ({0})", MyExampleRegion.Get("Key0")));
+
+      // Demonstrate the static FromCache method in the CachedItem class and modify the object.
+      Console.WriteLine("* Using the FromCache() method and modifying the object for Key0");
+
+      // Get the item.
+      //sValue = (CacheableString)MyExampleRegion.Get("Key0");
+      sValue = MyExampleRegion.Get("Key0") as CacheableString;
+
+      Console.WriteLine(string.Format("* Original value: ({0})", sValue.ToString()));
+
+      /* This modifies the object associated with Key0 and uses CacheSerializer
+       * to perform manual serialization.
+      */
+      String cachedItem = "PDA";
+      MyExampleRegion.Put("Key0", cachedItem);
+
+      // Reread the object from the cache.
+      sValue = (CacheableString)MyExampleRegion.Get("Key0");
+
+      Console.WriteLine(string.Format("* Retrieved updated object: {0}", sValue));
+
+      Console.WriteLine("* Invalidating the data for Key2");
+
+      /* Invalidating a cached item causes the object to be removed, but the 
+       * key remains in the cache. If it is subsequently requested it will
+       * be retrieved using a CacheLoader if possible. 
+      */
+      MyExampleRegion.Invalidate("Key2");
+
+      Console.WriteLine("* Requesting Key2 after the invalidation.");
+
+      // Request the invalidated item.
+      sValue = (CacheableString)MyExampleRegion.Get("Key2");
+
+      Console.WriteLine(string.Format("* Retrieved object: {0}", sValue));
+
+      Console.WriteLine("* Destroying Key3");
+
+      // Destroying a cached item removes both the object and the key.
+      MyExampleRegion.Destroy("Key3");
+
+      Console.WriteLine("{0}---[ Press <Enter> to End the Application ]---",
+        Environment.NewLine);
+      Console.ReadLine();
+    }
+    catch (Exception ThrownException)
+    {
+      Console.Error.WriteLine(ThrownException.Message);
+      Console.Error.WriteLine(ThrownException.StackTrace);
+      Console.Error.WriteLine("---[ Press <Enter> to End the Application ]---");
+      Console.ReadLine();
+    }
+    finally
+    {
+      /* While there are not any ramifications of terminating without closing the cache
+       * and disconnecting from the distributed system, it is considered a best practice
+       * to do so.
+      */
+      try
+      {
+        Console.WriteLine("Closing the cache and disconnecting.{0}",
+          Environment.NewLine);
+      }
+      catch {/* Ignore any exceptions */}
+
+      try
+      {
+        /* Close the cache. This terminates the cache and releases all the resources. 
+         * Generally speaking, after a cache is closed, any further method calls on 
+         * it or region object will throw an exception.
+        */
+        MyCache.Close();
+      }
+      catch {/* Ignore any exceptions */}
+
+      try
+      {
+        /* Disconnect from the distributed system.                
+        */
+        MyDistributedSystem = null;
+      }
+      catch {/* Ignore any exceptions */}
+    }
+  }
+
+  public static string GetStr(string key, Region region)
+  {
+    IGFSerializable cValue = region.Get(key);
+
+    Console.WriteLine("    Get string  -- key: " + key + "   value: " + cValue.ToString());
+    return cValue.ToString();
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/HierarchicalClient/HierarchicalClient.csproj
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/HierarchicalClient/HierarchicalClient.csproj b/geode-client-native/examples/clicache/HierarchicalClient/HierarchicalClient.csproj
new file mode 100755
index 0000000..ba70e16
--- /dev/null
+++ b/geode-client-native/examples/clicache/HierarchicalClient/HierarchicalClient.csproj
@@ -0,0 +1,86 @@
+\ufeff<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{6F9455A8-866A-4405-8354-449BC6CDFD46}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>GemStone.GemFire.Cache.Examples</RootNamespace>
+    <AssemblyName>HierarchicalClient</AssemblyName>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>2.0</OldToolsVersion>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <IntermediateOutputPath>$(OSBUILDDIR)\examples\clicache\Debug\HierarchicalClient\</IntermediateOutputPath>
+    <OutputPath>$(OSBUILDDIR)\examples\clicache\Debug\HierarchicalClient\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <DocumentationFile />
+    <PlatformTarget>x86</PlatformTarget>
+    <NoWarn>618</NoWarn>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <IntermediateOutputPath>$(OSBUILDDIR)\examples\clicache\HierarchicalClient\</IntermediateOutputPath>
+    <OutputPath>$(OSBUILDDIR)\examples\clicache\HierarchicalClient\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x86</PlatformTarget>
+    <NoWarn>618</NoWarn>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <IntermediateOutputPath>$(OSBUILDDIR)\examples\clicache\Debug\HierarchicalClient\</IntermediateOutputPath>
+    <OutputPath>$(OSBUILDDIR)\examples\clicache\Debug\HierarchicalClient\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <NoWarn>618</NoWarn>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <IntermediateOutputPath>$(OSBUILDDIR)\examples\clicache\HierarchicalClient\</IntermediateOutputPath>
+    <OutputPath>$(OSBUILDDIR)\examples\clicache\HierarchicalClient\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <NoWarn>618</NoWarn>
+  </PropertyGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\..\vs_projects\gfclicache\gfclicache.vcproj">
+      <Project>{B274E3B1-6A09-4322-952B-8BDA712892CE}</Project>
+      <Name>gfclicache</Name>
+    </ProjectReference>
+    <Reference Include="System" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="HierarchicalClient.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/HierarchicalClient/HierarchicalClient.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/HierarchicalClient/HierarchicalClient.xml b/geode-client-native/examples/clicache/HierarchicalClient/HierarchicalClient.xml
new file mode 100644
index 0000000..4be0995
--- /dev/null
+++ b/geode-client-native/examples/clicache/HierarchicalClient/HierarchicalClient.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" ?>
+<cache>
+  <!-- Create a root region. The sub-region is created in code. -->
+  <region name="root">
+    <region-attributes scope="distributed-no-ack" endpoints="localhost:40404"/>
+  </region>
+</cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/HierarchicalClient/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/HierarchicalClient/Properties/AssemblyInfo.cs b/geode-client-native/examples/clicache/HierarchicalClient/Properties/AssemblyInfo.cs
new file mode 100755
index 0000000..3edf8eb
--- /dev/null
+++ b/geode-client-native/examples/clicache/HierarchicalClient/Properties/AssemblyInfo.cs
@@ -0,0 +1,33 @@
+\ufeffusing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Quick Start Examples")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("GemStone Systems, Inc.")]
+[assembly: AssemblyProduct("Quick Start Examples")]
+[assembly: AssemblyCopyright("Copyright � GemStone Systems, Inc. 2008")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("ed332c93-70a1-4152-bd7f-8cf6cbf38528")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+[assembly: AssemblyVersion("9.0.0.0")]
+[assembly: AssemblyFileVersion("9.0.0.0")]


[02/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/DataInputMN.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/DataInputMN.cpp b/geode-client-native/src/clicache/com/vmware/DataInputMN.cpp
new file mode 100644
index 0000000..373cd62
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/DataInputMN.cpp
@@ -0,0 +1,1086 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+//#include "gf_includesN.hpp"
+#include "DataInputMN.hpp"
+#include <cppcache/Cache.hpp>
+//#include "CacheFactoryMN.hpp"
+#include "CacheMN.hpp"
+#include <vcclr.h>
+//#include <cppcache/GemfireTypeIds.hpp>
+#include <cppcache/impl/GemfireTypeIdsImpl.hpp>
+#include "CacheableStringMN.hpp"
+#include "CacheableHashMapMN.hpp"
+#include "CacheableStackMN.hpp"
+#include "CacheableVectorMN.hpp"
+#include "CacheableArrayListMN.hpp"
+#include "CacheableIDentityHashMapMN.hpp"
+#include "CacheableDateMN.hpp"
+#include "CacheableObjectArrayMN.hpp"
+
+#include "SerializableMN.hpp"
+#include "impl/PdxHelper.hpp"
+
+using namespace System;
+using namespace System::IO;
+using namespace gemfire;
+using namespace GemStone::GemFire::Cache::Generic;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      namespace Generic
+      {
+        DataInput::DataInput( uint8_t* buffer, int size )
+        {
+          m_ispdxDesrialization = false;
+          m_isRootObjectPdx = false;
+          if (buffer != nullptr && size > 0) {
+						_GF_MG_EXCEPTION_TRY2
+
+							SetPtr(new gemfire::DataInput(buffer, size), true);
+              m_cursor = 0;
+              m_isManagedObject = false;
+              m_forStringDecode = gcnew array<Char>(100);
+
+							m_buffer = const_cast<uint8_t*>(NativePtr->currentBufferPosition());
+							m_bufferLength = NativePtr->getBytesRemaining();    
+
+						_GF_MG_EXCEPTION_CATCH_ALL2          
+					}
+					else {
+						throw gcnew IllegalArgumentException("DataInput.ctor(): "
+							"provided buffer is null or empty");
+					}
+        }
+
+				DataInput::DataInput(array<Byte>^ buffer)
+				{
+          m_ispdxDesrialization = false;
+          m_isRootObjectPdx = false;
+					if (buffer != nullptr && buffer->Length > 0) {
+						_GF_MG_EXCEPTION_TRY2
+
+							int32_t len = buffer->Length;
+							GF_NEW(m_buffer, uint8_t[len]);
+							pin_ptr<const Byte> pin_buffer = &buffer[0];
+							memcpy(m_buffer, (void*)pin_buffer, len);
+							SetPtr(new gemfire::DataInput(m_buffer, len), true);
+
+              m_cursor = 0;
+              m_isManagedObject = false;
+              m_forStringDecode = gcnew array<Char>(100);
+
+							m_buffer = const_cast<uint8_t*>(NativePtr->currentBufferPosition());
+							m_bufferLength = NativePtr->getBytesRemaining();    
+
+						_GF_MG_EXCEPTION_CATCH_ALL2          
+					}
+					else {
+						throw gcnew IllegalArgumentException("DataInput.ctor(): "
+							"provided buffer is null or empty");
+					}
+				}
+
+				DataInput::DataInput(array<Byte>^ buffer, int32_t len )
+				{
+          m_ispdxDesrialization = false;
+          m_isRootObjectPdx = false;
+					if (buffer != nullptr) {
+						if (len == 0 || (int32_t)len > buffer->Length) {
+							throw gcnew IllegalArgumentException(String::Format(
+								"DataInput.ctor(): given length {0} is zero or greater than "
+								"size of buffer {1}", len, buffer->Length));
+						}
+						//m_bytes = gcnew array<Byte>(len);
+						//System::Array::Copy(buffer, 0, m_bytes, 0, len);
+					 _GF_MG_EXCEPTION_TRY2
+
+							GF_NEW(m_buffer, uint8_t[len]);
+							pin_ptr<const Byte> pin_buffer = &buffer[0];
+							memcpy(m_buffer, (void*)pin_buffer, len);
+							SetPtr(new gemfire::DataInput(m_buffer, len), true);
+
+							m_buffer = const_cast<uint8_t*>(NativePtr->currentBufferPosition());
+							m_bufferLength = NativePtr->getBytesRemaining();    
+
+						_GF_MG_EXCEPTION_CATCH_ALL2
+					}
+					else {
+						throw gcnew IllegalArgumentException("DataInput.ctor(): "
+							"provided buffer is null");
+					}
+				}
+
+        void DataInput::CheckBufferSize(int size)
+        {          
+          if( (unsigned int)(m_cursor + size) > m_bufferLength )
+          {
+            Log::Debug("DataInput::CheckBufferSize m_cursor:" + m_cursor + " size:" + size + " m_bufferLength:" + m_bufferLength);
+            throw gcnew OutOfRangeException("DataInput: attempt to read beyond buffer");
+          }
+        }
+
+        DataInput^ DataInput::GetClone()
+        {
+          return gcnew DataInput(m_buffer, m_bufferLength);
+        }
+
+				Byte DataInput::ReadByte( )
+				{
+					CheckBufferSize(1);
+					return m_buffer[m_cursor++];
+				}
+
+				SByte DataInput::ReadSByte( )
+				{
+					CheckBufferSize(1);
+					return m_buffer[m_cursor++];
+				}
+
+				bool DataInput::ReadBoolean( )
+				{
+					CheckBufferSize(1);
+					Byte val = m_buffer[m_cursor++];
+					if ( val == 1)
+						return true;
+					else
+						return false;
+				}
+
+				Char DataInput::ReadChar( )
+				{
+					CheckBufferSize(2);
+					Char data = m_buffer[m_cursor++];
+					data = (data << 8) | m_buffer[m_cursor++];
+					return data;
+				}
+
+				array<Byte>^ DataInput::ReadBytes( )
+				{
+					int32_t length;
+					length = ReadArrayLen();
+
+					if (length >= 0) {
+						if (length == 0)
+							return gcnew array<Byte>(0);
+						else {
+							array<Byte>^ bytes = ReadBytesOnly(length);
+							return bytes;
+						}
+					}
+					return nullptr;
+				}
+
+				int DataInput::ReadArrayLen( )
+				{
+					int code;
+					int len;
+	        
+					code = Convert::ToInt32(ReadByte());
+
+					if (code == 0xFF) {
+						len = -1;
+					} else {
+						unsigned int result = code;
+						if (result > 252) {  // 252 is java's ((byte)-4 && 0xFF)
+							if (code == 0xFE) {
+								result = ReadUInt16();
+							} else if (code == 0xFD) {
+								result = ReadUInt32();
+							}
+							else {
+								throw gcnew IllegalStateException("unexpected array length code");
+							}
+							//TODO:: illegal length
+						}
+						len = (int)result;
+					}
+					return len;
+				}
+
+				array<SByte>^ DataInput::ReadSBytes( )
+				{
+					int32_t length;
+					length = ReadArrayLen();
+
+					if (length > -1) {
+						if (length == 0)
+							return gcnew array<SByte>(0);
+						else {
+							array<SByte>^ bytes = ReadSBytesOnly(length);
+							return bytes;
+						}
+					}
+					return nullptr;
+				}
+
+				array<Byte>^ DataInput::ReadBytesOnly( uint32_t len )
+				{
+					if (len > 0) {
+						CheckBufferSize(len);
+						array<Byte>^ bytes = gcnew array<Byte>(len);
+	          
+						for ( unsigned int i = 0; i < len; i++)
+							bytes[i] = m_buffer[m_cursor++];
+
+						return bytes;
+					}
+					return nullptr;
+				}
+
+				void DataInput::ReadBytesOnly( array<Byte> ^ buffer, int offset, int count )
+				{
+					if (count > 0) {
+						CheckBufferSize((uint32_t)count);
+	          
+						for ( int i = 0; i < count; i++)
+							buffer[offset + i] = m_buffer[m_cursor++];
+					}
+				}
+
+				array<SByte>^ DataInput::ReadSBytesOnly( uint32_t len )
+				{
+					if (len > 0) {
+						CheckBufferSize(len);
+						array<SByte>^ bytes = gcnew array<SByte>(len);
+
+						for ( unsigned int i = 0; i < len; i++)
+							bytes[i] = (SByte)m_buffer[m_cursor++];
+
+						return bytes;
+					}
+					return nullptr;
+				}
+
+				uint16_t DataInput::ReadUInt16( )
+				{
+					CheckBufferSize(2);
+					uint16_t data = m_buffer[m_cursor++];
+					data = (data << 8) | m_buffer[m_cursor++];
+					return data;
+				}
+
+				uint32_t DataInput::ReadUInt32( )
+				{
+					CheckBufferSize(4);
+					uint32_t data = m_buffer[m_cursor++];
+					data = (data << 8) | m_buffer[m_cursor++];
+					data = (data << 8) | m_buffer[m_cursor++];
+					data = (data << 8) | m_buffer[m_cursor++];
+	        
+					return data;
+				}
+
+				uint64_t DataInput::ReadUInt64( )
+				{
+					uint64_t data;
+	        
+					CheckBufferSize(8);
+	        
+					data = m_buffer[m_cursor++];
+					data = (data << 8) | m_buffer[m_cursor++];
+					data = (data << 8) | m_buffer[m_cursor++];
+					data = (data << 8) | m_buffer[m_cursor++];
+					data = (data << 8) | m_buffer[m_cursor++];
+					data = (data << 8) | m_buffer[m_cursor++];
+					data = (data << 8) | m_buffer[m_cursor++];
+					data = (data << 8) | m_buffer[m_cursor++];
+	        
+					return data;
+				}
+
+				int16_t DataInput::ReadInt16( )
+				{
+					return ReadUInt16();
+				}
+
+				int32_t DataInput::ReadInt32( )
+				{
+					return ReadUInt32();
+				}
+
+				int64_t DataInput::ReadInt64( )
+				{
+					return ReadUInt64();
+				}
+
+				array<Byte>^ DataInput::ReadReverseBytesOnly(int len)
+				{
+					CheckBufferSize(len);
+
+					int i = 0;
+					int j = m_cursor + len -1;
+					array<Byte>^ bytes = gcnew array<Byte>(len);
+
+					while ( i < len )
+					{
+						bytes[i++] = m_buffer[j--];
+					}
+					m_cursor += len;
+					return bytes;
+				}
+
+				float DataInput::ReadFloat( )
+				{
+					float data;
+
+					array<Byte>^ bytes = nullptr;          
+					if(BitConverter::IsLittleEndian)
+						bytes = ReadReverseBytesOnly(4);
+					else
+						bytes = ReadBytesOnly(4);
+
+					data = BitConverter::ToSingle(bytes, 0);
+	        
+					return data;
+				}
+
+				double DataInput::ReadDouble( )
+				{
+					double data;
+
+					array<Byte>^ bytes = nullptr;          
+					if(BitConverter::IsLittleEndian)
+						bytes = ReadReverseBytesOnly(8);
+					else
+						bytes = ReadBytesOnly(8);
+
+					data = BitConverter::ToDouble(bytes, 0);
+	        
+					return data;
+				}
+
+				String^ DataInput::ReadUTF( )
+				{
+					int length = ReadUInt16();
+					CheckBufferSize(length);
+					String^ str = DecodeBytes(length);
+					return str;
+				}
+
+				String^ DataInput::ReadUTFHuge( )
+				{
+					int length = ReadUInt32();
+					CheckBufferSize(length);
+	        
+					array<Char>^ chArray = gcnew array<Char>(length);
+	        
+					for (int i = 0; i < length; i++)
+					{
+						Char ch = ReadByte();
+						ch = ((ch << 8) | ReadByte());
+						chArray[i] = ch;
+					}
+
+					String^ str = gcnew String(chArray);
+
+					return str;
+				}
+
+				String^ DataInput::ReadASCIIHuge( )
+				{
+					int length = ReadInt32();
+					CheckBufferSize(length);
+					String^ str = DecodeBytes(length);
+					return str;
+				}
+
+				Object^ DataInput::ReadObject( )
+				{
+					return ReadInternalObject();        
+				}
+
+			/*	Object^ DataInput::ReadGenericObject( )
+				{
+					return ReadInternalGenericObject();        
+				}*/
+
+				Object^ DataInput::ReadDotNetTypes(int8_t typeId)
+				{
+					switch(typeId)
+					{
+					case gemfire::GemfireTypeIds::CacheableByte:
+						{
+							return ReadSByte();
+						}
+					case gemfire::GemfireTypeIds::CacheableBoolean:
+						{
+							bool obj;
+							ReadObject(obj);
+							return obj;
+						}
+					case gemfire::GemfireTypeIds::CacheableWideChar:
+						{
+							Char obj;
+							ReadObject(obj);
+							return obj;
+						}
+					case gemfire::GemfireTypeIds::CacheableDouble:
+						{
+							Double obj;
+							ReadObject(obj);
+							return obj;
+						}
+					case gemfire::GemfireTypeIds::CacheableASCIIString:
+						{
+						/*	CacheableString^ cs = static_cast<CacheableString^>(CacheableString::CreateDeserializable());
+							cs->FromData(this);
+							return cs->Value;*/
+              return ReadUTF();
+						}
+					case gemfire::GemfireTypeIds::CacheableASCIIStringHuge:
+						{
+							/*CacheableString^ cs = static_cast<CacheableString^>(CacheableString::createDeserializableHuge());
+							cs->FromData(this);
+							return cs->Value;*/
+              return ReadASCIIHuge();
+						}
+					case gemfire::GemfireTypeIds::CacheableString:
+						{
+							/*CacheableString^ cs = static_cast<CacheableString^>(CacheableString::createUTFDeserializable());
+							cs->FromData(this);
+							return cs->Value;*/
+              return ReadUTF();
+						}
+					case gemfire::GemfireTypeIds::CacheableStringHuge:
+						{
+							//TODO:hitesh need to look all strings types
+							/*CacheableString^ cs = static_cast<CacheableString^>(CacheableString::createUTFDeserializableHuge());
+							cs->FromData(this);
+							return cs->Value;*/
+              return ReadUTFHuge();
+						}
+					case gemfire::GemfireTypeIds::CacheableFloat:
+						{
+							float obj;
+							ReadObject(obj);
+							return obj;
+						}
+					case gemfire::GemfireTypeIds::CacheableInt16:
+						{
+							Int16 obj;
+							ReadObject(obj);
+							return obj;
+						}
+					case gemfire::GemfireTypeIds::CacheableInt32:
+						{
+							Int32 obj;
+							ReadObject(obj);
+							return obj;
+						}
+					case gemfire::GemfireTypeIds::CacheableInt64:
+						{
+							Int64 obj;
+							ReadObject(obj);
+							return obj;
+						}
+					case gemfire::GemfireTypeIds::CacheableDate:
+						{
+							CacheableDate^ cd = CacheableDate::Create();
+							cd->FromData(this);
+							return cd->Value;
+						}
+					case gemfire::GemfireTypeIds::CacheableBytes:
+						{
+							return ReadBytes();
+						}
+					case gemfire::GemfireTypeIds::CacheableDoubleArray:
+						{
+							array<Double>^ obj;
+							ReadObject(obj);
+							return obj;
+						}
+					case gemfire::GemfireTypeIds::CacheableFloatArray:
+						{
+							array<float>^ obj;
+							ReadObject(obj);
+							return obj;
+						}
+					case gemfire::GemfireTypeIds::CacheableInt16Array:
+						{
+							array<Int16>^ obj;
+							ReadObject(obj);
+							return obj;
+						}
+					case gemfire::GemfireTypeIds::CacheableInt32Array:
+						{
+							array<Int32>^ obj;
+							ReadObject(obj);
+							return obj;
+						}
+					case gemfire::GemfireTypeIds::BooleanArray:
+						{
+							array<bool>^ obj;
+							ReadObject(obj);
+							return obj;
+						}
+					case gemfire::GemfireTypeIds::CharArray:
+						{
+							array<Char>^ obj;
+							ReadObject(obj);
+							return obj;
+						}
+					case gemfire::GemfireTypeIds::CacheableInt64Array:
+						{
+							array<Int64>^ obj;
+							ReadObject(obj);
+							return obj;
+						}
+					case gemfire::GemfireTypeIds::CacheableStringArray:
+						{
+							return ReadStringArray();
+						}
+					case gemfire::GemfireTypeIds::CacheableHashTable:
+						{
+							return ReadHashtable();
+						}
+					case gemfire::GemfireTypeIds::CacheableHashMap:
+						{
+							CacheableHashMap^ chm = static_cast<CacheableHashMap^>(CacheableHashMap::CreateDeserializable());
+							chm->FromData(this);
+							return chm->Value;
+						}
+					case gemfire::GemfireTypeIds::CacheableIdentityHashMap:
+						{
+							CacheableIdentityHashMap^ chm = static_cast<CacheableIdentityHashMap^>(CacheableIdentityHashMap::CreateDeserializable());
+							chm->FromData(this);
+							return chm->Value;
+						}
+					case gemfire::GemfireTypeIds::CacheableVector:
+						{
+							/*CacheableVector^ cv = static_cast<CacheableVector^>(CacheableVector::CreateDeserializable());
+							cv->FromData(this);
+							return cv->Value;*/
+              int len = ReadArrayLen();
+              System::Collections::ArrayList^ retA = gcnew System::Collections::ArrayList(len);
+              
+              for( int i = 0; i < len; i++)
+              {
+                retA->Add(this->ReadObject());
+              }
+              return retA;
+						}
+					case gemfire::GemfireTypeIds::CacheableArrayList:
+						{
+							/*CacheableArrayList^ cv = static_cast<CacheableArrayList^>(CacheableArrayList::CreateDeserializable());
+							cv->FromData(this);
+							return cv->Value;*/
+              int len = ReadArrayLen();
+              System::Collections::Generic::List<Object^>^ retA = gcnew System::Collections::Generic::List<Object^>(len);
+              for( int i = 0; i < len; i++)
+              {
+                retA->Add(this->ReadObject());
+              }
+              return retA;
+
+						}
+          case gemfire::GemfireTypeIds::CacheableLinkedList:
+						{
+							/*CacheableArrayList^ cv = static_cast<CacheableArrayList^>(CacheableArrayList::CreateDeserializable());
+							cv->FromData(this);
+							return cv->Value;*/
+              int len = ReadArrayLen();
+              System::Collections::Generic::LinkedList<Object^>^ retA = gcnew System::Collections::Generic::LinkedList<Object^>();
+              for( int i = 0; i < len; i++)
+              {
+                retA->AddLast(this->ReadObject());
+              }
+              return retA;
+
+						}
+					case gemfire::GemfireTypeIds::CacheableStack:
+						{
+							CacheableStack^ cv = static_cast<CacheableStack^>(CacheableStack::CreateDeserializable());
+							cv->FromData(this);
+							return cv->Value;
+						}
+					default:
+						return nullptr;
+					}
+				}
+
+				Object^ DataInput::ReadInternalObject( )
+				{
+          //Log::Debug("DataInput::ReadInternalObject m_cursor " + m_cursor);
+					bool findinternal = false;
+					int8_t typeId = ReadByte();
+					int64_t compId = typeId;
+					TypeFactoryMethodGeneric^ createType = nullptr;
+
+					if (compId == GemfireTypeIds::NullObj) {
+						return nullptr;
+					}
+					else if(compId == GemFireClassIds::PDX)
+					{
+            //cache current state and reset after reading pdx object
+            int cacheCursor = m_cursor;
+            uint8_t* cacheBuffer = m_buffer;
+            unsigned int cacheBufferLength = m_bufferLength;
+            Object^ ret = Internal::PdxHelper::DeserializePdx(this, false);
+            int tmp = NativePtr->getBytesRemaining();
+            m_cursor = cacheBufferLength - tmp;
+            m_buffer = cacheBuffer;
+            m_bufferLength = cacheBufferLength;
+            NativePtr->rewindCursor(m_cursor);
+
+            if(ret != nullptr)
+            {
+              PdxWrapper^ pdxWrapper = dynamic_cast<PdxWrapper^>(ret);
+
+              if(pdxWrapper != nullptr)
+              {
+                return pdxWrapper->GetObject();
+              }
+            }
+            return ret;
+					}
+          else if (compId == GemFireClassIds::PDX_ENUM)
+          {
+            int8_t dsId = ReadByte();
+            int tmp = ReadArrayLen();
+            int enumId = (dsId << 24) | (tmp & 0xFFFFFF);
+
+            Object^ enumVal = Internal::PdxHelper::GetEnum(enumId);
+            return enumVal;
+          }
+					else if (compId == GemfireTypeIds::CacheableNullString) {
+						//return SerializablePtr(CacheableString::createDeserializable());
+						//TODO::
+						return nullptr;
+					}
+					else if (compId == GemfireTypeIdsImpl::CacheableUserData) {
+						int8_t classId = ReadByte();
+						//compId |= ( ( (int64_t)classId ) << 32 );
+						compId = (int64_t)classId;
+					} else if ( compId == GemfireTypeIdsImpl::CacheableUserData2 ) {
+						int16_t classId = ReadInt16();
+						//compId |= ( ( (int64_t)classId ) << 32 );
+						compId = (int64_t)classId;
+					} else if ( compId == GemfireTypeIdsImpl::CacheableUserData4 ) {
+						int32_t classId = ReadInt32();
+						//compId |= ( ( (int64_t)classId ) << 32 );
+						compId = (int64_t)classId;
+					}else if (compId == GemfireTypeIdsImpl::FixedIDByte) {//TODO:hitesh need to verify again
+						int8_t fixedId = ReadByte();
+						compId = fixedId;
+						findinternal = true;
+					} else if (compId == GemfireTypeIdsImpl::FixedIDShort) {
+						int16_t fixedId = ReadInt16();
+						compId = fixedId;
+						findinternal = true;
+					} else if (compId == GemfireTypeIdsImpl::FixedIDInt) {
+						int32_t fixedId = ReadInt32();
+						compId = fixedId;
+						findinternal = true;
+					}
+					if (findinternal) {
+						compId += 0x80000000;
+						createType = Serializable::GetManagedDelegateGeneric((int64_t)compId);
+					} else {
+							createType = Serializable::GetManagedDelegateGeneric(compId);
+							if(createType == nullptr)
+							{
+								 Object^ retVal = ReadDotNetTypes(typeId);
+
+								if(retVal != nullptr)
+									return retVal;
+
+                if(m_ispdxDesrialization && typeId == gemfire::GemfireTypeIds::CacheableObjectArray)
+                {//object array and pdxSerialization
+                  return readDotNetObjectArray();
+                }
+								compId += 0x80000000;
+								createType = Serializable::GetManagedDelegateGeneric(compId);
+
+								/*if (createType == nullptr)
+								{
+									//TODO::hitesh final check for user type if its not in cache 
+									compId -= 0x80000000;
+									createType = Serializable::GetManagedDelegate(compId);
+								}*/
+							}
+					}
+          
+					if ( createType == nullptr ) {            
+						throw gcnew IllegalStateException( "Unregistered typeId " +typeId + " in deserialization, aborting." );
+					}
+
+          bool isPdxDeserialization = m_ispdxDesrialization;
+          m_ispdxDesrialization = false;//for nested objects
+					IGFSerializable^ newObj = createType();
+					newObj->FromData(this);
+          m_ispdxDesrialization = isPdxDeserialization;
+					return newObj;
+				}
+
+        Object^ DataInput::readDotNetObjectArray()
+        {
+           int len = ReadArrayLen();
+           String^ className = nullptr;
+           if (len >= 0) 
+           {
+              ReadByte(); // ignore CLASS typeid
+              className = (String^)ReadObject();
+              className = Serializable::GetLocalTypeName(className);
+              System::Collections::IList^ list = nullptr;
+              if(len == 0)
+              {
+                list = (System::Collections::IList^)Serializable::GetArrayObject(className, len);
+                return list;
+              }
+              //read first object
+
+              Object^ ret = ReadObject();//in case it returns pdxinstance or java.lang.object
+
+              list = (System::Collections::IList^)Serializable::GetArrayObject(ret->GetType()->FullName, len);
+              
+              list[0] = ret;
+              for (int32_t index = 1; index < list->Count; ++index) 
+              {
+                list[index] = ReadObject();
+              }
+              return list;
+           }
+           return nullptr;
+         }
+
+				Object^ DataInput::ReadInternalGenericObject( )
+				{
+					bool findinternal = false;
+					int8_t typeId = ReadByte();
+					int64_t compId = typeId;
+					TypeFactoryMethodGeneric^ createType = nullptr;
+
+					if (compId == GemfireTypeIds::NullObj) {
+						return nullptr;
+					}
+					else if(compId == GemFireClassIds::PDX)
+					{
+						return Internal::PdxHelper::DeserializePdx(this, false);
+					}
+					else if (compId == GemfireTypeIds::CacheableNullString) {
+						//return SerializablePtr(CacheableString::createDeserializable());
+						//TODO::
+						return nullptr;
+					}
+					else if (compId == GemfireTypeIdsImpl::CacheableUserData) {
+						int8_t classId = ReadByte();
+						//compId |= ( ( (int64_t)classId ) << 32 );
+						compId = (int64_t)classId;
+					} else if ( compId == GemfireTypeIdsImpl::CacheableUserData2 ) {
+						int16_t classId = ReadInt16();
+						//compId |= ( ( (int64_t)classId ) << 32 );
+						compId = (int64_t)classId;
+					} else if ( compId == GemfireTypeIdsImpl::CacheableUserData4 ) {
+						int32_t classId = ReadInt32();
+						//compId |= ( ( (int64_t)classId ) << 32 );
+						compId = (int64_t)classId;
+					}else if (compId == GemfireTypeIdsImpl::FixedIDByte) {//TODO:hitesh need to verify again
+						int8_t fixedId = ReadByte();
+						compId = fixedId;
+						findinternal = true;
+					} else if (compId == GemfireTypeIdsImpl::FixedIDShort) {
+						int16_t fixedId = ReadInt16();
+						compId = fixedId;
+						findinternal = true;
+					} else if (compId == GemfireTypeIdsImpl::FixedIDInt) {
+						int32_t fixedId = ReadInt32();
+						compId = fixedId;
+						findinternal = true;
+					}
+					if (findinternal) {
+						compId += 0x80000000;
+						createType = Serializable::GetManagedDelegateGeneric((int64_t)compId);
+					} else {
+							createType = Serializable::GetManagedDelegateGeneric(compId);
+							if(createType == nullptr)
+							{
+								Object^ retVal = ReadDotNetTypes(typeId);
+
+								if(retVal != nullptr)
+									return retVal;
+
+								compId += 0x80000000;
+								createType = Serializable::GetManagedDelegateGeneric(compId);              
+							}
+					}
+
+					if ( createType != nullptr )
+					{
+						IGFSerializable^ newObj = createType();
+						newObj->FromData(this);
+						return newObj;
+					}
+	        
+					throw gcnew IllegalStateException( "Unregistered typeId in deserialization, aborting." );
+				}
+
+				uint32_t DataInput::BytesRead::get( )
+				{
+					AdvanceUMCursor();
+					SetBuffer();
+
+					return NativePtr->getBytesRead();
+				}
+
+				uint32_t DataInput::BytesReadInternally::get()
+				{
+					return m_cursor;
+				}
+
+				uint32_t DataInput::BytesRemaining::get( )
+				{
+					AdvanceUMCursor();
+					SetBuffer();
+					return NativePtr->getBytesRemaining();
+					//return m_bufferLength - m_cursor;
+				}
+
+				void DataInput::AdvanceCursor( int32_t offset )
+				{
+					m_cursor += offset;
+				}
+
+				void DataInput::RewindCursor( int32_t offset )
+				{
+					AdvanceUMCursor();        
+					NativePtr->rewindCursor(offset);
+					SetBuffer();
+					//m_cursor -= offset;
+				}
+
+				void DataInput::Reset()
+				{
+					AdvanceUMCursor();
+					NativePtr->reset();
+					SetBuffer();
+				//  m_cursor = 0;
+				}
+
+				void DataInput::Cleanup( )
+				{
+					//TODO:hitesh
+					//GF_SAFE_DELETE_ARRAY(m_buffer);
+					InternalCleanup( );
+				}
+
+        void DataInput::ReadDictionary(System::Collections::IDictionary^ dict)
+        {
+          int len = this->ReadArrayLen();
+
+          if(len > 0)
+					{
+						for(int i =0; i< len; i++)
+						{
+							Object^ key = this->ReadObject();
+							Object^ val = this->ReadObject();
+
+							dict->Add(key, val);
+						}
+					}
+        }
+
+				IDictionary<Object^, Object^>^ DataInput::ReadDictionary()
+				{
+					int len = this->ReadArrayLen();
+
+					if(len == -1)
+						return nullptr;
+					else
+					{
+						IDictionary<Object^, Object^>^ dict = gcnew Dictionary<Object^, Object^>();
+						for(int i =0; i< len; i++)
+						{
+							Object^ key = this->ReadObject();
+							Object^ val = this->ReadObject();
+
+							dict->Add(key, val);
+						}
+						return dict;
+					}        
+				}
+
+				System::DateTime DataInput::ReadDate()
+				{
+					long ticks = (long)ReadInt64();
+					if(ticks != -1L)
+					{
+						m_cursor -= 8;//for above
+						CacheableDate^ cd = CacheableDate::Create();
+						cd->FromData(this);
+						return cd->Value;
+					}
+					else
+					{
+						DateTime dt(0);
+						return dt;
+					}
+				}
+
+				void DataInput::ReadCollection(System::Collections::IList^ coll)
+				{
+					int len = ReadArrayLen();
+					for( int i = 0; i < len; i++)
+					{
+						coll->Add(ReadObject());
+					}
+				}
+	      
+				array<Char>^ DataInput::ReadCharArray( )
+				{
+					array<Char>^ arr;
+          this->ReadObject(arr);
+					return arr;
+				}
+
+				array<bool>^ DataInput::ReadBooleanArray( )
+				{
+					array<bool>^ arr;
+          this->ReadObject(arr);
+					return arr;
+				}
+
+				array<Int16>^ DataInput::ReadShortArray( )
+				{
+					array<Int16>^ arr;
+          this->ReadObject(arr);
+					return arr;
+				}
+
+				array<Int32>^ DataInput::ReadIntArray()
+				{
+					array<Int32>^ arr;
+          this->ReadObject(arr);
+					return arr;
+				}
+
+				array<Int64>^ DataInput::ReadLongArray()
+				{
+					array<Int64>^ arr;
+          this->ReadObject(arr);
+					return arr;
+				}
+
+				array<float>^ DataInput::ReadFloatArray()
+				{
+					array<float>^ arr;
+          this->ReadObject(arr);
+					return arr;
+				}
+
+				array<double>^ DataInput::ReadDoubleArray()
+				{
+					array<double>^ arr;
+          this->ReadObject(arr);
+					return arr;
+				}
+
+				List<Object^>^ DataInput::ReadObjectArray()
+				{
+          //this to know whether it is null or it is empty
+          int storeCursor = m_cursor;
+          int len = this->ReadArrayLen();
+          if(len == -1)
+            return nullptr;
+          //this will be read further by fromdata
+          m_cursor = m_cursor - (m_cursor - storeCursor);
+          
+
+					CacheableObjectArray^ coa = CacheableObjectArray::Create();
+					coa->FromData(this);        
+					List<Object^>^ retObj = (List<Object^>^)coa;
+
+          if(retObj->Count >= 0)
+            return retObj;
+          return nullptr;
+				}
+
+				array<array<Byte>^>^ DataInput::ReadArrayOfByteArrays( )
+				{
+					int len = ReadArrayLen();
+					if(len >= 0)
+					{
+						array<array<Byte>^>^ retVal = gcnew array<array<Byte>^>(len);
+						for( int i = 0; i < len; i++)
+						{
+							retVal[i] = this->ReadBytes();
+						}
+						return retVal;
+					}
+					else
+						return nullptr;
+				}
+
+				void DataInput::ReadObject(array<UInt16>^% obj)
+				{
+					int len = ReadArrayLen();
+					if(len >= 0)
+					{
+						obj = gcnew array<UInt16>(len);
+						for( int i = 0; i < len; i++)
+						{
+							obj[i] = this->ReadUInt16();
+						}
+					}
+				}
+
+				void DataInput::ReadObject(array<UInt32>^% obj)
+				{
+					int len = ReadArrayLen();
+					if(len >= 0)
+					{
+						obj = gcnew array<UInt32>(len);
+						for( int i = 0; i < len; i++)
+						{
+							obj[i] = this->ReadUInt32();
+						}
+					}
+				}
+
+				void DataInput::ReadObject(array<UInt64>^% obj)
+				{
+					int len = ReadArrayLen();
+					if(len >= 0)
+					{
+						obj = gcnew array<UInt64>(len);
+						for( int i = 0; i < len; i++)
+						{
+							obj[i] = this->ReadUInt64();
+						}
+					}
+				}
+
+				String^ DataInput::ReadString()
+				{
+					UInt32 typeId = (Int32)ReadByte() ;
+
+					if(typeId == GemfireTypeIds::CacheableNullString)
+						return nullptr;
+
+				  if (typeId == GemfireTypeIds::CacheableASCIIString ||
+              typeId == GemfireTypeIds::CacheableString)
+          {
+            return ReadUTF();
+          }
+          else if (typeId == GemfireTypeIds::CacheableASCIIStringHuge)
+          {
+            return ReadASCIIHuge();
+          }
+          else 
+          {
+            return ReadUTFHuge();
+          }
+				}
+      } // end namespace generic
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/DataInputMN.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/DataInputMN.hpp b/geode-client-native/src/clicache/com/vmware/DataInputMN.hpp
new file mode 100644
index 0000000..c9adb71
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/DataInputMN.hpp
@@ -0,0 +1,685 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "../../gf_defs.hpp"
+#include <cppcache/DataInput.hpp>
+#include "impl/NativeWrapperN.hpp"
+#include "LogMN.hpp"
+#include "ExceptionTypesMN.hpp"
+//#include "../../CacheableDateM.hpp"
+
+
+using namespace System;
+using namespace System::Collections::Generic;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      namespace Generic
+      {
+
+      interface class IGFSerializable;
+
+      /// <summary>
+      /// Provides operations for reading primitive data values, byte arrays,
+      /// strings, <c>IGFSerializable</c> objects from a byte stream.
+      /// </summary>
+      public ref class DataInput sealed
+				: public Generic::Internal::UMWrap<gemfire::DataInput>
+      {
+      public:
+
+        /// <summary>
+        /// Construct <c>DataInput</c> using an given array of bytes.
+        /// </summary>
+        /// <param name="buffer">
+        /// The buffer to use for reading data values.
+        /// </param>
+        /// <exception cref="IllegalArgumentException">
+        /// if the buffer is null
+        /// </exception>
+        DataInput( array<Byte>^ buffer );
+
+        /// <summary>
+        /// Construct <c>DataInput</c> using a given length of an array of
+        /// bytes.
+        /// </summary>
+        /// <param name="buffer">
+        /// The buffer to use for reading data values.
+        /// </param>
+        /// <param name="len">
+        /// The number of bytes from the start of the buffer to use.
+        /// </param>
+        /// <exception cref="IllegalArgumentException">
+        /// if the buffer is null
+        /// </exception>
+        DataInput( array<Byte>^ buffer, int32_t len );
+
+        /// <summary>
+        /// Dispose: frees the internal buffer.
+        /// </summary>
+        ~DataInput( ) { Cleanup( ); }
+
+        /// <summary>
+        /// Finalizer: frees the internal buffer.
+        /// </summary>
+        !DataInput( ) { Cleanup( ); }      
+
+        /// <summary>
+        /// Read a signed byte from the stream.
+        /// </summary>
+        SByte ReadSByte( );
+
+        /// <summary>
+        /// Read a boolean value from the stream.
+        /// </summary>
+        bool ReadBoolean( );
+
+				/// <summary>
+        /// Read a char value from the stream.
+        /// </summary>
+        Char ReadChar( );
+
+        /// <summary>
+        /// Read an array of bytes from the stream reading the length
+        /// from the stream first.
+        /// </summary>
+        array<Byte>^ ReadBytes( );
+
+        /// <summary>
+        /// Read an array of signed bytes from the stream reading the length
+        /// from the stream first.
+        /// </summary>
+        array<SByte>^ ReadSBytes( );
+
+        /// <summary>
+        /// Read the given number of bytes from the stream.
+        /// </summary>
+        /// <param name="len">Number of bytes to read.</param>
+        array<Byte>^ ReadBytesOnly( uint32_t len );
+
+        void ReadBytesOnly( array<Byte> ^ buffer, int offset, int count );
+
+        /// <summary>
+        /// Read the given number of signed bytes from the stream.
+        /// </summary>
+        /// <param name="len">Number of signed bytes to read.</param>
+        array<SByte>^ ReadSBytesOnly( uint32_t len );
+
+        /// <summary>
+        /// Read a array len based on array size.
+        /// </summary>
+        int ReadArrayLen( );
+
+        /// <summary>
+        /// Read a 16-bit integer from the stream.
+        /// </summary>
+        int16_t ReadInt16( );
+
+        /// <summary>
+        /// Read a 32-bit integer from the stream.
+        /// </summary>
+        int32_t ReadInt32( );
+
+        /// <summary>
+        /// Read a 64-bit integer from the stream.
+        /// </summary>
+        int64_t ReadInt64( );
+
+        /// <summary>
+        /// Read a floating point number from the stream.
+        /// </summary>
+        float ReadFloat( );
+
+        /// <summary>
+        /// Read a double precision number from the stream.
+        /// </summary>
+        double ReadDouble( );
+
+        /// <summary>
+        /// Read a string after java-modified UTF-8 decoding from the stream.
+        /// The maximum length supported is 2^16-1 beyond which the string
+        /// shall be truncated.
+        /// </summary>
+        String^ ReadUTF( );
+
+        /// <summary>
+        /// Read a string after java-modified UTF-8 decoding from the stream.
+        /// </summary>
+        String^ ReadUTFHuge( );
+
+        /// <summary>
+        /// Read a ASCII string from the stream. Where size is more than 2^16-1 
+        /// </summary>
+        String^ ReadASCIIHuge( );
+
+        /// <summary>
+        /// Read a serializable object from the data. Null objects are handled.
+        /// </summary>
+        Object^ ReadObject( );
+        
+        /// <summary>
+        /// Get the count of bytes that have been read from the stream.
+        /// </summary>
+        property uint32_t BytesRead
+        {
+          uint32_t get( );
+        }
+
+        /// <summary>
+        /// Get the count of bytes that are remaining in the buffer.
+        /// </summary>
+        property uint32_t BytesRemaining
+        {
+          uint32_t get();
+        }
+
+        /// <summary>
+        /// Advance the cursor of the buffer by the given offset.
+        /// </summary>
+        /// <param name="offset">
+        /// The offset(number of bytes) by which to advance the cursor.
+        /// </param>
+        void AdvanceCursor( int32_t offset );
+
+        /// <summary>
+        /// Rewind the cursor of the buffer by the given offset.
+        /// </summary>
+        /// <param name="offset">
+        /// The offset(number of bytes) by which to rewind the cursor.
+        /// </param>
+        void RewindCursor( int32_t offset );
+
+        /// <summary>
+        /// Reset the cursor to the start of buffer.
+        /// </summary>
+        void Reset();
+
+        /// <summary>
+        /// Get the underlying native unmanaged pointer.
+        /// </summary>
+        property IntPtr NativeIntPtr
+        {
+          inline IntPtr get()
+          {
+            return IntPtr(_NativePtr);
+          }
+        }
+        
+        /// <summary>
+        /// Read a dictionary from the stream in a given dictionary instance.
+        /// </summary>
+        /// <param name="dictionary">Object which implements System::Collections::IDictionary interface.</param>
+        void ReadDictionary(System::Collections::IDictionary^ dictionary);
+        
+        /// <summary>
+        /// Read a date from the stream.
+        /// </summary>
+				System::DateTime ReadDate( );
+
+        /// <summary>
+        /// Read a collection from the stream in a given collection instance.
+        /// </summary>
+        /// <param name="list">Object which implements System::Collections::IList interface.</param>
+        void ReadCollection(System::Collections::IList^ list);
+        
+        /// <summary>
+        /// Read a char array from the stream.
+        /// </summary>
+        array<Char>^ ReadCharArray( );
+
+        /// <summary>
+        /// Read a bool array from the stream.
+        /// </summary>
+				array<bool>^ ReadBooleanArray( );
+
+        /// <summary>
+        /// Read a short int array from the stream.
+        /// </summary>
+				array<Int16>^ ReadShortArray( );
+
+        /// <summary>
+        /// Read a int array from the stream.
+        /// </summary>
+				array<Int32>^ ReadIntArray();
+
+        /// <summary>
+        /// Read a long array from the stream.
+        /// </summary>
+				array<Int64>^ ReadLongArray();
+
+        /// <summary>
+        /// Read a float array from the stream.
+        /// </summary>
+				array<float>^ ReadFloatArray();
+
+        /// <summary>
+        /// Read a double array from the stream.
+        /// </summary>
+				array<double>^ ReadDoubleArray();
+
+        /// <summary>
+        /// Read a object array from the stream from the stream.
+        /// </summary>
+        List<Object^>^ ReadObjectArray();
+
+        /// <summary>
+        /// Read a array of signed byte array from the stream.
+        /// </summary>
+        array<array<Byte>^>^ ReadArrayOfByteArrays( );
+
+      internal:
+
+        void setPdxdeserialization(bool val)
+        {
+          m_ispdxDesrialization = true;
+        }
+        bool isRootObjectPdx()
+        {
+          return m_isRootObjectPdx;
+        }
+        void setRootObjectPdx(bool val)
+        {
+          m_isRootObjectPdx = val;
+        }
+
+        Object^ readDotNetObjectArray();
+        System::Collections::Generic::IDictionary<Object^, Object^>^ ReadDictionary();
+
+				String^ ReadString();
+
+        const char * GetPoolName()
+        {
+          return _NativePtr->getPoolName();
+        }
+
+        Object^ ReadDotNetTypes(int8_t typeId);
+
+        /// <summary>
+        /// Get the count of bytes that have been read from the stream, for internal use only.
+        /// </summary>
+        property uint32_t BytesReadInternally
+        {
+          uint32_t get( );
+        }
+
+        void ReadObject(bool% obj)
+        {
+          obj = ReadBoolean();
+        }
+
+        void ReadObject(Byte% obj)
+        {
+          obj = ReadByte();
+        }
+
+        void ReadObject(Char% obj)
+        {
+          obj = (Char)ReadUInt16();
+        }
+
+        inline Char decodeChar( )
+        {
+          Char retChar;
+          int b = m_buffer[ m_cursor++ ] & 0xff;
+          int k = b >> 5;
+          switch (  k )
+            {
+            default:
+              retChar = ( Char ) ( b & 0x7f );
+              break;
+            case 6:
+              {
+                // two byte encoding
+                // 110yyyyy 10xxxxxx
+                // use low order 6 bits
+                int y = b & 0x1f;
+                // use low order 6 bits of the next byte
+                // It should have high order bits 10, which we don't check.
+                int x = m_buffer[ m_cursor++ ] & 0x3f;
+                // 00000yyy yyxxxxxx
+                retChar = ( Char ) ( y << 6 | x );
+                break;
+              }
+            case 7:
+              {
+                // three byte encoding
+                // 1110zzzz 10yyyyyy 10xxxxxx
+                //assert ( b & 0x10 )
+                  //     == 0 : "UTF8Decoder does not handle 32-bit characters";
+                // use low order 4 bits
+                int z = b & 0x0f;
+                // use low order 6 bits of the next byte
+                // It should have high order bits 10, which we don't check.
+                int y = m_buffer[ m_cursor++ ] & 0x3f;
+                // use low order 6 bits of the next byte
+                // It should have high order bits 10, which we don't check.
+                int x = m_buffer[ m_cursor++ ] & 0x3f;
+                // zzzzyyyy yyxxxxxx
+                int asint = ( z << 12 | y << 6 | x );
+                retChar = ( Char ) asint;
+                break;
+              }
+            }// end switch
+
+            return retChar;
+        }
+
+        System::Collections::Hashtable^ ReadHashtable()
+        {
+          int len = this->ReadArrayLen();
+
+          if(len == -1)
+            return nullptr;
+          else
+          {
+            System::Collections::Hashtable^ dict = gcnew System::Collections::Hashtable();
+            for(int i =0; i< len; i++)
+            {
+              Object^ key = this->ReadObject();
+              Object^ val = this->ReadObject();
+
+              dict->Add(key, val);
+            }
+            return dict;
+          }
+        }
+
+        /// <summary>
+        /// Read a byte from the stream.
+        /// </summary>
+        Byte ReadByte( );
+
+        /// <summary>
+        /// Read a 16-bit unsigned integer from the stream.
+        /// </summary>
+        uint16_t ReadUInt16( );
+
+        /// <summary>
+        /// Read a 32-bit unsigned integer from the stream.
+        /// </summary>
+        uint32_t ReadUInt32( );
+       
+        /// <summary>
+        /// Read a 64-bit unsigned integer from the stream.
+        /// </summary>
+        uint64_t ReadUInt64( );
+
+        void ReadObject(Double% obj)
+        {
+          obj = ReadDouble();
+        }
+
+        void ReadObject(Single% obj)
+        {
+          obj = ReadFloat();
+        }
+
+        void ReadObject(int16_t% obj)
+        {
+          obj = ReadInt16();
+        }
+
+        void ReadObject(int32_t% obj)
+        {
+          obj = ReadInt32();
+        }
+
+        void ReadObject(int64_t% obj)
+        {
+          obj = ReadInt64();
+        }
+
+				 void ReadObject(array<SByte>^% obj)
+        {
+          obj = ReadSBytes();
+        }        
+
+        void DataInput::ReadObject(array<UInt16>^% obj);
+        void DataInput::ReadObject(array<UInt32>^% obj);
+        void DataInput::ReadObject(array<UInt64>^% obj);
+
+        template <typename mType>
+        void ReadObject(array<mType>^ %objArray)
+        {
+          int arrayLen = ReadArrayLen();
+          if(arrayLen >= 0) {
+            objArray = gcnew array<mType>(arrayLen);
+
+            int i = 0;
+            for( i = 0; i < arrayLen; i++ ){
+              mType tmp;
+              ReadObject(tmp);
+              objArray[i] =  tmp; 
+            }
+          }
+        }
+
+				array<String^>^ ReadStringArray()
+       {
+          int len = this->ReadArrayLen();
+          if ( len == -1)
+          {
+            return nullptr;
+          }
+          else 
+          {
+            array<String^>^ ret = gcnew array<String^>(len);
+            if (len > 0)
+            {
+              for( int i = 0; i < len; i++)
+              {
+                Object^ obj = this->ReadObject();
+                if(obj != nullptr)
+                  ret[i] = static_cast<String^>(obj);
+                else
+                  ret[i] = nullptr;
+              }
+            }
+            return ret;
+          }
+        }
+
+				uint8_t* GetCursor()
+        {
+          return m_buffer + m_cursor;
+        }
+
+        uint8_t* GetBytes(uint8_t* src, uint32_t size)
+        {
+          return NativePtr->getBufferCopyFrom(src, size);
+        }
+
+        
+        void AdvanceUMCursor()
+        {
+					NativePtr->advanceCursor(m_cursor);
+          m_cursor = 0;
+          m_bufferLength = 0;
+        }
+
+				void AdvanceCursorPdx(int offset)
+        {
+          m_cursor += offset;
+        }
+
+        void RewindCursorPdx(int rewind)
+        {
+          m_cursor = 0;
+        }
+
+        void ResetAndAdvanceCursorPdx(int offset)
+        {
+          m_cursor = offset;
+        }
+
+        void ResetPdx(int offset)
+        {
+          NativePtr->reset(offset);
+          SetBuffer();
+        }
+
+        inline array<Byte>^ ReadReverseBytesOnly(int len);
+
+        void SetBuffer()
+        {
+          m_buffer = const_cast<uint8_t*> (NativePtr->currentBufferPosition());
+          m_cursor = 0;
+          m_bufferLength = NativePtr->getBytesRemaining();   
+        }
+
+        String^ DecodeBytes(int length)
+        {
+          //array<Char>^ output = gcnew array<Char>(length);
+        
+          if(m_forStringDecode->Length < length)
+            m_forStringDecode = gcnew array<Char>(length);
+          // index input[]
+          int i = 0;
+          // index output[]
+          int j = 0;
+          while ( i < length )
+          {
+            // get next byte unsigned
+            //Byte b = m_buffer[ m_cursor++ ] & 0xff;
+            Byte b = ReadByte();
+            i++;
+            Byte k = b >> 5;
+            // classify based on the high order 3 bits
+            switch (  k )
+              {
+              default:
+                // one byte encoding
+                // 0xxxxxxx
+                // use just low order 7 bits
+                // 00000000 0xxxxxxx
+                m_forStringDecode[ j++ ] = ( Char ) ( b & 0x7f );
+                break;
+              case 6:
+                {
+                  // two byte encoding
+                  // 110yyyyy 10xxxxxx
+                  // use low order 6 bits
+                  int y = b & 0x1f;
+                  // use low order 6 bits of the next byte
+                  // It should have high order bits 10, which we don't check.
+                  int x = m_buffer[ m_cursor++ ] & 0x3f;
+                  i++;
+                  // 00000yyy yyxxxxxx
+                  m_forStringDecode[ j++ ] = ( Char ) ( y << 6 | x );
+                  break;
+                }
+              case 7:
+                {
+                  // three byte encoding
+                  // 1110zzzz 10yyyyyy 10xxxxxx
+                  //assert ( b & 0x10 )
+                    //     == 0 : "UTF8Decoder does not handle 32-bit characters";
+                  // use low order 4 bits
+                  int z = b & 0x0f;
+                  // use low order 6 bits of the next byte
+                  // It should have high order bits 10, which we don't check.
+                  int y = m_buffer[ m_cursor++ ] & 0x3f;
+                  i++;
+                  // use low order 6 bits of the next byte
+                  // It should have high order bits 10, which we don't check.
+                  int x = m_buffer[ m_cursor++ ] & 0x3f;
+                  i++;
+                  // zzzzyyyy yyxxxxxx
+                  int asint = ( z << 12 | y << 6 | x );
+                  m_forStringDecode[ j++ ] = ( Char ) asint;
+                  break;
+                }
+              }// end switch
+          }// end while
+
+          String^ str = gcnew String(m_forStringDecode, 0, j);
+          return str;
+        }
+
+        void CheckBufferSize(int size);
+       
+
+        Object^ ReadInternalGenericObject();
+
+        Object^ ReadInternalObject();
+
+        DataInput^ GetClone();
+
+        /// <summary>
+        /// Internal constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline DataInput( gemfire::DataInput* nativeptr, bool managedObject )
+          : UMWrap(nativeptr, false)
+        { 
+          m_ispdxDesrialization = false;
+          m_isRootObjectPdx = false;
+          m_cursor = 0;
+          m_isManagedObject = managedObject;
+          m_forStringDecode = gcnew array<Char>(100);
+          m_buffer = const_cast<uint8_t*>(nativeptr->currentBufferPosition());
+          if ( m_buffer != NULL) {
+            m_bufferLength = nativeptr->getBytesRemaining();     
+					}
+          else {
+            m_bufferLength = 0;
+          }
+        }
+
+        DataInput( uint8_t* buffer, int size );
+
+       /* inline DataInput( gemfire::DataInput* nativeptr )
+          : UMWrap(nativeptr, false)
+        { 
+          m_cursor = 0;
+          m_isManagedObject = false;
+          m_buffer = const_cast<uint8_t*>(nativeptr->currentBufferPosition());
+          if ( m_buffer != NULL) {
+            m_bufferLength = nativeptr->getBytesRemaining();            
+          }
+          else {
+            m_bufferLength = 0;
+          }
+        }*/
+
+        bool IsManagedObject()
+        {
+          return m_isManagedObject;
+        }
+
+        int GetPdxBytes()
+        {
+          return m_bufferLength;
+        }
+
+      private:
+
+        /// <summary>
+        /// Internal buffer managed by the class.
+        /// This is freed in the disposer/destructor.
+        /// </summary>
+        bool m_ispdxDesrialization;
+        bool m_isRootObjectPdx;
+        uint8_t* m_buffer;
+        unsigned int m_bufferLength;
+        int m_cursor;
+        bool m_isManagedObject;
+        array<Char>^ m_forStringDecode;
+      
+        void Cleanup( );
+      };
+      } // end namespace generic
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/DataOutputMN.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/DataOutputMN.cpp b/geode-client-native/src/clicache/com/vmware/DataOutputMN.cpp
new file mode 100644
index 0000000..50b2e02
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/DataOutputMN.cpp
@@ -0,0 +1,884 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+//#include "gf_includesN.hpp"
+#include "DataOutputMN.hpp"
+#include <cppcache/impl/GemfireTypeIdsImpl.hpp>
+#include <vcclr.h>
+
+#include "IGFSerializableN.hpp"
+#include "CacheableObjectArrayMN.hpp"
+#include "impl/PdxHelper.hpp"
+#include "impl/PdxWrapper.hpp"
+using namespace System;
+using namespace System::Runtime::InteropServices;
+using namespace gemfire;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      namespace Generic
+      {
+
+				void DataOutput::WriteByte( Byte value )
+				{
+					EnsureCapacity(1);
+					m_bytes[m_cursor++] = value;
+				}
+
+				void DataOutput::WriteSByte( SByte value )
+				{
+					EnsureCapacity(1);
+					m_bytes[m_cursor++] = value;
+				}
+
+				void DataOutput::WriteBoolean( bool value )
+				{
+					EnsureCapacity(1);
+					if (value)
+						m_bytes[m_cursor++] = 0x01;
+					else
+						m_bytes[m_cursor++] = 0x00;
+				}
+
+				void DataOutput::WriteChar( Char value )
+				{
+					EnsureCapacity(2);
+					m_bytes[m_cursor++] = (uint8_t)(value >> 8);
+					m_bytes[m_cursor++] = (uint8_t)value;
+				}
+
+				void DataOutput::WriteBytes( array<Byte>^ bytes, int32_t len )
+				{
+					if (bytes != nullptr && bytes->Length >= 0)
+					{
+						if ( len >= 0 && len <= bytes->Length )
+						{
+							WriteArrayLen(len);
+							EnsureCapacity(len);
+							for( int i = 0; i < len; i++ )
+								m_bytes[m_cursor++] = bytes[i];
+						}
+						else
+						{
+							throw gcnew IllegalArgumentException("DataOutput::WriteBytes argument len is not in byte array range." );
+						}
+					}
+					else
+					{
+						WriteByte(0xFF);
+					}
+				}
+
+				void DataOutput::WriteArrayLen( int32_t len )
+				{
+					if (len == -1) {//0xff
+						WriteByte(0xFF);
+					} else if (len <= 252) { // 252 is java's ((byte)-4 && 0xFF) or 0xfc
+						WriteByte((Byte)(len));
+					} else if (len <= 0xFFFF) {
+						WriteByte(0xFE);//0xfe
+						WriteUInt16((len));
+					} else {
+						WriteByte((0xFD));//0xfd
+						WriteUInt32(len);
+					}
+				}
+
+				void DataOutput::WriteSBytes( array<SByte>^ bytes, int32_t len )
+				{
+					if (bytes != nullptr && bytes->Length >= 0)
+					{
+						if ( len >= 0 && len <= bytes->Length )
+						{
+							WriteArrayLen(len);
+							EnsureCapacity(len);
+							for( int i = 0; i < len; i++ )
+								m_bytes[m_cursor++] = bytes[i];
+						}
+						else
+						{
+							throw gcnew IllegalArgumentException("DataOutput::WriteSBytes argument len is not in SByte array range." );
+						}
+					}
+					else
+					{
+						WriteByte(0xFF);
+					}
+				}
+
+				void DataOutput::WriteBytesOnly( array<Byte>^ bytes, uint32_t len )
+				{
+					WriteBytesOnly(bytes, len, 0);
+				}
+
+				void DataOutput::WriteBytesOnly( array<Byte>^ bytes, uint32_t len, uint32_t offset )
+				{
+					if (bytes != nullptr)
+					{
+						if ( len >= 0 && len <= ((uint32_t)bytes->Length - offset) )
+						{
+							EnsureCapacity(len);            
+							for( uint32_t i = 0; i < len; i++ )
+								m_bytes[m_cursor++] = bytes[offset + i];
+						}
+						else
+						{
+							throw gcnew IllegalArgumentException("DataOutput::WriteBytesOnly argument len is not in Byte array range." );
+						}
+					}
+				}
+
+				void DataOutput::WriteSBytesOnly( array<SByte>^ bytes, uint32_t len )
+				{
+					if (bytes != nullptr)
+					{
+						if ( len >= 0 && len <= (uint32_t)bytes->Length )
+						{
+							EnsureCapacity(len);
+							for( uint32_t i = 0; i < len; i++ )
+								m_bytes[m_cursor++] = bytes[i];
+						}
+						else
+						{
+							throw gcnew IllegalArgumentException("DataOutput::WriteSBytesOnly argument len is not in SByte array range." );
+						}
+					}
+				}
+
+				void DataOutput::WriteUInt16( uint16_t value )
+				{
+					EnsureCapacity(2);
+					m_bytes[m_cursor++] = (uint8_t)(value >> 8);
+					m_bytes[m_cursor++] = (uint8_t)value;
+				}
+
+				void DataOutput::WriteUInt32( uint32_t value )
+				{
+					EnsureCapacity(4);
+					m_bytes[m_cursor++] = (uint8_t)(value >> 24);
+					m_bytes[m_cursor++] = (uint8_t)(value >> 16);
+					m_bytes[m_cursor++] = (uint8_t)(value >> 8);
+					m_bytes[m_cursor++] = (uint8_t)value;
+				}
+
+				void DataOutput::WriteUInt64( uint64_t value )
+				{
+					EnsureCapacity(8);
+					m_bytes[m_cursor++] = (uint8_t)(value >> 56);
+					m_bytes[m_cursor++] = (uint8_t)(value >> 48);
+					m_bytes[m_cursor++] = (uint8_t)(value >> 40);
+					m_bytes[m_cursor++] = (uint8_t)(value >> 32);
+					m_bytes[m_cursor++] = (uint8_t)(value >> 24);
+					m_bytes[m_cursor++] = (uint8_t)(value >> 16);
+					m_bytes[m_cursor++] = (uint8_t)(value >> 8);
+					m_bytes[m_cursor++] = (uint8_t)value;
+				}
+
+				void DataOutput::WriteInt16( int16_t value )
+				{
+					WriteUInt16(value);
+				}
+
+				void DataOutput::WriteInt32( int32_t value )
+				{
+					WriteUInt32(value);
+				}
+
+				void DataOutput::WriteInt64( int64_t value )
+				{
+					WriteUInt64(value);
+				}
+
+				void DataOutput::WriteFloat( float value )
+				{
+					array<Byte>^ bytes = BitConverter::GetBytes(value);
+					EnsureCapacity(4);
+					for(int i = bytes->Length - 1; i >=0 ; i--)
+						m_bytes[m_cursor++] = bytes[i];
+				}
+
+				void DataOutput::WriteDouble( double value )
+				{
+					array<Byte>^ bytes = BitConverter::GetBytes(value);
+					EnsureCapacity(8);
+					for(int i = bytes->Length - 1; i >=0 ; i--)
+						m_bytes[m_cursor++] = bytes[i];
+				}
+
+			void DataOutput::WriteDictionary(System::Collections::IDictionary^ dict)
+      {
+        if(dict != nullptr)
+        {
+          this->WriteArrayLen(dict->Count);
+          for each( System::Collections::DictionaryEntry^ entry in dict) 
+          {
+            this->WriteObject(entry->Key);
+            this->WriteObject(entry->Value);
+          }
+        }
+        else
+        {
+          WriteByte( (int8_t) -1);
+        }
+      }
+
+      void DataOutput::WriteCollection(System::Collections::IList^ collection)
+      {
+        if(collection != nullptr)
+        {
+          this->WriteArrayLen(collection->Count);
+          for each (Object^ obj in collection) {
+            this->WriteObject(obj);
+          }
+        }
+        else
+          this->WriteByte((int8_t) -1);
+      }
+
+      void DataOutput::WriteDate(System::DateTime date)
+      {
+        if(date.Ticks != 0L)
+        {
+          CacheableDate^ cd = gcnew CacheableDate(date);
+          cd->ToData(this);
+        }
+        else
+          this->WriteInt64(-1L);
+      }
+
+      void DataOutput::WriteCharArray(array<Char>^ charArray)
+      {
+        if(charArray != nullptr)
+        {
+          this->WriteArrayLen(charArray->Length);
+          for(int i = 0; i < charArray->Length; i++) {
+            this->WriteObject(charArray[i]);
+          }
+        }
+        else
+          this->WriteByte((int8_t) -1);
+      }
+
+      void DataOutput::WriteObjectArray(List<Object^>^ objectArray)
+      {
+        if(objectArray != nullptr)
+        {
+          CacheableObjectArray^ coa = CacheableObjectArray::Create(objectArray);
+          coa->ToData(this);
+        }
+        else
+          this->WriteByte((int8_t) -1);
+      }
+
+      void DataOutput::WriteDotNetObjectArray(Object^ objectArray)
+      {
+        System::Collections::IList^ list = (System::Collections::IList^)objectArray;
+        this->WriteArrayLen(list->Count);
+        WriteByte((int8_t)gemfire::GemfireTypeIdsImpl::Class);
+        String^ pdxDomainClassname = Serializable::GetPdxTypeName(objectArray->GetType()->GetElementType()->FullName);
+        WriteByte((int8_t)gemfire::GemfireTypeIds::CacheableASCIIString);
+        WriteUTF(pdxDomainClassname);
+        for each(Object^ o in list)
+          WriteObject(o);
+      }
+
+      void DataOutput::WriteArrayOfByteArrays(array<array<Byte>^>^ byteArrays)
+      {
+        if(byteArrays != nullptr)
+        {
+          int fdLen = byteArrays->Length;
+          this->WriteArrayLen(byteArrays->Length);
+          for(int i = 0; i < fdLen; i++) {
+						this->WriteBytes(byteArrays[i]);
+          }
+        }
+        else
+          this->WriteByte((int8_t) -1);
+      }
+
+				void DataOutput::WriteUTF( String^ value )
+				{
+					if (value != nullptr) {
+						int len = value->Length*3;
+	          
+						if (len > 21845) //approx check
+							len = getEncodedLength(value);
+	          
+						if (len > 0xffff)
+							len = 0xffff;
+
+						EnsureCapacity(len);
+
+						m_cursor += 2;          
+						int strLen = EncodeString(value, len);
+						m_cursor -= (strLen + 2);
+						WriteUInt16(strLen);
+						m_cursor += strLen;
+					}
+					else {
+						WriteUInt16(0);
+					}
+				}
+
+        void DataOutput::WriteStringWithType( String^ value )
+				{
+          //value will not be null
+					int len = value->Length*3;
+	          
+					if (len > 21845) //approx check
+						len = getEncodedLength(value);
+          						            
+          if (len > 0xffff)
+          {
+            if(len == value->Length)//huge ascii
+            {
+              WriteByte(GemfireTypeIds::CacheableASCIIStringHuge);
+              WriteASCIIHuge(value);
+            }
+            else//huge utf
+            {
+              WriteByte(GemfireTypeIds::CacheableStringHuge);
+              WriteUTFHuge(value);
+            }
+            return;
+          }
+
+					EnsureCapacity(len);
+          m_cursor += 1; //for type id
+					m_cursor += 2;          
+					int strLen = EncodeString(value, len);
+					m_cursor -= (strLen + 3);
+          if(strLen == value->Length)
+          {
+            WriteByte(GemfireTypeIds::CacheableASCIIString);//ascii string
+          }
+          else
+          {
+            WriteByte(GemfireTypeIds::CacheableString);//utf string
+          }
+					WriteUInt16(strLen);
+					m_cursor += strLen;
+					
+				}
+
+				void DataOutput::WriteASCIIHuge( String^ value )
+				{
+					//TODO::hitesh
+					if (value != nullptr) {
+						EnsureCapacity(value->Length);
+						m_cursor += 4;          
+						int strLen = EncodeString(value, value->Length);
+						m_cursor -= (strLen + 4);
+						WriteUInt32(strLen);
+						m_cursor += strLen;
+					}
+					else {
+						WriteUInt32(0);
+					}
+				}
+
+				void DataOutput::WriteUTFHuge( String^ value )
+				{
+					if (value != nullptr) {
+						WriteUInt32(value->Length);
+						EnsureCapacity(value->Length * 2);
+						for( int i = 0; i < value->Length; i++)
+						{
+							Char ch = value[i];
+							m_bytes[m_cursor++] = (Byte)((ch & 0xff00) >> 8);
+							m_bytes[m_cursor++] = (Byte)(ch & 0xff);
+						}
+					}
+					else {
+						WriteUInt32(0);
+					}
+				}
+
+				/*void DataOutput::WriteObject( Object^ obj )
+				{
+					 WriteObjectInternal((IGFSerializable^)obj);
+				}*/
+
+				/*void DataOutput::WriteObject( Object^ obj )
+				{
+					WriteObject( (IGFSerializable^)obj );
+				}*/
+
+				int8_t DataOutput::GetTypeId(uint32_t classId )
+				{
+						if (classId >= 0x80000000) {
+							return (int8_t)((classId - 0x80000000) % 0x20000000);
+						}
+						else if (classId <= 0x7F) {
+							return (int8_t)GemfireTypeIdsImpl::CacheableUserData;
+						}
+						else if (classId <= 0x7FFF) {
+							return (int8_t)GemfireTypeIdsImpl::CacheableUserData2;
+						}
+						else {
+							return (int8_t)GemfireTypeIdsImpl::CacheableUserData4;
+						}
+				}
+
+				int8_t DataOutput::DSFID(uint32_t classId)
+				{
+					// convention that [0x8000000, 0xa0000000) is for FixedIDDefault,
+					// [0xa000000, 0xc0000000) is for FixedIDByte,
+					// [0xc0000000, 0xe0000000) is for FixedIDShort
+					// and [0xe0000000, 0xffffffff] is for FixedIDInt
+					// Note: depends on fact that FixedIDByte is 1, FixedIDShort is 2
+					// and FixedIDInt is 3; if this changes then correct this accordingly
+					if (classId >= 0x80000000) {
+						return (int8_t)((classId - 0x80000000) / 0x20000000);
+					}
+					return 0;
+				}
+
+				void DataOutput::WriteObject(Object^ obj)
+				{
+					
+					if ( obj == nullptr ) 
+					{
+						WriteByte( (int8_t) GemfireTypeIds::NullObj );
+						return;
+					}
+          
+         if(m_ispdxSerialization && obj->GetType()->IsEnum)
+         {
+           //need to set             
+           int enumVal = Internal::PdxHelper::GetEnumValue(obj->GetType()->FullName, Enum::GetName(obj->GetType(), obj), obj->GetHashCode());
+           WriteByte(GemFireClassIds::PDX_ENUM); 
+           WriteByte(enumVal >> 24);
+           WriteArrayLen(enumVal & 0xFFFFFF); 
+           return;
+         }
+
+					//GemStone::GemFire::Cache::Generic::Log::Debug("DataOutput::WriteObject " + obj);
+
+					Byte typeId = GemStone::GemFire::Cache::Generic::Serializable::GetManagedTypeMappingGeneric(obj->GetType());
+
+					switch(typeId)
+					{
+					case gemfire::GemfireTypeIds::CacheableByte:
+						{
+							WriteByte(typeId);
+							WriteSByte((SByte)obj);
+							return;
+						}
+					case gemfire::GemfireTypeIds::CacheableBoolean:
+						{
+							WriteByte(typeId);
+							WriteBoolean((bool)obj);
+							return;
+						}
+					case gemfire::GemfireTypeIds::CacheableWideChar:
+						{
+							WriteByte(typeId);
+							WriteObject((Char)obj);
+							return;
+						}
+					case gemfire::GemfireTypeIds::CacheableDouble:
+						{
+							WriteByte(typeId);
+							WriteDouble((Double)obj);
+							return;
+						}
+					case gemfire::GemfireTypeIds::CacheableASCIIString:
+						{
+							//CacheableString^ cStr = CacheableString::Create((String^)obj);
+							//// VJR: TODO: igfser mapping between generic and non generic
+							//WriteObjectInternal(cStr);
+              WriteStringWithType((String^)obj);
+							return;
+						}
+					case gemfire::GemfireTypeIds::CacheableFloat:
+						{
+							WriteByte(typeId);
+							WriteFloat((float)obj);
+							return;
+						}
+					case gemfire::GemfireTypeIds::CacheableInt16:
+						{
+							WriteByte(typeId);
+							WriteInt16((Int16)obj);
+							return;
+						}
+					case gemfire::GemfireTypeIds::CacheableInt32:
+						{
+							WriteByte(typeId);
+							WriteInt32((Int32)obj);
+							return;
+						}
+					case gemfire::GemfireTypeIds::CacheableInt64:
+						{
+							WriteByte(typeId);
+							WriteInt64((Int64)obj);
+							return;
+						}
+					case gemfire::GemfireTypeIds::CacheableDate:
+						{
+							//CacheableDate^ cd = gcnew CacheableDate((DateTime)obj);
+							// VJR: TODO: igfser mapping between generic and non generic
+							//WriteObjectInternal(cd);
+							WriteByte(typeId);
+							WriteDate((DateTime)obj);
+							return;
+						}
+					case gemfire::GemfireTypeIds::CacheableBytes:
+						{
+							WriteByte(typeId);
+							WriteBytes((array<Byte>^)obj);
+							return;
+						}
+					case gemfire::GemfireTypeIds::CacheableDoubleArray:
+						{
+							WriteByte(typeId);
+							WriteObject((array<Double>^)obj);
+							return;
+						}
+					case gemfire::GemfireTypeIds::CacheableFloatArray:
+					{
+							WriteByte(typeId);
+							WriteObject((array<float>^)obj);
+							return;
+						}
+					case gemfire::GemfireTypeIds::CacheableInt16Array:
+					{
+							WriteByte(typeId);
+							WriteObject((array<Int16>^)obj);
+							return;
+					}
+					case gemfire::GemfireTypeIds::CacheableInt32Array:
+					{
+							WriteByte(typeId);
+							WriteObject((array<Int32>^)obj);
+							return;
+					}
+					case gemfire::GemfireTypeIds::CacheableInt64Array:
+					{
+							WriteByte(typeId);
+							WriteObject((array<Int64>^)obj);
+							return;
+					}
+					case gemfire::GemfireTypeIds::BooleanArray:
+					{
+							WriteByte(typeId);
+							WriteObject((array<bool>^)obj);
+							return;
+					}
+					case gemfire::GemfireTypeIds::CharArray:
+					{
+							WriteByte(typeId);
+							WriteObject((array<char>^)obj);
+							return;
+					}
+					case gemfire::GemfireTypeIds::CacheableStringArray:
+					{
+							WriteByte(typeId);
+							WriteObject((array<String^>^)obj);
+							return;
+					}
+					case gemfire::GemfireTypeIds::CacheableHashTable:
+					case gemfire::GemfireTypeIds::CacheableHashMap:
+					case gemfire::GemfireTypeIds::CacheableIdentityHashMap:
+					{
+							WriteByte(typeId);
+							WriteDictionary((System::Collections::IDictionary^)obj);
+							return;
+					}
+					case gemfire::GemfireTypeIds::CacheableVector:
+					{
+						//CacheableVector^ cv = gcnew CacheableVector((System::Collections::IList^)obj);
+						//// VJR: TODO: igfser mapping between generic and non generic
+						//WriteObjectInternal(cv);
+            WriteByte(gemfire::GemfireTypeIds::CacheableVector);
+            WriteList((System::Collections::IList^)obj);
+						return;
+					}
+          case gemfire::GemfireTypeIds::CacheableLinkedList:
+					{
+						//CacheableArrayList^ cal = gcnew CacheableArrayList((System::Collections::IList^)obj);
+						//// VJR: TODO: igfser mapping between generic and non generic
+						//WriteObjectInternal(cal);
+            WriteByte(gemfire::GemfireTypeIds::CacheableLinkedList);
+            System::Collections::ICollection^ linkedList = (System::Collections::ICollection^)obj;
+            this->WriteArrayLen(linkedList->Count);
+            for each (Object^ o in linkedList) 
+						  this->WriteObject(o);
+						return;
+					}
+          case gemfire::GemfireTypeIds::CacheableArrayList:
+					{
+						//CacheableArrayList^ cal = gcnew CacheableArrayList((System::Collections::IList^)obj);
+						//// VJR: TODO: igfser mapping between generic and non generic
+						//WriteObjectInternal(cal);
+            WriteByte(gemfire::GemfireTypeIds::CacheableArrayList);
+            WriteList((System::Collections::IList^)obj);
+						return;
+					}
+					case gemfire::GemfireTypeIds::CacheableStack:
+					{
+						CacheableStack^ cs = gcnew CacheableStack((System::Collections::ICollection^)obj);
+						// VJR: TODO: igfser mapping between generic and non generic
+						WriteObjectInternal(cs);
+						return;
+					}
+					default:
+						{
+							IPdxSerializable^ pdxObj = dynamic_cast<IPdxSerializable^>(obj);
+							if(pdxObj !=  nullptr)
+							{
+								WriteByte(GemFireClassIds::PDX);
+								Internal::PdxHelper::SerializePdx(this, pdxObj);
+								return;
+							}
+							else
+							{
+                //pdx serialization and is array of object
+                if(m_ispdxSerialization && obj->GetType()->IsArray)
+                {
+                  WriteByte(gemfire::GemfireTypeIds::CacheableObjectArray);
+                  WriteDotNetObjectArray(obj);
+                  return;
+                }
+
+								IGFSerializable^ ct = dynamic_cast<IGFSerializable^>(obj);
+								if(ct != nullptr) {
+									WriteObjectInternal(ct);
+									return ;
+								}
+
+                if(Serializable::IsObjectAndPdxSerializerRegistered(nullptr))
+                {
+                  pdxObj = gcnew PdxWrapper(obj);
+                  WriteByte(GemFireClassIds::PDX);
+								  Internal::PdxHelper::SerializePdx(this, pdxObj);
+								  return;
+                }
+							}
+						
+              throw gcnew System::Exception("DataOutput not found appropriate type to write it for object: " + obj->GetType());
+						}
+					}
+				}
+
+				void DataOutput::WriteStringArray(array<String^>^ strArray)
+				{
+					if(strArray != nullptr)
+					{
+						this->WriteArrayLen(strArray->Length);
+						for(int i = 0; i < strArray->Length; i++)
+						{
+						 // this->WriteUTF(strArray[i]);
+							WriteObject(strArray[i]);
+						}
+					}
+					else
+						WriteByte(-1);
+				}
+
+				void DataOutput::WriteObjectInternal( IGFSerializable^ obj )
+				{
+					//CacheableKey^ key = gcnew CacheableKey();
+					if ( obj == nullptr ) {
+						WriteByte( (int8_t) GemfireTypeIds::NullObj );
+					} else {
+						int8_t typeId = DataOutput::GetTypeId( obj->ClassId);
+						switch (DataOutput::DSFID(obj->ClassId)) {
+							case GemfireTypeIdsImpl::FixedIDByte:
+								WriteByte((int8_t)GemfireTypeIdsImpl::FixedIDByte);
+								WriteByte( typeId ); // write the type ID.
+								break;
+							case GemfireTypeIdsImpl::FixedIDShort:
+								WriteByte((int8_t)GemfireTypeIdsImpl::FixedIDShort);
+								WriteInt16( (int16_t)typeId ); // write the type ID.
+								break;
+							case GemfireTypeIdsImpl::FixedIDInt:
+								WriteByte((int8_t)GemfireTypeIdsImpl::FixedIDInt);
+								WriteInt32( (int32_t)typeId ); // write the type ID.
+								break;
+							default:
+								WriteByte( typeId ); // write the type ID.
+								break;
+						}
+	          
+						if ( (int32_t)typeId == GemfireTypeIdsImpl::CacheableUserData ) {
+							WriteByte( (int8_t) obj->ClassId );
+						} else if ( (int32_t)typeId == GemfireTypeIdsImpl::CacheableUserData2 ) {
+							WriteInt16( (int16_t) obj->ClassId );
+						} else if ( (int32_t)typeId == GemfireTypeIdsImpl::CacheableUserData4 ) {
+							WriteInt32( (int32_t) obj->ClassId );
+						}
+						obj->ToData( this ); // let the obj serialize itself.
+					}
+				}
+
+				void DataOutput::AdvanceCursor( uint32_t offset )
+				{
+          EnsureCapacity(offset);
+					m_cursor += offset;
+				}
+
+				void DataOutput::RewindCursor( uint32_t offset )
+				{
+					//first set native one
+					WriteBytesToUMDataOutput();
+					NativePtr->rewindCursor(offset);
+					SetBuffer();
+					//m_cursor -= offset;
+				}
+
+				array<Byte>^ DataOutput::GetBuffer( )
+				{
+					WriteBytesToUMDataOutput();
+					SetBuffer();
+	        
+					int buffLen = NativePtr->getBufferLength();
+					array<Byte>^ buffer = gcnew array<Byte>( buffLen );
+
+					if ( buffLen > 0 ) {
+						pin_ptr<Byte> pin_buffer = &buffer[ 0 ];
+						memcpy( (void*)pin_buffer, NativePtr->getBuffer( ), buffLen );
+					}
+					return buffer;
+				}
+
+				uint32_t DataOutput::BufferLength::get( )
+				{
+					//first set native one
+					WriteBytesToUMDataOutput();
+					SetBuffer();
+
+					return NativePtr->getBufferLength();
+				}
+
+				void DataOutput::Reset( )
+				{
+					WriteBytesToUMDataOutput();
+					NativePtr->reset();
+					SetBuffer();
+				}
+							
+				void DataOutput::WriteString(String^ value)
+				{
+					if(value == nullptr)
+					{
+						this->WriteByte(GemfireTypeIds::CacheableNullString);
+					}
+					else
+					{
+            WriteObject(value);
+						/*CacheableString^ cs = gcnew CacheableString(value);
+
+						this->WriteByte( (Byte)(cs->ClassId - 0x80000000));
+						cs->ToData(this);*/
+					}
+				}
+
+				 void DataOutput::WriteBytesToUMDataOutput()
+        {
+					NativePtr->advanceCursor(m_cursor);
+          m_cursor = 0;
+          m_remainingBufferLength = 0;
+          m_bytes = nullptr;
+        }
+
+        void DataOutput::WriteObject(bool% obj)
+        {
+          WriteBoolean(obj);
+        }
+
+        void DataOutput::WriteObject(Byte% obj)
+        {
+          WriteByte(obj);
+        }
+
+        void DataOutput::WriteObject(Char% obj)
+        {
+          unsigned short us = (unsigned short)obj;
+          m_bytes[m_cursor++] = us >> 8;
+          m_bytes[m_cursor++] = (Byte)us; 
+        }
+
+        void DataOutput::WriteObject(Double% obj)
+        {
+          WriteDouble(obj);
+        }
+
+        void DataOutput::WriteObject(Single% obj)
+        {
+          WriteFloat(obj);
+        }
+
+        void DataOutput::WriteObject(int16_t% obj)
+        {
+          WriteInt16(obj);
+        }
+
+        void DataOutput::WriteObject(int32_t% obj)
+        {
+          WriteInt32(obj);
+        }
+
+        void DataOutput::WriteObject(int64_t% obj)
+        {
+          WriteInt64(obj);
+        }
+
+				void DataOutput::WriteObject(UInt16% obj)
+        {
+          WriteUInt16(obj);
+        }
+
+        void DataOutput::WriteObject(UInt32% obj)
+        {
+          WriteUInt32(obj);
+        }
+
+        void DataOutput::WriteObject(UInt64% obj)
+        {
+          WriteUInt64(obj);
+        }
+
+				void DataOutput::WriteBooleanArray(array<bool>^ boolArray)
+				{
+					WriteObject<bool>(boolArray);
+				}
+
+				void DataOutput::WriteShortArray(array<Int16>^ shortArray)
+				{
+					WriteObject<Int16>(shortArray);
+				}
+
+				void DataOutput::WriteIntArray(array<Int32>^ intArray)
+				{
+					WriteObject<Int32>(intArray);
+				}
+
+				void DataOutput::WriteLongArray(array<Int64>^ longArray)
+				{
+					WriteObject<Int64>(longArray);
+				}
+
+			  void DataOutput::WriteFloatArray(array<float>^ floatArray)
+				{
+					WriteObject<float>(floatArray);
+				}
+
+				void DataOutput::WriteDoubleArray(array<double>^ doubleArray)
+				{
+					WriteObject<double>(doubleArray);
+				}
+      } // end namespace generic
+    }
+  }
+}


[26/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/Security.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/Security.cs b/geode-client-native/quickstart/csharp/Security.cs
new file mode 100644
index 0000000..600e67c
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/Security.cs
@@ -0,0 +1,168 @@
+/*
+ * The Security QuickStart Example.
+ *
+ * This example takes the following steps:
+ *
+ * 1. Sets the authinit property and the other security properties.
+ * 2. Connect to a GemFire Distributed System.
+ * 3. Does all operations. ( for which it has all permissions)
+ * 4. Does a put and get. ( for which it have put permission. )
+ * 5. Does a get and put. ( for which it have get permission. )
+ * 5. Close the Cache with keepalive options as true.
+ * 6. Disconnect from the Distributed System.
+ *
+ */
+
+// Use standard namespaces
+using System;
+
+// Use the GemFire namespace
+using GemStone.GemFire.Cache.Generic;
+
+namespace GemStone.GemFire.Cache.Generic.QuickStart
+{
+  // The Security QuickStart example.
+  class SecurityExample
+  {
+    public void RunSecurityExampleWithPutPermission()
+    {
+      // Create client's Authentication Intializer and Credentials using api ( Same can be set to gfcpp.properties & comment following code ).
+      Properties<string, string> properties = Properties<string, string>.Create<string, string>();
+      properties.Insert("security-client-auth-factory", "GemStone.GemFire.Templates.Cache.Security.UserPasswordAuthInit.Create");
+      properties.Insert("security-client-auth-library", "GemStone.GemFire.Templates.Cache.Security");
+      properties.Insert("cache-xml-file", "XMLs/clientSecurity.xml");
+      properties.Insert("security-username", "writer1");
+      properties.Insert("security-password", "writer1");
+
+      CacheFactory cacheFactory = CacheFactory.CreateCacheFactory(properties);
+
+      Cache cache = cacheFactory.Create();
+
+      Console.WriteLine("Created the GemFire Cache");
+
+      // Get the example Region from the Cache which is declared in the Cache XML file.
+      IRegion<string, string> region = cache.GetRegion<string, string>("exampleRegion");
+
+      Console.WriteLine("Obtained the Region from the Cache");
+
+      region["key-3"] = "val-3";
+      region["key-4"] = "val-4";
+
+      bool exceptiongot = false;
+
+      try
+      {
+        string getResult = region["key-3"];
+      }
+      catch (NotAuthorizedException ex)
+      {
+        Console.WriteLine("Got expected UnAuthorizedException: {0}", ex.Message);
+        exceptiongot = true;
+      }
+
+      if (exceptiongot == false)
+      {
+        Console.WriteLine("Example FAILED: Did not get expected NotAuthorizedException");
+      }
+      cache.Close();
+    }
+
+    public void RunSecurityExampleWithGetPermission()
+    {
+      // Create client's Authentication Intializer and Credentials using api ( Same can be set to gfcpp.properties & comment following code ).
+      Properties<string, string> properties = Properties<string, string>.Create<string, string>();
+      properties.Insert("security-client-auth-factory", "GemStone.GemFire.Templates.Cache.Security.UserPasswordAuthInit.Create");
+      properties.Insert("security-client-auth-library", "GemStone.GemFire.Templates.Cache.Security");
+      properties.Insert("cache-xml-file", "XMLs/clientSecurity.xml");
+      properties.Insert("security-username", "reader1");
+      properties.Insert("security-password", "reader1");
+
+      CacheFactory cacheFactory = CacheFactory.CreateCacheFactory(properties);
+
+      Cache cache = cacheFactory.Create();
+
+      Console.WriteLine("Created the GemFire Cache");
+
+      // Get the example Region from the Cache which is declared in the Cache XML file.
+      IRegion<string, string> region = cache.GetRegion<string, string>("exampleRegion");
+
+      Console.WriteLine("Obtained the Region from the Cache");
+
+      string getResult1 = region["key-3"];
+      string getResult2 = region["key-4"];
+
+      bool exceptiongot = false;
+
+      try
+      {
+        region["key-5"] = "val-5";
+      }
+      catch (NotAuthorizedException ex)
+      {
+        Console.WriteLine("Got expected UnAuthorizedException: {0}", ex.Message);
+        exceptiongot = true;
+      }
+
+      if (exceptiongot == false)
+      {
+        Console.WriteLine("Example FAILED: Did not get expected NotAuthorizedException");
+      }
+      cache.Close();
+    }
+
+    public void RunSecurityExampleWithAllPermission()
+    {
+      // Create client's Authentication Intializer and Credentials using api ( Same can be set to gfcpp.properties & comment following code ).
+      Properties<string, string> properties = Properties<string, string>.Create<string, string>();
+      properties.Insert("security-client-auth-factory", "GemStone.GemFire.Templates.Cache.Security.UserPasswordAuthInit.Create");
+      properties.Insert("security-client-auth-library", "GemStone.GemFire.Templates.Cache.Security");
+      properties.Insert("cache-xml-file", "XMLs/clientSecurity.xml");
+      properties.Insert("security-username", "root");
+      properties.Insert("security-password", "root");
+
+      CacheFactory cacheFactory = CacheFactory.CreateCacheFactory(properties);
+
+      Cache cache = cacheFactory.Create();
+
+      Console.WriteLine("Created the GemFire Cache");
+
+      // Get the example Region from the Cache which is declared in the Cache XML file.
+      IRegion<string, string> region = cache.GetRegion<string, string>("exampleRegion");
+
+      Console.WriteLine("Obtained the Region from the Cache");
+
+      //put
+      region["key-1"] = "val-1";
+      region["key-2"] = "val-2";
+
+      //get
+      string getResult = region["key-1"];
+
+      //invalidate key
+      region.Invalidate("key-1");
+
+      //Remove key
+      region.Remove("key-2");
+
+
+      //close caache
+      cache.Close();
+    }
+
+    static void Main(string[] args)
+    {
+      try
+      {
+        SecurityExample ex = new SecurityExample();
+        ex.RunSecurityExampleWithAllPermission();
+        ex.RunSecurityExampleWithPutPermission();
+        ex.RunSecurityExampleWithGetPermission();
+      }
+      // An exception should not occur
+      catch (GemFireException gfex)
+      {
+        Console.WriteLine("SecurityExample GemFire Exception: {0}", gfex.Message);
+      }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/Transactions.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/Transactions.cs b/geode-client-native/quickstart/csharp/Transactions.cs
new file mode 100644
index 0000000..ff59f17
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/Transactions.cs
@@ -0,0 +1,117 @@
+/*
+ * The Transaction QuickStart Example.
+ *
+ * This example takes the following steps:
+ *
+ * 1.  Create a GemFire Cache.
+ * 2.  Create the example Region Programmatically.
+ * 3   Begin Transaction
+ * 4.  Put Entries (Key and Value pairs) into the Region.
+ * 5.  Commit Transaction
+ * 6.  Get Entries from the Region.
+ * 7.  Begin Transaction
+ * 8.  Put Entries (Key and Value pairs) into the Region.
+ * 9.  Destroy key
+ * 10. Rollback transaction
+ * 11. Get Entries from the Region.
+ * 12. Close the Cache.
+ *
+ */
+ 
+// Use standard namespaces
+using System;
+
+// Use the GemFire namespace
+using GemStone.GemFire.Cache.Generic;
+
+// Use the .NET generics namespace
+using System.Collections.Generic;
+
+namespace GemStone.GemFire.Cache.Generic.QuickStart
+{
+
+  // Cache Transactions QuickStart example.
+  class Transactions
+  {
+    static void Main(string[] args)
+    {
+      try
+      {
+        // Create a GemFire Cache
+        CacheFactory cacheFactory = CacheFactory.CreateCacheFactory();
+        
+        Cache cache = cacheFactory.Create();
+        
+        Console.WriteLine("Created the GemFire cache.");
+
+        RegionFactory regionFactory = cache.CreateRegionFactory(RegionShortcut.CACHING_PROXY);
+
+        Console.WriteLine("Created the RegionFactory.");
+
+        // Create the example Region
+        IRegion<string, string> region = regionFactory.Create<string, string>("exampleRegion");
+
+        Console.WriteLine("Created the region with generics support.");
+
+        // Get the cache transaction manager from the cache.
+        CacheTransactionManager txManager = cache.CacheTransactionManager;
+
+        // Starting a transaction
+        txManager.Begin();
+        Console.WriteLine("Transaction started.");
+        
+        region["Key1"] = "Value1";
+        region["Key2"] = "Value2";
+        
+        Console.WriteLine("Put two entries into the region");
+        
+        try {
+          txManager.Commit();
+        }
+        catch (CommitConflictException e)
+        {
+          Console.WriteLine("CommitConflictException encountered. Exception: {0}", e.Message);
+        }
+        
+        if(region.ContainsKey("Key1"))
+          Console.WriteLine("Obtained the first entry from the Region");
+    
+        if(region.ContainsKey("Key2"))
+          Console.WriteLine("Obtained the second entry from the Region");
+    
+        //start a new transaction
+        txManager.Begin();
+        Console.WriteLine("Transaction Started");
+
+        // Put a new entry 
+        region["Key3"] = "Value3";
+        Console.WriteLine("Put the third entry into the Region");
+
+        // remove the first key
+        region.Remove("Key1", null);
+        Console.WriteLine("remove the first entry");
+        
+        txManager.Rollback();
+        Console.WriteLine("Transaction Rollbacked");
+    
+        if(region.ContainsKey("Key1"))
+          Console.WriteLine("Obtained the first entry from the Region");
+    
+        if(region.ContainsKey("Key2"))
+          Console.WriteLine("Obtained the second entry from the Region");
+        
+        if(region.ContainsKey("Key3"))
+          Console.WriteLine("ERROR: Obtained the third entry from the Region.");
+        
+        cache.Close();
+
+        Console.WriteLine("Closed the GemFire Cache");
+      }
+      // An exception should not occur
+      catch (GemFireException gfex)
+      {
+        Console.WriteLine("Transactions GemFire Exception: {0}", gfex.Message);
+      }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/TransactionsXA.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/TransactionsXA.cs b/geode-client-native/quickstart/csharp/TransactionsXA.cs
new file mode 100644
index 0000000..92c7535
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/TransactionsXA.cs
@@ -0,0 +1,126 @@
+/*
+ * The Transaction QuickStart Example.
+ *
+ * This example takes the following steps:
+ *
+ * 1.  Create a GemFire Cache.
+ * 2.  Create the example Region Programmatically.
+ * 3   Begin Transaction
+ * 4.  Put Entries (Key and Value pairs) into the Region.
+ * 5.  Commit Transaction
+ * 6.  Get Entries from the Region.
+ * 7.  Begin Transaction
+ * 8.  Put Entries (Key and Value pairs) into the Region.
+ * 9.  Destroy key
+ * 10. Rollback transaction
+ * 11. Get Entries from the Region.
+ * 12. Close the Cache.
+ *
+ */
+ 
+// Use standard namespaces
+using System;
+
+// Use the GemFire namespace
+using GemStone.GemFire.Cache.Generic;
+
+// Use the .NET generics namespace
+using System.Collections.Generic;
+
+namespace GemStone.GemFire.Cache.Generic.QuickStart
+{
+
+  // Cache Transactions QuickStart example.
+  class Transactions
+  {
+    static void Main(string[] args)
+    {
+      try
+      {
+        // Create a GemFire Cache
+        CacheFactory cacheFactory = CacheFactory.CreateCacheFactory();
+        
+        Cache cache = cacheFactory.Create();
+        
+        Console.WriteLine("Created the GemFire cache.");
+
+        RegionFactory regionFactory = cache.CreateRegionFactory(RegionShortcut.CACHING_PROXY);
+
+        Console.WriteLine("Created the RegionFactory.");
+
+        // Create the example Region
+        IRegion<string, string> region = regionFactory.Create<string, string>("exampleRegion");
+
+        Console.WriteLine("Created the region with generics support.");
+
+        // Get the cache transaction manager from the cache.
+        CacheTransactionManager txManager = cache.CacheTransactionManager;
+
+        // Starting a transaction
+        txManager.Begin();
+        Console.WriteLine("Transaction started.");
+        
+        region["Key1"] = "Value1";
+        region["Key2"] = "Value2";
+        
+        Console.WriteLine("Put two entries into the region");
+        
+        try {
+            // Prepare the transaction
+            txManager.Prepare();
+            Console.WriteLine("Transaction Prepared");
+
+            // Commit the transaction
+            txManager.Commit();
+            Console.WriteLine("Transaction Committed");
+        }
+        catch (CommitConflictException e)
+        {
+          Console.WriteLine("CommitConflictException encountered. Exception: {0}", e.Message);
+        }
+        
+        if(region.ContainsKey("Key1"))
+          Console.WriteLine("Obtained the first entry from the Region");
+    
+        if(region.ContainsKey("Key2"))
+          Console.WriteLine("Obtained the second entry from the Region");
+    
+        //start a new transaction
+        txManager.Begin();
+        Console.WriteLine("Transaction Started");
+
+        // Put a new entry 
+        region["Key3"] = "Value3";
+        Console.WriteLine("Put the third entry into the Region");
+
+        // remove the first key
+        region.Remove("Key1", null);
+        Console.WriteLine("remove the first entry");
+
+        txManager.Prepare();
+        Console.WriteLine("Transaction Prepared");
+
+        txManager.Rollback();
+        Console.WriteLine("Transaction Rollbacked");
+    
+        if(region.ContainsKey("Key1"))
+          Console.WriteLine("Obtained the first entry from the Region");
+    
+        if(region.ContainsKey("Key2"))
+          Console.WriteLine("Obtained the second entry from the Region");
+        
+        if(region.ContainsKey("Key3"))
+          Console.WriteLine("ERROR: Obtained the third entry from the Region.");
+        
+        cache.Close();
+
+        Console.WriteLine("Closed the GemFire Cache");
+      }
+      // An exception should not occur
+      catch (GemFireException gfex)
+      {
+        Console.WriteLine("Transactions GemFire Exception: {0}", gfex.Message);
+      }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/plugins/DurableCacheListener.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/plugins/DurableCacheListener.cs b/geode-client-native/quickstart/csharp/plugins/DurableCacheListener.cs
new file mode 100644
index 0000000..59bb2ae
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/plugins/DurableCacheListener.cs
@@ -0,0 +1,66 @@
+using System;
+//using GemStone.GemFire.Cache;
+using GemStone.GemFire.Cache.Generic;
+
+namespace GemStone.GemFire.Cache.Generic.QuickStart
+{
+  /// <summary>
+  /// Capture and display cache events.
+  /// </summary>
+  class DurableCacheListener<TKey, TVal> : ICacheListener<TKey, TVal>
+  {
+    #region ICacheListener<TKey, TVal> Members
+
+    public void AfterCreate(EntryEvent<TKey, TVal> ev)
+    {
+      Console.WriteLine("DurableCacheListener: Received AfterCreate event for: {0}", ev.Key);
+    }
+
+    public void AfterDestroy(EntryEvent<TKey, TVal> ev)
+    {
+      Console.WriteLine("DurableCacheListener: Received AfterDestroy event for: {0}", ev.Key);
+    }
+
+    public void AfterInvalidate(EntryEvent<TKey, TVal> ev)
+    {
+      Console.WriteLine("DurableCacheListener: Received AfterInvalidate event for: {0}", ev.Key);
+    }
+
+    public void AfterRegionDestroy(RegionEvent<TKey, TVal> ev)
+    {
+      Console.WriteLine("DurableCacheListener: Received AfterRegionDestroy event of region: {0}", ev.Region.Name);
+    }
+
+    public void AfterRegionClear(RegionEvent<TKey, TVal> ev)
+    {
+      Console.WriteLine("DurableCacheListener: Received AfterRegionClear event of region: {0}", ev.Region.Name);
+    }
+
+    public void AfterRegionInvalidate(RegionEvent<TKey, TVal> ev)
+    {
+      Console.WriteLine("DurableCacheListener: Received AfterRegionInvalidate event of region: {0}", ev.Region.Name);
+    }
+
+    public void AfterUpdate(EntryEvent<TKey, TVal> ev)
+    {
+      Console.WriteLine("DurableCacheListener: Received AfterUpdate event of: {0}", ev.Key);
+    }
+
+    public void Close(IRegion<TKey, TVal> region)
+    {
+      Console.WriteLine("DurableCacheListener: Received Close event of region: {0}", region.Name);
+    }
+
+    public void AfterRegionLive(RegionEvent<TKey, TVal> ev)
+    {
+      Console.WriteLine("DurableCacheListener: Received AfterRegionLive event of region: {0}", ev.Region.Name);
+    }
+
+    public void AfterRegionDisconnected(IRegion<TKey, TVal> region)
+    {
+      Console.WriteLine("DurableCacheListener: Received AfterRegionDisconnected event of region: {0}", region.Name);
+    }
+
+    #endregion
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/plugins/SimpleCacheListener.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/plugins/SimpleCacheListener.cs b/geode-client-native/quickstart/csharp/plugins/SimpleCacheListener.cs
new file mode 100644
index 0000000..d5cd0a3
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/plugins/SimpleCacheListener.cs
@@ -0,0 +1,66 @@
+using System;
+//using GemStone.GemFire.Cache;
+using GemStone.GemFire.Cache.Generic;
+
+namespace GemStone.GemFire.Cache.Generic.QuickStart
+{
+  /// <summary>
+  /// Capture and display cache events.
+  /// </summary>
+  class SimpleCacheListener<TKey, TVal> : ICacheListener<TKey, TVal>
+  {
+    #region ICacheListener<TKey, TVal> Members
+
+    public void AfterCreate(EntryEvent<TKey, TVal> ev)
+    {
+      Console.WriteLine("SimpleCacheListener: Received AfterCreate event for: {0}", ev.Key);
+    }
+
+    public void AfterDestroy(EntryEvent<TKey, TVal> ev)
+    {
+      Console.WriteLine("SimpleCacheListener: Received AfterDestroy event for: {0}", ev.Key);
+    }
+
+    public void AfterInvalidate(EntryEvent<TKey, TVal> ev)
+    {
+      Console.WriteLine("SimpleCacheListener: Received AfterInvalidate event for: {0}", ev.Key);
+    }
+
+    public void AfterRegionDestroy(RegionEvent<TKey, TVal> ev)
+    {
+      Console.WriteLine("SimpleCacheListener: Received AfterRegionDestroy event of region: {0}", ev.Region.Name);
+    }
+
+    public void AfterRegionClear(RegionEvent<TKey, TVal> ev)
+    {
+      Console.WriteLine("SimpleCacheListener: Received AfterRegionClear event of region: {0}", ev.Region.Name);
+    }
+
+    public void AfterRegionInvalidate(RegionEvent<TKey, TVal> ev)
+    {
+      Console.WriteLine("SimpleCacheListener: Received AfterRegionInvalidate event of region: {0}", ev.Region.Name);
+    }
+
+    public void AfterUpdate(EntryEvent<TKey, TVal> ev)
+    {
+      Console.WriteLine("SimpleCacheListener: Received AfterUpdate event of: {0}", ev.Key);
+    }
+
+    public void Close(IRegion<TKey, TVal> region)
+    {
+      Console.WriteLine("SimpleCacheListener: Received Close event of region: {0}", region.Name);
+    }
+
+    public void AfterRegionLive(RegionEvent<TKey, TVal> ev)
+    {
+      Console.WriteLine("SimpleCacheListener: Received AfterRegionLive event of region: {0}", ev.Region.Name);
+    }
+
+    public void AfterRegionDisconnected(IRegion<TKey, TVal> region)
+    {
+      Console.WriteLine("SimpleCacheListener: Received AfterRegionDisconnected event of region: {0}", region.Name);
+    }
+
+    #endregion
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/plugins/SimpleCacheLoader.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/plugins/SimpleCacheLoader.cs b/geode-client-native/quickstart/csharp/plugins/SimpleCacheLoader.cs
new file mode 100644
index 0000000..701e0ac
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/plugins/SimpleCacheLoader.cs
@@ -0,0 +1,26 @@
+using System;
+using GemStone.GemFire.Cache.Generic;
+
+namespace GemStone.GemFire.Cache.Generic.QuickStart
+{
+  /// <summary>
+  /// Capture and display cache events.
+  /// </summary>
+  class SimpleCacheLoader<TKey, TVal> : ICacheLoader<TKey, TVal>
+  {
+    #region ICacheLoader Members
+
+    public TVal Load(IRegion<TKey, TVal> region, TKey key, object helper)
+    {
+      Console.WriteLine("SimpleCacheLoader: Received Load event for region: {0} and key: {1}", region.Name, key);
+      return default(TVal);
+    }
+
+    public void Close(IRegion<TKey, TVal> region)
+    {
+      Console.WriteLine("SimpleCacheLoader: Received Close event of region: {0}", region.Name);
+    }
+
+    #endregion
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/plugins/SimpleCacheWriter.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/plugins/SimpleCacheWriter.cs b/geode-client-native/quickstart/csharp/plugins/SimpleCacheWriter.cs
new file mode 100644
index 0000000..c879caa
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/plugins/SimpleCacheWriter.cs
@@ -0,0 +1,50 @@
+using System;
+using GemStone.GemFire.Cache.Generic;
+
+namespace GemStone.GemFire.Cache.Generic.QuickStart
+{
+  /// <summary>
+  /// Capture and display cache events.
+  /// </summary>
+  class SimpleCacheWriter<TKey, TVal> : ICacheWriter<TKey, TVal>
+  {
+    #region ICacheWriter<TKey, TVal> Members
+
+    public bool BeforeUpdate(EntryEvent<TKey, TVal> ev)
+    {
+      Console.WriteLine("SimpleCacheWriter: Received BeforeUpdate event for: {0}", ev.Key);
+      return true;
+    }
+
+    public bool BeforeCreate(EntryEvent<TKey, TVal> ev)
+    {
+      Console.WriteLine("SimpleCacheWriter: Received BeforeCreate event for: {0}", ev.Key);
+      return true;
+    }
+
+    public bool BeforeDestroy(EntryEvent<TKey, TVal> ev)
+    {
+      Console.WriteLine("SimpleCacheWriter: Received BeforeDestroy event for: {0}", ev.Key);
+      return true;
+    }
+
+    public bool BeforeRegionClear(RegionEvent<TKey, TVal> ev)
+    {
+      Console.WriteLine("SimpleCacheWriter: Received BeforeRegionClear event of region: {0}", ev.Region.Name);
+      return true;
+    }
+
+    public bool BeforeRegionDestroy(RegionEvent<TKey, TVal> ev)
+    {
+      Console.WriteLine("SimpleCacheWriter: Received BeforeRegionDestroy event of region: {0}", ev.Region.Name);
+      return true;
+    }
+
+    public void Close(IRegion<TKey, TVal> region)
+    {
+      Console.WriteLine("SimpleCacheWriter: Received Close event of region: {0}", region.Name);
+    }
+
+    #endregion
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/BasicOperations/BasicOperations.csproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/BasicOperations/BasicOperations.csproj b/geode-client-native/quickstart/csharp/vsprojects/BasicOperations/BasicOperations.csproj
new file mode 100644
index 0000000..3ecc282
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/BasicOperations/BasicOperations.csproj
@@ -0,0 +1,118 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{5F769A4E-0FF3-4859-8958-CDD075AC01C3}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>BasicOperations</RootNamespace>
+    <AssemblyName>BasicOperations</AssemblyName>
+    <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>2.0</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="GemStone.GemFire.Cache, Version=9.0.0.0, Culture=neutral, PublicKeyToken=126e6338d9f55e0c, processorArchitecture=x64">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>$(GFCPP)\bin\GemStone.GemFire.Cache.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\..\BasicOperations.cs">
+      <Link>BasicOperations.cs</Link>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PostBuildEvent>copy "$(TargetPath)" "$(SolutionDir)csharp"</PostBuildEvent>
+  </PropertyGroup>
+</Project>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/BasicOperations/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/BasicOperations/Properties/AssemblyInfo.cs b/geode-client-native/quickstart/csharp/vsprojects/BasicOperations/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..f436042
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/BasicOperations/Properties/AssemblyInfo.cs
@@ -0,0 +1,33 @@
+\ufeffusing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("BasicOperations")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("BasicOperations")]
+[assembly: AssemblyCopyright("Copyright �  2007")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("37ace014-ca0d-4011-92f5-6cf3e000bcf0")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/CqQuery/CqQuery.csproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/CqQuery/CqQuery.csproj b/geode-client-native/quickstart/csharp/vsprojects/CqQuery/CqQuery.csproj
new file mode 100644
index 0000000..85b74fb
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/CqQuery/CqQuery.csproj
@@ -0,0 +1,123 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{96DAADFD-1454-43FA-AA69-28E357901E3C}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>CqQuery</RootNamespace>
+    <AssemblyName>CqQuery</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>2.0</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="GemStone.GemFire.Cache, Version=9.0.0.0, Culture=neutral, PublicKeyToken=126e6338d9f55e0c, processorArchitecture=x64">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>$(GFCPP)\bin\GemStone.GemFire.Cache.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\..\PortfolioN.cs">
+      <Link>PortfolioN.cs</Link>
+    </Compile>
+    <Compile Include="..\..\PositionN.cs">
+      <Link>PositionN.cs</Link>
+    </Compile>
+    <Compile Include="..\..\CqQuery.cs">
+      <Link>CqQuery.cs</Link>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PostBuildEvent>copy "$(TargetPath)" "$(SolutionDir)csharp"</PostBuildEvent>
+  </PropertyGroup>
+</Project>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/CqQuery/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/CqQuery/Properties/AssemblyInfo.cs b/geode-client-native/quickstart/csharp/vsprojects/CqQuery/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..be4e98c
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/CqQuery/Properties/AssemblyInfo.cs
@@ -0,0 +1,33 @@
+\ufeffusing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("CqQuery")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("CqQuery")]
+[assembly: AssemblyCopyright("Copyright �  2008")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("5ddc1f27-5373-4777-8505-aed8e9aa3693")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/DataExpiration/DataExpiration.csproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/DataExpiration/DataExpiration.csproj b/geode-client-native/quickstart/csharp/vsprojects/DataExpiration/DataExpiration.csproj
new file mode 100644
index 0000000..2ad7675
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/DataExpiration/DataExpiration.csproj
@@ -0,0 +1,120 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{AB5EF944-C1FC-4FB2-8831-081EC8368D24}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>DataExpiration</RootNamespace>
+    <AssemblyName>DataExpiration</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>2.0</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="GemStone.GemFire.Cache, Version=8.1.0.1, Culture=neutral, PublicKeyToken=126e6338d9f55e0c, processorArchitecture=x64">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>$(GFCPP)\bin\GemStone.GemFire.Cache.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\..\DataExpiration.cs">
+      <Link>DataExpiration.cs</Link>
+    </Compile>
+    <Compile Include="..\..\plugins\SimpleCacheListener.cs">
+      <Link>SimpleCacheListener.cs</Link>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PostBuildEvent>copy "$(TargetPath)" "$(SolutionDir)csharp"</PostBuildEvent>
+  </PropertyGroup>
+</Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/DataExpiration/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/DataExpiration/Properties/AssemblyInfo.cs b/geode-client-native/quickstart/csharp/vsprojects/DataExpiration/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..16538fb
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/DataExpiration/Properties/AssemblyInfo.cs
@@ -0,0 +1,33 @@
+\ufeffusing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("DataExpiration")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("DataExpiration")]
+[assembly: AssemblyCopyright("Copyright �  2007")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("e8478513-67a0-48d7-b83d-0b7adfc17734")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/Delta/Delta.csproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/Delta/Delta.csproj b/geode-client-native/quickstart/csharp/vsprojects/Delta/Delta.csproj
new file mode 100644
index 0000000..fb7841f
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/Delta/Delta.csproj
@@ -0,0 +1,120 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{36F048FD-9DFD-426A-AA72-483043CB7E17}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Delta</RootNamespace>
+    <AssemblyName>Delta</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>2.0</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+    <PlatformTarget>x64</PlatformTarget>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x64\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\x64\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="GemStone.GemFire.Cache, Version=9.0.0.0, Culture=neutral, PublicKeyToken=126e6338d9f55e0c, processorArchitecture=x64">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>$(GFCPP)\bin\GemStone.GemFire.Cache.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\..\Delta.cs">
+      <Link>Delta.cs</Link>
+    </Compile>
+    <Compile Include="..\..\DeltaExample.cs">
+      <Link>DeltaExample.cs</Link>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PostBuildEvent>copy "$(TargetPath)" "$(SolutionDir)csharp"</PostBuildEvent>
+  </PropertyGroup>
+</Project>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/Delta/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/Delta/Properties/AssemblyInfo.cs b/geode-client-native/quickstart/csharp/vsprojects/Delta/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..aad35c8
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/Delta/Properties/AssemblyInfo.cs
@@ -0,0 +1,33 @@
+\ufeffusing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Delta")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Delta")]
+[assembly: AssemblyCopyright("Copyright �  2009")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("6c01aac2-06bc-4f7b-b8c3-04f5bac39356")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/DistributedSystem/DistributedSystem.csproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/DistributedSystem/DistributedSystem.csproj b/geode-client-native/quickstart/csharp/vsprojects/DistributedSystem/DistributedSystem.csproj
new file mode 100755
index 0000000..3673174
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/DistributedSystem/DistributedSystem.csproj
@@ -0,0 +1,117 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{A1434552-3864-4E91-A31B-3E38D966F816}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>DistributedSystem</RootNamespace>
+    <AssemblyName>DistributedSystem</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>2.0</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="GemStone.GemFire.Cache, Version=9.0.0.0, Culture=neutral, PublicKeyToken=126e6338d9f55e0c, processorArchitecture=x64">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>$(GFCPP)\bin\GemStone.GemFire.Cache.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\..\DistributedSystem.cs">
+      <Link>DistributedSystem.cs</Link>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PostBuildEvent>copy "$(TargetPath)" "$(SolutionDir)csharp"</PostBuildEvent>
+  </PropertyGroup>
+</Project>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/DistributedSystem/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/DistributedSystem/Properties/AssemblyInfo.cs b/geode-client-native/quickstart/csharp/vsprojects/DistributedSystem/Properties/AssemblyInfo.cs
new file mode 100755
index 0000000..ae74043
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/DistributedSystem/Properties/AssemblyInfo.cs
@@ -0,0 +1,33 @@
+\ufeffusing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("DistributedSystem")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("DistributedSystem")]
+[assembly: AssemblyCopyright("Copyright �  2009")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("a35a1720-1ae2-46cb-ad6f-23b646cf8993")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/DurableClient/DurableClient.csproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/DurableClient/DurableClient.csproj b/geode-client-native/quickstart/csharp/vsprojects/DurableClient/DurableClient.csproj
new file mode 100644
index 0000000..22e2baf
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/DurableClient/DurableClient.csproj
@@ -0,0 +1,123 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{7BD6A234-AD2E-4BE6-BAEA-EB258EAAD0C5}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>DurableClient</RootNamespace>
+    <AssemblyName>DurableClient</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>2.0</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="GemStone.GemFire.Cache, Version=9.0.0.0, Culture=neutral, PublicKeyToken=126e6338d9f55e0c, processorArchitecture=x64">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>$(GFCPP)\bin\GemStone.GemFire.Cache.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\..\DurableClient.cs">
+      <Link>DurableClient.cs</Link>
+    </Compile>
+    <Compile Include="..\..\plugins\DurableCacheListener.cs">
+      <Link>DurableCacheListener.cs</Link>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="app.config" />
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PostBuildEvent>copy "$(TargetPath)" "$(SolutionDir)csharp"</PostBuildEvent>
+  </PropertyGroup>
+</Project>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/DurableClient/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/DurableClient/Properties/AssemblyInfo.cs b/geode-client-native/quickstart/csharp/vsprojects/DurableClient/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..0136ffe
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/DurableClient/Properties/AssemblyInfo.cs
@@ -0,0 +1,33 @@
+\ufeffusing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("DurableClient")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("DurableClient")]
+[assembly: AssemblyCopyright("Copyright �  2007")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("203B2627-3D4D-441d-8A3A-E804665B35A3")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/DurableClient/app.config
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/DurableClient/app.config b/geode-client-native/quickstart/csharp/vsprojects/DurableClient/app.config
new file mode 100755
index 0000000..cb2586b
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/DurableClient/app.config
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<configuration>
+<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/Exceptions/Exceptions.csproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/Exceptions/Exceptions.csproj b/geode-client-native/quickstart/csharp/vsprojects/Exceptions/Exceptions.csproj
new file mode 100644
index 0000000..d63b099
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/Exceptions/Exceptions.csproj
@@ -0,0 +1,119 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{6AF4E7C4-0EE2-48FE-A075-B01B3D033998}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Exceptions</RootNamespace>
+    <AssemblyName>Exceptions</AssemblyName>
+    <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>2.0</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="GemStone.GemFire.Cache, Version=9.0.0.0, Culture=neutral, PublicKeyToken=126e6338d9f55e0c, processorArchitecture=x64">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>$(GFCPP)\bin\GemStone.GemFire.Cache.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\..\Exceptions.cs">
+      <Link>Exceptions.cs</Link>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PostBuildEvent>copy "$(TargetPath)" "$(SolutionDir)csharp"</PostBuildEvent>
+  </PropertyGroup>
+</Project>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/Exceptions/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/Exceptions/Properties/AssemblyInfo.cs b/geode-client-native/quickstart/csharp/vsprojects/Exceptions/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..be77328
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/Exceptions/Properties/AssemblyInfo.cs
@@ -0,0 +1,33 @@
+\ufeffusing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Exceptions")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Gemstone Systems Pvt. Ltd")]
+[assembly: AssemblyProduct("Exceptions")]
+[assembly: AssemblyCopyright("Copyright � Gemstone Systems Pvt. Ltd 2007")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("e418e124-02c2-4ab0-95dd-e4770379a02e")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/ExecuteFunctions/ExecuteFunctions.csproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/ExecuteFunctions/ExecuteFunctions.csproj b/geode-client-native/quickstart/csharp/vsprojects/ExecuteFunctions/ExecuteFunctions.csproj
new file mode 100644
index 0000000..2240f52
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/ExecuteFunctions/ExecuteFunctions.csproj
@@ -0,0 +1,117 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{F15736B5-8582-4B38-8B09-AA2ED4EA9577}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>ExecuteFunctions</RootNamespace>
+    <AssemblyName>ExecuteFunctions</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>2.0</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="GemStone.GemFire.Cache, Version=9.0.0.0, Culture=neutral, PublicKeyToken=126e6338d9f55e0c, processorArchitecture=x64">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>$(GFCPP)\bin\GemStone.GemFire.Cache.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\..\ExecuteFunctions.cs">
+      <Link>ExecuteFunctions.cs</Link>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PostBuildEvent>copy "$(TargetPath)" "$(SolutionDir)csharp"</PostBuildEvent>
+  </PropertyGroup>
+</Project>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/ExecuteFunctions/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/ExecuteFunctions/Properties/AssemblyInfo.cs b/geode-client-native/quickstart/csharp/vsprojects/ExecuteFunctions/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..4628d93
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/ExecuteFunctions/Properties/AssemblyInfo.cs
@@ -0,0 +1,33 @@
+\ufeffusing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("ExecuteFunctions")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("ExecuteFunctions")]
+[assembly: AssemblyCopyright("Copyright �  2008")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("5ddc1f27-5373-4777-8505-aed8e9aa3694")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]


[45/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/BenchmarkHierarchicalClient/README.html
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/BenchmarkHierarchicalClient/README.html b/geode-client-native/examples/clicache/BenchmarkHierarchicalClient/README.html
new file mode 100755
index 0000000..a60785f
--- /dev/null
+++ b/geode-client-native/examples/clicache/BenchmarkHierarchicalClient/README.html
@@ -0,0 +1,151 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"><HTML>
+<HEAD>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+<META NAME="GENERATOR" CONTENT="Adobe FrameMaker 7.0/HTML Export Filter">
+
+<TITLE>BenchmarkHierarchicalClient: Pivotal GemFire&#174; Native Client Example</TITLE>
+
+</HEAD>
+<BODY>
+ <IMG SRC="../../../docs/PIVOTAL_GemFire_190x81.png" BORDER="0">
+ <DIV>
+   <h1 align="center"><a name="Top" id="Top"></a>BenchmarkHierarchicalClient</h1>
+   <h2 align="center">
+     Pivotal GemFire&#174; Native Client </h2>
+   <h2 align="center">C# Programming Example</h2>
+</DIV>
+
+ <DIV>
+<H2>
+<br>
+About the BenchmarkHierarchicalClient Example </H2>
+<P>The <code>BenchmarkHierarchicalClient</code> example is an interactive C# program that uses Microsoft .NET Framework 4.0 to access the GemFire C++ API for benchmarking performance between a client and a server.</P>
+<blockquote>
+  <p align="left"><em>Microsoft .NET Framework 4.0 must be installed before running this example. For information about installing the .NET Framework, see  the </em>GemFire Native Client User's Guide<em>.</em></p>
+</blockquote>
+<P><code>BenchmarkHierarchicalClient</code> measures the time it takes for a <code>put</code> operation to return in a hierarchical cache configuration. In this test, the client does the <code>put</code> and its BridgeWriter automatically forwards the <code>put</code> to the server. Consequently, the measurement includes the time required to send the data to the server.</P>
+<P>To run the server and client on separate machines, you need to modify the client configuration file, <a href="./BenchmarkHierarchicalClient.xml" target="_blank"><code>BenchmarkHierarchicalClient.xml</code></a>, changing the two occurrences of the endpoints parameter string, <code>localhost</code>, to the name of the server's machine.</P>
+ </DIV>
+
+<DIV>
+<H2>
+<a name="configuring_environment" id="configuring_environment"></a>Configuring the Environment </H2>
+<P>
+Examples that interact with a Java cache server require specific environment configurations so the Java cache server will run properly. Follow the configuration steps listed below that apply to your operating system: </P>
+</DIV>
+ <DIV>
+<ol>
+  <li>From the GemFire product installation directory, configure your environment settings by following the steps in   <code>examples/EnvSetup.html</code>.<br>
+      <br>
+  <li>Set the <code>JAVA_HOME</code> and <code>GF_JAVA_HOME</code>  environment variables to your installed Java JRE or JDK. See the Installation chapter of the   <em>GemFire User's Guide</em> for the versions of Java that are compatible with GemFire. The <code>JAVA_HOME</code> setting is for your applications, and  <code>GF_JAVA_HOME</code> is for the GemFire scripts.  You must have a compatible Java JRE or JDK installed and you must set <code>JAVA_HOME</code> and <code>GF_JAVA_HOME</code> to point to it.<br>
+      <br>
+  <li>Add <code>$JAVA_HOME/bin</code> to the start of your <code>PATH</code>. <br>
+  <br>
+  <li>Add the GemFire quickstart classes to your <code>CLASSPATH</code>. <br>
+  <blockquote>
+  <p><strong> <code><strong>set CLASSPATH=%GEMFIRE%\quickstart\classes;%CLASSPATH%</strong></code></strong></p>
+</blockquote>  
+</ol>
+<p>The following is a list of the environment configuration commands for the <code>BenchmarkHierarchicalClient</code> example. Choose the set of commands that are appropriate for your operating system. The text that you type is shown in bold.
+  These configurations only need to be performed for the sessions that invoke the Java cache server.</p>
+<p><strong>Bourne and Korn shells (sh, ksh, bash)</strong></p>
+<blockquote>
+  <p>    <code>% <strong>cd GemFireInstallDirectory</strong><br>
+    % <strong>CLASSPATH=$CLASSPATH:$GEMFIRE/quickstart/classes; export CLASSPATH</strong><br>
+    % <strong>cd $GEMFIRE/quickstart</strong><br>
+    % <strong>JAVA_HOME=&lt;installed JRE PATH&gt;; export JAVA_HOME</strong><br>
+    % <strong>GF_JAVA_HOME=$JAVA_HOME; export GF_JAVA_HOME</strong><br>
+    % <strong>PATH=$JAVA_HOME/bin:$PATH; export PATH</strong></code></p>
+</blockquote>
+<p><strong>Windows</strong></p>
+<blockquote>
+  <p><code>&gt; <strong>cd GemFireInstallDirectory</strong><br>
+&gt; <strong>set CLASSPATH=%GEMFIRE%\quickstart\classes;%CLASSPATH%</strong><br>
+&gt; <strong>cd %GEMFIRE%\quickstart</strong><br>
+&gt; <strong>set JAVA_HOME=&lt;installed JRE PATH&gt;</strong><br>
+&gt; <strong>set GF_JAVA_HOME=%JAVA_HOME%</strong><br>
+&gt; <strong>set PATH=%JAVA_HOME%\bin;%PATH%</strong> </code></p>
+</blockquote>
+</DIV>
+
+<DIV>
+<H2>
+Starting BenchmarkHierarchicalClient </H2>
+<P>
+To start the <code>BenchmarkHierarchicalClient</code> example, create a session from the GemFire product installation directory and complete the following steps.  Throughout this example, when you're prompted to enter the native client directory, replace the <code>xxxx</code> in <code>NativeClient_xxxx</code> with the actual four-digit product version number.</P>
+<P>This first session starts the Java cache server. </P>
+</DIV>
+<DIV>
+<OL>
+<LI CLASS="Numbered-1st"><p>
+Configure the session environment according to the steps listed in <a href="#configuring_environment">Configuring the Environment</a><a href="../envsetup.html" target="_blank"></a>.</p>
+</LI>
+<LI CLASS="Numbered-1st">If you have not already done so, go to the <code>%GEMFIRE%/quickstart</code> directory.</LI>
+<blockquote>
+  <p><strong> <code>cd %GEMFIRE%/quickstart</code></strong></p>
+</blockquote>
+<LI CLASS="Numbered">
+Enter this command to start the Java cache server:
+
+  <blockquote>
+   <p><strong>
+     <code>java quickstart.BenchmarkHierarchicalServer</code></strong></p>
+   </blockquote>
+ </LI>
+<LI CLASS="Numbered">
+Create another session and change its working directory to the native client <code>cli_BenchmarkHierarchicalClient</code> example directory:
+  <blockquote>
+    <p><strong><code>cd examples\cli_BenchmarkHierarchicalClient</code></strong></p>
+  </blockquote>
+  <li>
+    Start the <code>BenchmarkHierarchicalClient</code> application:</li>
+  <blockquote>
+   <p><strong>
+     <code>BenchmarkHierarchicalClient.exe</code></strong></p>
+   </blockquote>	
+</OL>
+</DIV>
+<DIV>
+<H2>
+Running the Example </H2>
+</DIV>
+<DIV>
+<P><strong>
+In the client session</strong></P>
+<blockquote>
+  <p>
+    The benchmarking tests may take several moments to finish. After the benchmarking is complete, the following statistical categories are reported in the client session:</p>
+  <blockquote class="style1">
+    <p><code>Benchmark Statistics</code></p>
+    <p><code>Benchmark Averages (Mean)</code></p>
+    <p><code>Best Benchmark Results   </code></p>
+  </blockquote>
+</blockquote>
+<blockquote>
+  <p> When you have finished reviewing the benchmarking results, press <code>Enter</code> to end the <code>BenchmarkHierarchicalClient</code> application. Next, type <strong><code>Exit</code></strong> to close the session.</p>
+</blockquote>
+<p><strong>In the server session</strong></p>
+<blockquote>
+  <p>Press <code>Enter</code> to end the cache server, then type <strong><code>Exit</code></strong> to close the session.</p>
+</blockquote>
+</DIV>
+<DIV>
+<H2>
+Changing System Parameters</H2>
+<P>
+This product ships configured to run with default system properties. If you need to run in a non-default configuration, GemFire also takes a system-level configuration file. To configure a .NET client, rename any <code>gfcpp.properties</code> file currently in the example directory, then copy <code>gfcpp.properties</code> file into your <code>cli_BenchmarkHierarchicalClient</code> directory from the <code>defaultSystem</code> directory. Edit the <code>gfcpp.properties</code> file in your <code>cli_BenchmarkHierarchicalClient</code> directory, as needed.</P>
+<P>If you also need to make a non-default configuration for the Java cache server, rename any <code>gemfire.properties</code> file currently in the <code>%GEMFIRE%/quickstart</code>, then copy <code>gemfire.properties</code> into the <code>/quickstart</code> directory from the <code>%GEMFIRE%/defaultConfigs</code> directory and edit it. For example, to change the name of the <code>cache.xml</code> file, uncomment this line and change the file name:</P>
+<P> <code>#cache-xml-file=cache.xml</code></P>
+<P>When you're done with the example, delete your edited versions of <code>gemfire.properties</code> and <code>gfcpp.properties</code>, then restore the renamed original versions to their original names so other examples can use the unedited files.<code><br>
+    <br>
+</code></P>
+</DIV>
+<a href="#Top">Top</a>
+<P>
+<br>
+<p><span class=GramE>Copyright &#169; 2005-2014 Pivotal Software, Inc. All rights reserved.  This product is protected by U.S. and international copyright and intellectual property laws. Pivotal products are covered by one or more patents listed at
+http://www.pivotal.io/patents. </p>
+</BODY>
+</HTML>
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/CacheRunner/CacheRunner.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/CacheRunner/CacheRunner.cs b/geode-client-native/examples/clicache/CacheRunner/CacheRunner.cs
new file mode 100644
index 0000000..09515aa
--- /dev/null
+++ b/geode-client-native/examples/clicache/CacheRunner/CacheRunner.cs
@@ -0,0 +1,698 @@
+//=========================================================================
+// Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+// This product is protected by U.S. and international copyright
+// and intellectual property laws. Pivotal products are covered by
+// more patents listed at http://www.pivotal.io/patents.
+//========================================================================
+
+using System;
+
+namespace GemStone.GemFire.Cache.Examples
+{
+  using GemStone.GemFire.Cache.Tests;
+  using GemStone.GemFire.Cache;
+
+  // Example class to perform puts/gets using one or more clients.
+  class CacheRunner
+  {
+    #region Local constants
+
+    private static string DefaultXMLPath = "tcr_cache.xml";
+
+    #endregion
+
+    #region Private static members
+
+    private static Cache m_cache = null;
+    private static Region m_region = null;
+
+    #endregion
+
+    static void Main(string[] args)
+    {
+      try
+      {
+        // Connect to distributed system and cache 
+        DSInit(args);
+
+        // Enter puts and gets manually
+        DoCommand();
+      }
+      catch (Exception ex)
+      {
+        Console.WriteLine("{0}An exception occurred: {1}",
+          Environment.NewLine, ex.Message);
+        Console.WriteLine("---[ Press <Enter> to End the Application ]---");
+        Console.ReadLine();
+      }
+      finally
+      {
+        try
+        {
+          // Close the cache and disconnect
+          DSClose();
+        }
+        catch // Ignore any exception here.
+        {
+        }
+      }
+    }
+
+    #region Local functions
+
+    // Initialize the distributed system, setup the cache, register callbacks
+    // and user-defined classes and create the region.
+    public static void DSInit(string[] args)
+    {
+      Console.WriteLine("{0}Connecting to GemFire{0}", Environment.NewLine);
+
+      // Register the ComplexNumber type
+      Serializable.RegisterType(ComplexNumber.Create);
+
+      // Register the Portfolio and Position classes for Query
+      Serializable.RegisterType(Portfolio.CreateDeserializable);
+      Serializable.RegisterType(Position.CreateDeserializable);
+
+      // Register the ExampleObject for putall and interop 
+      Serializable.RegisterType(ExampleObject.CreateDeserializable);
+
+      string xmlPath;
+      // Create a cache
+      if (args != null && args.Length > 1)
+      {
+        throw new ApplicationException(string.Format("Usage: CacheRunner " +
+          "[<XML file name>]{0}\tXML file name is optional " +
+          "and the default is {1}.", Environment.NewLine, DefaultXMLPath));
+      }
+      else if (args != null && args.Length == 1)
+      {
+        xmlPath = args[0];
+      }
+      else
+      {
+        xmlPath = DefaultXMLPath;
+      }
+      CacheFactory cacheFactory = CacheFactory.CreateCacheFactory(null);
+      m_cache = cacheFactory.Set("cache-xml-file", xmlPath).Create();
+      Region[] rootRegions = m_cache.RootRegions();
+      if (rootRegions != null && rootRegions.Length > 0)
+      {
+        SetRegion(rootRegions[rootRegions.Length - 1]);
+      }
+      else
+      {
+        throw new ApplicationException("No root regions found.");
+      }
+    }
+
+    // Close the cache and disconnect from the distributed system.
+    public static void DSClose()
+    {
+      // Close cache
+      if (m_cache != null)
+      {
+        m_cache.Close();
+        m_cache = null;
+        
+        Console.WriteLine("{0}Closed cache", Environment.NewLine);
+      }
+      Console.WriteLine("{0}Connection closed", Environment.NewLine);
+    }
+
+    private static void SetRegion(Region region)
+    {
+      m_region = region;
+      RegionAttributes attrs = m_region.Attributes;
+      if (attrs.ClientNotificationEnabled)
+      {
+        m_region.RegisterAllKeys();
+      }
+      // Add cache listener callback to region
+      if (attrs.CacheListener == null)
+      {
+        ExampleCacheListenerCallback listenerCallback =
+          new ExampleCacheListenerCallback();
+        AttributesMutator mutator = m_region.GetAttributesMutator();
+        mutator.SetCacheListener(listenerCallback);
+      }
+    }
+
+    // Puts a string key and complex number value
+    public static void PutComplex(string key, ComplexNumber value)
+    {
+      m_region.Put(key, value);
+      Console.WriteLine("Put complex -- key: " + key + " value: " + value);
+    }
+
+    // Puts a string key and string value
+    public static void PutStr(string key, string value)
+    {
+      m_region.Put(key, value);
+      Console.WriteLine("Put string  -- key: " + key + " value: " + value);
+    }
+
+    // Puts a string key and bytes value
+    public static void PutBytes(string key, string value)
+    {
+      byte[] buffer = new byte[value.Length];
+      for (int index = 0; index < value.Length; index++)
+      {
+        buffer[index] = (byte)value[index];
+      }
+      m_region.Put(key, buffer);
+      Console.WriteLine("Put string  -- key: " + key + " value: " + value);
+    }
+
+    // Puts a string key and object
+    public static void PutObject(string key, IGFSerializable cValue)
+    {
+      m_region.Put(key, cValue);
+      Console.WriteLine("Put  -- key: " + key + " value: " + cValue);
+    }
+
+    // Puts a string key and portfolio object
+    public static void PutPortfolio(string key, int id)
+    {
+      Portfolio portfolio = new Portfolio(id, 2);
+      m_region.Put(key, portfolio);
+      Console.WriteLine("Put portfolio  -- key: " + key + " id: " + id);
+    }
+
+    // Puts a string key and position object
+    public static void PutPosition(string key, int id)
+    {
+      Position position = new Position(key, id);
+      m_region.Put(key, position);
+      Console.WriteLine("Put position  -- key: " + key + " id: " + id);
+    }
+
+    // Gets the value, if the key exists
+    public static string GetStr(string key)
+    {
+      string testStr = string.Empty;
+
+      IGFSerializable cValue = m_region.Get(key);
+      // Is the key found?
+      if (cValue != null)
+      {
+        testStr = cValue.ToString();
+
+        // Type of value?
+        if (cValue is CacheableBytes)
+        {
+          System.Text.StringBuilder sb = new System.Text.StringBuilder();
+          CacheableBytes cBytes = cValue as CacheableBytes;
+          foreach (byte b in cBytes.Value)
+          {
+            sb.Append((char)b);
+          }
+          testStr = sb.ToString();
+        }
+        else if (cValue is CacheableObjectXml)
+        {
+          object val = ((CacheableObjectXml)cValue).Value;
+          System.Xml.XmlDocument xd = val as System.Xml.XmlDocument;
+          if (xd != null)
+          {
+            testStr = xd.OuterXml;
+          }
+        }
+        Console.WriteLine("Get [{0}] -- key: {1}, value: {2}",
+          cValue.GetType().Name, key, testStr);
+      }
+      else
+      {
+        testStr = "NULL";
+        Console.WriteLine("No such key in region: " + key);
+      }
+
+      return testStr;
+    }
+
+    // Run the given query
+    public static void RunQuery(string query, bool isRegionQuery)
+    {
+      try
+      {
+        ISelectResults results = null;
+
+        if (isRegionQuery)
+        {
+          results = m_region.Query(query);
+        }
+        else
+        {
+          QueryService qs = m_cache.GetQueryService("examplePool");
+          Query qry = qs.NewQuery(query);
+          results = qry.Execute();
+        }
+        if (results is ResultSet)
+        {
+          uint index = 1;
+          foreach (IGFSerializable result in results)
+          {
+            Console.WriteLine("\tResult {0}: {1}", index, result);
+            index++;
+          }
+        }
+        else
+        {
+          StructSet ss = (StructSet)results;
+          Console.Write("Columns:");
+          uint index = 0;
+          string colName;
+          while ((colName = ss.GetFieldName(index)) != null)
+          {
+            Console.Write('\t' + colName);
+            index++;
+          }
+          Console.WriteLine();
+          index = 1;
+          foreach (Struct si in results)
+          {
+            Console.Write("\tResult {0}: ");
+            while (si.HasNext())
+            {
+              Console.Write(si.Next() + " || ");
+            }
+            Console.WriteLine();
+            index++;
+          }
+        }
+      }
+      catch (Exception ex)
+      {
+        Console.WriteLine("Exception while running the query [{0}]: {1}",
+          query, ex.Message);
+      }
+    }
+
+    // Run the given query and display the single result value
+    public static void SelectValue(string query)
+    {
+      try
+      {
+        IGFSerializable result = m_region.SelectValue(query);
+
+        if (result is Struct)
+        {
+          Struct si = result as Struct;
+          Console.Write("Columns:");
+          uint index = 0;
+          string colName;
+          while ((colName = si.Set.GetFieldName(index)) != null)
+          {
+            Console.Write('\t' + colName);
+            index++;
+          }
+          Console.WriteLine();
+
+          index = 0;
+          Console.Write("\tResult {0}: ");
+          while (si.HasNext())
+          {
+            Console.Write(si.Next() + " || ");
+          }
+          Console.WriteLine();
+          index++;
+        }
+        else
+        {
+          Console.WriteLine("\tResult : {0}", result);
+        }
+      }
+      catch (Exception ex)
+      {
+        Console.WriteLine("Exception while running the query [{0}]: {1}",
+          query, ex.Message);
+      }
+    }
+
+    private static int getTS(DateTime ts)
+    {
+      int ms = (ts.Hour * 3600 + ts.Minute * 60 + ts.Second) * 1000 + ts.Millisecond;
+      return ms;
+    }
+
+    // Run the given query and display if value exists
+    public static void ExistsValue(string query)
+    {
+      try
+      {
+        bool result = m_region.ExistsValue(query);
+
+        Console.WriteLine("\tResult is {0}", result);
+      }
+      catch (Exception ex)
+      {
+        Console.WriteLine("Exception while running the query [{0}]: {1}",
+          query, ex.Message);
+      }
+    }
+
+    // Waits for input of a command (chrgn, get, put, putAll, exec, query,
+    // existsvalue, selectvalue or quit), then does just that.
+    public static void DoCommand()
+    {
+      string myCmd = string.Empty;
+      string myKey;
+      string myValue;
+
+      while (myCmd != "quit")
+      {
+        Console.Write("{0}: chrgn, lsrgn, get, put, putAll, run, exec, query, " +
+          "existsvalue, selectvalue, quit: ", m_region.FullPath);
+
+        string strIn = Console.ReadLine().Trim();
+        string[] strSplit = strIn.Split(' ');
+
+        myCmd = strSplit[0];
+        myCmd = myCmd.ToLower();
+
+        if (myCmd == "q") { myCmd = "quit"; }
+
+        switch (myCmd)
+        {
+          case "chrgn":
+            if (strSplit.Length == 2)
+            {
+              string regionPath = strSplit[1].Trim();
+              Region region = null;
+              try
+              {
+                region = m_cache.GetRegion(regionPath);
+              }
+              catch
+              {
+              }
+              if (region == null)
+              {
+                Console.WriteLine("No region {0} found.", regionPath);
+                Console.WriteLine("usage: chrgn region-path");
+              }
+              else
+              {
+                SetRegion(region);
+              }
+            }
+            else
+            {
+              Console.WriteLine("usage: chrgn region-path \t change the " +
+                "current region to the given region; the region-path can " +
+                "be absolute or relative to the current region");
+            }
+            break;
+
+          case "lsrgn":
+            Region[] rootRegions = m_cache.RootRegions();
+            Console.Write("\nNumber of regions in Cache: {0}\n", rootRegions.Length);
+            int count = 1;
+            for (int rgnCnt = 0; rgnCnt < rootRegions.Length; rgnCnt++)
+            {
+              Console.Write("Region Name {0}: {1}\n",count++,rootRegions[rgnCnt].Name);
+            }
+            break;
+
+          case "run":
+            if (strSplit.Length == 3)
+            {
+              string myNumber = strSplit[1];
+              string mySize = strSplit[2];
+              int number = int.Parse(myNumber);
+              int size = int.Parse(mySize);
+              byte[] payload = new byte[size];
+
+              CacheableHashMap map = new CacheableHashMap();
+              int ts1 = getTS(System.DateTime.Now);
+              for (int i = 0; i < number; i++)
+              {
+                if (size == 0)
+                {
+                  map.Add(new CacheableInt32(i), new ExampleObject(i));
+                }
+                else
+                {
+                  map.Add(CacheableInt32.Create(i),
+                    CacheableBytes.Create(payload));
+                }
+              }
+              m_region.PutAll(map);
+              int ts2 = getTS(System.DateTime.Now);
+              Double run_t = (ts2 - ts1) / 1000.0;
+              Console.WriteLine("Ops/sec: {0}, {1}, {2}", number / run_t, ts1, ts2);
+            } else {
+              Console.WriteLine("usage: run numOfKeys entrySize");
+            }
+            break;
+
+          case "putall":
+            if (strSplit.Length == 3)
+            {
+              myKey = strSplit[1];
+              myValue = strSplit[2];
+              int num = int.Parse(myValue);
+
+              //byte[] payload = new byte[10];
+              //for (int index = 0; index < 10; index++)
+              //{
+              //payload[index] = 1;
+              //}
+
+              Console.WriteLine("putAll: " + myKey + ":" + num);
+
+              CacheableHashMap map = new CacheableHashMap();
+              map.Clear();
+              for (int i = 0; i < num; i++)
+              {
+                string key = myKey + i;
+                // map.Add(new CacheableString(key), (CacheableBytes)(payload));
+                map.Add(new CacheableString(key), new ExampleObject(i));
+                // map.Add(new CacheableString(key), new Position(i));
+              }
+              m_region.PutAll(map);
+            } else {
+              Console.WriteLine("usage: putAll keyBase numOfKeys");
+            }
+            break;
+
+          case "put":
+            if (strSplit.Length == 3)
+            {
+              myKey = strSplit[1];
+              myValue = strSplit[2];
+
+              // Check to see if value is ComplexNumber or String
+              ComplexNumber cNum = ComplexNumber.Parse(myValue);
+
+              if (cNum != null)
+              {
+                // Put the key and value
+                PutComplex(myKey, cNum);
+              }
+              else
+              {
+                // Put the key and value
+                PutStr(myKey, myValue);
+              }
+            }
+            else if (strSplit.Length == 4)
+            {
+              myKey = strSplit[1];
+              myValue = strSplit[2];
+              string type = strSplit[3];
+              type = type.ToLower();
+
+              switch (type)
+              {
+                case "str":
+                  PutStr(myKey, myValue);
+                  break;
+
+                case "bytes":
+                  PutBytes(myKey, myValue);
+                  break;
+
+                case "complex":
+                  ComplexNumber cNum = ComplexNumber.Parse(myValue);
+                  if (cNum != null)
+                  {
+                    PutComplex(myKey, cNum);
+                  }
+                  else
+                  {
+                    Console.WriteLine("Could not parse the complex number.");
+                  }
+                  break;
+
+                case "double":
+                  double dval = 0.0;
+                  try
+                  {
+                    dval = double.Parse(myValue);
+                  }
+                  catch (Exception ex)
+                  {
+                    Console.WriteLine("Double value [{0}] not valid: {1}.", myValue, ex);
+                    break;
+                  }
+                  PutObject(myKey, new CacheableDouble(dval));
+                  break;
+
+                case "float":
+                  float fval = 0.0F;
+                  try
+                  {
+                    fval = float.Parse(myValue);
+                  }
+                  catch (Exception ex)
+                  {
+                    Console.WriteLine("Float value [{0}] not valid: {1}.", myValue, ex);
+                    break;
+                  }
+                  PutObject(myKey, new CacheableFloat(fval));
+                  break;
+
+                case "obj":
+                  string xmlStr = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
+                  xmlStr += "<IndexMessage xmlns=\"urn:example.com:FinanceManager.Messages:v1.0\">";
+                  xmlStr += "<Keys>11</Keys><Keys>22</Keys><Keys>33</Keys></IndexMessage>";
+
+                  System.Xml.XmlDocument xd = new System.Xml.XmlDocument();
+                  xd.LoadXml(xmlStr);
+                  PutObject(myKey, CacheableObjectXml.Create(xd));
+                  break;
+
+                case "port":
+                  int id = 0;
+                  try
+                  {
+                    id = int.Parse(myValue);
+                  }
+                  catch
+                  {
+                    Console.WriteLine("Portfolio value [{0}] not a valid"
+                      + " integer ID.", myValue);
+                    break;
+                  }
+                  PutPortfolio(myKey, id);
+                  break;
+
+                case "pos":
+                  int id2 = 0;
+                  try
+                  {
+                    id2 = int.Parse(myValue);
+                  }
+                  catch
+                  {
+                    Console.WriteLine("Position value [{0}] not a valid"
+                      + " integer ID.", myValue);
+                    break;
+                  }
+                  PutPosition(myKey, id2);
+                  break;
+
+                default:
+                  Console.WriteLine("usage: put key value [str|bytes|complex|double|float|obj|port|pos]");
+                  break;
+              }
+            }
+            else
+            {
+              Console.WriteLine("usage: put key value [str|bytes|complex|double|float|obj|port|pos]");
+            }
+            break;
+
+          case "get":
+            if (strSplit.Length == 2)
+            {
+              myKey = strSplit[1];
+
+              // Get the value
+              string xStr = GetStr(myKey);
+            }
+            else
+            {
+              Console.WriteLine("usage: get key");
+            }
+
+            break;
+
+          case "exec":
+            if (strSplit.Length > 1)
+            {
+              string query = string.Empty;
+              for (int index = 1; index < strSplit.Length; index++)
+              {
+                query += strSplit[index] + ' ';
+              }
+              query = query.Trim();
+              RunQuery(query, false);
+            }
+            else
+            {
+              Console.WriteLine("usage: exec <select query string>");
+            }
+
+            break;
+
+          case "query":
+            if (strSplit.Length > 1)
+            {
+              string query = string.Empty;
+              for (int index = 1; index < strSplit.Length; index++)
+              {
+                query += strSplit[index] + ' ';
+              }
+              query = query.Trim();
+              RunQuery(query, true);
+            }
+            else
+            {
+              Console.WriteLine("usage: query <query predicate>");
+            }
+
+            break;
+
+          case "existsvalue":
+            if (strSplit.Length > 1)
+            {
+              string query = string.Empty;
+              for (int index = 1; index < strSplit.Length; index++)
+              {
+                query += strSplit[index] + ' ';
+              }
+              query = query.Trim();
+              ExistsValue(query);
+            }
+            else
+            {
+              Console.WriteLine("usage: existsvalue <query predicate>");
+            }
+
+            break;
+
+          case "selectvalue":
+            if (strSplit.Length > 1)
+            {
+              string query = string.Empty;
+              for (int index = 1; index < strSplit.Length; index++)
+              {
+                query += strSplit[index] + ' ';
+              }
+              query = query.Trim();
+              SelectValue(query);
+            }
+            else
+            {
+              Console.WriteLine("usage: selectvalue <query predicate>");
+            }
+
+            break;
+        }
+      }
+    }
+
+    #endregion
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/CacheRunner/CacheRunner.csproj
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/CacheRunner/CacheRunner.csproj b/geode-client-native/examples/clicache/CacheRunner/CacheRunner.csproj
new file mode 100644
index 0000000..0bc705f
--- /dev/null
+++ b/geode-client-native/examples/clicache/CacheRunner/CacheRunner.csproj
@@ -0,0 +1,129 @@
+\ufeff<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{D8F67104-CDDE-433F-A8EE-470A92180AB9}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>GemStone.GemFire.Cache.Examples</RootNamespace>
+    <AssemblyName>CacheRunner</AssemblyName>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>2.0</OldToolsVersion>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <IntermediateOutputPath>$(OSBUILDDIR)\examples\clicache\Debug\CacheRunner\</IntermediateOutputPath>
+    <OutputPath>$(OSBUILDDIR)\examples\clicache\Debug\CacheRunner\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x86</PlatformTarget>
+    <NoWarn>618</NoWarn>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <IntermediateOutputPath>$(OSBUILDDIR)\examples\clicache\CacheRunner\</IntermediateOutputPath>
+    <OutputPath>$(OSBUILDDIR)\examples\clicache\CacheRunner\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x86</PlatformTarget>
+    <NoWarn>618</NoWarn>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <IntermediateOutputPath>$(OSBUILDDIR)\examples\clicache\Debug\CacheRunner\</IntermediateOutputPath>
+    <OutputPath>$(OSBUILDDIR)\examples\clicache\Debug\CacheRunner\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <NoWarn>618</NoWarn>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <IntermediateOutputPath>$(OSBUILDDIR)\examples\clicache\CacheRunner\</IntermediateOutputPath>
+    <OutputPath>$(OSBUILDDIR)\examples\clicache\CacheRunner\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <NoWarn>618</NoWarn>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.XML" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\..\..\tests\clicache\TestObject\Portfolio.cs">
+      <Link>Portfolio.cs</Link>
+    </Compile>
+    <Compile Include="..\..\..\tests\clicache\TestObject\Position.cs">
+      <Link>Position.cs</Link>
+    </Compile>
+    <Compile Include="CacheRunner.cs" />
+    <Compile Include="Callbacks.cs" />
+    <Compile Include="ComplexNumber.cs" />
+    <Compile Include="ExampleObject.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\..\vs_projects\gfclicache\gfclicache.vcproj">
+      <Project>{B274E3B1-6A09-4322-952B-8BDA712892CE}</Project>
+      <Name>gfclicache</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="..\..\dist\cacheRunner\cacherunner.xml">
+      <Link>cacherunner.xml</Link>
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="..\..\dist\cacheRunner\cacherunner2.xml">
+      <Link>cacherunner2.xml</Link>
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="..\..\dist\cacheRunner\csQueryPortfolios.xml">
+      <Link>csQueryPortfolios.xml</Link>
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="..\..\dist\cacheRunner\csQueryPortfolios2.xml">
+      <Link>csQueryPortfolios2.xml</Link>
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="..\..\dist\cacheRunner\tcr_cache.xml">
+      <Link>tcr_cache.xml</Link>
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="..\..\dist\cacheRunner\tcr_cacheless.xml">
+      <Link>tcr_cacheless.xml</Link>
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="..\..\dist\cacheRunner\tcr_hacache.xml">
+      <Link>tcr_hacache.xml</Link>
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="..\..\dist\cacheRunner\tcr_hacacheless.xml">
+      <Link>tcr_hacacheless.xml</Link>
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/CacheRunner/CacheRunner.csproj.user
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/CacheRunner/CacheRunner.csproj.user b/geode-client-native/examples/clicache/CacheRunner/CacheRunner.csproj.user
new file mode 100644
index 0000000..99f5303
--- /dev/null
+++ b/geode-client-native/examples/clicache/CacheRunner/CacheRunner.csproj.user
@@ -0,0 +1,6 @@
+\ufeff<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <ReferencePath>$(OSBUILDDIR)\hidden\lib\</ReferencePath>
+    <ProjectView>ProjectFiles</ProjectView>
+  </PropertyGroup>
+</Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/CacheRunner/Callbacks.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/CacheRunner/Callbacks.cs b/geode-client-native/examples/clicache/CacheRunner/Callbacks.cs
new file mode 100644
index 0000000..f0f6634
--- /dev/null
+++ b/geode-client-native/examples/clicache/CacheRunner/Callbacks.cs
@@ -0,0 +1,85 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *========================================================================
+ */
+
+using System;
+
+namespace GemStone.GemFire.Cache.Examples
+{
+  /// <summary>
+  /// Capture and display cache events.
+  /// </summary>
+  class ExampleCacheListenerCallback : ICacheListener
+  {
+    public static ICacheListener Create()
+    {
+      return new ExampleCacheListenerCallback();
+    }
+
+    #region ICacheListener Members
+
+    public void AfterCreate(EntryEvent ev)
+    {
+      Console.WriteLine("{0}--- Received afterCreate event of: {1}",
+        Environment.NewLine, ev.Key);
+    }
+
+    public void AfterDestroy(EntryEvent ev)
+    {
+      Console.WriteLine("{0}--- Received afterDestroy event of: {1}",
+        Environment.NewLine, ev.Key);
+    }
+
+    public void AfterInvalidate(EntryEvent ev)
+    {
+      Console.WriteLine("{0}--- Received afterInvalidate event of: {1}",
+        Environment.NewLine, ev.Key);
+    }
+
+    public void AfterRegionClear(RegionEvent ev)
+    {
+      Console.WriteLine("{0}--- Received afterRegionClear event of region: {1}",
+        Environment.NewLine, ev.Region.Name);
+    }
+
+    public void AfterRegionDestroy(RegionEvent ev)
+    {
+      Console.WriteLine("{0}--- Received afterRegionDestroy event of region: {1}",
+        Environment.NewLine, ev.Region.Name);
+    }
+
+    public void AfterRegionInvalidate(RegionEvent ev)
+    {
+      Console.WriteLine("{0}--- Received afterRegionInvalidate event of region: {1}",
+        Environment.NewLine, ev.Region.Name);
+    }
+
+    public void AfterRegionLive(RegionEvent ev)
+    {
+      Console.WriteLine("{0}--- Received afterRegionLive event of region: {1}",
+        Environment.NewLine, ev.Region.Name);
+    }
+
+    public void AfterUpdate(EntryEvent ev)
+    {
+      Console.WriteLine("{0}--- Received afterUpdate event of: {1}",
+        Environment.NewLine, ev.Key);
+    }
+    
+    public void Close(Region region)
+    {
+      Console.WriteLine("{0}--- Received close event of region: {1}",
+        Environment.NewLine, region.Name);
+    }
+    public void AfterRegionDisconnected(Region region)
+    {
+      Console.WriteLine("{0}--- Received disconnected event of region: {1}",
+        Environment.NewLine, region.Name);
+    }
+    #endregion
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/CacheRunner/ComplexNumber.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/CacheRunner/ComplexNumber.cs b/geode-client-native/examples/clicache/CacheRunner/ComplexNumber.cs
new file mode 100644
index 0000000..8c36d7a
--- /dev/null
+++ b/geode-client-native/examples/clicache/CacheRunner/ComplexNumber.cs
@@ -0,0 +1,206 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *========================================================================
+ */
+
+using System;
+using System.Text.RegularExpressions;
+
+namespace GemStone.GemFire.Cache.Examples
+{
+  /// <summary>
+  /// A complex number -- no operations defined yet.
+  /// </summary>
+  public class ComplexNumber : ICacheableKey
+  {
+    #region Public Accessors
+
+    /// <summary>
+    /// The real portion of the complex number.
+    /// </summary>
+    public double Real
+    {
+      get
+      {
+        return m_real;
+      }
+      set
+      {
+        m_real = value;
+      }
+    }
+
+    /// <summary>
+    /// The imaginary portion of the complex number.
+    /// </summary>
+    public double Imaginary
+    {
+      get
+      {
+        return m_imaginary;
+      }
+      set
+      {
+        m_imaginary = value;
+      }
+    }
+
+    #endregion
+
+    #region Private members
+
+    private double m_real;
+    private double m_imaginary;
+
+    #endregion
+
+    #region Constructor and factory function
+
+    /// <summary>
+    /// Constructor.
+    /// </summary>
+    /// <param name="real">Real part</param>
+    /// <param name="imaginary">Imaginary part</param>
+    public ComplexNumber(double real, double imaginary)
+    {
+      m_real = real;
+      m_imaginary = imaginary;
+    }
+
+    /// <summary>
+    /// Factory function to be registered using
+    /// <see cref="Serializable.registerType" />.
+    /// </summary>
+    public static IGFSerializable Create()
+    {
+      return new ComplexNumber(0.0, 0.0);
+    }
+
+    #endregion
+
+    #region Serialization -- IGFSerializable members
+
+    /// <summary>
+    /// Read the complex number from the <see cref="DataInput" /> stream.
+    /// </summary>
+    /// <param name="input">The <c>DataInput</c> stream.</param>
+    /// <returns>A reference to <c>this</c> object.</returns>
+    public IGFSerializable FromData(DataInput input)
+    {
+      m_real = input.ReadDouble();
+      m_imaginary = input.ReadDouble();
+      return this;
+    }
+
+    /// <summary>
+    /// Write the complex number to the <see cref="DataOutput" /> stream.
+    /// </summary>
+    /// <param name="output">The <c>DataOutput</c> stream.</param>
+    public void ToData(DataOutput output)
+    {
+      output.WriteDouble(m_real);
+      output.WriteDouble(m_imaginary);
+    }
+
+    /// <summary>
+    /// return the size of this object in bytes
+    /// </summary>
+    public UInt32 ObjectSize
+    {
+      get
+      {
+        return (UInt32) (sizeof(double) + sizeof(double));
+      }
+    }
+
+    /// <summary>
+    /// Get the <see cref="IGFSerializable.ClassId" /> of this class.
+    /// </summary>
+    /// <returns>The classId.</returns>
+    public UInt32 ClassId
+    {
+      get
+      {
+        return 0x04;
+      }
+    }
+
+    #endregion
+
+    #region ICacheableKey Members
+
+    public bool Equals(ICacheableKey other)
+    {
+      ComplexNumber cOther = other as ComplexNumber;
+      if (cOther != null)
+      {
+        return (m_real == cOther.m_real) && (m_imaginary == cOther.m_imaginary);
+      }
+      return false;
+    }
+
+    /// <summary>
+    /// Gets the hashcode by XORing the hashcodes of real and imaginary parts
+    /// </summary>
+    public override int GetHashCode()
+    {
+      return m_real.GetHashCode() ^ m_imaginary.GetHashCode();
+    }
+
+    #endregion
+
+    #region Overridden System.Object members
+
+    /// <summary>
+    /// Check whether this <c>ComplexNumber</c> is equal to the given object.
+    /// </summary>
+    /// <param name="obj">The object to use compare to.</param>
+    /// <returns>True if the object is equal, false otherwise.</returns>
+    public override bool Equals(object obj)
+    {
+      if (obj is ComplexNumber)
+      {
+        ComplexNumber other = obj as ComplexNumber;
+        return (m_real == other.m_real) && (m_imaginary == other.m_imaginary);
+      }
+      return false;
+    }
+
+    /// <summary>
+    /// Get a string representation of the form 'a+bi' for this complex number.
+    /// </summary>
+    /// <returns>The string representation of this object.</returns>
+    public override string ToString()
+    {
+      return m_real.ToString() + '+' + m_imaginary.ToString() + 'i';
+    }
+
+    #endregion
+
+    #region Read string representation and create new ComplexNumber
+
+    /// <summary>
+    /// A convenience Parse method to get a ComplexNumber from a given string.
+    /// The format is expected to be of the form a+bi, such as "7+3.14i".
+    /// </summary>
+    /// <param name="s">The string to parse.</param>
+    /// <returns>The ComplexNumber that this string represents; null if format not correct.</returns>
+    public static ComplexNumber Parse(string s)
+    {
+      const string dbPat = @"([0-9]+)|([0-9]*\.[0-9]+)";
+      Match mt = Regex.Match(s, @"^\s*(?<REAL>" + dbPat + @")\s*\+\s*(?<IM>" + dbPat + @")i\s*$");
+      if (mt != null && mt.Length > 0)
+      {
+        double real = double.Parse(mt.Groups["REAL"].Value);
+        double imaginary = double.Parse(mt.Groups["IM"].Value);
+        return new ComplexNumber(real, imaginary);
+      }
+      return null;
+    }
+
+    #endregion
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/CacheRunner/ExampleObject.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/CacheRunner/ExampleObject.cs b/geode-client-native/examples/clicache/CacheRunner/ExampleObject.cs
new file mode 100755
index 0000000..897133f
--- /dev/null
+++ b/geode-client-native/examples/clicache/CacheRunner/ExampleObject.cs
@@ -0,0 +1,229 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *========================================================================
+ */
+
+/*
+ * @brief ExampleObject class for testing the put functionality for object. 
+ */
+
+using System;
+namespace GemStone.GemFire.Cache.Examples
+{
+  public class ExampleObject
+    : IGFSerializable
+  {
+    #region Private members
+    private double double_field;
+    private float  float_field;
+    private long  long_field;
+    private int  int_field;
+    private short  short_field;
+    private string  string_field;
+      private System.Collections.ArrayList string_vector = new System.Collections.ArrayList();
+    #endregion
+
+    #region Public accessors
+    public int Int_Field
+    {
+      get
+      {
+        return int_field;
+      }
+      set
+      {
+        int_field = value;
+      }
+    }
+    public short Short_Field
+    {
+      get
+      {
+        return short_field;
+      }
+      set
+      {
+        short_field = value;
+      }
+    }
+    public long Long_Field
+    {
+      get
+      {
+        return long_field;
+      }
+      set
+      {
+        long_field = value;
+      }
+    }
+    public float Float_Field
+    {
+      get
+      {
+        return float_field;
+      }
+      set
+      {
+        float_field = value;
+      }
+    }
+    public double Double_Field
+    {
+      get
+      {
+        return double_field;
+      }
+      set
+      {
+        double_field = value;
+      }
+    }
+    public string String_Field
+    {
+      get
+      {
+        return string_field;
+      }
+      set
+      {
+        string_field = value;
+      }
+    }
+    public System.Collections.ArrayList String_Vector
+    {
+      get
+      {
+        return string_vector;
+      }
+      set
+      {
+        string_vector = value;
+      }
+    }
+    public override string ToString()
+    {
+        string buffer = "ExampleObject: "+int_field+"(int),"+string_field+"(str),";
+        buffer += "[";
+        for (int idx = 0; idx < string_vector.Count; idx++)
+        {
+            buffer += string_vector[idx];
+        }
+        buffer += "(string_vector)]";
+        return buffer;
+    }
+    #endregion
+
+    #region Constructors
+    public ExampleObject()
+    {
+      double_field = (double)0.0;
+      float_field = (float)0.0;
+      long_field = 0;
+      int_field = 0;
+      short_field = 0;
+      string_field = "";
+      string_vector.Clear();
+    }
+
+    public ExampleObject(int id) {
+      int_field = id;
+      short_field = (Int16)id;
+      long_field = (Int64)id;
+      float_field = (float)id;
+      double_field = (double)id;
+      string_field = ""+id;
+      string_vector.Clear();
+      for (int i=0; i<3; i++) {
+        string_vector.Add(string_field);
+      }
+    }
+    public ExampleObject(string sValue) {
+      int_field = Int32.Parse(sValue);
+      long_field = Int64.Parse(sValue);
+      short_field = Int16.Parse(sValue);
+      double_field = (double)int_field;
+      float_field = (float)int_field;
+      string_field = sValue;
+      string_vector.Clear();
+      for (int i=0; i<3; i++) {
+        string_vector.Add(sValue);
+      }
+    }
+    #endregion
+
+    #region IGFSerializable Members
+    public IGFSerializable FromData(DataInput input)
+    {
+      double_field = input.ReadInt64();
+      float_field = input.ReadFloat();
+      long_field = input.ReadInt64();
+      int_field = input.ReadInt32();
+      short_field = input.ReadInt16();
+      string_field = input.ReadUTF();
+      int itemCount = input.ReadInt32();
+      string_vector.Clear();
+      for (int idx = 0; idx<itemCount; itemCount++) {
+          string_vector.Add(input.ReadUTF());
+      }
+      return this;
+    }
+
+    public void ToData(DataOutput output)
+    {
+      output.WriteDouble( double_field );
+      output.WriteFloat( float_field );
+      output.WriteInt64( long_field );
+      output.WriteInt32( int_field );
+      output.WriteInt16( short_field );
+      output.WriteUTF( string_field );
+      int itemCount = string_vector.Count;
+      output.WriteInt32( itemCount );
+      for( int idx = 0; idx < itemCount; idx++ ) {
+          string s = (string)string_vector[idx];
+        output.WriteUTF( s );
+      }
+    }
+
+    public UInt32 ObjectSize
+    {
+      get
+      {
+        UInt32 objectSize = 0;
+        objectSize += (UInt32)sizeof(double);
+        objectSize += (UInt32)sizeof(float);
+        objectSize += (UInt32)sizeof(Int64);
+        objectSize += (UInt32)sizeof(Int32);
+        objectSize += (UInt32)sizeof(Int16);
+        objectSize += (UInt32)(string_field == null ? 0 : sizeof(char) * string_field.Length);
+        objectSize += (UInt32)sizeof(Int32);
+        for (int idx = 0; idx<string_vector.Count; idx++) {
+            string s = (string)string_vector[idx];
+            objectSize += (UInt32)(string_vector[idx] == null ? 0 : sizeof(char) * s.Length);
+        }
+        return objectSize;
+      }
+    }
+
+    public UInt32 ClassId
+    {
+      get
+      {
+        return 0x2e;
+      }
+    }
+    #endregion
+
+    public static IGFSerializable CreateDeserializable()
+    {
+      return new ExampleObject();
+    }
+  }
+
+};
+
+
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/CacheRunner/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/CacheRunner/Properties/AssemblyInfo.cs b/geode-client-native/examples/clicache/CacheRunner/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..4fbf771
--- /dev/null
+++ b/geode-client-native/examples/clicache/CacheRunner/Properties/AssemblyInfo.cs
@@ -0,0 +1,33 @@
+\ufeffusing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("GemFireCacheRunner")]
+[assembly: AssemblyDescription("GemFire ThinClient PutGet Example")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("GemStone Systems Inc.")]
+[assembly: AssemblyProduct("GemFireCacheRunner")]
+[assembly: AssemblyCopyright("Copyright � GemStone Systems Inc. 2008")]
+[assembly: AssemblyTrademark("All Rights Reserved")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("bfe795a5-161f-4bb0-9694-f225e1f465be")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+[assembly: AssemblyVersion("9.0.0.0")]
+[assembly: AssemblyFileVersion("9.0.0.0")]


[32/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/GNUmakefile.execs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/GNUmakefile.execs b/geode-client-native/quickstart/cpp/GNUmakefile.execs
new file mode 100644
index 0000000..46e7a58
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/GNUmakefile.execs
@@ -0,0 +1,61 @@
+default: all
+
+
+SRC = $(wildcard *.cpp)
+EXECS = $(patsubst %.cpp,%,$(SRC))
+
+.PHONY: all clean
+all: $(EXECS)
+
+clean:
+	rm -rf $(EXECS)
+	rm -f *.o plugins/*.o queryobjects/*.o
+	rm -f *.d
+
+LoaderListenerWriter: LoaderListenerWriter.o \
+                      plugins/SimpleCacheLoader.o \
+                      plugins/SimpleCacheListener.o \
+                      plugins/SimpleCacheWriter.o
+
+DataExpiration: DataExpiration.o \
+                plugins/SimpleCacheListener.o
+
+DurableClient: DurableClient.o \
+               plugins/DurableCacheListener.o
+
+RemoteQuery: RemoteQuery.o \
+             queryobjects/Portfolio.o \
+             queryobjects/Position.o
+
+PoolRemoteQuery: PoolRemoteQuery.o \
+                 queryobjects/Portfolio.o \
+                 queryobjects/Position.o 
+
+CqQuery: CqQuery.o \
+         queryobjects/Portfolio.o \
+         queryobjects/Position.o
+
+PoolCqQuery: PoolCqQuery.o \
+             queryobjects/Portfolio.o \
+             queryobjects/Position.o
+
+PoolCqQuery: PoolCqQuery.o \
+             queryobjects/Portfolio.o \
+             queryobjects/Position.o
+
+PdxRemoteQuery: PdxRemoteQuery.o \
+                queryobjects/PortfolioPdx.o \
+                queryobjects/PositionPdx.o
+
+PdxAutoSerializer: PdxAutoSerializer.o \
+                   queryobjects/PortfolioPdxAuto.o \
+                   queryobjects/PositionPdxAuto.o  \
+                   queryobjects/testobject_PortfolioPdxAutoSerializable.o \
+                   queryobjects/testobject_PositionPdxAutoSerializable.o
+
+$(EXECS) : % : %.o
+	$(CXX) $(CXXLDFLAGS) $(CXXLIBS) -o $@ $^
+	
+-include $(SRC:.cpp=.d)
+
+include ../GNUmakefile.common

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/HACache.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/HACache.cpp b/geode-client-native/quickstart/cpp/HACache.cpp
new file mode 100644
index 0000000..df776f9
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/HACache.cpp
@@ -0,0 +1,100 @@
+/*
+ * The HA QuickStart Example.
+ *
+ * This example takes the following steps:
+ *
+ * 1. Create a GemFire Cache with redundancy level = 1.
+ * 2. Get the example Region from the Cache.
+ * 3. Call registerKeys() on the Region.
+ * 4. Call registerRegex() on the Region.
+ * 5. Put two keys in the Region.
+ * 6. Verify that the keys are destroyed via expiration in server.
+ * 7. Close the Cache.
+ *
+ */
+
+// Include the GemFire library.
+#include <gfcpp/GemfireCppCache.hpp>
+
+// Use the "gemfire" namespace.
+using namespace gemfire;
+
+// The HA QuickStart example.
+int main(int argc, char ** argv)
+{
+  try
+  {
+    CacheFactoryPtr cacheFactory = CacheFactory::createCacheFactory();
+
+    LOGINFO("Connected to the GemFire Distributed System");
+
+    // Create a GemFire Cache with the "clientHACache.xml" Cache XML file.
+    CachePtr cachePtr = cacheFactory->set("cache-xml-file", "XMLs/clientHACache.xml")
+                  ->addServer("localhost", 40404)
+                  ->addServer("localhost", 40405)
+                  ->setSubscriptionRedundancy(1)
+                  ->setSubscriptionEnabled(true)
+                  ->create();
+
+    LOGINFO("Created the GemFire Cache");
+
+    // Get the example Region from the Cache which is declared in the Cache XML file.
+    RegionPtr regionPtr = cachePtr->getRegion("exampleRegion");
+
+    LOGINFO("Obtained the Region from the Cache");
+
+    // Register and Unregister Interest on Region for Some Keys.
+    VectorOfCacheableKey keys;
+    CacheableKeyPtr key1 = CacheableInt32::create(123);
+    CacheableKeyPtr key2 = CacheableString::create("Key-123");
+    keys.push_back( key1 );
+    keys.push_back( key2 );
+    regionPtr->registerKeys(keys);
+    regionPtr->registerRegex("Key.*");
+
+    LOGINFO("Called registerKeys() and registerKeysRegex()");
+
+    regionPtr->put(key1, 1);
+    regionPtr->put(key2, 2);
+
+    LOGINFO("Called put() on Region");
+
+    LOGINFO("Waiting for updates on keys");
+    millisleep(10000);
+
+    int count=0;
+
+    if (regionPtr->get(key1) == NULLPTR) {
+      LOGINFO("Verified that key1 has been destroyed");
+      count++;
+    }
+
+    if (regionPtr->get(key2) == NULLPTR) {
+      LOGINFO("Verified that key2 has been destroyed");
+      count++;
+    }
+
+    if (count == 2) {
+      LOGINFO("Verified all updates");
+    }
+    else {
+      LOGINFO("Could not verify all updates");
+    }
+
+    regionPtr->unregisterKeys(keys);
+    regionPtr->unregisterRegex("Key.*");
+
+    LOGINFO("Unregistered keys");
+
+    // Close the GemFire Cache.
+    cachePtr->close();
+
+    LOGINFO("Closed the GemFire Cache");
+  }
+  // An exception should not occur
+  catch(const Exception & gemfireExcp)
+  {
+    LOGERROR("HACache GemFire Exception: %s", gemfireExcp.getMessage());
+  }
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/LoaderListenerWriter.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/LoaderListenerWriter.cpp b/geode-client-native/quickstart/cpp/LoaderListenerWriter.cpp
new file mode 100644
index 0000000..298059d
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/LoaderListenerWriter.cpp
@@ -0,0 +1,88 @@
+/*
+ * The LoaderListenerWriter QuickStart Example.
+ *
+ * This example takes the following steps:
+ *
+ *  1. Create a GemFire Cache.
+ *  2. Get the example Region from the Cache.
+ *  3. Set the SimpleCacheLoader, SimpleCacheListener and SimpleCacheWriter plugins on the Region.
+ *  4. Put 3 Entries into the Region.
+ *  5. Update an Entry in the Region.
+ *  6. Destroy an Entry in the Region.
+ *  7. Invalidate an Entry in the Region.
+ *  8. Get a new Entry from the Region.
+ *  9. Get the destroyed Entry from the Region.
+ * 10. Close the Cache.
+ *
+ */
+
+// Include the GemFire library.
+#include <gfcpp/GemfireCppCache.hpp>
+
+// Include the SimpleCacheLoader, SimpleCacheListener and SimpleCacheWriter plugins.
+#include "plugins/SimpleCacheLoader.hpp"
+#include "plugins/SimpleCacheListener.hpp"
+#include "plugins/SimpleCacheWriter.hpp"
+
+// Use the "gemfire" namespace.
+using namespace gemfire;
+
+// The LoaderListenerWriter QuickStart example.
+int main(int argc, char ** argv)
+{
+  try
+  {
+    CacheFactoryPtr cacheFactory = CacheFactory::createCacheFactory();
+
+    // Create a GemFire Cache with the "clientLoaderListenerWriter.xml" Cache XML file.
+    CachePtr cachePtr = cacheFactory->set("cache-xml-file", "XMLs/clientLoaderListenerWriter.xml")->create();
+
+    LOGINFO("Created the GemFire Cache");
+
+    // Get the example Region from the Cache which is declared in the Cache XML file.
+    RegionPtr regionPtr =cachePtr->getRegion("exampleRegion");
+
+    LOGINFO("Obtained the Region from the Cache");
+
+    // Plugin the SimpleCacheLoader, SimpleCacheListener and SimpleCacheWrite to the Region.
+    AttributesMutatorPtr attrMutatorPtr = regionPtr->getAttributesMutator();
+    attrMutatorPtr->setCacheLoader(CacheLoaderPtr(new SimpleCacheLoader()));
+    attrMutatorPtr->setCacheListener(CacheListenerPtr(new SimpleCacheListener()));
+    attrMutatorPtr->setCacheWriter(CacheWriterPtr(new SimpleCacheWriter()));
+
+    LOGINFO("Attached the simple plugins on the Region");
+
+    // The following operations should cause the plugins to print the events.
+
+    // Put 3 Entries into the Region.
+    regionPtr->put("Key1", "Value1");
+    regionPtr->put("Key2", "Value2");
+    regionPtr->put("Key3", "Value3");
+
+    // Update Key3.
+    regionPtr->put("Key3", "Value3-updated");
+
+    // Destroy Key3.
+    regionPtr->destroy("Key3");
+
+    // Invalidate Key2.
+    regionPtr->invalidate("Key2");
+
+    // Get a new Key.
+    regionPtr->get("Key4");
+
+    // Get a destroyed Key.
+    regionPtr->get("Key3");
+
+    // Close the GemFire Cache.
+    cachePtr->close();
+
+    LOGINFO("Closed the GemFire Cache");
+  }
+  // An exception should not occur
+  catch(const Exception & gemfireExcp)
+  {
+    LOGERROR("LoaderListenerWriter GemFire Exception: %s", gemfireExcp.getMessage());
+  }
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/MultiuserSecurity.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/MultiuserSecurity.cpp b/geode-client-native/quickstart/cpp/MultiuserSecurity.cpp
new file mode 100755
index 0000000..f69cb8d
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/MultiuserSecurity.cpp
@@ -0,0 +1,185 @@
+/*
+ * The MultiuserSecurityExample QuickStart Example.
+ *
+ * This example takes the following steps:
+ *
+ * 1. Create a GemFire Cache with multiuser enabled.
+ * 2. Creates userCache using user "root". Who is authorized to do get and put operations.
+ * 3. Creates userCache using user "writer2". Who is authorized to do only put operation. It tries to do get operation and gets NotAuthorizedException.
+ * 4.  Close the Cache.
+ *
+ */
+
+
+// Include the GemFire library.
+#include <gfcpp/GemfireCppCache.hpp>
+
+// Use the "gemfire" namespace.
+using namespace gemfire;
+
+char* getFuncIName = (char*)"MultiGetFunctionI";
+
+void runWithUserRoot(CachePtr cachePtr)
+{
+  //user root's credential who is authorized to do put/get operations
+  PropertiesPtr credentials = Properties::create();
+
+  credentials->insert("security-username", "root");
+  credentials->insert("security-password", "root");
+  
+  // Create user cache by passing credentials
+  RegionServicePtr userCache1 = cachePtr->createAuthenticatedView( credentials );
+
+  // Create region using usercache
+  RegionPtr regionPtr1 = userCache1->getRegion("partition_region");
+
+  LOGINFO("Obtained the Region from the Cache");
+  
+  CacheableKeyPtr key = CacheableKey::create("Key1");
+  
+  //doing operation on behalf of user "writer2"
+  regionPtr1->put(key, "Value1");
+  
+  LOGINFO("Entry created in the Region"); 
+
+  // Get Entries back out of the Region.
+  CacheablePtr result1Ptr = regionPtr1->get(key);
+
+  //to execute function on server
+  bool getResult = true;
+  CacheableVectorPtr routingObj = CacheableVector::create();
+  
+  routingObj->push_back(key);
+    
+  //test data independant function with result on one server
+  LOGINFO("test data independant function with result on one server");
+  CacheablePtr args = routingObj;
+  char buf[128];
+ 
+ ExecutionPtr exc = FunctionService::onServer(userCache1);
+  
+  CacheableVectorPtr executeFunctionResult = 
+         exc->withArgs(args)->execute(getFuncIName, getResult)->getResult();
+  CacheableVectorPtr resultList = CacheableVector::create();
+  if(executeFunctionResult==NULLPTR)
+  {
+    LOGINFO("get executeFunctionResult is NULL");
+  } 
+  else 
+  {      
+    for (int item=0; item < executeFunctionResult->size(); item++)
+    {
+      CacheableArrayListPtr arrayList = dynCast<CacheableArrayListPtr>(executeFunctionResult->operator[](item));
+      for (int pos=0; pos < arrayList->size(); pos++)
+      {
+        resultList->push_back(arrayList->operator[](pos));
+      }
+    }
+    sprintf(buf, "get: result count = %d", resultList->size());
+    LOGINFO(buf);
+    
+    for(int i=0; i < resultList->size(); i++)
+    {
+       sprintf(buf, "get result[%d]=%s", i, dynCast<CacheableStringPtr>(resultList->operator[](i))->asChar());
+       LOGINFO(buf);
+    }
+  }
+  //test for Query
+  
+  // Execute a Query which returns a ResultSet.
+  QueryServicePtr qrySvcPtr = userCache1->getQueryService();
+  QueryPtr qryPtr = qrySvcPtr->newQuery("SELECT DISTINCT * FROM /partition_region");
+  SelectResultsPtr resultsPtr = qryPtr->execute();
+
+  LOGINFO("ResultSet Query returned %d rows", resultsPtr->size());
+
+  //close the user cache
+  userCache1->close();
+  
+  LOGINFO("User root done put/get ops successfully");
+}
+
+void runWithUserWriter(CachePtr cachePtr)
+{
+    //user writer2's credentials who is authorixed to do only put operation
+  PropertiesPtr credentials = Properties::create();
+
+  credentials->insert("security-username", "writer2");
+  credentials->insert("security-password", "writer2");
+
+  // Create user cache by passing credentials
+  RegionServicePtr userCache2 = cachePtr->createAuthenticatedView( credentials );
+
+  // Create region using usercache
+  RegionPtr regionPtr2 = userCache2->getRegion("partition_region");
+
+  LOGINFO("Entry created in the Region");
+
+  bool gotException = false;
+  try {    
+    // Get Entries back out of the Region.
+    CacheablePtr result1Ptr = regionPtr2->get("Key1");
+     
+    //collect NotAuthorized exception
+  } catch (const gemfire::NotAuthorizedException& expected) {
+    gotException = true;
+    LOGINFO("Got expected authorization failure while obtaining the Entry: %s", expected.getMessage());    
+  }
+  
+  //close the user cache
+  userCache2->close();
+  
+  if (gotException)
+  {
+    LOGINFO("Got expected authorization exception while user writer2 was doing get operation.");
+  }
+  else
+  {
+    LOGINFO("Failed:  Didn't get expected authorization exception while user writer2 was doing get operation.");
+  }
+}
+
+// The MultiuserSecurityExample QuickStart example.
+int main(int argc, char ** argv)
+{
+  try
+  {
+    PropertiesPtr secProp = Properties::create();
+    
+    //By setting this property client will send credential in encrypted form.
+    //to do this one need to setup OpenSSL.
+    //secProp->insert("security-client-dhalgo", "Blowfish:128");
+      
+    // Connect to the GemFire Distributed System using the settings from the gfcpp.properties file by default, programatically
+    // overriding secProp properties.
+    
+    // Create a GemFire Cache.
+    CacheFactoryPtr cacheFactory = CacheFactory::createCacheFactory(secProp);
+    
+    CachePtr cachePtr = cacheFactory->setMultiuserAuthentication(true)->create();       
+    
+    LOGINFO("Created the Gemfire Cache with multiuser enable.");
+    
+    RegionFactoryPtr regionFactory = cachePtr->createRegionFactory(PROXY);
+    
+    LOGINFO("Created the RegionFactory");
+    
+    // Create the example Region Programmatically.
+    RegionPtr regionPtr = regionFactory->create("partition_region");    
+    
+    runWithUserRoot(cachePtr);
+    
+    runWithUserWriter(cachePtr);
+    
+    // Close the GemFire Cache.
+    cachePtr->close();
+    
+    LOGINFO("Closed the GemFire Cache");    
+  }
+  // An exception should not occur
+  catch(const Exception & gemfireExcp)
+  {    
+    LOGERROR("FAILED:MultiuserSecurityExample GemFire Exception: %s", gemfireExcp.getMessage());
+  }
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/PdxAutoSerializer.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/PdxAutoSerializer.cpp b/geode-client-native/quickstart/cpp/PdxAutoSerializer.cpp
new file mode 100644
index 0000000..2f3c92f
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/PdxAutoSerializer.cpp
@@ -0,0 +1,123 @@
+/*
+ * The PoolRemoteQuery QuickStart Example.
+ * This examples creates pool using locator.
+ * This example takes the following steps:
+ *
+ * 1. Create a GemFire Cache.
+ * 2. Get the example Region from the Pool.
+ * 3. Populate some Pdx Type query objects on the Region.
+ * 4. Get the pool, get the Query Service from Cache. Pool is define in clientPdxRemoteQuery.xml. Pool has locator to get the server. Apart from that pool is bind to server group "ServerGroup1".
+ * 5. Execute a query that returns a Result Set.
+ * 6. Execute a query that returns a Struct Set.
+ * 7. Execute the region shortcut/convenience query methods.
+ * 8. Close the Cache.
+ *
+ */
+
+// Include the GemFire library.
+#include <gfcpp/GemfireCppCache.hpp>
+
+// Include our Query objects, viz. PortfolioPdx and PositionPdx.
+#include "queryobjects/PortfolioPdxAuto.hpp"
+#include "queryobjects/PositionPdxAuto.hpp"
+
+// Use the "gemfire" namespace.
+using namespace gemfire;
+
+// Use the "testobject" namespace for the query objects.
+using namespace testobject;
+
+// The PdxRemoteQuery QuickStart example.
+int main(int argc, char ** argv)
+{
+  try
+  {
+
+    CacheFactoryPtr cacheFactory = CacheFactory::createCacheFactory();
+
+    // Create a GemFire Cache with the "clientPdxRemoteQuery.xml" Cache XML file.
+    //CachePtr cachePtr = cacheFactory->set("cache-xml-file", "XMLs/clientPdxAutoSerializer.xml")->create();
+    CachePtr cachePtr = cacheFactory->set("cache-xml-file", "XMLs/clientPdxAutoSerializer.xml")->create();
+
+    LOGINFO("Created the GemFire Cache");
+
+    // Get the example Region from the Cache which is declared in the Cache XML file.
+    RegionPtr regionPtr = cachePtr->getRegion("Portfolios");
+
+    LOGINFO("Obtained the Region from the Cache");
+
+    // Register our Serializable/Cacheable Query objects, viz. PortfolioPdx and PositionPdx.
+    Serializable::registerPdxType( PortfolioPdxAuto::createDeserializable);
+    Serializable::registerPdxType( PositionPdxAuto::createDeserializable);
+
+    LOGINFO("Registered PDX Type Query Objects");
+
+    // Populate the Region with some Pdx Type objects, i.e PortfolioPdx objects.
+    PortfolioPdxPtr port1Ptr(new PortfolioPdxAuto(1 /*ID*/, 10 /*size*/));
+    PortfolioPdxPtr port2Ptr(new PortfolioPdxAuto(2 /*ID*/, 20 /*size*/));
+    PortfolioPdxPtr port3Ptr(new PortfolioPdxAuto(3 /*ID*/, 30 /*size*/));
+    regionPtr->put("Key1", port1Ptr);
+    regionPtr->put("Key2", port2Ptr);
+    regionPtr->put("Key3", port3Ptr);
+
+    LOGINFO("Populated some PortfolioPdx Objects");
+
+    // Get the QueryService from the Cache.
+    QueryServicePtr qrySvcPtr = cachePtr->getQueryService("examplePool");
+
+    LOGINFO("Got the QueryService from the Cache");
+
+    PortfolioPdxPtr port4Ptr = regionPtr->get("Key1");
+
+    // Execute a Query which returns a ResultSet.
+    QueryPtr qryPtr = qrySvcPtr->newQuery("SELECT DISTINCT * FROM /Portfolios");
+    SelectResultsPtr resultsPtr = qryPtr->execute();
+
+    LOGINFO("ResultSet Query returned %d rows", resultsPtr->size());
+
+    // Execute a Query which returns a StructSet.
+    qryPtr = qrySvcPtr->newQuery("SELECT DISTINCT id, status FROM /Portfolios WHERE id > 1");
+    resultsPtr = qryPtr->execute();
+
+    LOGINFO("StructSet Query returned %d rows", resultsPtr->size());
+
+    // Iterate through the rows of the query result.
+    int rowCount = 0;
+    SelectResultsIterator iter = resultsPtr->getIterator();
+    while (iter.hasNext())
+    {
+      rowCount++;
+      Struct * psi = dynamic_cast<Struct*>( iter.next().ptr() );
+      LOGINFO("Row %d Column 1 is named %s, value is %s", rowCount, psi->getFieldName(0), (*psi)[0]->toString()->asChar());
+      LOGINFO("Row %d Column 2 is named %s, value is %S", rowCount, psi->getFieldName(1), (*psi)[1]->toString()->asWChar());
+    }
+
+    // Execute a Region Shortcut Query (convenience method).
+    resultsPtr = regionPtr->query("id = 2");
+
+    LOGINFO("Region Query returned %d rows", resultsPtr->size());
+
+    // Execute the Region selectValue() API.
+    SerializablePtr resultPtr = regionPtr->selectValue("id = 3");
+    PortfolioPdxPtr portPtr = dynCast<PortfolioPdxPtr>(resultPtr);
+
+    LOGINFO("Region selectValue() returned an item:\n %s", portPtr->toString()->asChar());
+
+    // Execute the Region existsValue() API.
+    bool existsValue = regionPtr->existsValue("id = 4");
+
+    LOGINFO("Region existsValue() returned %s", existsValue ? "true" : "false");
+
+    // Close the GemFire Cache.
+    cachePtr->close();
+
+    LOGINFO("Closed the GemFire Cache");
+
+  }
+  // An exception should not occur
+  catch(const Exception & gemfireExcp)
+  {
+    LOGERROR("PdxAutoSerializer GemFire Exception: %s", gemfireExcp.getMessage());
+  }
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/PdxInstance.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/PdxInstance.cpp b/geode-client-native/quickstart/cpp/PdxInstance.cpp
new file mode 100644
index 0000000..501a7c9
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/PdxInstance.cpp
@@ -0,0 +1,125 @@
+/*
+* The PdxInstance QuickStart Example.
+* This example takes the following steps:
+*
+* This example shows PdxInstanceFactory and PdxInstance usage. 
+*
+* 1. Create a GemFire Cache.
+* 2. Creates the PdxInstanceFactory for Person class.
+* 3. Then creates instance of PdxInstance
+* 4. It does put.
+* 5. Then it does get and access it fields.
+* 6. Close the Cache.
+*
+*/
+
+
+// Include the GemFire library.
+#include <gfcpp/GemfireCppCache.hpp>
+
+// Use the "gemfire" namespace.
+using namespace gemfire;
+
+class Person
+{
+private:
+  char* m_name;
+  int m_id;
+  int m_age;
+
+public:
+  Person() { }
+
+  Person(char* name, int id, int age)
+  {
+    m_name = name;
+    m_id = id;
+    m_age = age;
+  }
+
+  char* getName() const
+  {
+    return m_name;
+  }
+  int getID()
+  {
+    return m_id;
+  }
+  int getAge()
+  {
+    return m_age;
+  }
+};
+
+// The PdxInstance QuickStart example.
+int main(int argc, char ** argv)
+{
+  try
+  {
+    // Create a GemFire Cache.
+    CacheFactoryPtr cacheFactory = CacheFactory::createCacheFactory();
+
+    CachePtr cachePtr = cacheFactory->set("cache-xml-file", "XMLs/clientPdxInstance.xml")->create();          
+
+    LOGINFO("Created the GemFire Cache");
+
+    // Get the example Region from the Cache which is declared in the Cache XML file.
+    RegionPtr regionPtr = cachePtr->getRegion("Person");       
+
+    LOGINFO("Obtained the Region from the Cache.");
+ 
+    Person* p = new Person("Jack", 7, 21);
+
+    //PdxInstanceFactory for Person class
+    PdxInstanceFactoryPtr pif = cachePtr->createPdxInstanceFactory("Person");
+    LOGINFO("Created PdxInstanceFactory for Person class");
+
+    pif->writeString("m_name", p->getName());
+    pif->writeInt("m_id", p->getID());
+    pif->markIdentityField("m_id");
+    pif->writeInt("m_age", p->getAge());
+
+    PdxInstancePtr pdxInstance = pif->create();
+
+    LOGINFO("Created PdxInstance for Person class");
+
+    regionPtr->put("Key1", pdxInstance);    
+
+    LOGINFO("Populated PdxInstance Object");
+
+    PdxInstancePtr retPdxInstance = regionPtr->get("Key1");
+
+    LOGINFO("Got PdxInstance Object");
+
+    int id = 0;
+    retPdxInstance->getField("m_id", id);
+
+    int age = 0;
+    retPdxInstance->getField("m_age", age);
+
+    char* name = NULL;
+    retPdxInstance->getField("m_name", &name);
+
+    if(id == p->getID()&& age == p->getAge() && strcmp(name, p->getName()) == 0
+        && retPdxInstance->isIdentityField("m_id")) {
+      LOGINFO("PdxInstance returns all fields value expected");
+    }
+    else {
+      LOGINFO("PdxInstance doesn't returns all fields value expected");
+    }
+
+    delete p;
+
+    // Close the GemFire Cache.
+    cachePtr->close();
+
+    LOGINFO("Closed the GemFire Cache");
+
+  }
+  // An exception should not occur
+  catch(const Exception & gemfireExcp)
+  {    
+    LOGERROR("PdxInstance GemFire Exception: %s", gemfireExcp.getMessage());
+  }
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/PdxRemoteQuery.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/PdxRemoteQuery.cpp b/geode-client-native/quickstart/cpp/PdxRemoteQuery.cpp
new file mode 100644
index 0000000..c9ebeca
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/PdxRemoteQuery.cpp
@@ -0,0 +1,120 @@
+/*
+ * The PoolRemoteQuery QuickStart Example.
+ * This examples creates pool using locator.
+ * This example takes the following steps:
+ *
+ * 1. Create a GemFire Cache.
+ * 2. Get the example Region from the Pool.
+ * 3. Populate some Pdx Type query objects on the Region.
+ * 4. Get the pool, get the Query Service from Cache. Pool is define in clientPdxRemoteQuery.xml. Pool has locator to get the server. Apart from that pool is bind to server group "ServerGroup1".
+ * 5. Execute a query that returns a Result Set.
+ * 6. Execute a query that returns a Struct Set.
+ * 7. Execute the region shortcut/convenience query methods.
+ * 8. Close the Cache.
+ *
+ */
+
+// Include the GemFire library.
+#include <gfcpp/GemfireCppCache.hpp>
+
+// Include our Query objects, viz. PortfolioPdx and PositionPdx.
+#include "queryobjects/PortfolioPdx.hpp"
+#include "queryobjects/PositionPdx.hpp"
+
+// Use the "gemfire" namespace.
+using namespace gemfire;
+
+// Use the "testobject" namespace for the query objects.
+using namespace testobject;
+
+// The PdxRemoteQuery QuickStart example.
+int main(int argc, char ** argv)
+{
+  try
+  {
+
+    CacheFactoryPtr cacheFactory = CacheFactory::createCacheFactory();
+
+    // Create a GemFire Cache with the "clientPdxRemoteQuery.xml" Cache XML file.
+    CachePtr cachePtr = cacheFactory->set("cache-xml-file", "XMLs/clientPdxRemoteQuery.xml")->create();
+
+    LOGINFO("Created the GemFire Cache");
+
+    // Get the example Region from the Cache which is declared in the Cache XML file.
+    RegionPtr regionPtr = cachePtr->getRegion("Portfolios");
+
+    LOGINFO("Obtained the Region from the Cache");
+
+    // Register our Serializable/Cacheable Query objects, viz. PortfolioPdx and PositionPdx.
+    Serializable::registerPdxType( PortfolioPdx::createDeserializable);
+    Serializable::registerPdxType( PositionPdx::createDeserializable);
+
+    LOGINFO("Registered PDX Type Query Objects");
+
+    // Populate the Region with some Pdx Type objects, i.e PortfolioPdx objects.
+    PortfolioPdxPtr port1Ptr(new PortfolioPdx(1 /*ID*/, 10 /*size*/));
+    PortfolioPdxPtr port2Ptr(new PortfolioPdx(2 /*ID*/, 20 /*size*/));
+    PortfolioPdxPtr port3Ptr(new PortfolioPdx(3 /*ID*/, 30 /*size*/));
+    regionPtr->put("Key1", port1Ptr);
+    regionPtr->put("Key2", port2Ptr);
+    regionPtr->put("Key3", port3Ptr);
+
+    LOGINFO("Populated some PortfolioPdx Objects");
+
+    // Get the QueryService from the Cache.
+    QueryServicePtr qrySvcPtr = cachePtr->getQueryService("examplePool");
+
+    LOGINFO("Got the QueryService from the Cache");
+
+    // Execute a Query which returns a ResultSet.
+    QueryPtr qryPtr = qrySvcPtr->newQuery("SELECT DISTINCT * FROM /Portfolios");
+    SelectResultsPtr resultsPtr = qryPtr->execute();
+
+    LOGINFO("ResultSet Query returned %d rows", resultsPtr->size());
+
+    // Execute a Query which returns a StructSet.
+    qryPtr = qrySvcPtr->newQuery("SELECT DISTINCT ID, status FROM /Portfolios WHERE ID > 1");
+    resultsPtr = qryPtr->execute();
+
+    LOGINFO("StructSet Query returned %d rows", resultsPtr->size());
+
+    // Iterate through the rows of the query result.
+    int rowCount = 0;
+    SelectResultsIterator iter = resultsPtr->getIterator();
+    while (iter.hasNext())
+    {
+      rowCount++;
+      Struct * psi = dynamic_cast<Struct*>( iter.next().ptr() );
+      LOGINFO("Row %d Column 1 is named %s, value is %s", rowCount, psi->getFieldName(0), (*psi)[0]->toString()->asChar());
+      LOGINFO("Row %d Column 2 is named %s, value is %S", rowCount, psi->getFieldName(1), (*psi)[1]->toString()->asWChar());
+    }
+
+    // Execute a Region Shortcut Query (convenience method).
+    resultsPtr = regionPtr->query("ID = 2");
+
+    LOGINFO("Region Query returned %d rows", resultsPtr->size());
+
+    // Execute the Region selectValue() API.
+    SerializablePtr resultPtr = regionPtr->selectValue("ID = 3");
+    PortfolioPdxPtr portPtr = dynCast<PortfolioPdxPtr>(resultPtr);
+
+    LOGINFO("Region selectValue() returned an item:\n %s", portPtr->toString()->asChar());
+
+    // Execute the Region existsValue() API.
+    bool existsValue = regionPtr->existsValue("ID = 4");
+
+    LOGINFO("Region existsValue() returned %s", existsValue ? "true" : "false");
+
+    // Close the GemFire Cache.
+    cachePtr->close();
+
+    LOGINFO("Closed the GemFire Cache");
+
+  }
+  // An exception should not occur
+  catch(const Exception & gemfireExcp)
+  {
+    LOGERROR("PdxRemoteQuery GemFire Exception: %s", gemfireExcp.getMessage());
+  }
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/PdxSerializer.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/PdxSerializer.cpp b/geode-client-native/quickstart/cpp/PdxSerializer.cpp
new file mode 100644
index 0000000..8f5ce06
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/PdxSerializer.cpp
@@ -0,0 +1,254 @@
+/*
+* The PdxSerializer QuickStart Example.
+* This example takes the following steps:
+*
+* This example shows PdxSerializer usage. 
+*
+* 1. Create a GemFire Cache.
+* 2. Get the Person from the Cache.
+* 3. Populate some query Person objects on the Region.
+* 4. Get the pool, get the Query Service from Pool. Pool is define in clientPdxSerializer.xml. 
+* 5. Execute a query that returns a Result Set.
+* 6. Execute a query that returns a Struct Set.
+* 7. Execute the region shortcut/convenience query methods.
+* 8. Close the Cache.
+*
+*/
+
+
+// Include the GemFire library.
+#include <gfcpp/GemfireCppCache.hpp>
+
+// Use the "gemfire" namespace.
+using namespace gemfire;
+
+static const char * CLASSNAME = "com.example.Person";
+
+//This demonstrates Person domain class
+class Person
+{
+private:
+  char* m_name;    
+  int m_id;
+  int m_age;
+
+public:
+  Person() { }
+
+  Person(char* name, int id, int age)
+  {
+    m_name = name;
+    m_id = id;
+    m_age = age;
+  }
+
+  char* getName() const
+  {
+    return m_name;
+  }
+  int getID()
+  {
+    return m_id;
+  }
+  int getAge()
+  {
+    return m_age;
+  }
+  void setName(char* name)
+  {
+    m_name = name;
+  }
+  void setID(int id)
+  {
+    m_id = id;
+  }
+  void setAge(int age)
+  {
+    m_age = age;
+  }
+};
+
+//This demonstrates, how to extend PdxSerializer without modifying Person domain object, necessary for serialization/desrialization to PDX format.
+class PersonPdxSerializer : public PdxSerializer
+{
+public:
+
+  static void deallocate(void * testObject, const char * className)
+  {    
+    LOGINFO("PersonPdxSerializer::deallocate called");
+    if (strcmp(className, CLASSNAME) == 0) {
+      Person* per = reinterpret_cast<Person*>(testObject);
+      delete per;
+    }
+  }
+
+  static uint32_t objectSize(void * testObject, const char * className)
+  {    
+    LOGINFO("PersonPdxSerializer::objectSize called");
+    if (strcmp(className, CLASSNAME) == 0) {
+      Person* per = reinterpret_cast<Person*>(testObject);
+      uint32_t size = 0;
+      size += sizeof(Person);
+      if (per->getName() != NULL) {
+        size += strlen(per->getName());
+      }
+      return size;
+    }
+    return 0;
+  }
+
+  UserDeallocator getDeallocator(const char * className)
+  {    
+    if (strcmp(className, CLASSNAME) == 0) {
+      return deallocate;
+    }
+    return NULL;
+  }
+
+  UserObjectSizer getObjectSizer(const char * className)
+  {   
+    if (strcmp(className, CLASSNAME) == 0) {
+      return objectSize;
+    }
+    return NULL;
+  }
+
+  void * fromData(const char * className, PdxReaderPtr pr)
+  { 
+    if (strcmp(className, CLASSNAME) == 0) {
+      Person* per = new Person();
+
+      try
+      {
+        per->setID(pr->readInt("m_id"));
+        per->setAge(pr->readInt("m_age"));
+        per->setName(pr->readString("m_name"));
+      }
+      catch (...)
+      {
+        return NULL;
+      }
+      return (void*) per;
+    }
+    return NULL;    
+  }  
+
+  bool toData(void * testObject, const char * className, PdxWriterPtr pw)
+  {
+    if (strcmp(className, CLASSNAME) == 0) {
+
+      Person* per = reinterpret_cast<Person*>(testObject);
+
+      try
+      {
+        pw->writeInt("m_id" ,per->getID());
+        pw->writeInt("m_age" ,per->getAge());
+        pw->writeString("m_name" ,per->getName());
+      }
+      catch (...)
+      {
+        return false;
+      }
+      return true;
+    }    
+    return false;
+  }
+};
+
+// This PdxSerializer QuickStart example demonstrartes query on .NET objects without having corresponding java classes at server.
+int main(int argc, char ** argv)
+{
+  try
+  {
+    // Create a GemFire Cache.
+    CacheFactoryPtr cacheFactory = CacheFactory::createCacheFactory();
+
+    // Create a GemFire Cache with the "clientPdxSerializer.xml" Cache XML file.
+    CachePtr cachePtr = cacheFactory->set("cache-xml-file", "XMLs/clientPdxSerializer.xml")->create();          
+
+    LOGINFO("Created the GemFire Cache");
+
+    // Get the example Region from the Cache which is declared in the Cache XML file.
+    RegionPtr regionPtr = cachePtr->getRegion("Person");       
+
+    LOGINFO("Obtained the Region from the Cache.");
+
+    // Register PersonPdxSerializer to serialize the domain types(Person class) as pdx format
+    Serializable::registerPdxSerializer(PdxSerializerPtr(new PersonPdxSerializer));    
+    LOGINFO("Registered Person Query Objects");
+
+    // Populate the Region with some Person objects.
+    Person* p1 = new Person("John", 1 /*ID*/, 23 /*age*/);
+    PdxWrapperPtr pdxobj1(new PdxWrapper(p1, CLASSNAME));
+    regionPtr->put("Key1", pdxobj1);
+
+    Person* p2 = new Person("Jack", 2 /*ID*/, 20 /*age*/);
+    PdxWrapperPtr pdxobj2(new PdxWrapper(p2, CLASSNAME));
+    regionPtr->put("Key2", pdxobj2);
+
+    Person* p3 = new Person("Tony", 3 /*ID*/, 35 /*age*/);
+    PdxWrapperPtr pdxobj3(new PdxWrapper(p3, CLASSNAME));
+    regionPtr->put("Key3", pdxobj3);
+
+    LOGINFO("Populated some Person Objects through PdxWrapper");
+
+    //find the pool
+    PoolPtr poolPtr = PoolManager::find("examplePool");
+
+    // Get the QueryService from the Pool.
+    QueryServicePtr qrySvcPtr = poolPtr->getQueryService();
+
+    LOGINFO("Got the QueryService from the Pool");
+
+    // Execute a Query which returns a ResultSet.    
+    QueryPtr qryPtr = qrySvcPtr->newQuery("SELECT DISTINCT * FROM /Person");
+    SelectResultsPtr resultsPtr = qryPtr->execute();
+
+    LOGINFO("ResultSet Query returned %d rows", resultsPtr->size());
+
+    // Execute a Query which returns a StructSet.
+    qryPtr = qrySvcPtr->newQuery("SELECT m_name, m_age FROM /Person WHERE m_id = 1");
+    resultsPtr = qryPtr->execute();
+
+    LOGINFO("StructSet Query returned %d rows", resultsPtr->size());
+
+    // Iterate through the rows of the query result.
+    int rowCount = 0;
+    SelectResultsIterator iter = resultsPtr->getIterator();
+    while (iter.hasNext())
+    {
+      rowCount++;
+      Struct * psi = dynamic_cast<Struct*>( iter.next().ptr() );
+      LOGINFO("Row %d Column 1 is named %s, value is %S", rowCount, psi->getFieldName(0), (*psi)[0]->toString()->asWChar());
+      LOGINFO("Row %d Column 2 is named %s, value is %s", rowCount, psi->getFieldName(1), (*psi)[1]->toString()->asChar());
+    }
+
+    // Execute a Region Shortcut Query (convenience method).
+    resultsPtr = regionPtr->query("m_id = 2");
+
+    LOGINFO("Region Query returned %d rows", resultsPtr->size()); 
+
+    // Execute the Region selectValue() API.
+    PdxWrapperPtr pdxWrapperPtr = regionPtr->selectValue("m_id = 3");
+    Person* per = reinterpret_cast<Person*>(pdxWrapperPtr->getObject());
+
+    LOGINFO("Region selectValue() returned an item:\n Person Name = %s and Person Age = %d", per->getName(), per->getAge());
+
+    // Execute the Region existsValue() API.
+    bool existsValue = regionPtr->existsValue("m_id = 4");
+
+    LOGINFO("Region existsValue() returned %s", existsValue ? "true" : "false");
+
+    // Close the GemFire Cache.
+    cachePtr->close();
+
+    LOGINFO("Closed the GemFire Cache");
+
+  }
+  // An exception should not occur
+  catch(const Exception & gemfireExcp)
+  {    
+    LOGERROR("PdxSerializer GemFire Exception: %s", gemfireExcp.getMessage());
+  }
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/PoolCqQuery.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/PoolCqQuery.cpp b/geode-client-native/quickstart/cpp/PoolCqQuery.cpp
new file mode 100755
index 0000000..137d8cf
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/PoolCqQuery.cpp
@@ -0,0 +1,183 @@
+/*
+ * The Pool Continuous Query QuickStart Example.
+ *
+ * This example takes the following steps:
+ *
+ * 1. Create CacheFactory using the user specified properties or from the gfcpp.properties file by default.
+ * 2. Create a GemFire Cache.
+ * 3. Get the Portfolios Region from the Pool.
+ * 4. Populate some query objects on the Region.
+ * 5. Get the Query Service from cache.
+ * 6. Register a cqQuery listener
+ * 7. Execute a cqQuery with initial Results
+ * 8. Close the Cache.
+ *
+ */
+
+// Include the GemFire library.
+#include <gfcpp/GemfireCppCache.hpp>
+
+// Include our Query objects, viz. Portfolio and Position.
+#include "queryobjects/Portfolio.hpp"
+#include "queryobjects/Position.hpp"
+
+// Use the "gemfire" namespace.
+using namespace gemfire;
+
+// Use the "testobject" namespace for the query objects.
+using namespace testobject;
+
+class MyCqListener : public CqListener {
+  public:
+  void onEvent(const CqEvent& cqe){
+    char* opStr = (char*)"Default";
+    PortfolioPtr portfolio( dynamic_cast<Portfolio*> (cqe.getNewValue().ptr() ));
+    CacheableStringPtr key( dynamic_cast<CacheableString*> (cqe.getKey().ptr() ));
+    switch (cqe.getQueryOperation())
+      {
+        case CqOperation::OP_TYPE_CREATE:
+	  {
+            opStr = (char*)"CREATE";
+            break;
+	  }
+        case CqOperation::OP_TYPE_UPDATE:
+	  {
+            opStr = (char*)"UPDATE";
+            break;
+	  }
+        case CqOperation::OP_TYPE_DESTROY:
+	  {
+            opStr = (char*)"UPDATE";
+            break;
+	  }
+        default:
+          break;
+       }
+     LOGINFO("MyCqListener::OnEvent called with %s, key[%s], value=(%ld,%s)",
+	 opStr, key->asChar(), portfolio->getID(), portfolio->getPkid()->asChar());
+  }
+
+  void onError(const CqEvent& cqe){
+    LOGINFO("MyCqListener::OnError called");
+  }
+
+  void close(){
+    LOGINFO("MyCqListener::close called");
+  }
+};
+
+// The PoolCqQuery QuickStart example.
+int main(int argc, char ** argv)
+{
+  try
+  {
+    // Create CacheFactory using the user specified properties or from the gfcpp.properties file by default.
+    PropertiesPtr prp = Properties::create();
+    prp->insert("cache-xml-file", "XMLs/clientPoolCqQuery.xml");
+
+    CacheFactoryPtr cacheFactory = CacheFactory::createCacheFactory(prp);
+
+    LOGINFO("Created CacheFactory");
+
+    // Create a GemFire Cache with the "clientPoolCqQuery.xml" Cache XML file.
+    CachePtr cachePtr = cacheFactory->create();
+
+    LOGINFO("Created the GemFire Cache");
+
+    // Get the Portfolios Region from the Cache which is declared in the Cache XML file.
+    RegionPtr regionPtr = cachePtr->getRegion("Portfolios");
+
+    LOGINFO("Obtained the Region from the Cache");
+
+    // Register our Serializable/Cacheable Query objects, viz. Portfolio and Position.
+    Serializable::registerType( Portfolio::createDeserializable);
+    Serializable::registerType( Position::createDeserializable);
+
+    LOGINFO("Registered Serializable Query Objects");
+
+    // Populate the Region with some Portfolio objects.
+    PortfolioPtr port1Ptr(new Portfolio(1 /*ID*/, 10 /*size*/));
+    PortfolioPtr port2Ptr(new Portfolio(2 /*ID*/, 20 /*size*/));
+    PortfolioPtr port3Ptr(new Portfolio(3 /*ID*/, 30 /*size*/));
+
+    regionPtr->put("Key1", port1Ptr);
+    regionPtr->put("Key2", port2Ptr);
+    regionPtr->put("Key3", port3Ptr);
+
+    LOGINFO("Populated some Portfolio Objects");
+
+    // Get the QueryService from the Cache.
+    QueryServicePtr qrySvcPtr = cachePtr->getQueryService("examplePool");
+
+    LOGINFO("Got the QueryService from the Cache");
+
+    //Create CqAttributes and Install Listener
+    CqAttributesFactory cqFac;
+    CqListenerPtr cqLstner (new MyCqListener());
+    cqFac.addCqListener(cqLstner);
+    CqAttributesPtr cqAttr = cqFac.create();
+
+    //create a new Cq Query
+    const char* qryStr = "select * from /Portfolios p where p.ID < 5";
+    CqQueryPtr qry = qrySvcPtr->newCq((char*)"MyCq", qryStr, cqAttr);
+
+    //execute Cq Query with initial Results
+    CqResultsPtr resultsPtr  = qry->executeWithInitialResults();
+
+    //make change to generate cq events
+    regionPtr->put("Key3", port1Ptr);
+    regionPtr->put("Key2", port2Ptr);
+    regionPtr->put("Key1", port3Ptr);
+
+    LOGINFO("ResultSet Query returned %d rows", resultsPtr->size());
+
+    // Iterate through the rows of the query result.
+    SelectResultsIterator iter = resultsPtr->getIterator();
+    while (iter.hasNext())
+    {
+      SerializablePtr ser = iter.next();
+      if( ser != NULLPTR )
+      {
+        LOGINFO (" query pulled object %s\n", ser->toString()->asChar() );
+        StructPtr stPtr(dynamic_cast<Struct*>  (ser.ptr() ));
+        if (stPtr != NULLPTR)
+        {
+          LOGINFO(" got struct ptr ");
+          SerializablePtr serKey = (*(stPtr.ptr()))["key"];
+          if (serKey != NULLPTR)
+          {
+            LOGINFO("got struct key %s\n", serKey->toString()->asChar());
+          }
+
+          SerializablePtr serVal = (*(stPtr.ptr()))["value"];
+
+          if (serVal != NULLPTR)
+          {
+            LOGINFO("  got struct value %s\n", serVal->toString()->asChar());
+          }
+        }
+      }
+      else{
+      	LOGINFO("   query pulled bad object\n");
+      }
+    }
+
+    // Stop the GemFire Continuous query.
+    qry->stop();
+
+    // Close the GemFire Continuous query.
+    qry->close();
+
+    // Close the GemFire Cache.
+    cachePtr->close();
+
+    LOGINFO("Closed the GemFire Cache");
+
+  }
+  // An exception should not occur
+  catch(const Exception & gemfireExcp)
+  {
+    LOGERROR("PoolCqQuery GemFire Exception: %s", gemfireExcp.getMessage());
+  }
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/PoolRemoteQuery.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/PoolRemoteQuery.cpp b/geode-client-native/quickstart/cpp/PoolRemoteQuery.cpp
new file mode 100755
index 0000000..66087ea
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/PoolRemoteQuery.cpp
@@ -0,0 +1,120 @@
+/*
+ * The PoolRemoteQuery QuickStart Example.
+ * This examples creates pool using locator.
+ * This example takes the following steps:
+ *
+ * 1. Create a GemFire Cache.
+ * 2. Get the example Region from the Pool.
+ * 3. Populate some query objects on the Region.
+ * 4. Get the pool, get the Query Service from Cache. Pool is define in clientRemoteQueryWithPool.xml. Pool has locator to get the server. Apart from that pool is bind to server group "ServerGroup1".
+ * 5. Execute a query that returns a Result Set.
+ * 6. Execute a query that returns a Struct Set.
+ * 7. Execute the region shortcut/convenience query methods.
+ * 8. Close the Cache.
+ *
+ */
+
+// Include the GemFire library.
+#include <gfcpp/GemfireCppCache.hpp>
+
+// Include our Query objects, viz. Portfolio and Position.
+#include "queryobjects/Portfolio.hpp"
+#include "queryobjects/Position.hpp"
+
+// Use the "gemfire" namespace.
+using namespace gemfire;
+
+// Use the "testobject" namespace for the query objects.
+using namespace testobject;
+
+// The PoolRemoteQuery QuickStart example.
+int main(int argc, char ** argv)
+{
+  try
+  {
+
+    CacheFactoryPtr cacheFactory = CacheFactory::createCacheFactory();
+
+    // Create a GemFire Cache with the "clientRemoteQueryWithPool.xml" Cache XML file.
+    CachePtr cachePtr = cacheFactory->set("cache-xml-file", "XMLs/clientPoolRemoteQuery.xml")->create();
+
+    LOGINFO("Created the GemFire Cache");
+
+    // Get the example Region from the Cache which is declared in the Cache XML file.
+    RegionPtr regionPtr = cachePtr->getRegion("Portfolios");
+
+    LOGINFO("Obtained the Region from the Cache");
+
+    // Register our Serializable/Cacheable Query objects, viz. Portfolio and Position.
+    Serializable::registerType( Portfolio::createDeserializable);
+    Serializable::registerType( Position::createDeserializable);
+
+    LOGINFO("Registered Serializable Query Objects");
+
+    // Populate the Region with some Portfolio objects.
+    PortfolioPtr port1Ptr(new Portfolio(1 /*ID*/, 10 /*size*/));
+    PortfolioPtr port2Ptr(new Portfolio(2 /*ID*/, 20 /*size*/));
+    PortfolioPtr port3Ptr(new Portfolio(3 /*ID*/, 30 /*size*/));
+    regionPtr->put("Key1", port1Ptr);
+    regionPtr->put("Key2", port2Ptr);
+    regionPtr->put("Key3", port3Ptr);
+
+    LOGINFO("Populated some Portfolio Objects");
+
+    // Get the QueryService from the Cache.
+    QueryServicePtr qrySvcPtr = cachePtr->getQueryService("examplePool");
+
+    LOGINFO("Got the QueryService from the Cache");
+
+    // Execute a Query which returns a ResultSet.
+    QueryPtr qryPtr = qrySvcPtr->newQuery("SELECT DISTINCT * FROM /Portfolios");
+    SelectResultsPtr resultsPtr = qryPtr->execute();
+
+    LOGINFO("ResultSet Query returned %d rows", resultsPtr->size());
+
+    // Execute a Query which returns a StructSet.
+    qryPtr = qrySvcPtr->newQuery("SELECT DISTINCT ID, status FROM /Portfolios WHERE ID > 1");
+    resultsPtr = qryPtr->execute();
+
+    LOGINFO("StructSet Query returned %d rows", resultsPtr->size());
+
+    // Iterate through the rows of the query result.
+    int rowCount = 0;
+    SelectResultsIterator iter = resultsPtr->getIterator();
+    while (iter.hasNext())
+    {
+      rowCount++;
+      Struct * psi = dynamic_cast<Struct*>( iter.next().ptr() );
+      LOGINFO("Row %d Column 1 is named %s, value is %s", rowCount, psi->getFieldName(0), (*psi)[0]->toString()->asChar());
+      LOGINFO("Row %d Column 2 is named %s, value is %s", rowCount, psi->getFieldName(1), (*psi)[1]->toString()->asChar());
+    }
+
+    // Execute a Region Shortcut Query (convenience method).
+    resultsPtr = regionPtr->query("ID = 2");
+
+    LOGINFO("Region Query returned %d rows", resultsPtr->size());
+
+    // Execute the Region selectValue() API.
+    SerializablePtr resultPtr = regionPtr->selectValue("ID = 3");
+    PortfolioPtr portPtr = dynCast<PortfolioPtr>(resultPtr);
+
+    LOGINFO("Region selectValue() returned an item:\n %s", portPtr->toString()->asChar());
+
+    // Execute the Region existsValue() API.
+    bool existsValue = regionPtr->existsValue("ID = 4");
+
+    LOGINFO("Region existsValue() returned %s", existsValue ? "true" : "false");
+
+    // Close the GemFire Cache.
+    cachePtr->close();
+
+    LOGINFO("Closed the GemFire Cache");
+
+  }
+  // An exception should not occur
+  catch(const Exception & gemfireExcp)
+  {
+    LOGERROR("PoolRemoteQuery GemFire Exception: %s", gemfireExcp.getMessage());
+  }
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/PoolWithEndpoints.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/PoolWithEndpoints.cpp b/geode-client-native/quickstart/cpp/PoolWithEndpoints.cpp
new file mode 100755
index 0000000..6f3bd1a
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/PoolWithEndpoints.cpp
@@ -0,0 +1,97 @@
+/*
+ * The PoolWithEndpoints QuickStart Example.
+ *
+ * This example takes the following steps:
+ *
+ * 1. Create CacheFactory using the settings from the gfcpp.properties file by default.
+ * 2. Create a GemFire Cache.
+ * 3. Create Poolfactory with endpoint and then create pool using poolfactory.
+ * 4. Create a Example Region programmatically.
+ * 5. Put Entries (Key and Value pairs) into the Region.
+ * 6. Get Entries from the Region.
+ * 7. Invalidate an Entry in the Region.
+ * 8. Destroy an Entry in the Region.
+ * 9. Close the Cache.
+ *
+ */
+
+
+// Include the GemFire library.
+#include <gfcpp/GemfireCppCache.hpp>
+
+// Use the "gemfire" namespace.
+using namespace gemfire;
+
+// The PoolWithEndpoints QuickStart example.
+int main(int argc, char ** argv)
+{
+  try
+  {
+    // Create CacheFactory using the settings from the gfcpp.properties file by default.
+    CacheFactoryPtr cacheFactory = CacheFactory::createCacheFactory();
+
+    LOGINFO("Created CacheFactory");
+    
+    // Create a GemFire Cache.
+    CachePtr cachePtr = cacheFactory->setSubscriptionEnabled(true)->create();
+
+    LOGINFO("Created the GemFire Cache");
+
+    //Create Poolfactory with endpoint and then create pool using poolfactory.
+    PoolFactoryPtr pfact = PoolManager::createFactory();
+    pfact->addServer("localhost", 40404);
+    PoolPtr pptr = pfact->create("examplePool");
+
+    RegionFactoryPtr  regionFactory = cachePtr->createRegionFactory(CACHING_PROXY);
+
+    LOGINFO("Created the RegionFactory");
+    
+    // Create the example Region programmatically.
+    RegionPtr regionPtr = regionFactory->setPoolName("examplePool")->create("exampleRegion");
+
+    LOGINFO("Created the Region Programmatically");
+
+    // Put an Entry (Key and Value pair) into the Region using the direct/shortcut method.
+    regionPtr->put("Key1", "Value1");
+    
+    LOGINFO("Put the first Entry into the Region");
+    
+    // Put an Entry into the Region by manually creating a Key and a Value pair.
+    CacheableKeyPtr keyPtr = CacheableInt32::create(123);
+    CacheablePtr valuePtr = CacheableString::create("123");
+    regionPtr->put(keyPtr, valuePtr);
+    
+    LOGINFO("Put the second Entry into the Region");
+    
+    // Get Entries back out of the Region.
+    CacheablePtr result1Ptr = regionPtr->get("Key1");
+    
+    LOGINFO("Obtained the first Entry from the Region");
+    
+    CacheablePtr result2Ptr = regionPtr->get(keyPtr);
+    
+    LOGINFO("Obtained the second Entry from the Region");
+    
+    // Invalidate an Entry in the Region.
+    regionPtr->invalidate("Key1");
+    
+    LOGINFO("Invalidated the first Entry in the Region");
+    
+    // Destroy an Entry in the Region.
+    regionPtr->destroy(keyPtr);
+    
+    LOGINFO("Destroyed the second Entry in the Region");
+    
+    // Close the GemFire Cache.
+    cachePtr->close();
+    
+    LOGINFO("Closed the GemFire Cache");
+    
+  }
+  // An exception should not occur
+  catch(const Exception & gemfireExcp)
+  {    
+    LOGERROR("PoolWithEndpoints GemFire Exception: %s", gemfireExcp.getMessage());
+  }
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/PutAllGetAllOperations.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/PutAllGetAllOperations.cpp b/geode-client-native/quickstart/cpp/PutAllGetAllOperations.cpp
new file mode 100644
index 0000000..57d666e
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/PutAllGetAllOperations.cpp
@@ -0,0 +1,76 @@
+/*
+ * The PutAllGetAllOperations QuickStart Example.
+ *
+ * This example takes the following steps:
+ *
+ * 1. Create a GemFire Cache using CacheFactory. By default it will connect to "localhost" at port 40404".
+ * 2. Create a Example Region.
+ * 3. PutAll Entries (Key and Value pairs) into the Region.
+ * 4. GetAll Entries from the Region.
+ * 5. Close the Cache.
+ *
+ */
+
+
+// Include the GemFire library.
+#include <gfcpp/GemfireCppCache.hpp>
+
+// Use the "gemfire" namespace.
+using namespace gemfire;
+
+// The PutAllGetAllOperations QuickStart example.
+int main(int argc, char ** argv)
+{
+  try
+  {
+    //Create a GemFire Cache using CacheFactory. By default it will connect to "localhost" at port 40404".
+    CachePtr cachePtr  = CacheFactory::createCacheFactory()->create();
+
+    LOGINFO("Created the GemFire Cache");
+
+    //Set Attributes for the region.
+    RegionFactoryPtr regionFactory = cachePtr->createRegionFactory(CACHING_PROXY);
+
+    //Create exampleRegion.
+    RegionPtr regionPtr = regionFactory->create( "exampleRegion" );
+
+    LOGINFO("Created the Region");
+
+    // Put bulk Entries (Key and Value pairs) into the Region.
+    HashMapOfCacheable entryMap;
+    char key[2048];
+    char value[2048];
+    for (int32_t item = 0; item < 100; item++) {
+      sprintf(key, "key-%d", item);
+      sprintf(value, "%d", item);
+      entryMap.insert(CacheableKey::create(key), CacheableString::create(value));
+    }
+    regionPtr->putAll(entryMap);
+
+
+    LOGINFO("PutAll 100 entries into the Region");
+
+    //GetAll Entries back out of the Region
+    VectorOfCacheableKey keys;
+    for (int32_t item = 0; item < 100; item++) {
+      sprintf(key, "key-%d", item);
+      keys.push_back(CacheableKey::create(key));
+    }
+
+    HashMapOfCacheablePtr values(new HashMapOfCacheable());
+    regionPtr->getAll(keys, values, NULLPTR, true);
+
+    LOGINFO("Obtained 100 entries from the Region");
+
+    // Close the GemFire Cache.
+    cachePtr->close();
+
+    LOGINFO("Closed the GemFire Cache");
+
+  }
+  // An exception should not occur
+  catch(const Exception & gemfireExcp)
+  {
+    LOGERROR("PutAllGetAllOperations GemFire Exception: %s", gemfireExcp.getMessage());
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/RefIDExample.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/RefIDExample.cpp b/geode-client-native/quickstart/cpp/RefIDExample.cpp
new file mode 100644
index 0000000..78936a8
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/RefIDExample.cpp
@@ -0,0 +1,105 @@
+/*
+ * The RefIDExample QuickStart Example.
+ * This example creates two pools through XML and sets region attributes using refid.
+ * This example takes the following steps:
+ *
+ * 1. Create a GemFire Cache.
+ * 2. Now it creates 2 Pools with the names poolName1, poolName2 respectively.
+ * 3. Sets the region attribute using refid.
+ * 4. Gets the region "root1" with poolName1, and region "root2" with poolName2.
+ * 5. Check for the region attribute set through refid.
+ * 6. Put Entries (Key and Value pairs) into both the Regions.
+ * 7. Get Entries from the Regions.
+ * 8. Invalidate an Entry in both the Regions.
+ * 9. Destroy an Entry in both the Regions.
+ * 10. Close the Cache.
+ *
+ */
+
+// Include the GemFire library.
+#include <gfcpp/GemfireCppCache.hpp>
+
+// Use the "gemfire" namespace.
+using namespace gemfire;
+
+
+// The RefIDExample QuickStart example.
+int main(int argc, char ** argv)
+{
+  try
+  {
+    // Create a GemFire Cache using XMLs/clientRefIDExample.xml.
+    PropertiesPtr prptr = Properties::create();
+    prptr->insert("cache-xml-file", "XMLs/clientRefIDExample.xml");
+
+    CacheFactoryPtr cacheFactory = CacheFactory::createCacheFactory(prptr);
+   
+    CachePtr cachePtr = cacheFactory->create();       
+
+    LOGINFO("Created the GemFire Cache");
+
+    // get the root1 Region.
+    RegionPtr regionPtr1 = cachePtr->getRegion("root1");
+
+    LOGINFO("Obtained the root1 Region from the Cache");
+
+    // get the root2 Region.
+    RegionPtr regionPtr2 = cachePtr->getRegion("root2");
+
+    LOGINFO("Obtained the root2 Region from the Cache");
+
+    RegionAttributesPtr rAttPtr1 = regionPtr1->getAttributes();
+    RegionAttributesPtr rAttPtr2 = regionPtr2->getAttributes();
+
+    bool isCacheEnabled1 = rAttPtr1->getCachingEnabled();
+    LOGINFO("For region root1 cachingEnabled is %s ", isCacheEnabled1 ? "true" : "false");
+
+    bool isCacheEnabled2 = rAttPtr2->getCachingEnabled();
+    LOGINFO("For region root2 cachingEnabled is %s ", isCacheEnabled2 ? "true" : "false");
+    
+    // Put an Entry (Key and Value pair) into the Region using the direct/shortcut method.
+    regionPtr1->put("Key1", "Value1");
+    regionPtr2->put("Key1", "Value1");
+    
+    LOGINFO("Put the first Entries into both the Regions");
+    
+    // Put an Entry into the Region by manually creating a Key and a Value pair.
+    CacheableKeyPtr keyPtr = CacheableInt32::create(123);
+    CacheablePtr valuePtr = CacheableString::create("123");
+    regionPtr1->put(keyPtr, valuePtr);
+    regionPtr2->put(keyPtr, valuePtr);
+    
+    LOGINFO("Put the second Entries into both the Regions.");
+    
+    // Get Entries back out of the Region.
+    CacheablePtr resultPtr1 = regionPtr1->get("Key1");
+    CacheablePtr resultPtr2 = regionPtr2->get("Key1");
+    LOGINFO("Obtained the first Entry from both the Regions");
+
+    resultPtr1 = regionPtr1->get(keyPtr);
+    resultPtr2 = regionPtr2->get(keyPtr);    
+    LOGINFO("Obtained the second Entry from both the Regions");
+    
+    // Invalidate an Entry in the Region.
+    regionPtr1->invalidate("Key1");
+    regionPtr2->invalidate("Key1");
+    
+    LOGINFO("Invalidated the first Entry in both the Regions.");
+    
+    // Destroy an Entry in the Region.
+    regionPtr1->destroy(keyPtr);
+    regionPtr2->destroy(keyPtr);
+    
+    LOGINFO("Destroyed the second Entry in both the Regions");
+
+    // Close the GemFire Cache.
+    cachePtr->close();
+    
+    LOGINFO("Closed the GemFire Cache");
+  }
+  // An exception should not occur
+  catch(const Exception & gemfireExcp)
+  {    
+    LOGERROR("RefIDExample GemFire Exception: %s", gemfireExcp.getMessage());
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/RegisterInterest.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/RegisterInterest.cpp b/geode-client-native/quickstart/cpp/RegisterInterest.cpp
new file mode 100644
index 0000000..5d8a884
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/RegisterInterest.cpp
@@ -0,0 +1,99 @@
+/*
+ * The RegisterInterest QuickStart Example.
+ *
+ * This example takes the following steps:
+ *
+ * 1. Create CacheFactory using the user specified properties or from the gfcpp.properties file by default.
+ * 2. Create a GemFire Cache.
+ * 3. Get the example Region from the Cache.
+ * 4. Call registerAllKeys() and unregisterAllKeys() on the Region.
+ * 5. Call registerKeys() and unregisterKeys() on the Region.
+ * 6. Call registerRegex() and unregisterRegex() on the Region.
+ * 7. Close the Cache.
+ *
+ */
+
+// Include the GemFire library.
+#include <gfcpp/GemfireCppCache.hpp>
+
+// Use the "gemfire" namespace.
+using namespace gemfire;
+
+// The RegisterInterest QuickStart example.
+int main(int argc, char ** argv)
+{
+  try
+  {
+    // Create CacheFactory using the user specified properties or from the gfcpp.properties file by default.
+    PropertiesPtr prp = Properties::create();
+    prp->insert("cache-xml-file", "XMLs/clientRegisterInterest.xml");
+
+    CacheFactoryPtr cacheFactory = CacheFactory::createCacheFactory(prp);
+
+    LOGINFO("Created CacheFactory");
+
+    // Create a GemFire Cache with the "clientRegisterInterest.xml" Cache XML file.
+    CachePtr cachePtr = cacheFactory->create();
+
+    LOGINFO("Created the GemFire Cache");
+
+    // Get the example Region from the Cache which is declared in the Cache XML file.
+    RegionPtr regionPtr = cachePtr->getRegion("exampleRegion");
+
+    LOGINFO("Obtained the Region from the Cache");
+
+    // Register and Unregister Interest on Region for All Keys.
+    regionPtr->registerAllKeys();
+    regionPtr->unregisterAllKeys();
+
+    LOGINFO("Called registerAllKeys() and unregisterAllKeys()");
+
+    // Register and Unregister Interest on Region for Some Keys.
+    VectorOfCacheableKey keys;
+    keys.push_back( CacheableInt32::create(123) );
+    keys.push_back( CacheableString::create("Key-123") );
+    regionPtr->registerKeys(keys);
+    regionPtr->unregisterKeys(keys);
+
+    LOGINFO("Called registerKeys() and unregisterKeys()");
+
+    // Register and Unregister Interest on Region for Keys matching a Regular Expression.
+    regionPtr->registerRegex("Keys-*");
+    regionPtr->unregisterRegex("Keys-*");
+
+    LOGINFO("Called registerRegex() and unregisterRegex()");
+
+    //Register Interest on Region for All Keys with getInitialValues to populate the cache with values of all keys from the server.
+    regionPtr->registerAllKeys(false, NULLPTR, true); // Where the 3rd argument is getInitialValues.
+    //Unregister Interest on Region for All Keys.
+    regionPtr->unregisterAllKeys();
+
+    LOGINFO("Called registerAllKeys() and unregisterAllKeys() with getInitialValues argument");
+
+    //Register Interest on Region for Some Keys with getInitialValues.
+    keys.push_back( CacheableInt32::create(123) );
+    keys.push_back( CacheableString::create("Key-123") );
+    regionPtr->registerKeys(keys, false, true); // Where the 3rd argument is getInitialValues.
+
+    LOGINFO("Called registerKeys() and unregisterKeys() with getInitialValues argument");
+    //Unregister Interest on Region for Some Keys.
+    regionPtr->unregisterKeys(keys);
+
+    //Register and Unregister Interest on Region for Keys matching a Regular Expression with getInitialValues.
+    regionPtr->registerRegex("Keys-*", false, NULLPTR, true);
+    regionPtr->unregisterRegex("Keys-*");
+
+    LOGINFO("Called registerRegex() and unregisterRegex() with getInitialValues argument");
+
+    // Close the GemFire Cache.
+    cachePtr->close();
+
+    LOGINFO("Closed the GemFire Cache");
+ }
+  // An exception should not occur
+  catch(const Exception & gemfireExcp)
+  {
+    LOGERROR("RegisterInterest GemFire Exception: %s", gemfireExcp.getMessage());
+  }
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/RemoteQuery.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/RemoteQuery.cpp b/geode-client-native/quickstart/cpp/RemoteQuery.cpp
new file mode 100644
index 0000000..5cd6a6a
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/RemoteQuery.cpp
@@ -0,0 +1,144 @@
+/*
+ * The RemoteQuery QuickStart Example.
+ *
+ * This example takes the following steps:
+ *
+ * 1. Create a GemFire Cache Programmatically.
+ * 2. Create the example Region Programmatically.
+ * 3. Populate some query objects on the Region.
+ * 4. Execute a query that returns a Result Set.
+ * 5. Execute a query that returns a Struct Set.
+ * 6. Execute the region shortcut/convenience query methods.
+ * 7. Close the Cache.
+ *
+ */
+
+// Include the GemFire library.
+#include <gfcpp/GemfireCppCache.hpp>
+
+// Include our Query objects, viz. Portfolio and Position.
+#include "queryobjects/Portfolio.hpp"
+#include "queryobjects/Position.hpp"
+
+// Use the "gemfire" namespace.
+using namespace gemfire;
+
+// Use the "testobject" namespace for the query objects.
+using namespace testobject;
+
+// The RemoteQuery QuickStart example.
+int main(int argc, char ** argv)
+{
+  try
+  {
+    // Create a GemFire Cache Programmatically.
+    CacheFactoryPtr cacheFactory = CacheFactory::createCacheFactory();
+    CachePtr cachePtr = cacheFactory->setSubscriptionEnabled(true)->create();
+    
+    LOGINFO("Created the GemFire Cache");
+
+    RegionFactoryPtr regionFactory = cachePtr->createRegionFactory(CACHING_PROXY);
+    
+    LOGINFO("Created the RegionFactory");
+    
+    // Create the example Region programmatically.
+    RegionPtr regionPtr = regionFactory->create("Portfolios");
+
+    LOGINFO("Created the Region.");
+
+    // Register our Serializable/Cacheable Query objects, viz. Portfolio and Position.
+    Serializable::registerType( Portfolio::createDeserializable);
+    Serializable::registerType( Position::createDeserializable);
+
+    LOGINFO("Registered Serializable Query Objects");
+
+    // Populate the Region with some Portfolio objects.
+    PortfolioPtr port1Ptr(new Portfolio(1 /*ID*/, 10 /*size*/));
+    PortfolioPtr port2Ptr(new Portfolio(2 /*ID*/, 20 /*size*/));
+    PortfolioPtr port3Ptr(new Portfolio(3 /*ID*/, 30 /*size*/));
+    regionPtr->put("Key1", port1Ptr);
+    regionPtr->put("Key2", port2Ptr);
+    regionPtr->put("Key3", port3Ptr);
+
+    LOGINFO("Populated some Portfolio Objects");
+
+    // Get the QueryService from the Cache.
+    QueryServicePtr qrySvcPtr = cachePtr->getQueryService();
+
+    LOGINFO("Got the QueryService from the Cache");
+
+    // Execute a Query which returns a ResultSet.
+    QueryPtr qryPtr = qrySvcPtr->newQuery("SELECT DISTINCT * FROM /Portfolios");
+    SelectResultsPtr resultsPtr = qryPtr->execute();
+
+    LOGINFO("ResultSet Query returned %d rows", resultsPtr->size());
+
+    // Execute a Query which returns a StructSet.
+    qryPtr = qrySvcPtr->newQuery("SELECT DISTINCT ID, status FROM /Portfolios WHERE ID > 1");
+    resultsPtr = qryPtr->execute();
+
+    LOGINFO("StructSet Query returned %d rows", resultsPtr->size());
+
+    // Iterate through the rows of the query result.
+    int rowCount = 0;
+    SelectResultsIterator iter = resultsPtr->getIterator();
+    while (iter.hasNext())
+    {
+      rowCount++;
+      Struct * psi = dynamic_cast<Struct*>( iter.next().ptr() );
+      LOGINFO("Row %d Column 1 is named %s, value is %s", rowCount, psi->getFieldName(0), (*psi)[0]->toString()->asChar());
+      LOGINFO("Row %d Column 2 is named %s, value is %s", rowCount, psi->getFieldName(1), (*psi)[1]->toString()->asChar());
+    }
+
+    // Execute a Region Shortcut Query (convenience method).
+    resultsPtr = regionPtr->query("ID = 2");
+
+    LOGINFO("Region Query returned %d rows", resultsPtr->size());
+
+    // Execute the Region selectValue() API.
+    SerializablePtr resultPtr = regionPtr->selectValue("ID = 3");
+    PortfolioPtr portPtr = dynCast<PortfolioPtr>(resultPtr);
+
+    LOGINFO("Region selectValue() returned an item:\n %s", portPtr->toString()->asChar());
+
+    // Execute the Region existsValue() API.
+    bool existsValue = regionPtr->existsValue("ID = 4");
+
+    LOGINFO("Region existsValue() returned %s", existsValue ? "true" : "false");
+
+    //Execute the parameterized query
+    //Populate the parameter list (paramList) for the query.
+    QueryPtr pqryPtr = qrySvcPtr->newQuery("SELECT DISTINCT ID, status FROM /Portfolios WHERE ID > $1 and status=$2");
+
+    CacheableVectorPtr paramList = CacheableVector::create();
+    paramList->push_back(Cacheable::create(1)); // Param-1
+    paramList->push_back(Cacheable::create("active")); // Param-2
+
+    SelectResultsPtr pqresultsPtr = pqryPtr->execute(paramList);
+
+    LOGINFO("StructSet Query returned %d rows", pqresultsPtr->size());
+
+    // Iterate through the rows of the query result.
+    rowCount = 0;
+    SelectResultsIterator itr = pqresultsPtr->getIterator();
+    while (itr.hasNext())
+    {
+      rowCount++;
+      Struct * pst = dynamic_cast<Struct*>( itr.next().ptr() );
+      LOGINFO("Row %d Column 1 is named %s, value is %s", rowCount, pst->getFieldName(0), (*pst)[0]->toString()->asChar());
+      LOGINFO("Row %d Column 2 is named %s, value is %s", rowCount, pst->getFieldName(1), (*pst)[1]->toString()->asChar());
+    }
+    
+    // Close the GemFire Cache.
+    cachePtr->close();
+
+    LOGINFO("Closed the GemFire Cache");
+
+  }
+  // An exception should not occur
+  catch(const Exception & gemfireExcp)
+  {
+    LOGERROR("RemoteQuery GemFire Exception: %s", gemfireExcp.getMessage());
+  }
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/Security.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/Security.cpp b/geode-client-native/quickstart/cpp/Security.cpp
new file mode 100644
index 0000000..608de5e
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/Security.cpp
@@ -0,0 +1,77 @@
+/*
+ * The Security QuickStart Example.
+ *
+ * This example takes the following steps:
+ *
+ * 1. Sets the client security properties.
+ * 2. Put an Entry ( for which it has valid credentials ).
+ * 3. Fail to Get an Entry ( for which user doesn't have permission ).
+ * 4. Close the Cache.
+ *
+ */
+
+
+// Include the GemFire library.
+#include <gfcpp/GemfireCppCache.hpp>
+
+// Use the "gemfire" namespace.
+using namespace gemfire;
+
+// The Security QuickStart example.
+int main(int argc, char ** argv)
+{
+  try
+  {
+    // Create client's Authentication Intializer and Credentials using api ( Same can be set to gfcpp.properties & comment following code ).
+    PropertiesPtr properties = Properties::create();
+    properties->insert("security-client-auth-factory", "createPKCSAuthInitInstance");
+    properties->insert("security-client-auth-library", "securityImpl");
+    properties->insert("security-keystorepath", "keystore/gemfire6.keystore");
+    properties->insert("security-alias", "gemfire6");
+    properties->insert("security-keystorepass", "gemfire");
+    properties->insert("cache-xml-file", "XMLs/clientSecurity.xml");
+
+   // overriding secProp properties.
+    CacheFactoryPtr cacheFactory = CacheFactory::createCacheFactory(properties);
+    
+    LOGINFO("Connected to the GemFire Distributed System");
+    
+    // Create a GemFire Cache with the "clientSecurity.xml" Cache XML file.
+    CachePtr cachePtr = cacheFactory->create();
+    
+    LOGINFO("Created the GemFire Cache");
+    
+    // Get the example Region from the Cache which is declared in the Cache XML file.
+    RegionPtr regionPtr = cachePtr->getRegion("exampleRegion");
+    
+    LOGINFO("Obtained the Region from the Cache");
+    
+    // Put an Entry (Key and Value pair) into the Region using the direct/shortcut method.
+    regionPtr->put("Key1", "Value1");
+    
+    LOGINFO("Entry created in the Region");
+
+    try {
+    	
+       // Get Entries back out of the Region.
+       CacheablePtr result1Ptr = regionPtr->get("Key1");
+       
+    //collect NotAuthorized exception
+    } catch (const gemfire::NotAuthorizedException& expected) {
+    	
+      LOGINFO("Got expected authorization failure while obtaining the Entry: %s", expected.getMessage());
+      
+    }
+    
+    // Close the GemFire Cache.
+    cachePtr->close();
+    
+    LOGINFO("Closed the GemFire Cache");
+  }
+  // An exception should not occur
+  catch(const Exception & gemfireExcp)
+  {    
+    LOGERROR("Security GemFire Exception: %s", gemfireExcp.getMessage());
+  }
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/Transactions.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/Transactions.cpp b/geode-client-native/quickstart/cpp/Transactions.cpp
new file mode 100644
index 0000000..5652f83
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/Transactions.cpp
@@ -0,0 +1,110 @@
+/*
+ * The Transaction QuickStart Example.
+ *
+ * This example takes the following steps:
+ *
+ * 1. Create a GemFire Cache.
+ * 2. Create the example Region Programmatically.
+ * 3 Begin Transaction
+ * 4. Put Entries (Key and Value pairs) into the Region.
+ * 5. Commit Transaction
+ * 6. Get Entries from the Region.
+ * 7. Begin Transaction
+ * 8. Put Entries (Key and Value pairs) into the Region.
+ * 9. Destroy key
+ * 10. Rollback transaction
+ * 11. Get Entries from the Region.
+ * 12. Close the Cache.
+ *
+ */
+
+
+// Include the GemFire library.
+#include <gfcpp/GemfireCppCache.hpp>
+
+// Use the "gemfire" namespace.
+using namespace gemfire;
+
+// The Transaction QuickStart example.
+int main(int argc, char ** argv)
+{
+  try
+  {
+    // Create a GemFire Cache.
+    CacheFactoryPtr cacheFactory = CacheFactory::createCacheFactory();
+
+    CachePtr cachePtr = cacheFactory->create();       
+
+    LOGINFO("Created the GemFire Cache");
+
+    RegionFactoryPtr regionFactory = cachePtr->createRegionFactory(CACHING_PROXY);
+
+    LOGINFO("Created the RegionFactory");
+
+    // Create the example Region Programmatically.
+    RegionPtr regionPtr = regionFactory->create("exampleRegion");
+
+    CacheableKeyPtr keyPtr = CacheableInt32::create(123);
+    LOGINFO("Created the Region Programmatically.");
+    CacheTransactionManagerPtr txManager = cachePtr->getCacheTransactionManager();
+    //start a transaction
+    txManager->begin();
+    LOGINFO("Transaction Started");
+
+    regionPtr->put("Key1", "Value1");
+    regionPtr->put("Key2", "Value2");        
+    LOGINFO("Put two entries into the region");
+
+    try{
+      // Commit the transaction
+      txManager->commit();
+      LOGINFO("Transaction Committed");
+    } catch(const CommitConflictException&){
+      LOGINFO("Got CommitConflictException");
+    }
+
+    if(regionPtr->containsKey("Key1")) {
+      LOGINFO("Obtained the first entry from the Region");
+    }
+
+    if(regionPtr->containsKey("Key2")) {
+      LOGINFO("Obtained the second entry from the Region");
+    }
+
+    txManager->begin();
+    LOGINFO("Transaction Started");
+
+    regionPtr->put("Key3", "Value3");
+    LOGINFO("Put the third entry into the Region");
+
+    regionPtr->destroy("Key1");
+    LOGINFO("destroy the first entry");
+
+    txManager->rollback();
+    LOGINFO("Transaction Rollbacked");
+
+    if(regionPtr->containsKey("Key1")) {
+      LOGINFO("Obtained the first entry from the Region");
+    }
+
+    if(regionPtr->containsKey("Key2")) {
+      LOGINFO("Obtained the second entry from the Region");
+    }
+
+    if(regionPtr->containsKey("Key3")) {
+      LOGINFO("ERROR: Obtained the third entry from the Region.");
+    }
+
+    // Close the GemFire Cache.
+    cachePtr->close();
+
+    LOGINFO("Closed the GemFire Cache");
+
+  }
+  // An exception should not occur
+  catch(const Exception & gemfireExcp)
+  {    
+    LOGERROR("Transaction GemFire Exception: %s", gemfireExcp.getMessage());
+  }
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/TransactionsXA.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/TransactionsXA.cpp b/geode-client-native/quickstart/cpp/TransactionsXA.cpp
new file mode 100755
index 0000000..33ee762
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/TransactionsXA.cpp
@@ -0,0 +1,122 @@
+/*
+ * The XA Transaction QuickStart Example.
+ *
+ * This example takes the following steps:
+ *
+ * 1. Create a GemFire Cache.
+ * 2. Create the example Region Programmatically.
+ * 3. Begin Transaction
+ * 4. Put Entries (Key and Value pairs) into the Region.
+ * 5. 2PC Prepare Transaction
+ * 6. 2PC Commit Transaction
+ * 7. Get Entries from the Region.
+ * 8. Begin Transaction
+ * 9. Put Entries (Key and Value pairs) into the Region.
+ * 10. Destroy key
+ * 11. 2PC Prepare transaction
+ * 12. Rollback transaction
+ * 13. Get Entries from the Region.
+ * 14. Close the Cache.
+ *
+ */
+
+
+// Include the GemFire library.
+#include <gfcpp/GemfireCppCache.hpp>
+
+// Use the "gemfire" namespace.
+using namespace gemfire;
+
+// The Transaction QuickStart example.
+int main(int argc, char ** argv)
+{
+  try
+  {
+    // Create a GemFire Cache.
+    CacheFactoryPtr cacheFactory = CacheFactory::createCacheFactory();
+
+    CachePtr cachePtr = cacheFactory->create();       
+
+    LOGINFO("Created the GemFire Cache");
+
+    RegionFactoryPtr regionFactory = cachePtr->createRegionFactory(CACHING_PROXY);
+
+    LOGINFO("Created the RegionFactory");
+
+    // Create the example Region Programmatically.
+    RegionPtr regionPtr = regionFactory->create("exampleRegion");
+
+    CacheableKeyPtr keyPtr = CacheableInt32::create(123);
+    LOGINFO("Created the Region Programmatically.");
+
+    InternalCacheTransactionManager2PCPtr txManager =
+    		static_cast<InternalCacheTransactionManager2PCPtr>(cachePtr->getCacheTransactionManager());
+
+    //start a transaction
+    txManager->begin();
+    LOGINFO("Transaction Started");
+
+    regionPtr->put("Key1", "Value1");
+    regionPtr->put("Key2", "Value2");        
+    LOGINFO("Put two entries into the region");
+
+    try{
+      // Prepare the transaction
+      txManager->prepare();
+      LOGINFO("Transaction Prepared");
+
+      // Commit the transaction
+      txManager->commit();
+      LOGINFO("Transaction Committed");
+    } catch(const CommitConflictException&){
+      LOGINFO("Got CommitConflictException");
+    }
+
+    if(regionPtr->containsKey("Key1")) {
+      LOGINFO("Obtained the first entry from the Region");
+    }
+
+    if(regionPtr->containsKey("Key2")) {
+      LOGINFO("Obtained the second entry from the Region");
+    }
+
+    txManager->begin();
+    LOGINFO("Transaction Started");
+
+    regionPtr->put("Key3", "Value3");
+    LOGINFO("Put the third entry into the Region");
+
+    regionPtr->destroy("Key1");
+    LOGINFO("destroy the first entry");
+
+    txManager->prepare();
+    LOGINFO("Transaction Prepared");
+
+    txManager->rollback();
+    LOGINFO("Transaction Rollbacked");
+
+    if(regionPtr->containsKey("Key1")) {
+      LOGINFO("Obtained the first entry from the Region");
+    }
+
+    if(regionPtr->containsKey("Key2")) {
+      LOGINFO("Obtained the second entry from the Region");
+    }
+
+    if(regionPtr->containsKey("Key3")) {
+      LOGINFO("ERROR: Obtained the third entry from the Region.");
+    }
+
+    // Close the GemFire Cache.
+    cachePtr->close();
+
+    LOGINFO("Closed the GemFire Cache");
+
+  }
+  // An exception should not occur
+  catch(const Exception & gemfireExcp)
+  {    
+    LOGERROR("Transaction GemFire Exception: %s", gemfireExcp.getMessage());
+  }
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/deltaobjects/DeltaExample.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/deltaobjects/DeltaExample.hpp b/geode-client-native/quickstart/cpp/deltaobjects/DeltaExample.hpp
new file mode 100644
index 0000000..ecb539b
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/deltaobjects/DeltaExample.hpp
@@ -0,0 +1,191 @@
+#ifndef __Delta_Example__
+#define __Delta_Example__
+
+#include <gfcpp/GemfireCppCache.hpp>
+
+using namespace gemfire;
+
+class DeltaExample: public Cacheable, public Delta
+{
+
+private:
+
+  // data members
+  int32_t m_field1;
+  int32_t m_field2;
+  int32_t m_field3;
+  
+  // delta indicators
+  mutable bool m_f1set;
+  mutable bool m_f2set;
+  mutable bool m_f3set;
+  
+public:
+
+  DeltaExample(int32_t field1, int32_t field2, int32_t field3) :
+    m_field1(field1), m_field2(field2), m_field3(field3)
+  {
+    reset();
+  }
+  
+  DeltaExample()
+  {
+    reset();
+  }
+  
+  DeltaExample(DeltaExample * copy)
+  {
+    m_field1 = copy->m_field1;
+    m_field2 = copy->m_field2;
+    m_field3 = copy->m_field3;
+    reset();
+  }
+  
+  void reset() const
+  {
+    m_f1set = false;
+    m_f2set = false;
+    m_f3set = false;
+  }
+  
+  int getField1()
+  {
+    return m_field1;
+  }
+  
+  int getField2()
+  {
+    return m_field2;
+  }
+  
+  int getField3()
+  {
+    return m_field3;
+  }
+  
+  void setField1(int val)
+  {
+    lock();
+    m_field1 = val;
+    m_f1set = true;
+    unlock();
+  }
+  
+  void setField2(int val)
+  {
+    lock();
+    m_field2 = val;
+    m_f2set = true;
+    unlock();
+  }
+  
+  void setField3(int val)
+  {
+    lock();
+    m_field3 = val;
+    m_f3set = true;
+    unlock();
+  }
+
+  virtual bool hasDelta()
+  {
+    return m_f1set || m_f2set || m_f3set;
+  }
+  
+  virtual void toDelta(DataOutput& out) const
+  {
+    lock();
+    
+    out.writeBoolean(m_f1set);
+    if (m_f1set)
+    {
+      out.writeInt(m_field1);
+    }
+    out.writeBoolean(m_f2set);
+    if (m_f2set)
+    {
+      out.writeInt(m_field2);
+    }
+    out.writeBoolean(m_f2set);
+    if (m_f2set)
+    {
+      out.writeInt(m_field2);
+    }
+    
+    reset();
+    
+    unlock();
+  }
+
+  virtual void fromDelta(DataInput& in)
+  {
+    lock();
+    
+    in.readBoolean(&m_f1set);
+    if (m_f1set)
+    {
+      in.readInt(&m_field1);
+    }
+    in.readBoolean(&m_f2set);
+    if (m_f2set)
+    {
+      in.readInt(&m_field2);
+    }
+    in.readBoolean(&m_f3set);
+    if (m_f3set)
+    {
+      in.readInt(&m_field3);
+    }
+
+    reset();
+    
+    unlock();
+  }
+  
+  virtual void toData(DataOutput& output) const
+  {
+    lock();
+    output.writeInt(m_field1);
+    output.writeInt(m_field2);
+    output.writeInt(m_field3);
+    unlock();
+  }
+  
+  virtual Serializable* fromData(DataInput& input)
+  {
+    lock();
+    input.readInt(&m_field1);
+    input.readInt(&m_field2);
+    input.readInt(&m_field3);
+    unlock();
+    return this;
+  }
+  
+  virtual int32_t classId() const
+  {
+    return 2;
+  }
+  
+  virtual uint32_t objectSize() const
+  {
+    return 0;
+  }
+  
+  DeltaPtr clone()
+  {
+    return DeltaPtr(new DeltaExample(this));
+  }
+  
+  virtual ~DeltaExample()
+  {
+  }
+  
+  static Serializable* create()
+  {
+    return new DeltaExample();
+  }
+  
+  void lock() const { /* add your platform dependent syncronization code here */ }
+  void unlock() const { /* add your platform dependent syncronization code here */ }
+};
+#endif

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/plugins/DurableCacheListener.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/plugins/DurableCacheListener.cpp b/geode-client-native/quickstart/cpp/plugins/DurableCacheListener.cpp
new file mode 100644
index 0000000..44ee750
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/plugins/DurableCacheListener.cpp
@@ -0,0 +1,17 @@
+#include "DurableCacheListener.hpp"
+
+void DurableCacheListener::afterRegionLive(const RegionEvent& event)
+{
+    LOGINFO("DurableCacheListener: Got an afterRegionLive event.");
+}
+void DurableCacheListener::afterCreate(const EntryEvent& event)
+{
+  CacheableStringPtr key = dynCast<CacheableStringPtr>(event.getKey());
+  LOGINFO("DurableCacheListener: Got an afterCreate event for key: %s ", key->toString());
+}
+
+void DurableCacheListener::afterUpdate(const EntryEvent& event)
+{
+  CacheableStringPtr key = dynCast<CacheableStringPtr>(event.getKey());
+  LOGINFO("DurableCacheListener: Got an afterUpdate event for key: %s ", key->toString());
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/plugins/DurableCacheListener.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/plugins/DurableCacheListener.hpp b/geode-client-native/quickstart/cpp/plugins/DurableCacheListener.hpp
new file mode 100644
index 0000000..d84e83e
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/plugins/DurableCacheListener.hpp
@@ -0,0 +1,24 @@
+/*
+ * DurableClient QuickStart Example.
+ *
+ * This is to use newly added listener callback "afterRegionLive"
+ * It merely prints the events captured from the GemFire Native Client.
+ *
+ */
+
+// Include the GemFire library.
+#include <gfcpp/GemfireCppCache.hpp>
+#include <gfcpp/CacheListener.hpp>
+
+// Use the "gemfire" namespace.
+using namespace gemfire;
+
+// The SimpleCacheListener class.
+class DurableCacheListener : public CacheListener
+{
+public:
+  // The regionLiveCallback. This get called once all the queued events are recieved by client on reconnect.
+  virtual void afterRegionLive( const RegionEvent& event );
+  virtual void afterCreate( const EntryEvent& event );
+  virtual void afterUpdate( const EntryEvent& event );
+};

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/plugins/SimpleCacheListener.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/plugins/SimpleCacheListener.cpp b/geode-client-native/quickstart/cpp/plugins/SimpleCacheListener.cpp
new file mode 100644
index 0000000..c87c216
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/plugins/SimpleCacheListener.cpp
@@ -0,0 +1,36 @@
+#include "SimpleCacheListener.hpp"
+
+void SimpleCacheListener::afterCreate(const EntryEvent& event)
+{
+  LOGINFO("SimpleCacheListener: Got an afterCreate event.");
+}
+
+void SimpleCacheListener::afterUpdate(const EntryEvent& event)
+{
+  LOGINFO("SimpleCacheListener: Got an afterUpdate event.");
+}
+
+void SimpleCacheListener::afterInvalidate(const EntryEvent& event)
+{
+  LOGINFO("SimpleCacheListener: Got an afterInvalidate event.");
+}
+
+void SimpleCacheListener::afterDestroy(const EntryEvent& event) 
+{
+  LOGINFO("SimpleCacheListener: Got an afterDestroy event.");
+}
+
+void SimpleCacheListener::afterRegionInvalidate(const RegionEvent& event)
+{
+  LOGINFO("SimpleCacheListener: Got an afterRegionInvalidate event.");
+}
+
+void SimpleCacheListener::afterRegionDestroy(const RegionEvent& event)
+{
+  LOGINFO("SimpleCacheListener: Got an afterRegionDestroy event.");
+}
+
+void SimpleCacheListener::close(const RegionPtr& region)
+{
+  LOGINFO("SimpleCacheListener: Got a close event.");
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/plugins/SimpleCacheListener.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/plugins/SimpleCacheListener.hpp b/geode-client-native/quickstart/cpp/plugins/SimpleCacheListener.hpp
new file mode 100644
index 0000000..f12e067
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/plugins/SimpleCacheListener.hpp
@@ -0,0 +1,28 @@
+/*
+ * SimpleCacheListener QuickStart Example.
+ *
+ * This is a simple implementation of a Cache Listener
+ * It merely prints the events captured from the GemFire Native Client.
+ *
+ */
+
+// Include the GemFire library.
+#include <gfcpp/GemfireCppCache.hpp>
+#include <gfcpp/CacheListener.hpp>
+
+// Use the "gemfire" namespace.
+using namespace gemfire;
+
+// The SimpleCacheListener class.
+class SimpleCacheListener : public CacheListener
+{
+public:
+  // The Cache Listener callbacks.
+  virtual void afterCreate( const EntryEvent& event );
+  virtual void afterUpdate( const EntryEvent& event );
+  virtual void afterInvalidate( const EntryEvent& event );
+  virtual void afterDestroy( const EntryEvent& event );
+  virtual void afterRegionInvalidate( const RegionEvent& event );
+  virtual void afterRegionDestroy( const RegionEvent& event );
+  virtual void close(const RegionPtr& region);
+};

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/plugins/SimpleCacheLoader.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/plugins/SimpleCacheLoader.cpp b/geode-client-native/quickstart/cpp/plugins/SimpleCacheLoader.cpp
new file mode 100644
index 0000000..6f3ac14
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/plugins/SimpleCacheLoader.cpp
@@ -0,0 +1,20 @@
+#include "SimpleCacheLoader.hpp"
+
+CacheablePtr SimpleCacheLoader::load(
+  const RegionPtr& region, 
+  const CacheableKeyPtr& key, 
+  const UserDataPtr& aCallbackArgument)
+{
+  LOGINFO("SimpleCacheLoader: Got a load event.");
+  
+  CacheablePtr value = CacheableString::create("LoaderValue");
+  
+  return value; 
+}
+
+void SimpleCacheLoader::close( const RegionPtr& region )
+{
+  LOGINFO("SimpleCacheLoader: Got a close event.");
+}
+
+// ----------------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/plugins/SimpleCacheLoader.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/plugins/SimpleCacheLoader.hpp b/geode-client-native/quickstart/cpp/plugins/SimpleCacheLoader.hpp
new file mode 100644
index 0000000..5876acd
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/plugins/SimpleCacheLoader.hpp
@@ -0,0 +1,26 @@
+/*
+ * SimpleCacheLoader QuickStart Example.
+ *
+ * This is a simple implementation of a Cache Loader
+ * It merely prints the events captured from the GemFire Native Client.
+ *
+ */
+
+// Include the GemFire library.
+#include <gfcpp/GemfireCppCache.hpp>
+#include <gfcpp/CacheLoader.hpp>
+
+// Use the "gemfire" namespace.
+using namespace gemfire;
+
+// The SimpleCacheLoader class.
+class SimpleCacheLoader : public CacheLoader
+{
+public:
+  virtual CacheablePtr load(
+    const RegionPtr& region,
+    const CacheableKeyPtr& key,
+    const UserDataPtr& aCallbackArgument);
+  
+  virtual void close( const RegionPtr& region );
+};



[23/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/quickstart_cpp.sln
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/quickstart_cpp.sln b/geode-client-native/quickstart/quickstart_cpp.sln
new file mode 100644
index 0000000..af3d4cb
--- /dev/null
+++ b/geode-client-native/quickstart/quickstart_cpp.sln
@@ -0,0 +1,479 @@
+\ufeff
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{8E8018A8-890F-4D1D-ABD1-D54F4DD604DE}"
+	ProjectSection(SolutionItems) = preProject
+		XMLs\clientBasicOperations.xml = XMLs\clientBasicOperations.xml
+		XMLs\clientCqQuery.xml = XMLs\clientCqQuery.xml
+		XMLs\clientDataExpiration.xml = XMLs\clientDataExpiration.xml
+		XMLs\clientDelta.xml = XMLs\clientDelta.xml
+		XMLs\clientDurable.xml = XMLs\clientDurable.xml
+		XMLs\clientExceptions.xml = XMLs\clientExceptions.xml
+		XMLs\clientExecuteFunctions.xml = XMLs\clientExecuteFunctions.xml
+		XMLs\clientHACache.xml = XMLs\clientHACache.xml
+		XMLs\clientLoaderListenerWriter.xml = XMLs\clientLoaderListenerWriter.xml
+		XMLs\clientPdxInstance.xml = XMLs\clientPdxInstance.xml
+		XMLs\clientPdxRemoteQuery.xml = XMLs\clientPdxRemoteQuery.xml
+		XMLs\clientPdxSerializer.xml = XMLs\clientPdxSerializer.xml
+		XMLs\clientPoolRemoteQuery.xml = XMLs\clientPoolRemoteQuery.xml
+		XMLs\clientRefIDExample.xml = XMLs\clientRefIDExample.xml
+		XMLs\clientRegisterInterest.xml = XMLs\clientRegisterInterest.xml
+		XMLs\clientRemoteQuery.xml = XMLs\clientRemoteQuery.xml
+		XMLs\serverBasicOperations.xml = XMLs\serverBasicOperations.xml
+		XMLs\serverCqQuery.xml = XMLs\serverCqQuery.xml
+		XMLs\serverDataExpiration.xml = XMLs\serverDataExpiration.xml
+		XMLs\serverDelta.xml = XMLs\serverDelta.xml
+		XMLs\serverDistributedSystem.xml = XMLs\serverDistributedSystem.xml
+		XMLs\serverDistributedSystem2.xml = XMLs\serverDistributedSystem2.xml
+		XMLs\serverDurableClient.xml = XMLs\serverDurableClient.xml
+		XMLs\serverExceptions.xml = XMLs\serverExceptions.xml
+		XMLs\serverExecuteFunctions.xml = XMLs\serverExecuteFunctions.xml
+		XMLs\serverExecuteFunctions2.xml = XMLs\serverExecuteFunctions2.xml
+		XMLs\serverHACache.xml = XMLs\serverHACache.xml
+		XMLs\serverHACache2.xml = XMLs\serverHACache2.xml
+		XMLs\serverLoaderListenerWriter.xml = XMLs\serverLoaderListenerWriter.xml
+		XMLs\serverPdxInstance.xml = XMLs\serverPdxInstance.xml
+		XMLs\serverPdxRemoteQuery.xml = XMLs\serverPdxRemoteQuery.xml
+		XMLs\serverPdxSerializer.xml = XMLs\serverPdxSerializer.xml
+		XMLs\serverPoolRemoteQuery.xml = XMLs\serverPoolRemoteQuery.xml
+		XMLs\serverPoolWithEndpoints.xml = XMLs\serverPoolWithEndpoints.xml
+		XMLs\serverPutAllGetAllOperations.xml = XMLs\serverPutAllGetAllOperations.xml
+		XMLs\serverRefIDExample.xml = XMLs\serverRefIDExample.xml
+		XMLs\serverRegisterInterest.xml = XMLs\serverRegisterInterest.xml
+		XMLs\serverRemoteQuery.xml = XMLs\serverRemoteQuery.xml
+		XMLs\serverTransactions.xml = XMLs\serverTransactions.xml
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BasicOperations C++", "cpp\vsprojects\BasicOperationsC++\BasicOperationsC++.vcxproj", "{5D8C303F-CF57-4AD7-A755-068A0C488CB8}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DataExpiration C++", "cpp\vsprojects\DataExpirationC++\DataExpirationC++.vcxproj", "{0418CF54-8262-435D-A472-3FC43640FA59}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LoaderListenerWriter C++", "cpp\vsprojects\LoaderListenerWriterC++\LoaderListenerWriterC++.vcxproj", "{CCD86CC4-DEFF-4AEB-A5CA-5A3E30AA42A3}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RegisterInterest C++", "cpp\vsprojects\RegisterInterestC++\RegisterInterestC++.vcxproj", "{B3BE10D1-41CC-4BD0-925A-DC157D09589B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RemoteQuery C++", "cpp\vsprojects\RemoteQueryC++\RemoteQueryC++.vcxproj", "{4DCC2C45-74E0-4C99-B99D-271EAC2A2026}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CqQuery C++", "cpp\vsprojects\CqQueryC++\CqQueryC++.vcxproj", "{4DCC2C45-74E0-4C99-B99D-271EAC2A2027}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ExecuteFunctions C++", "cpp\vsprojects\ExecuteFunctionsC++\ExecuteFunctionsC++.vcxproj", "{4DCC2C45-74E0-4C99-B99D-271EAC2A2028}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Interop C++", "cpp\vsprojects\InteropC++\InteropC++.vcxproj", "{6866857A-826B-4732-8B0C-368ABADE1BE3}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HA Cache C++", "cpp\vsprojects\HACacheC++\HACacheC++.vcxproj", "{A76B9C6D-8B1A-4603-A1A6-A00146FCD42B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Exceptions C++", "cpp\vsprojects\ExceptionsC++\ExceptionsC++.vcxproj", "{A004458B-A3BD-4395-A97E-A80429CA8EBC}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DurableClient C++", "cpp\vsprojects\DurableClientC++\DurableClientC++.vcxproj", "{9D9F7476-5C17-4F71-8428-ADE6F782612D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Security C++", "cpp\vsprojects\SecurityC++\SecurityC++.vcxproj", "{F0AC18A1-D592-4A0E-8BC3-D424DB7323F6}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MultiuserSecurity C++", "cpp\vsprojects\MultiuserSecurityC++\MultiuserSecurityC++.vcxproj", "{8FB665CB-83AD-4605-A7DE-D77499DDBD39}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PutAllGetAllOperations C++", "cpp\vsprojects\PutAllGetAllOperationsC++\PutAllGetAllOperationsC++.vcxproj", "{A6088E1B-45DE-495A-8E8D-6D3A8DF00DD3}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DistributedSystemC++", "cpp\vsprojects\DistributedSystemC++\DistributedSystemC++.vcxproj", "{86B09B72-94D1-479B-B38A-E523FA229AC9}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PoolRemoteQueryC++", "cpp\vsprojects\PoolRemoteQueryC++\PoolRemoteQueryC++.vcxproj", "{FAC238B2-AD5D-4D64-A74C-EA5CCEB3B359}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PoolWithEndpointsC++", "cpp\vsprojects\PoolWithEndpointsC++\PoolWithEndpointsC++.vcxproj", "{9B1140CE-020B-4F71-A97B-D82D9D83377E}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PoolCqQueryC++", "cpp\vsprojects\PoolCqQueryC++\PoolCqQuery.vcxproj", "{0EA1CB6D-B45E-4597-8A91-D0E621C21512}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Delta C++", "cpp\vsprojects\DeltaC++\DeltaC++.vcxproj", "{CA044B76-5529-4C38-9B09-8FA9444E37E8}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RefIDExample C++", "cpp\vsprojects\RefIDExample C++\RefIDExample C++.vcxproj", "{8388764D-358D-4BAA-A32A-A18486CA1BC4}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TransactionsC++", "cpp\vsprojects\TransactionsC++\TransactionsC++.vcxproj", "{85BCDC6D-6F3E-4F6D-BE76-6B5B5B5611C4}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PdxInstanceC++", "cpp\vsprojects\PdxInstanceC++\PdxInstanceC++.vcxproj", "{6AAD61DD-5658-4384-8B47-CF4FE531CC1C}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PdxRemoteQueryC++", "cpp\vsprojects\PdxRemoteQueryC++\PdxRemoteQueryC++.vcxproj", "{0E96F8C3-5767-49F2-AEBC-C824F987BD18}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PdxSerializerC++", "cpp\vsprojects\PdxSerializerC++\PdxSerializerC++.vcxproj", "{4C437511-DEEA-4C06-9B12-7FEFFF82FBC9}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PdxAutoSerializerC++", "cpp\vsprojects\PdxAutoSerializerC++\PdxAutoSerializerC++.vcxproj", "{25F90B8E-B520-430D-8120-8E38507E69B8}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TransactionsXAC++", "cpp\vsprojects\TransactionsXAC++\TransactionsXAC++.vcxproj", "{8C3245A6-636B-4E36-9F10-EB1A4C30008E}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Debug|Mixed Platforms = Debug|Mixed Platforms
+		Debug|Win32 = Debug|Win32
+		Debug|x64 = Debug|x64
+		Release|Any CPU = Release|Any CPU
+		Release|Mixed Platforms = Release|Mixed Platforms
+		Release|Win32 = Release|Win32
+		Release|x64 = Release|x64
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{5D8C303F-CF57-4AD7-A755-068A0C488CB8}.Debug|Any CPU.ActiveCfg = Debug|Win32
+		{5D8C303F-CF57-4AD7-A755-068A0C488CB8}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+		{5D8C303F-CF57-4AD7-A755-068A0C488CB8}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+		{5D8C303F-CF57-4AD7-A755-068A0C488CB8}.Debug|Win32.ActiveCfg = Debug|Win32
+		{5D8C303F-CF57-4AD7-A755-068A0C488CB8}.Debug|Win32.Build.0 = Debug|Win32
+		{5D8C303F-CF57-4AD7-A755-068A0C488CB8}.Debug|x64.ActiveCfg = Debug|x64
+		{5D8C303F-CF57-4AD7-A755-068A0C488CB8}.Debug|x64.Build.0 = Debug|x64
+		{5D8C303F-CF57-4AD7-A755-068A0C488CB8}.Release|Any CPU.ActiveCfg = Release|Win32
+		{5D8C303F-CF57-4AD7-A755-068A0C488CB8}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+		{5D8C303F-CF57-4AD7-A755-068A0C488CB8}.Release|Mixed Platforms.Build.0 = Release|Win32
+		{5D8C303F-CF57-4AD7-A755-068A0C488CB8}.Release|Win32.ActiveCfg = Release|Win32
+		{5D8C303F-CF57-4AD7-A755-068A0C488CB8}.Release|Win32.Build.0 = Release|Win32
+		{5D8C303F-CF57-4AD7-A755-068A0C488CB8}.Release|x64.ActiveCfg = Release|x64
+		{5D8C303F-CF57-4AD7-A755-068A0C488CB8}.Release|x64.Build.0 = Release|x64
+		{0418CF54-8262-435D-A472-3FC43640FA59}.Debug|Any CPU.ActiveCfg = Debug|Win32
+		{0418CF54-8262-435D-A472-3FC43640FA59}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+		{0418CF54-8262-435D-A472-3FC43640FA59}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+		{0418CF54-8262-435D-A472-3FC43640FA59}.Debug|Win32.ActiveCfg = Debug|Win32
+		{0418CF54-8262-435D-A472-3FC43640FA59}.Debug|Win32.Build.0 = Debug|Win32
+		{0418CF54-8262-435D-A472-3FC43640FA59}.Debug|x64.ActiveCfg = Debug|x64
+		{0418CF54-8262-435D-A472-3FC43640FA59}.Debug|x64.Build.0 = Debug|x64
+		{0418CF54-8262-435D-A472-3FC43640FA59}.Release|Any CPU.ActiveCfg = Release|Win32
+		{0418CF54-8262-435D-A472-3FC43640FA59}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+		{0418CF54-8262-435D-A472-3FC43640FA59}.Release|Mixed Platforms.Build.0 = Release|Win32
+		{0418CF54-8262-435D-A472-3FC43640FA59}.Release|Win32.ActiveCfg = Release|Win32
+		{0418CF54-8262-435D-A472-3FC43640FA59}.Release|Win32.Build.0 = Release|Win32
+		{0418CF54-8262-435D-A472-3FC43640FA59}.Release|x64.ActiveCfg = Release|x64
+		{0418CF54-8262-435D-A472-3FC43640FA59}.Release|x64.Build.0 = Release|x64
+		{CCD86CC4-DEFF-4AEB-A5CA-5A3E30AA42A3}.Debug|Any CPU.ActiveCfg = Debug|Win32
+		{CCD86CC4-DEFF-4AEB-A5CA-5A3E30AA42A3}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+		{CCD86CC4-DEFF-4AEB-A5CA-5A3E30AA42A3}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+		{CCD86CC4-DEFF-4AEB-A5CA-5A3E30AA42A3}.Debug|Win32.ActiveCfg = Debug|Win32
+		{CCD86CC4-DEFF-4AEB-A5CA-5A3E30AA42A3}.Debug|Win32.Build.0 = Debug|Win32
+		{CCD86CC4-DEFF-4AEB-A5CA-5A3E30AA42A3}.Debug|x64.ActiveCfg = Debug|x64
+		{CCD86CC4-DEFF-4AEB-A5CA-5A3E30AA42A3}.Debug|x64.Build.0 = Debug|x64
+		{CCD86CC4-DEFF-4AEB-A5CA-5A3E30AA42A3}.Release|Any CPU.ActiveCfg = Release|Win32
+		{CCD86CC4-DEFF-4AEB-A5CA-5A3E30AA42A3}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+		{CCD86CC4-DEFF-4AEB-A5CA-5A3E30AA42A3}.Release|Mixed Platforms.Build.0 = Release|Win32
+		{CCD86CC4-DEFF-4AEB-A5CA-5A3E30AA42A3}.Release|Win32.ActiveCfg = Release|Win32
+		{CCD86CC4-DEFF-4AEB-A5CA-5A3E30AA42A3}.Release|Win32.Build.0 = Release|Win32
+		{CCD86CC4-DEFF-4AEB-A5CA-5A3E30AA42A3}.Release|x64.ActiveCfg = Release|x64
+		{CCD86CC4-DEFF-4AEB-A5CA-5A3E30AA42A3}.Release|x64.Build.0 = Release|x64
+		{B3BE10D1-41CC-4BD0-925A-DC157D09589B}.Debug|Any CPU.ActiveCfg = Debug|Win32
+		{B3BE10D1-41CC-4BD0-925A-DC157D09589B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+		{B3BE10D1-41CC-4BD0-925A-DC157D09589B}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+		{B3BE10D1-41CC-4BD0-925A-DC157D09589B}.Debug|Win32.ActiveCfg = Debug|Win32
+		{B3BE10D1-41CC-4BD0-925A-DC157D09589B}.Debug|Win32.Build.0 = Debug|Win32
+		{B3BE10D1-41CC-4BD0-925A-DC157D09589B}.Debug|x64.ActiveCfg = Debug|x64
+		{B3BE10D1-41CC-4BD0-925A-DC157D09589B}.Debug|x64.Build.0 = Debug|x64
+		{B3BE10D1-41CC-4BD0-925A-DC157D09589B}.Release|Any CPU.ActiveCfg = Release|Win32
+		{B3BE10D1-41CC-4BD0-925A-DC157D09589B}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+		{B3BE10D1-41CC-4BD0-925A-DC157D09589B}.Release|Mixed Platforms.Build.0 = Release|Win32
+		{B3BE10D1-41CC-4BD0-925A-DC157D09589B}.Release|Win32.ActiveCfg = Release|Win32
+		{B3BE10D1-41CC-4BD0-925A-DC157D09589B}.Release|Win32.Build.0 = Release|Win32
+		{B3BE10D1-41CC-4BD0-925A-DC157D09589B}.Release|x64.ActiveCfg = Release|x64
+		{B3BE10D1-41CC-4BD0-925A-DC157D09589B}.Release|x64.Build.0 = Release|x64
+		{4DCC2C45-74E0-4C99-B99D-271EAC2A2026}.Debug|Any CPU.ActiveCfg = Debug|Win32
+		{4DCC2C45-74E0-4C99-B99D-271EAC2A2026}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+		{4DCC2C45-74E0-4C99-B99D-271EAC2A2026}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+		{4DCC2C45-74E0-4C99-B99D-271EAC2A2026}.Debug|Win32.ActiveCfg = Debug|Win32
+		{4DCC2C45-74E0-4C99-B99D-271EAC2A2026}.Debug|Win32.Build.0 = Debug|Win32
+		{4DCC2C45-74E0-4C99-B99D-271EAC2A2026}.Debug|x64.ActiveCfg = Debug|x64
+		{4DCC2C45-74E0-4C99-B99D-271EAC2A2026}.Debug|x64.Build.0 = Debug|x64
+		{4DCC2C45-74E0-4C99-B99D-271EAC2A2026}.Release|Any CPU.ActiveCfg = Release|Win32
+		{4DCC2C45-74E0-4C99-B99D-271EAC2A2026}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+		{4DCC2C45-74E0-4C99-B99D-271EAC2A2026}.Release|Mixed Platforms.Build.0 = Release|Win32
+		{4DCC2C45-74E0-4C99-B99D-271EAC2A2026}.Release|Win32.ActiveCfg = Release|Win32
+		{4DCC2C45-74E0-4C99-B99D-271EAC2A2026}.Release|Win32.Build.0 = Release|Win32
+		{4DCC2C45-74E0-4C99-B99D-271EAC2A2026}.Release|x64.ActiveCfg = Release|x64
+		{4DCC2C45-74E0-4C99-B99D-271EAC2A2026}.Release|x64.Build.0 = Release|x64
+		{4DCC2C45-74E0-4C99-B99D-271EAC2A2027}.Debug|Any CPU.ActiveCfg = Debug|Win32
+		{4DCC2C45-74E0-4C99-B99D-271EAC2A2027}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+		{4DCC2C45-74E0-4C99-B99D-271EAC2A2027}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+		{4DCC2C45-74E0-4C99-B99D-271EAC2A2027}.Debug|Win32.ActiveCfg = Debug|Win32
+		{4DCC2C45-74E0-4C99-B99D-271EAC2A2027}.Debug|Win32.Build.0 = Debug|Win32
+		{4DCC2C45-74E0-4C99-B99D-271EAC2A2027}.Debug|x64.ActiveCfg = Debug|x64
+		{4DCC2C45-74E0-4C99-B99D-271EAC2A2027}.Debug|x64.Build.0 = Debug|x64
+		{4DCC2C45-74E0-4C99-B99D-271EAC2A2027}.Release|Any CPU.ActiveCfg = Release|Win32
+		{4DCC2C45-74E0-4C99-B99D-271EAC2A2027}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+		{4DCC2C45-74E0-4C99-B99D-271EAC2A2027}.Release|Mixed Platforms.Build.0 = Release|Win32
+		{4DCC2C45-74E0-4C99-B99D-271EAC2A2027}.Release|Win32.ActiveCfg = Release|Win32
+		{4DCC2C45-74E0-4C99-B99D-271EAC2A2027}.Release|Win32.Build.0 = Release|Win32
+		{4DCC2C45-74E0-4C99-B99D-271EAC2A2027}.Release|x64.ActiveCfg = Release|x64
+		{4DCC2C45-74E0-4C99-B99D-271EAC2A2027}.Release|x64.Build.0 = Release|x64
+		{4DCC2C45-74E0-4C99-B99D-271EAC2A2028}.Debug|Any CPU.ActiveCfg = Debug|Win32
+		{4DCC2C45-74E0-4C99-B99D-271EAC2A2028}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+		{4DCC2C45-74E0-4C99-B99D-271EAC2A2028}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+		{4DCC2C45-74E0-4C99-B99D-271EAC2A2028}.Debug|Win32.ActiveCfg = Debug|Win32
+		{4DCC2C45-74E0-4C99-B99D-271EAC2A2028}.Debug|Win32.Build.0 = Debug|Win32
+		{4DCC2C45-74E0-4C99-B99D-271EAC2A2028}.Debug|x64.ActiveCfg = Debug|x64
+		{4DCC2C45-74E0-4C99-B99D-271EAC2A2028}.Debug|x64.Build.0 = Debug|x64
+		{4DCC2C45-74E0-4C99-B99D-271EAC2A2028}.Release|Any CPU.ActiveCfg = Release|Win32
+		{4DCC2C45-74E0-4C99-B99D-271EAC2A2028}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+		{4DCC2C45-74E0-4C99-B99D-271EAC2A2028}.Release|Mixed Platforms.Build.0 = Release|Win32
+		{4DCC2C45-74E0-4C99-B99D-271EAC2A2028}.Release|Win32.ActiveCfg = Release|Win32
+		{4DCC2C45-74E0-4C99-B99D-271EAC2A2028}.Release|Win32.Build.0 = Release|Win32
+		{4DCC2C45-74E0-4C99-B99D-271EAC2A2028}.Release|x64.ActiveCfg = Release|x64
+		{4DCC2C45-74E0-4C99-B99D-271EAC2A2028}.Release|x64.Build.0 = Release|x64
+		{6866857A-826B-4732-8B0C-368ABADE1BE3}.Debug|Any CPU.ActiveCfg = Debug|Win32
+		{6866857A-826B-4732-8B0C-368ABADE1BE3}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+		{6866857A-826B-4732-8B0C-368ABADE1BE3}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+		{6866857A-826B-4732-8B0C-368ABADE1BE3}.Debug|Win32.ActiveCfg = Debug|Win32
+		{6866857A-826B-4732-8B0C-368ABADE1BE3}.Debug|Win32.Build.0 = Debug|Win32
+		{6866857A-826B-4732-8B0C-368ABADE1BE3}.Debug|x64.ActiveCfg = Debug|x64
+		{6866857A-826B-4732-8B0C-368ABADE1BE3}.Debug|x64.Build.0 = Debug|x64
+		{6866857A-826B-4732-8B0C-368ABADE1BE3}.Release|Any CPU.ActiveCfg = Release|Win32
+		{6866857A-826B-4732-8B0C-368ABADE1BE3}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+		{6866857A-826B-4732-8B0C-368ABADE1BE3}.Release|Mixed Platforms.Build.0 = Release|Win32
+		{6866857A-826B-4732-8B0C-368ABADE1BE3}.Release|Win32.ActiveCfg = Release|Win32
+		{6866857A-826B-4732-8B0C-368ABADE1BE3}.Release|Win32.Build.0 = Release|Win32
+		{6866857A-826B-4732-8B0C-368ABADE1BE3}.Release|x64.ActiveCfg = Release|x64
+		{6866857A-826B-4732-8B0C-368ABADE1BE3}.Release|x64.Build.0 = Release|x64
+		{A76B9C6D-8B1A-4603-A1A6-A00146FCD42B}.Debug|Any CPU.ActiveCfg = Debug|Win32
+		{A76B9C6D-8B1A-4603-A1A6-A00146FCD42B}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+		{A76B9C6D-8B1A-4603-A1A6-A00146FCD42B}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+		{A76B9C6D-8B1A-4603-A1A6-A00146FCD42B}.Debug|Win32.ActiveCfg = Debug|Win32
+		{A76B9C6D-8B1A-4603-A1A6-A00146FCD42B}.Debug|Win32.Build.0 = Debug|Win32
+		{A76B9C6D-8B1A-4603-A1A6-A00146FCD42B}.Debug|x64.ActiveCfg = Debug|x64
+		{A76B9C6D-8B1A-4603-A1A6-A00146FCD42B}.Debug|x64.Build.0 = Debug|x64
+		{A76B9C6D-8B1A-4603-A1A6-A00146FCD42B}.Release|Any CPU.ActiveCfg = Release|Win32
+		{A76B9C6D-8B1A-4603-A1A6-A00146FCD42B}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+		{A76B9C6D-8B1A-4603-A1A6-A00146FCD42B}.Release|Mixed Platforms.Build.0 = Release|Win32
+		{A76B9C6D-8B1A-4603-A1A6-A00146FCD42B}.Release|Win32.ActiveCfg = Release|Win32
+		{A76B9C6D-8B1A-4603-A1A6-A00146FCD42B}.Release|Win32.Build.0 = Release|Win32
+		{A76B9C6D-8B1A-4603-A1A6-A00146FCD42B}.Release|x64.ActiveCfg = Release|x64
+		{A76B9C6D-8B1A-4603-A1A6-A00146FCD42B}.Release|x64.Build.0 = Release|x64
+		{A004458B-A3BD-4395-A97E-A80429CA8EBC}.Debug|Any CPU.ActiveCfg = Debug|Win32
+		{A004458B-A3BD-4395-A97E-A80429CA8EBC}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+		{A004458B-A3BD-4395-A97E-A80429CA8EBC}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+		{A004458B-A3BD-4395-A97E-A80429CA8EBC}.Debug|Win32.ActiveCfg = Debug|Win32
+		{A004458B-A3BD-4395-A97E-A80429CA8EBC}.Debug|Win32.Build.0 = Debug|Win32
+		{A004458B-A3BD-4395-A97E-A80429CA8EBC}.Debug|x64.ActiveCfg = Debug|x64
+		{A004458B-A3BD-4395-A97E-A80429CA8EBC}.Debug|x64.Build.0 = Debug|x64
+		{A004458B-A3BD-4395-A97E-A80429CA8EBC}.Release|Any CPU.ActiveCfg = Release|Win32
+		{A004458B-A3BD-4395-A97E-A80429CA8EBC}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+		{A004458B-A3BD-4395-A97E-A80429CA8EBC}.Release|Mixed Platforms.Build.0 = Release|Win32
+		{A004458B-A3BD-4395-A97E-A80429CA8EBC}.Release|Win32.ActiveCfg = Release|Win32
+		{A004458B-A3BD-4395-A97E-A80429CA8EBC}.Release|Win32.Build.0 = Release|Win32
+		{A004458B-A3BD-4395-A97E-A80429CA8EBC}.Release|x64.ActiveCfg = Release|x64
+		{A004458B-A3BD-4395-A97E-A80429CA8EBC}.Release|x64.Build.0 = Release|x64
+		{9D9F7476-5C17-4F71-8428-ADE6F782612D}.Debug|Any CPU.ActiveCfg = Debug|Win32
+		{9D9F7476-5C17-4F71-8428-ADE6F782612D}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+		{9D9F7476-5C17-4F71-8428-ADE6F782612D}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+		{9D9F7476-5C17-4F71-8428-ADE6F782612D}.Debug|Win32.ActiveCfg = Debug|Win32
+		{9D9F7476-5C17-4F71-8428-ADE6F782612D}.Debug|Win32.Build.0 = Debug|Win32
+		{9D9F7476-5C17-4F71-8428-ADE6F782612D}.Debug|x64.ActiveCfg = Debug|x64
+		{9D9F7476-5C17-4F71-8428-ADE6F782612D}.Debug|x64.Build.0 = Debug|x64
+		{9D9F7476-5C17-4F71-8428-ADE6F782612D}.Release|Any CPU.ActiveCfg = Release|Win32
+		{9D9F7476-5C17-4F71-8428-ADE6F782612D}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+		{9D9F7476-5C17-4F71-8428-ADE6F782612D}.Release|Mixed Platforms.Build.0 = Release|Win32
+		{9D9F7476-5C17-4F71-8428-ADE6F782612D}.Release|Win32.ActiveCfg = Release|Win32
+		{9D9F7476-5C17-4F71-8428-ADE6F782612D}.Release|Win32.Build.0 = Release|Win32
+		{9D9F7476-5C17-4F71-8428-ADE6F782612D}.Release|x64.ActiveCfg = Release|x64
+		{9D9F7476-5C17-4F71-8428-ADE6F782612D}.Release|x64.Build.0 = Release|x64
+		{F0AC18A1-D592-4A0E-8BC3-D424DB7323F6}.Debug|Any CPU.ActiveCfg = Debug|Win32
+		{F0AC18A1-D592-4A0E-8BC3-D424DB7323F6}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+		{F0AC18A1-D592-4A0E-8BC3-D424DB7323F6}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+		{F0AC18A1-D592-4A0E-8BC3-D424DB7323F6}.Debug|Win32.ActiveCfg = Debug|Win32
+		{F0AC18A1-D592-4A0E-8BC3-D424DB7323F6}.Debug|Win32.Build.0 = Debug|Win32
+		{F0AC18A1-D592-4A0E-8BC3-D424DB7323F6}.Debug|x64.ActiveCfg = Debug|x64
+		{F0AC18A1-D592-4A0E-8BC3-D424DB7323F6}.Debug|x64.Build.0 = Debug|x64
+		{F0AC18A1-D592-4A0E-8BC3-D424DB7323F6}.Release|Any CPU.ActiveCfg = Release|Win32
+		{F0AC18A1-D592-4A0E-8BC3-D424DB7323F6}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+		{F0AC18A1-D592-4A0E-8BC3-D424DB7323F6}.Release|Mixed Platforms.Build.0 = Release|Win32
+		{F0AC18A1-D592-4A0E-8BC3-D424DB7323F6}.Release|Win32.ActiveCfg = Release|Win32
+		{F0AC18A1-D592-4A0E-8BC3-D424DB7323F6}.Release|Win32.Build.0 = Release|Win32
+		{F0AC18A1-D592-4A0E-8BC3-D424DB7323F6}.Release|x64.ActiveCfg = Release|x64
+		{F0AC18A1-D592-4A0E-8BC3-D424DB7323F6}.Release|x64.Build.0 = Release|x64
+		{8FB665CB-83AD-4605-A7DE-D77499DDBD39}.Debug|Any CPU.ActiveCfg = Debug|Win32
+		{8FB665CB-83AD-4605-A7DE-D77499DDBD39}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+		{8FB665CB-83AD-4605-A7DE-D77499DDBD39}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+		{8FB665CB-83AD-4605-A7DE-D77499DDBD39}.Debug|Win32.ActiveCfg = Debug|Win32
+		{8FB665CB-83AD-4605-A7DE-D77499DDBD39}.Debug|Win32.Build.0 = Debug|Win32
+		{8FB665CB-83AD-4605-A7DE-D77499DDBD39}.Debug|x64.ActiveCfg = Debug|x64
+		{8FB665CB-83AD-4605-A7DE-D77499DDBD39}.Debug|x64.Build.0 = Debug|x64
+		{8FB665CB-83AD-4605-A7DE-D77499DDBD39}.Release|Any CPU.ActiveCfg = Release|Win32
+		{8FB665CB-83AD-4605-A7DE-D77499DDBD39}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+		{8FB665CB-83AD-4605-A7DE-D77499DDBD39}.Release|Mixed Platforms.Build.0 = Release|Win32
+		{8FB665CB-83AD-4605-A7DE-D77499DDBD39}.Release|Win32.ActiveCfg = Release|Win32
+		{8FB665CB-83AD-4605-A7DE-D77499DDBD39}.Release|Win32.Build.0 = Release|Win32
+		{8FB665CB-83AD-4605-A7DE-D77499DDBD39}.Release|x64.ActiveCfg = Release|x64
+		{8FB665CB-83AD-4605-A7DE-D77499DDBD39}.Release|x64.Build.0 = Release|x64
+		{A6088E1B-45DE-495A-8E8D-6D3A8DF00DD3}.Debug|Any CPU.ActiveCfg = Debug|Win32
+		{A6088E1B-45DE-495A-8E8D-6D3A8DF00DD3}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+		{A6088E1B-45DE-495A-8E8D-6D3A8DF00DD3}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+		{A6088E1B-45DE-495A-8E8D-6D3A8DF00DD3}.Debug|Win32.ActiveCfg = Debug|Win32
+		{A6088E1B-45DE-495A-8E8D-6D3A8DF00DD3}.Debug|Win32.Build.0 = Debug|Win32
+		{A6088E1B-45DE-495A-8E8D-6D3A8DF00DD3}.Debug|x64.ActiveCfg = Debug|x64
+		{A6088E1B-45DE-495A-8E8D-6D3A8DF00DD3}.Debug|x64.Build.0 = Debug|x64
+		{A6088E1B-45DE-495A-8E8D-6D3A8DF00DD3}.Release|Any CPU.ActiveCfg = Release|Win32
+		{A6088E1B-45DE-495A-8E8D-6D3A8DF00DD3}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+		{A6088E1B-45DE-495A-8E8D-6D3A8DF00DD3}.Release|Mixed Platforms.Build.0 = Release|Win32
+		{A6088E1B-45DE-495A-8E8D-6D3A8DF00DD3}.Release|Win32.ActiveCfg = Release|Win32
+		{A6088E1B-45DE-495A-8E8D-6D3A8DF00DD3}.Release|Win32.Build.0 = Release|Win32
+		{A6088E1B-45DE-495A-8E8D-6D3A8DF00DD3}.Release|x64.ActiveCfg = Release|x64
+		{A6088E1B-45DE-495A-8E8D-6D3A8DF00DD3}.Release|x64.Build.0 = Release|x64
+		{86B09B72-94D1-479B-B38A-E523FA229AC9}.Debug|Any CPU.ActiveCfg = Debug|Win32
+		{86B09B72-94D1-479B-B38A-E523FA229AC9}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+		{86B09B72-94D1-479B-B38A-E523FA229AC9}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+		{86B09B72-94D1-479B-B38A-E523FA229AC9}.Debug|Win32.ActiveCfg = Debug|Win32
+		{86B09B72-94D1-479B-B38A-E523FA229AC9}.Debug|Win32.Build.0 = Debug|Win32
+		{86B09B72-94D1-479B-B38A-E523FA229AC9}.Debug|x64.ActiveCfg = Debug|x64
+		{86B09B72-94D1-479B-B38A-E523FA229AC9}.Debug|x64.Build.0 = Debug|x64
+		{86B09B72-94D1-479B-B38A-E523FA229AC9}.Release|Any CPU.ActiveCfg = Release|Win32
+		{86B09B72-94D1-479B-B38A-E523FA229AC9}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+		{86B09B72-94D1-479B-B38A-E523FA229AC9}.Release|Mixed Platforms.Build.0 = Release|Win32
+		{86B09B72-94D1-479B-B38A-E523FA229AC9}.Release|Win32.ActiveCfg = Release|Win32
+		{86B09B72-94D1-479B-B38A-E523FA229AC9}.Release|Win32.Build.0 = Release|Win32
+		{86B09B72-94D1-479B-B38A-E523FA229AC9}.Release|x64.ActiveCfg = Release|x64
+		{86B09B72-94D1-479B-B38A-E523FA229AC9}.Release|x64.Build.0 = Release|x64
+		{FAC238B2-AD5D-4D64-A74C-EA5CCEB3B359}.Debug|Any CPU.ActiveCfg = Debug|Win32
+		{FAC238B2-AD5D-4D64-A74C-EA5CCEB3B359}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+		{FAC238B2-AD5D-4D64-A74C-EA5CCEB3B359}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+		{FAC238B2-AD5D-4D64-A74C-EA5CCEB3B359}.Debug|Win32.ActiveCfg = Debug|Win32
+		{FAC238B2-AD5D-4D64-A74C-EA5CCEB3B359}.Debug|Win32.Build.0 = Debug|Win32
+		{FAC238B2-AD5D-4D64-A74C-EA5CCEB3B359}.Debug|x64.ActiveCfg = Debug|x64
+		{FAC238B2-AD5D-4D64-A74C-EA5CCEB3B359}.Debug|x64.Build.0 = Debug|x64
+		{FAC238B2-AD5D-4D64-A74C-EA5CCEB3B359}.Release|Any CPU.ActiveCfg = Release|Win32
+		{FAC238B2-AD5D-4D64-A74C-EA5CCEB3B359}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+		{FAC238B2-AD5D-4D64-A74C-EA5CCEB3B359}.Release|Mixed Platforms.Build.0 = Release|Win32
+		{FAC238B2-AD5D-4D64-A74C-EA5CCEB3B359}.Release|Win32.ActiveCfg = Release|Win32
+		{FAC238B2-AD5D-4D64-A74C-EA5CCEB3B359}.Release|Win32.Build.0 = Release|Win32
+		{FAC238B2-AD5D-4D64-A74C-EA5CCEB3B359}.Release|x64.ActiveCfg = Release|x64
+		{FAC238B2-AD5D-4D64-A74C-EA5CCEB3B359}.Release|x64.Build.0 = Release|x64
+		{9B1140CE-020B-4F71-A97B-D82D9D83377E}.Debug|Any CPU.ActiveCfg = Debug|Win32
+		{9B1140CE-020B-4F71-A97B-D82D9D83377E}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+		{9B1140CE-020B-4F71-A97B-D82D9D83377E}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+		{9B1140CE-020B-4F71-A97B-D82D9D83377E}.Debug|Win32.ActiveCfg = Debug|Win32
+		{9B1140CE-020B-4F71-A97B-D82D9D83377E}.Debug|Win32.Build.0 = Debug|Win32
+		{9B1140CE-020B-4F71-A97B-D82D9D83377E}.Debug|x64.ActiveCfg = Debug|x64
+		{9B1140CE-020B-4F71-A97B-D82D9D83377E}.Debug|x64.Build.0 = Debug|x64
+		{9B1140CE-020B-4F71-A97B-D82D9D83377E}.Release|Any CPU.ActiveCfg = Release|Win32
+		{9B1140CE-020B-4F71-A97B-D82D9D83377E}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+		{9B1140CE-020B-4F71-A97B-D82D9D83377E}.Release|Mixed Platforms.Build.0 = Release|Win32
+		{9B1140CE-020B-4F71-A97B-D82D9D83377E}.Release|Win32.ActiveCfg = Release|Win32
+		{9B1140CE-020B-4F71-A97B-D82D9D83377E}.Release|Win32.Build.0 = Release|Win32
+		{9B1140CE-020B-4F71-A97B-D82D9D83377E}.Release|x64.ActiveCfg = Release|x64
+		{9B1140CE-020B-4F71-A97B-D82D9D83377E}.Release|x64.Build.0 = Release|x64
+		{0EA1CB6D-B45E-4597-8A91-D0E621C21512}.Debug|Any CPU.ActiveCfg = Debug|Win32
+		{0EA1CB6D-B45E-4597-8A91-D0E621C21512}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+		{0EA1CB6D-B45E-4597-8A91-D0E621C21512}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+		{0EA1CB6D-B45E-4597-8A91-D0E621C21512}.Debug|Win32.ActiveCfg = Debug|Win32
+		{0EA1CB6D-B45E-4597-8A91-D0E621C21512}.Debug|Win32.Build.0 = Debug|Win32
+		{0EA1CB6D-B45E-4597-8A91-D0E621C21512}.Debug|x64.ActiveCfg = Debug|x64
+		{0EA1CB6D-B45E-4597-8A91-D0E621C21512}.Debug|x64.Build.0 = Debug|x64
+		{0EA1CB6D-B45E-4597-8A91-D0E621C21512}.Release|Any CPU.ActiveCfg = Release|Win32
+		{0EA1CB6D-B45E-4597-8A91-D0E621C21512}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+		{0EA1CB6D-B45E-4597-8A91-D0E621C21512}.Release|Mixed Platforms.Build.0 = Release|Win32
+		{0EA1CB6D-B45E-4597-8A91-D0E621C21512}.Release|Win32.ActiveCfg = Release|Win32
+		{0EA1CB6D-B45E-4597-8A91-D0E621C21512}.Release|Win32.Build.0 = Release|Win32
+		{0EA1CB6D-B45E-4597-8A91-D0E621C21512}.Release|x64.ActiveCfg = Release|x64
+		{0EA1CB6D-B45E-4597-8A91-D0E621C21512}.Release|x64.Build.0 = Release|x64
+		{CA044B76-5529-4C38-9B09-8FA9444E37E8}.Debug|Any CPU.ActiveCfg = Debug|x64
+		{CA044B76-5529-4C38-9B09-8FA9444E37E8}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
+		{CA044B76-5529-4C38-9B09-8FA9444E37E8}.Debug|Mixed Platforms.Build.0 = Debug|x64
+		{CA044B76-5529-4C38-9B09-8FA9444E37E8}.Debug|Win32.ActiveCfg = Debug|Win32
+		{CA044B76-5529-4C38-9B09-8FA9444E37E8}.Debug|Win32.Build.0 = Debug|Win32
+		{CA044B76-5529-4C38-9B09-8FA9444E37E8}.Debug|x64.ActiveCfg = Debug|x64
+		{CA044B76-5529-4C38-9B09-8FA9444E37E8}.Debug|x64.Build.0 = Debug|x64
+		{CA044B76-5529-4C38-9B09-8FA9444E37E8}.Release|Any CPU.ActiveCfg = Release|Win32
+		{CA044B76-5529-4C38-9B09-8FA9444E37E8}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+		{CA044B76-5529-4C38-9B09-8FA9444E37E8}.Release|Mixed Platforms.Build.0 = Release|Win32
+		{CA044B76-5529-4C38-9B09-8FA9444E37E8}.Release|Win32.ActiveCfg = Release|Win32
+		{CA044B76-5529-4C38-9B09-8FA9444E37E8}.Release|Win32.Build.0 = Release|Win32
+		{CA044B76-5529-4C38-9B09-8FA9444E37E8}.Release|x64.ActiveCfg = Release|x64
+		{CA044B76-5529-4C38-9B09-8FA9444E37E8}.Release|x64.Build.0 = Release|x64
+		{8388764D-358D-4BAA-A32A-A18486CA1BC4}.Debug|Any CPU.ActiveCfg = Debug|Win32
+		{8388764D-358D-4BAA-A32A-A18486CA1BC4}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+		{8388764D-358D-4BAA-A32A-A18486CA1BC4}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+		{8388764D-358D-4BAA-A32A-A18486CA1BC4}.Debug|Win32.ActiveCfg = Debug|Win32
+		{8388764D-358D-4BAA-A32A-A18486CA1BC4}.Debug|Win32.Build.0 = Debug|Win32
+		{8388764D-358D-4BAA-A32A-A18486CA1BC4}.Debug|x64.ActiveCfg = Debug|x64
+		{8388764D-358D-4BAA-A32A-A18486CA1BC4}.Debug|x64.Build.0 = Debug|x64
+		{8388764D-358D-4BAA-A32A-A18486CA1BC4}.Release|Any CPU.ActiveCfg = Release|Win32
+		{8388764D-358D-4BAA-A32A-A18486CA1BC4}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+		{8388764D-358D-4BAA-A32A-A18486CA1BC4}.Release|Mixed Platforms.Build.0 = Release|Win32
+		{8388764D-358D-4BAA-A32A-A18486CA1BC4}.Release|Win32.ActiveCfg = Release|Win32
+		{8388764D-358D-4BAA-A32A-A18486CA1BC4}.Release|Win32.Build.0 = Release|Win32
+		{8388764D-358D-4BAA-A32A-A18486CA1BC4}.Release|x64.ActiveCfg = Release|x64
+		{8388764D-358D-4BAA-A32A-A18486CA1BC4}.Release|x64.Build.0 = Release|x64
+		{85BCDC6D-6F3E-4F6D-BE76-6B5B5B5611C4}.Debug|Any CPU.ActiveCfg = Debug|Win32
+		{85BCDC6D-6F3E-4F6D-BE76-6B5B5B5611C4}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+		{85BCDC6D-6F3E-4F6D-BE76-6B5B5B5611C4}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+		{85BCDC6D-6F3E-4F6D-BE76-6B5B5B5611C4}.Debug|Win32.ActiveCfg = Debug|Win32
+		{85BCDC6D-6F3E-4F6D-BE76-6B5B5B5611C4}.Debug|Win32.Build.0 = Debug|Win32
+		{85BCDC6D-6F3E-4F6D-BE76-6B5B5B5611C4}.Debug|x64.ActiveCfg = Debug|x64
+		{85BCDC6D-6F3E-4F6D-BE76-6B5B5B5611C4}.Debug|x64.Build.0 = Debug|x64
+		{85BCDC6D-6F3E-4F6D-BE76-6B5B5B5611C4}.Release|Any CPU.ActiveCfg = Release|Win32
+		{85BCDC6D-6F3E-4F6D-BE76-6B5B5B5611C4}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+		{85BCDC6D-6F3E-4F6D-BE76-6B5B5B5611C4}.Release|Mixed Platforms.Build.0 = Release|Win32
+		{85BCDC6D-6F3E-4F6D-BE76-6B5B5B5611C4}.Release|Win32.ActiveCfg = Release|Win32
+		{85BCDC6D-6F3E-4F6D-BE76-6B5B5B5611C4}.Release|Win32.Build.0 = Release|Win32
+		{85BCDC6D-6F3E-4F6D-BE76-6B5B5B5611C4}.Release|x64.ActiveCfg = Release|x64
+		{85BCDC6D-6F3E-4F6D-BE76-6B5B5B5611C4}.Release|x64.Build.0 = Release|x64
+		{6AAD61DD-5658-4384-8B47-CF4FE531CC1C}.Debug|Any CPU.ActiveCfg = Debug|x64
+		{6AAD61DD-5658-4384-8B47-CF4FE531CC1C}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
+		{6AAD61DD-5658-4384-8B47-CF4FE531CC1C}.Debug|Mixed Platforms.Build.0 = Debug|x64
+		{6AAD61DD-5658-4384-8B47-CF4FE531CC1C}.Debug|Win32.ActiveCfg = Debug|Win32
+		{6AAD61DD-5658-4384-8B47-CF4FE531CC1C}.Debug|Win32.Build.0 = Debug|Win32
+		{6AAD61DD-5658-4384-8B47-CF4FE531CC1C}.Debug|x64.ActiveCfg = Debug|x64
+		{6AAD61DD-5658-4384-8B47-CF4FE531CC1C}.Debug|x64.Build.0 = Debug|x64
+		{6AAD61DD-5658-4384-8B47-CF4FE531CC1C}.Release|Any CPU.ActiveCfg = Release|x64
+		{6AAD61DD-5658-4384-8B47-CF4FE531CC1C}.Release|Mixed Platforms.ActiveCfg = Release|x64
+		{6AAD61DD-5658-4384-8B47-CF4FE531CC1C}.Release|Mixed Platforms.Build.0 = Release|x64
+		{6AAD61DD-5658-4384-8B47-CF4FE531CC1C}.Release|Win32.ActiveCfg = Release|Win32
+		{6AAD61DD-5658-4384-8B47-CF4FE531CC1C}.Release|Win32.Build.0 = Release|Win32
+		{6AAD61DD-5658-4384-8B47-CF4FE531CC1C}.Release|x64.ActiveCfg = Release|x64
+		{6AAD61DD-5658-4384-8B47-CF4FE531CC1C}.Release|x64.Build.0 = Release|x64
+		{0E96F8C3-5767-49F2-AEBC-C824F987BD18}.Debug|Any CPU.ActiveCfg = Debug|x64
+		{0E96F8C3-5767-49F2-AEBC-C824F987BD18}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
+		{0E96F8C3-5767-49F2-AEBC-C824F987BD18}.Debug|Mixed Platforms.Build.0 = Debug|x64
+		{0E96F8C3-5767-49F2-AEBC-C824F987BD18}.Debug|Win32.ActiveCfg = Debug|Win32
+		{0E96F8C3-5767-49F2-AEBC-C824F987BD18}.Debug|Win32.Build.0 = Debug|Win32
+		{0E96F8C3-5767-49F2-AEBC-C824F987BD18}.Debug|x64.ActiveCfg = Debug|x64
+		{0E96F8C3-5767-49F2-AEBC-C824F987BD18}.Debug|x64.Build.0 = Debug|x64
+		{0E96F8C3-5767-49F2-AEBC-C824F987BD18}.Release|Any CPU.ActiveCfg = Release|x64
+		{0E96F8C3-5767-49F2-AEBC-C824F987BD18}.Release|Mixed Platforms.ActiveCfg = Release|x64
+		{0E96F8C3-5767-49F2-AEBC-C824F987BD18}.Release|Mixed Platforms.Build.0 = Release|x64
+		{0E96F8C3-5767-49F2-AEBC-C824F987BD18}.Release|Win32.ActiveCfg = Release|Win32
+		{0E96F8C3-5767-49F2-AEBC-C824F987BD18}.Release|Win32.Build.0 = Release|Win32
+		{0E96F8C3-5767-49F2-AEBC-C824F987BD18}.Release|x64.ActiveCfg = Release|x64
+		{0E96F8C3-5767-49F2-AEBC-C824F987BD18}.Release|x64.Build.0 = Release|x64
+		{4C437511-DEEA-4C06-9B12-7FEFFF82FBC9}.Debug|Any CPU.ActiveCfg = Debug|x64
+		{4C437511-DEEA-4C06-9B12-7FEFFF82FBC9}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
+		{4C437511-DEEA-4C06-9B12-7FEFFF82FBC9}.Debug|Mixed Platforms.Build.0 = Debug|x64
+		{4C437511-DEEA-4C06-9B12-7FEFFF82FBC9}.Debug|Win32.ActiveCfg = Debug|Win32
+		{4C437511-DEEA-4C06-9B12-7FEFFF82FBC9}.Debug|Win32.Build.0 = Debug|Win32
+		{4C437511-DEEA-4C06-9B12-7FEFFF82FBC9}.Debug|x64.ActiveCfg = Debug|x64
+		{4C437511-DEEA-4C06-9B12-7FEFFF82FBC9}.Debug|x64.Build.0 = Debug|x64
+		{4C437511-DEEA-4C06-9B12-7FEFFF82FBC9}.Release|Any CPU.ActiveCfg = Release|x64
+		{4C437511-DEEA-4C06-9B12-7FEFFF82FBC9}.Release|Mixed Platforms.ActiveCfg = Release|x64
+		{4C437511-DEEA-4C06-9B12-7FEFFF82FBC9}.Release|Mixed Platforms.Build.0 = Release|x64
+		{4C437511-DEEA-4C06-9B12-7FEFFF82FBC9}.Release|Win32.ActiveCfg = Release|Win32
+		{4C437511-DEEA-4C06-9B12-7FEFFF82FBC9}.Release|Win32.Build.0 = Release|Win32
+		{4C437511-DEEA-4C06-9B12-7FEFFF82FBC9}.Release|x64.ActiveCfg = Release|x64
+		{4C437511-DEEA-4C06-9B12-7FEFFF82FBC9}.Release|x64.Build.0 = Release|x64
+		{25F90B8E-B520-430D-8120-8E38507E69B8}.Debug|Any CPU.ActiveCfg = Debug|Win32
+		{25F90B8E-B520-430D-8120-8E38507E69B8}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+		{25F90B8E-B520-430D-8120-8E38507E69B8}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+		{25F90B8E-B520-430D-8120-8E38507E69B8}.Debug|Win32.ActiveCfg = Debug|Win32
+		{25F90B8E-B520-430D-8120-8E38507E69B8}.Debug|Win32.Build.0 = Debug|Win32
+		{25F90B8E-B520-430D-8120-8E38507E69B8}.Debug|x64.ActiveCfg = Debug|x64
+		{25F90B8E-B520-430D-8120-8E38507E69B8}.Debug|x64.Build.0 = Debug|x64
+		{25F90B8E-B520-430D-8120-8E38507E69B8}.Release|Any CPU.ActiveCfg = Release|Win32
+		{25F90B8E-B520-430D-8120-8E38507E69B8}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+		{25F90B8E-B520-430D-8120-8E38507E69B8}.Release|Mixed Platforms.Build.0 = Release|Win32
+		{25F90B8E-B520-430D-8120-8E38507E69B8}.Release|Win32.ActiveCfg = Release|Win32
+		{25F90B8E-B520-430D-8120-8E38507E69B8}.Release|Win32.Build.0 = Release|Win32
+		{25F90B8E-B520-430D-8120-8E38507E69B8}.Release|x64.ActiveCfg = Release|x64
+		{25F90B8E-B520-430D-8120-8E38507E69B8}.Release|x64.Build.0 = Release|x64
+		{8C3245A6-636B-4E36-9F10-EB1A4C30008E}.Debug|Any CPU.ActiveCfg = Debug|x64
+		{8C3245A6-636B-4E36-9F10-EB1A4C30008E}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
+		{8C3245A6-636B-4E36-9F10-EB1A4C30008E}.Debug|Mixed Platforms.Build.0 = Debug|x64
+		{8C3245A6-636B-4E36-9F10-EB1A4C30008E}.Debug|Win32.ActiveCfg = Debug|Win32
+		{8C3245A6-636B-4E36-9F10-EB1A4C30008E}.Debug|Win32.Build.0 = Debug|Win32
+		{8C3245A6-636B-4E36-9F10-EB1A4C30008E}.Debug|x64.ActiveCfg = Debug|x64
+		{8C3245A6-636B-4E36-9F10-EB1A4C30008E}.Debug|x64.Build.0 = Debug|x64
+		{8C3245A6-636B-4E36-9F10-EB1A4C30008E}.Release|Any CPU.ActiveCfg = Release|x64
+		{8C3245A6-636B-4E36-9F10-EB1A4C30008E}.Release|Mixed Platforms.ActiveCfg = Release|x64
+		{8C3245A6-636B-4E36-9F10-EB1A4C30008E}.Release|Mixed Platforms.Build.0 = Release|x64
+		{8C3245A6-636B-4E36-9F10-EB1A4C30008E}.Release|Win32.ActiveCfg = Release|Win32
+		{8C3245A6-636B-4E36-9F10-EB1A4C30008E}.Release|Win32.Build.0 = Release|Win32
+		{8C3245A6-636B-4E36-9F10-EB1A4C30008E}.Release|x64.ActiveCfg = Release|x64
+		{8C3245A6-636B-4E36-9F10-EB1A4C30008E}.Release|x64.Build.0 = Release|x64
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/quickstart_csharp.sln
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/quickstart_csharp.sln b/geode-client-native/quickstart/quickstart_csharp.sln
new file mode 100644
index 0000000..7275315
--- /dev/null
+++ b/geode-client-native/quickstart/quickstart_csharp.sln
@@ -0,0 +1,520 @@
+\ufeff
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{8E8018A8-890F-4D1D-ABD1-D54F4DD604DE}"
+	ProjectSection(SolutionItems) = preProject
+		XMLs\clientBasicOperations.xml = XMLs\clientBasicOperations.xml
+		XMLs\clientCqQuery.xml = XMLs\clientCqQuery.xml
+		XMLs\clientDataExpiration.xml = XMLs\clientDataExpiration.xml
+		XMLs\clientDelta.xml = XMLs\clientDelta.xml
+		XMLs\clientDurable.xml = XMLs\clientDurable.xml
+		XMLs\clientExceptions.xml = XMLs\clientExceptions.xml
+		XMLs\clientExecuteFunctions.xml = XMLs\clientExecuteFunctions.xml
+		XMLs\clientHACache.xml = XMLs\clientHACache.xml
+		XMLs\clientLoaderListenerWriter.xml = XMLs\clientLoaderListenerWriter.xml
+		XMLs\clientRefIDExample.xml = XMLs\clientRefIDExample.xml
+		XMLs\clientRegisterInterest.xml = XMLs\clientRegisterInterest.xml
+		XMLs\clientRemoteQuery.xml = XMLs\clientRemoteQuery.xml
+		XMLs\serverBasicOperations.xml = XMLs\serverBasicOperations.xml
+		XMLs\serverCqQuery.xml = XMLs\serverCqQuery.xml
+		XMLs\serverDataExpiration.xml = XMLs\serverDataExpiration.xml
+		XMLs\serverDurableClient.xml = XMLs\serverDurableClient.xml
+		XMLs\serverExceptions.xml = XMLs\serverExceptions.xml
+		XMLs\serverExecuteFunctions.xml = XMLs\serverExecuteFunctions.xml
+		XMLs\serverExecuteFunctions2.xml = XMLs\serverExecuteFunctions2.xml
+		XMLs\serverHACache.xml = XMLs\serverHACache.xml
+		XMLs\serverHACache2.xml = XMLs\serverHACache2.xml
+		XMLs\serverLoaderListenerWriter.xml = XMLs\serverLoaderListenerWriter.xml
+		XMLs\serverPutAllGetAllOperations.xml = XMLs\serverPutAllGetAllOperations.xml
+		XMLs\serverRefIDExample.xml = XMLs\serverRefIDExample.xml
+		XMLs\serverRegisterInterest.xml = XMLs\serverRegisterInterest.xml
+		XMLs\serverRemoteQuery.xml = XMLs\serverRemoteQuery.xml
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BasicOperations", "csharp\vsprojects\BasicOperations\BasicOperations.csproj", "{5F769A4E-0FF3-4859-8958-CDD075AC01C3}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DataExpiration", "csharp\vsprojects\DataExpiration\DataExpiration.csproj", "{AB5EF944-C1FC-4FB2-8831-081EC8368D24}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LoaderListenerWriter", "csharp\vsprojects\LoaderListenerWriter\LoaderListenerWriter.csproj", "{45F78C44-0D03-4CF9-82C9-8BC486F02FF7}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RegisterInterest", "csharp\vsprojects\RegisterInterest\RegisterInterest.csproj", "{7200D4CE-78AC-401E-B749-E61656D8078D}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RemoteQuery", "csharp\vsprojects\RemoteQuery\RemoteQuery.csproj", "{F15736B5-8582-4B38-8B09-AA2ED4EA9575}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CqQuery", "csharp\vsprojects\CqQuery\CqQuery.csproj", "{96DAADFD-1454-43FA-AA69-28E357901E3C}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExecuteFunctions", "csharp\vsprojects\ExecuteFunctions\ExecuteFunctions.csproj", "{F15736B5-8582-4B38-8B09-AA2ED4EA9577}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimplePlugins", "csharp\vsprojects\SimplePlugins\SimplePlugins.csproj", "{915061E8-66C2-4597-91F2-45CA531910EE}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Interop", "csharp\vsprojects\Interop\Interop.csproj", "{38DD7F7C-9460-4BC6-A58F-A9D457FC42F4}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HACache", "csharp\vsprojects\HACache\HACache.csproj", "{3AFF5409-510E-4DDE-BBD6-96F2C858AA53}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Exceptions", "csharp\vsprojects\Exceptions\Exceptions.csproj", "{6AF4E7C4-0EE2-48FE-A075-B01B3D033998}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DurableClient", "csharp\vsprojects\DurableClient\DurableClient.csproj", "{7BD6A234-AD2E-4BE6-BAEA-EB258EAAD0C5}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Security", "csharp\vsprojects\Security\Security.csproj", "{5F76AA4D-0FF3-4859-8958-CDD075AC01C3}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MultiuserSecurity", "csharp\vsprojects\MultiuserSecurity\MultiuserSecurity.csproj", "{7A99B197-118D-4B03-8B87-94F0322C255B}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PutAllGetAllOperations", "csharp\vsprojects\PutAllGetAllOperations\PutAllGetAllOperations.csproj", "{3CB335BA-E09F-4677-BCAD-A0ECF3218641}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PoolWithEndpoints", "csharp\vsprojects\PoolWithEndpoints\PoolWithEndpoints.csproj", "{E7A1C0BC-B488-4F38-A1D4-108EDC47E38F}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PoolRemoteQuery", "csharp\vsprojects\PoolRemoteQuery\PoolRemoteQuery.csproj", "{B0A9BC2F-26F2-4BDD-BF02-73C097F926FE}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PdxRemoteQuery", "csharp\vsprojects\PdxRemoteQuery\PdxRemoteQuery.csproj", "{7F99AA48-8931-4D92-9F1F-01F7AF8123FC}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PdxSerializer", "csharp\vsprojects\PdxSerializer\PdxSerializer.csproj", "{4D9FE6D0-8528-424B-97E9-AD69C23F1D3F}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PdxInstance", "csharp\vsprojects\PdxInstance\PdxInstance.csproj", "{CC136286-D242-49FF-95F2-5DB405364032}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DistributedSystem", "csharp\vsprojects\DistributedSystem\DistributedSystem.csproj", "{A1434552-3864-4E91-A31B-3E38D966F816}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PoolCqQuery", "csharp\vsprojects\PoolCqQuery\PoolCqQuery.csproj", "{F6229FB4-8E5B-456D-80FC-6E86182D7284}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Delta", "csharp\vsprojects\Delta\Delta.csproj", "{36F048FD-9DFD-426A-AA72-483043CB7E17}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RefIDExample", "csharp\vsprojects\RefIDExample\RefIDExample.csproj", "{63FC7A13-FA33-44DF-8FF0-3220F7176BC3}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Transactions", "csharp\vsprojects\Transactions\Transactions.csproj", "{51229C8F-64D5-4302-8C93-AAEC3C27864B}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TransactionsXA", "csharp\vsprojects\TransactionsXA\TransactionsXA.csproj", "{AC0A17DA-3880-47A4-962F-1237431DBFD7}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Debug|Mixed Platforms = Debug|Mixed Platforms
+		Debug|Win32 = Debug|Win32
+		Debug|x64 = Debug|x64
+		Debug|x86 = Debug|x86
+		Release|Any CPU = Release|Any CPU
+		Release|Mixed Platforms = Release|Mixed Platforms
+		Release|Win32 = Release|Win32
+		Release|x64 = Release|x64
+		Release|x86 = Release|x86
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{5F769A4E-0FF3-4859-8958-CDD075AC01C3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{5F769A4E-0FF3-4859-8958-CDD075AC01C3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{5F769A4E-0FF3-4859-8958-CDD075AC01C3}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{5F769A4E-0FF3-4859-8958-CDD075AC01C3}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{5F769A4E-0FF3-4859-8958-CDD075AC01C3}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{5F769A4E-0FF3-4859-8958-CDD075AC01C3}.Debug|x64.ActiveCfg = Debug|x64
+		{5F769A4E-0FF3-4859-8958-CDD075AC01C3}.Debug|x64.Build.0 = Debug|x64
+		{5F769A4E-0FF3-4859-8958-CDD075AC01C3}.Debug|x86.ActiveCfg = Debug|x64
+		{5F769A4E-0FF3-4859-8958-CDD075AC01C3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{5F769A4E-0FF3-4859-8958-CDD075AC01C3}.Release|Any CPU.Build.0 = Release|Any CPU
+		{5F769A4E-0FF3-4859-8958-CDD075AC01C3}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{5F769A4E-0FF3-4859-8958-CDD075AC01C3}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{5F769A4E-0FF3-4859-8958-CDD075AC01C3}.Release|Win32.ActiveCfg = Release|Any CPU
+		{5F769A4E-0FF3-4859-8958-CDD075AC01C3}.Release|x64.ActiveCfg = Release|x64
+		{5F769A4E-0FF3-4859-8958-CDD075AC01C3}.Release|x64.Build.0 = Release|x64
+		{5F769A4E-0FF3-4859-8958-CDD075AC01C3}.Release|x86.ActiveCfg = Release|x64
+		{AB5EF944-C1FC-4FB2-8831-081EC8368D24}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{AB5EF944-C1FC-4FB2-8831-081EC8368D24}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{AB5EF944-C1FC-4FB2-8831-081EC8368D24}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{AB5EF944-C1FC-4FB2-8831-081EC8368D24}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{AB5EF944-C1FC-4FB2-8831-081EC8368D24}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{AB5EF944-C1FC-4FB2-8831-081EC8368D24}.Debug|x64.ActiveCfg = Debug|x64
+		{AB5EF944-C1FC-4FB2-8831-081EC8368D24}.Debug|x64.Build.0 = Debug|x64
+		{AB5EF944-C1FC-4FB2-8831-081EC8368D24}.Debug|x86.ActiveCfg = Debug|x64
+		{AB5EF944-C1FC-4FB2-8831-081EC8368D24}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{AB5EF944-C1FC-4FB2-8831-081EC8368D24}.Release|Any CPU.Build.0 = Release|Any CPU
+		{AB5EF944-C1FC-4FB2-8831-081EC8368D24}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{AB5EF944-C1FC-4FB2-8831-081EC8368D24}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{AB5EF944-C1FC-4FB2-8831-081EC8368D24}.Release|Win32.ActiveCfg = Release|Any CPU
+		{AB5EF944-C1FC-4FB2-8831-081EC8368D24}.Release|x64.ActiveCfg = Release|x64
+		{AB5EF944-C1FC-4FB2-8831-081EC8368D24}.Release|x64.Build.0 = Release|x64
+		{AB5EF944-C1FC-4FB2-8831-081EC8368D24}.Release|x86.ActiveCfg = Release|x64
+		{45F78C44-0D03-4CF9-82C9-8BC486F02FF7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{45F78C44-0D03-4CF9-82C9-8BC486F02FF7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{45F78C44-0D03-4CF9-82C9-8BC486F02FF7}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{45F78C44-0D03-4CF9-82C9-8BC486F02FF7}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{45F78C44-0D03-4CF9-82C9-8BC486F02FF7}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{45F78C44-0D03-4CF9-82C9-8BC486F02FF7}.Debug|x64.ActiveCfg = Debug|x64
+		{45F78C44-0D03-4CF9-82C9-8BC486F02FF7}.Debug|x64.Build.0 = Debug|x64
+		{45F78C44-0D03-4CF9-82C9-8BC486F02FF7}.Debug|x86.ActiveCfg = Debug|x64
+		{45F78C44-0D03-4CF9-82C9-8BC486F02FF7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{45F78C44-0D03-4CF9-82C9-8BC486F02FF7}.Release|Any CPU.Build.0 = Release|Any CPU
+		{45F78C44-0D03-4CF9-82C9-8BC486F02FF7}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{45F78C44-0D03-4CF9-82C9-8BC486F02FF7}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{45F78C44-0D03-4CF9-82C9-8BC486F02FF7}.Release|Win32.ActiveCfg = Release|Any CPU
+		{45F78C44-0D03-4CF9-82C9-8BC486F02FF7}.Release|x64.ActiveCfg = Release|x64
+		{45F78C44-0D03-4CF9-82C9-8BC486F02FF7}.Release|x64.Build.0 = Release|x64
+		{45F78C44-0D03-4CF9-82C9-8BC486F02FF7}.Release|x86.ActiveCfg = Release|x64
+		{7200D4CE-78AC-401E-B749-E61656D8078D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{7200D4CE-78AC-401E-B749-E61656D8078D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{7200D4CE-78AC-401E-B749-E61656D8078D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{7200D4CE-78AC-401E-B749-E61656D8078D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{7200D4CE-78AC-401E-B749-E61656D8078D}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{7200D4CE-78AC-401E-B749-E61656D8078D}.Debug|x64.ActiveCfg = Debug|x64
+		{7200D4CE-78AC-401E-B749-E61656D8078D}.Debug|x64.Build.0 = Debug|x64
+		{7200D4CE-78AC-401E-B749-E61656D8078D}.Debug|x86.ActiveCfg = Debug|x64
+		{7200D4CE-78AC-401E-B749-E61656D8078D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{7200D4CE-78AC-401E-B749-E61656D8078D}.Release|Any CPU.Build.0 = Release|Any CPU
+		{7200D4CE-78AC-401E-B749-E61656D8078D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{7200D4CE-78AC-401E-B749-E61656D8078D}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{7200D4CE-78AC-401E-B749-E61656D8078D}.Release|Win32.ActiveCfg = Release|Any CPU
+		{7200D4CE-78AC-401E-B749-E61656D8078D}.Release|x64.ActiveCfg = Release|x64
+		{7200D4CE-78AC-401E-B749-E61656D8078D}.Release|x64.Build.0 = Release|x64
+		{7200D4CE-78AC-401E-B749-E61656D8078D}.Release|x86.ActiveCfg = Release|x64
+		{F15736B5-8582-4B38-8B09-AA2ED4EA9575}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{F15736B5-8582-4B38-8B09-AA2ED4EA9575}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{F15736B5-8582-4B38-8B09-AA2ED4EA9575}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{F15736B5-8582-4B38-8B09-AA2ED4EA9575}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{F15736B5-8582-4B38-8B09-AA2ED4EA9575}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{F15736B5-8582-4B38-8B09-AA2ED4EA9575}.Debug|x64.ActiveCfg = Debug|x64
+		{F15736B5-8582-4B38-8B09-AA2ED4EA9575}.Debug|x64.Build.0 = Debug|x64
+		{F15736B5-8582-4B38-8B09-AA2ED4EA9575}.Debug|x86.ActiveCfg = Debug|x64
+		{F15736B5-8582-4B38-8B09-AA2ED4EA9575}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{F15736B5-8582-4B38-8B09-AA2ED4EA9575}.Release|Any CPU.Build.0 = Release|Any CPU
+		{F15736B5-8582-4B38-8B09-AA2ED4EA9575}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{F15736B5-8582-4B38-8B09-AA2ED4EA9575}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{F15736B5-8582-4B38-8B09-AA2ED4EA9575}.Release|Win32.ActiveCfg = Release|Any CPU
+		{F15736B5-8582-4B38-8B09-AA2ED4EA9575}.Release|x64.ActiveCfg = Release|x64
+		{F15736B5-8582-4B38-8B09-AA2ED4EA9575}.Release|x64.Build.0 = Release|x64
+		{F15736B5-8582-4B38-8B09-AA2ED4EA9575}.Release|x86.ActiveCfg = Release|x64
+		{96DAADFD-1454-43FA-AA69-28E357901E3C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{96DAADFD-1454-43FA-AA69-28E357901E3C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{96DAADFD-1454-43FA-AA69-28E357901E3C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{96DAADFD-1454-43FA-AA69-28E357901E3C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{96DAADFD-1454-43FA-AA69-28E357901E3C}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{96DAADFD-1454-43FA-AA69-28E357901E3C}.Debug|x64.ActiveCfg = Debug|x64
+		{96DAADFD-1454-43FA-AA69-28E357901E3C}.Debug|x64.Build.0 = Debug|x64
+		{96DAADFD-1454-43FA-AA69-28E357901E3C}.Debug|x86.ActiveCfg = Debug|x64
+		{96DAADFD-1454-43FA-AA69-28E357901E3C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{96DAADFD-1454-43FA-AA69-28E357901E3C}.Release|Any CPU.Build.0 = Release|Any CPU
+		{96DAADFD-1454-43FA-AA69-28E357901E3C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{96DAADFD-1454-43FA-AA69-28E357901E3C}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{96DAADFD-1454-43FA-AA69-28E357901E3C}.Release|Win32.ActiveCfg = Release|Any CPU
+		{96DAADFD-1454-43FA-AA69-28E357901E3C}.Release|x64.ActiveCfg = Release|x64
+		{96DAADFD-1454-43FA-AA69-28E357901E3C}.Release|x64.Build.0 = Release|x64
+		{96DAADFD-1454-43FA-AA69-28E357901E3C}.Release|x86.ActiveCfg = Release|x64
+		{F15736B5-8582-4B38-8B09-AA2ED4EA9577}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{F15736B5-8582-4B38-8B09-AA2ED4EA9577}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{F15736B5-8582-4B38-8B09-AA2ED4EA9577}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{F15736B5-8582-4B38-8B09-AA2ED4EA9577}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{F15736B5-8582-4B38-8B09-AA2ED4EA9577}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{F15736B5-8582-4B38-8B09-AA2ED4EA9577}.Debug|x64.ActiveCfg = Debug|x64
+		{F15736B5-8582-4B38-8B09-AA2ED4EA9577}.Debug|x64.Build.0 = Debug|x64
+		{F15736B5-8582-4B38-8B09-AA2ED4EA9577}.Debug|x86.ActiveCfg = Debug|x64
+		{F15736B5-8582-4B38-8B09-AA2ED4EA9577}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{F15736B5-8582-4B38-8B09-AA2ED4EA9577}.Release|Any CPU.Build.0 = Release|Any CPU
+		{F15736B5-8582-4B38-8B09-AA2ED4EA9577}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{F15736B5-8582-4B38-8B09-AA2ED4EA9577}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{F15736B5-8582-4B38-8B09-AA2ED4EA9577}.Release|Win32.ActiveCfg = Release|Any CPU
+		{F15736B5-8582-4B38-8B09-AA2ED4EA9577}.Release|x64.ActiveCfg = Release|x64
+		{F15736B5-8582-4B38-8B09-AA2ED4EA9577}.Release|x64.Build.0 = Release|x64
+		{F15736B5-8582-4B38-8B09-AA2ED4EA9577}.Release|x86.ActiveCfg = Release|x64
+		{915061E8-66C2-4597-91F2-45CA531910EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{915061E8-66C2-4597-91F2-45CA531910EE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{915061E8-66C2-4597-91F2-45CA531910EE}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{915061E8-66C2-4597-91F2-45CA531910EE}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{915061E8-66C2-4597-91F2-45CA531910EE}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{915061E8-66C2-4597-91F2-45CA531910EE}.Debug|x64.ActiveCfg = Debug|x64
+		{915061E8-66C2-4597-91F2-45CA531910EE}.Debug|x64.Build.0 = Debug|x64
+		{915061E8-66C2-4597-91F2-45CA531910EE}.Debug|x86.ActiveCfg = Debug|x64
+		{915061E8-66C2-4597-91F2-45CA531910EE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{915061E8-66C2-4597-91F2-45CA531910EE}.Release|Any CPU.Build.0 = Release|Any CPU
+		{915061E8-66C2-4597-91F2-45CA531910EE}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{915061E8-66C2-4597-91F2-45CA531910EE}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{915061E8-66C2-4597-91F2-45CA531910EE}.Release|Win32.ActiveCfg = Release|Any CPU
+		{915061E8-66C2-4597-91F2-45CA531910EE}.Release|x64.ActiveCfg = Release|x64
+		{915061E8-66C2-4597-91F2-45CA531910EE}.Release|x64.Build.0 = Release|x64
+		{915061E8-66C2-4597-91F2-45CA531910EE}.Release|x86.ActiveCfg = Release|x64
+		{38DD7F7C-9460-4BC6-A58F-A9D457FC42F4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{38DD7F7C-9460-4BC6-A58F-A9D457FC42F4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{38DD7F7C-9460-4BC6-A58F-A9D457FC42F4}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{38DD7F7C-9460-4BC6-A58F-A9D457FC42F4}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{38DD7F7C-9460-4BC6-A58F-A9D457FC42F4}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{38DD7F7C-9460-4BC6-A58F-A9D457FC42F4}.Debug|x64.ActiveCfg = Debug|x64
+		{38DD7F7C-9460-4BC6-A58F-A9D457FC42F4}.Debug|x64.Build.0 = Debug|x64
+		{38DD7F7C-9460-4BC6-A58F-A9D457FC42F4}.Debug|x86.ActiveCfg = Debug|x64
+		{38DD7F7C-9460-4BC6-A58F-A9D457FC42F4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{38DD7F7C-9460-4BC6-A58F-A9D457FC42F4}.Release|Any CPU.Build.0 = Release|Any CPU
+		{38DD7F7C-9460-4BC6-A58F-A9D457FC42F4}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{38DD7F7C-9460-4BC6-A58F-A9D457FC42F4}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{38DD7F7C-9460-4BC6-A58F-A9D457FC42F4}.Release|Win32.ActiveCfg = Release|Any CPU
+		{38DD7F7C-9460-4BC6-A58F-A9D457FC42F4}.Release|x64.ActiveCfg = Release|x64
+		{38DD7F7C-9460-4BC6-A58F-A9D457FC42F4}.Release|x64.Build.0 = Release|x64
+		{38DD7F7C-9460-4BC6-A58F-A9D457FC42F4}.Release|x86.ActiveCfg = Release|x64
+		{3AFF5409-510E-4DDE-BBD6-96F2C858AA53}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{3AFF5409-510E-4DDE-BBD6-96F2C858AA53}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{3AFF5409-510E-4DDE-BBD6-96F2C858AA53}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{3AFF5409-510E-4DDE-BBD6-96F2C858AA53}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{3AFF5409-510E-4DDE-BBD6-96F2C858AA53}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{3AFF5409-510E-4DDE-BBD6-96F2C858AA53}.Debug|x64.ActiveCfg = Debug|x64
+		{3AFF5409-510E-4DDE-BBD6-96F2C858AA53}.Debug|x64.Build.0 = Debug|x64
+		{3AFF5409-510E-4DDE-BBD6-96F2C858AA53}.Debug|x86.ActiveCfg = Debug|x64
+		{3AFF5409-510E-4DDE-BBD6-96F2C858AA53}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{3AFF5409-510E-4DDE-BBD6-96F2C858AA53}.Release|Any CPU.Build.0 = Release|Any CPU
+		{3AFF5409-510E-4DDE-BBD6-96F2C858AA53}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{3AFF5409-510E-4DDE-BBD6-96F2C858AA53}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{3AFF5409-510E-4DDE-BBD6-96F2C858AA53}.Release|Win32.ActiveCfg = Release|Any CPU
+		{3AFF5409-510E-4DDE-BBD6-96F2C858AA53}.Release|x64.ActiveCfg = Release|x64
+		{3AFF5409-510E-4DDE-BBD6-96F2C858AA53}.Release|x64.Build.0 = Release|x64
+		{3AFF5409-510E-4DDE-BBD6-96F2C858AA53}.Release|x86.ActiveCfg = Release|x64
+		{6AF4E7C4-0EE2-48FE-A075-B01B3D033998}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{6AF4E7C4-0EE2-48FE-A075-B01B3D033998}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{6AF4E7C4-0EE2-48FE-A075-B01B3D033998}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{6AF4E7C4-0EE2-48FE-A075-B01B3D033998}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{6AF4E7C4-0EE2-48FE-A075-B01B3D033998}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{6AF4E7C4-0EE2-48FE-A075-B01B3D033998}.Debug|x64.ActiveCfg = Debug|x64
+		{6AF4E7C4-0EE2-48FE-A075-B01B3D033998}.Debug|x64.Build.0 = Debug|x64
+		{6AF4E7C4-0EE2-48FE-A075-B01B3D033998}.Debug|x86.ActiveCfg = Debug|x64
+		{6AF4E7C4-0EE2-48FE-A075-B01B3D033998}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{6AF4E7C4-0EE2-48FE-A075-B01B3D033998}.Release|Any CPU.Build.0 = Release|Any CPU
+		{6AF4E7C4-0EE2-48FE-A075-B01B3D033998}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{6AF4E7C4-0EE2-48FE-A075-B01B3D033998}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{6AF4E7C4-0EE2-48FE-A075-B01B3D033998}.Release|Win32.ActiveCfg = Release|Any CPU
+		{6AF4E7C4-0EE2-48FE-A075-B01B3D033998}.Release|x64.ActiveCfg = Release|x64
+		{6AF4E7C4-0EE2-48FE-A075-B01B3D033998}.Release|x64.Build.0 = Release|x64
+		{6AF4E7C4-0EE2-48FE-A075-B01B3D033998}.Release|x86.ActiveCfg = Release|x64
+		{7BD6A234-AD2E-4BE6-BAEA-EB258EAAD0C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{7BD6A234-AD2E-4BE6-BAEA-EB258EAAD0C5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{7BD6A234-AD2E-4BE6-BAEA-EB258EAAD0C5}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{7BD6A234-AD2E-4BE6-BAEA-EB258EAAD0C5}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{7BD6A234-AD2E-4BE6-BAEA-EB258EAAD0C5}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{7BD6A234-AD2E-4BE6-BAEA-EB258EAAD0C5}.Debug|x64.ActiveCfg = Debug|x64
+		{7BD6A234-AD2E-4BE6-BAEA-EB258EAAD0C5}.Debug|x64.Build.0 = Debug|x64
+		{7BD6A234-AD2E-4BE6-BAEA-EB258EAAD0C5}.Debug|x86.ActiveCfg = Debug|x64
+		{7BD6A234-AD2E-4BE6-BAEA-EB258EAAD0C5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{7BD6A234-AD2E-4BE6-BAEA-EB258EAAD0C5}.Release|Any CPU.Build.0 = Release|Any CPU
+		{7BD6A234-AD2E-4BE6-BAEA-EB258EAAD0C5}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{7BD6A234-AD2E-4BE6-BAEA-EB258EAAD0C5}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{7BD6A234-AD2E-4BE6-BAEA-EB258EAAD0C5}.Release|Win32.ActiveCfg = Release|Any CPU
+		{7BD6A234-AD2E-4BE6-BAEA-EB258EAAD0C5}.Release|x64.ActiveCfg = Release|x64
+		{7BD6A234-AD2E-4BE6-BAEA-EB258EAAD0C5}.Release|x64.Build.0 = Release|x64
+		{7BD6A234-AD2E-4BE6-BAEA-EB258EAAD0C5}.Release|x86.ActiveCfg = Release|x64
+		{5F76AA4D-0FF3-4859-8958-CDD075AC01C3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{5F76AA4D-0FF3-4859-8958-CDD075AC01C3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{5F76AA4D-0FF3-4859-8958-CDD075AC01C3}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{5F76AA4D-0FF3-4859-8958-CDD075AC01C3}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{5F76AA4D-0FF3-4859-8958-CDD075AC01C3}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{5F76AA4D-0FF3-4859-8958-CDD075AC01C3}.Debug|x64.ActiveCfg = Debug|x64
+		{5F76AA4D-0FF3-4859-8958-CDD075AC01C3}.Debug|x64.Build.0 = Debug|x64
+		{5F76AA4D-0FF3-4859-8958-CDD075AC01C3}.Debug|x86.ActiveCfg = Debug|x64
+		{5F76AA4D-0FF3-4859-8958-CDD075AC01C3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{5F76AA4D-0FF3-4859-8958-CDD075AC01C3}.Release|Any CPU.Build.0 = Release|Any CPU
+		{5F76AA4D-0FF3-4859-8958-CDD075AC01C3}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{5F76AA4D-0FF3-4859-8958-CDD075AC01C3}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{5F76AA4D-0FF3-4859-8958-CDD075AC01C3}.Release|Win32.ActiveCfg = Release|Any CPU
+		{5F76AA4D-0FF3-4859-8958-CDD075AC01C3}.Release|x64.ActiveCfg = Release|x64
+		{5F76AA4D-0FF3-4859-8958-CDD075AC01C3}.Release|x64.Build.0 = Release|x64
+		{5F76AA4D-0FF3-4859-8958-CDD075AC01C3}.Release|x86.ActiveCfg = Release|x64
+		{7A99B197-118D-4B03-8B87-94F0322C255B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{7A99B197-118D-4B03-8B87-94F0322C255B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{7A99B197-118D-4B03-8B87-94F0322C255B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{7A99B197-118D-4B03-8B87-94F0322C255B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{7A99B197-118D-4B03-8B87-94F0322C255B}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{7A99B197-118D-4B03-8B87-94F0322C255B}.Debug|x64.ActiveCfg = Debug|x64
+		{7A99B197-118D-4B03-8B87-94F0322C255B}.Debug|x64.Build.0 = Debug|x64
+		{7A99B197-118D-4B03-8B87-94F0322C255B}.Debug|x86.ActiveCfg = Debug|x64
+		{7A99B197-118D-4B03-8B87-94F0322C255B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{7A99B197-118D-4B03-8B87-94F0322C255B}.Release|Any CPU.Build.0 = Release|Any CPU
+		{7A99B197-118D-4B03-8B87-94F0322C255B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{7A99B197-118D-4B03-8B87-94F0322C255B}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{7A99B197-118D-4B03-8B87-94F0322C255B}.Release|Win32.ActiveCfg = Release|Any CPU
+		{7A99B197-118D-4B03-8B87-94F0322C255B}.Release|x64.ActiveCfg = Release|x64
+		{7A99B197-118D-4B03-8B87-94F0322C255B}.Release|x64.Build.0 = Release|x64
+		{7A99B197-118D-4B03-8B87-94F0322C255B}.Release|x86.ActiveCfg = Release|x64
+		{3CB335BA-E09F-4677-BCAD-A0ECF3218641}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{3CB335BA-E09F-4677-BCAD-A0ECF3218641}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{3CB335BA-E09F-4677-BCAD-A0ECF3218641}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{3CB335BA-E09F-4677-BCAD-A0ECF3218641}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{3CB335BA-E09F-4677-BCAD-A0ECF3218641}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{3CB335BA-E09F-4677-BCAD-A0ECF3218641}.Debug|x64.ActiveCfg = Debug|x64
+		{3CB335BA-E09F-4677-BCAD-A0ECF3218641}.Debug|x64.Build.0 = Debug|x64
+		{3CB335BA-E09F-4677-BCAD-A0ECF3218641}.Debug|x86.ActiveCfg = Debug|x64
+		{3CB335BA-E09F-4677-BCAD-A0ECF3218641}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{3CB335BA-E09F-4677-BCAD-A0ECF3218641}.Release|Any CPU.Build.0 = Release|Any CPU
+		{3CB335BA-E09F-4677-BCAD-A0ECF3218641}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{3CB335BA-E09F-4677-BCAD-A0ECF3218641}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{3CB335BA-E09F-4677-BCAD-A0ECF3218641}.Release|Win32.ActiveCfg = Release|Any CPU
+		{3CB335BA-E09F-4677-BCAD-A0ECF3218641}.Release|x64.ActiveCfg = Release|x64
+		{3CB335BA-E09F-4677-BCAD-A0ECF3218641}.Release|x64.Build.0 = Release|x64
+		{3CB335BA-E09F-4677-BCAD-A0ECF3218641}.Release|x86.ActiveCfg = Release|x64
+		{E7A1C0BC-B488-4F38-A1D4-108EDC47E38F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{E7A1C0BC-B488-4F38-A1D4-108EDC47E38F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{E7A1C0BC-B488-4F38-A1D4-108EDC47E38F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{E7A1C0BC-B488-4F38-A1D4-108EDC47E38F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{E7A1C0BC-B488-4F38-A1D4-108EDC47E38F}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{E7A1C0BC-B488-4F38-A1D4-108EDC47E38F}.Debug|x64.ActiveCfg = Debug|x64
+		{E7A1C0BC-B488-4F38-A1D4-108EDC47E38F}.Debug|x64.Build.0 = Debug|x64
+		{E7A1C0BC-B488-4F38-A1D4-108EDC47E38F}.Debug|x86.ActiveCfg = Debug|x64
+		{E7A1C0BC-B488-4F38-A1D4-108EDC47E38F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{E7A1C0BC-B488-4F38-A1D4-108EDC47E38F}.Release|Any CPU.Build.0 = Release|Any CPU
+		{E7A1C0BC-B488-4F38-A1D4-108EDC47E38F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{E7A1C0BC-B488-4F38-A1D4-108EDC47E38F}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{E7A1C0BC-B488-4F38-A1D4-108EDC47E38F}.Release|Win32.ActiveCfg = Release|Any CPU
+		{E7A1C0BC-B488-4F38-A1D4-108EDC47E38F}.Release|x64.ActiveCfg = Release|x64
+		{E7A1C0BC-B488-4F38-A1D4-108EDC47E38F}.Release|x64.Build.0 = Release|x64
+		{E7A1C0BC-B488-4F38-A1D4-108EDC47E38F}.Release|x86.ActiveCfg = Release|x64
+		{B0A9BC2F-26F2-4BDD-BF02-73C097F926FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{B0A9BC2F-26F2-4BDD-BF02-73C097F926FE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{B0A9BC2F-26F2-4BDD-BF02-73C097F926FE}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{B0A9BC2F-26F2-4BDD-BF02-73C097F926FE}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{B0A9BC2F-26F2-4BDD-BF02-73C097F926FE}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{B0A9BC2F-26F2-4BDD-BF02-73C097F926FE}.Debug|x64.ActiveCfg = Debug|x64
+		{B0A9BC2F-26F2-4BDD-BF02-73C097F926FE}.Debug|x64.Build.0 = Debug|x64
+		{B0A9BC2F-26F2-4BDD-BF02-73C097F926FE}.Debug|x86.ActiveCfg = Debug|x64
+		{B0A9BC2F-26F2-4BDD-BF02-73C097F926FE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{B0A9BC2F-26F2-4BDD-BF02-73C097F926FE}.Release|Any CPU.Build.0 = Release|Any CPU
+		{B0A9BC2F-26F2-4BDD-BF02-73C097F926FE}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{B0A9BC2F-26F2-4BDD-BF02-73C097F926FE}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{B0A9BC2F-26F2-4BDD-BF02-73C097F926FE}.Release|Win32.ActiveCfg = Release|Any CPU
+		{B0A9BC2F-26F2-4BDD-BF02-73C097F926FE}.Release|x64.ActiveCfg = Release|x64
+		{B0A9BC2F-26F2-4BDD-BF02-73C097F926FE}.Release|x64.Build.0 = Release|x64
+		{B0A9BC2F-26F2-4BDD-BF02-73C097F926FE}.Release|x86.ActiveCfg = Release|x64
+		{7F99AA48-8931-4D92-9F1F-01F7AF8123FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{7F99AA48-8931-4D92-9F1F-01F7AF8123FC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{7F99AA48-8931-4D92-9F1F-01F7AF8123FC}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{7F99AA48-8931-4D92-9F1F-01F7AF8123FC}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{7F99AA48-8931-4D92-9F1F-01F7AF8123FC}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{7F99AA48-8931-4D92-9F1F-01F7AF8123FC}.Debug|x64.ActiveCfg = Debug|x64
+		{7F99AA48-8931-4D92-9F1F-01F7AF8123FC}.Debug|x64.Build.0 = Debug|x64
+		{7F99AA48-8931-4D92-9F1F-01F7AF8123FC}.Debug|x86.ActiveCfg = Debug|x64
+		{7F99AA48-8931-4D92-9F1F-01F7AF8123FC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{7F99AA48-8931-4D92-9F1F-01F7AF8123FC}.Release|Any CPU.Build.0 = Release|Any CPU
+		{7F99AA48-8931-4D92-9F1F-01F7AF8123FC}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{7F99AA48-8931-4D92-9F1F-01F7AF8123FC}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{7F99AA48-8931-4D92-9F1F-01F7AF8123FC}.Release|Win32.ActiveCfg = Release|Any CPU
+		{7F99AA48-8931-4D92-9F1F-01F7AF8123FC}.Release|x64.ActiveCfg = Release|x64
+		{7F99AA48-8931-4D92-9F1F-01F7AF8123FC}.Release|x64.Build.0 = Release|x64
+		{7F99AA48-8931-4D92-9F1F-01F7AF8123FC}.Release|x86.ActiveCfg = Release|x64
+		{4D9FE6D0-8528-424B-97E9-AD69C23F1D3F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{4D9FE6D0-8528-424B-97E9-AD69C23F1D3F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{4D9FE6D0-8528-424B-97E9-AD69C23F1D3F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{4D9FE6D0-8528-424B-97E9-AD69C23F1D3F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{4D9FE6D0-8528-424B-97E9-AD69C23F1D3F}.Debug|Win32.ActiveCfg = Debug|x64
+		{4D9FE6D0-8528-424B-97E9-AD69C23F1D3F}.Debug|x64.ActiveCfg = Debug|x64
+		{4D9FE6D0-8528-424B-97E9-AD69C23F1D3F}.Debug|x64.Build.0 = Debug|x64
+		{4D9FE6D0-8528-424B-97E9-AD69C23F1D3F}.Debug|x86.ActiveCfg = Debug|x64
+		{4D9FE6D0-8528-424B-97E9-AD69C23F1D3F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{4D9FE6D0-8528-424B-97E9-AD69C23F1D3F}.Release|Any CPU.Build.0 = Release|Any CPU
+		{4D9FE6D0-8528-424B-97E9-AD69C23F1D3F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{4D9FE6D0-8528-424B-97E9-AD69C23F1D3F}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{4D9FE6D0-8528-424B-97E9-AD69C23F1D3F}.Release|Win32.ActiveCfg = Release|x64
+		{4D9FE6D0-8528-424B-97E9-AD69C23F1D3F}.Release|x64.ActiveCfg = Release|x64
+		{4D9FE6D0-8528-424B-97E9-AD69C23F1D3F}.Release|x64.Build.0 = Release|x64
+		{4D9FE6D0-8528-424B-97E9-AD69C23F1D3F}.Release|x86.ActiveCfg = Release|x64
+		{CC136286-D242-49FF-95F2-5DB405364032}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{CC136286-D242-49FF-95F2-5DB405364032}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{CC136286-D242-49FF-95F2-5DB405364032}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{CC136286-D242-49FF-95F2-5DB405364032}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{CC136286-D242-49FF-95F2-5DB405364032}.Debug|Win32.ActiveCfg = Debug|x64
+		{CC136286-D242-49FF-95F2-5DB405364032}.Debug|x64.ActiveCfg = Debug|x64
+		{CC136286-D242-49FF-95F2-5DB405364032}.Debug|x64.Build.0 = Debug|x64
+		{CC136286-D242-49FF-95F2-5DB405364032}.Debug|x86.ActiveCfg = Debug|x64
+		{CC136286-D242-49FF-95F2-5DB405364032}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{CC136286-D242-49FF-95F2-5DB405364032}.Release|Any CPU.Build.0 = Release|Any CPU
+		{CC136286-D242-49FF-95F2-5DB405364032}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{CC136286-D242-49FF-95F2-5DB405364032}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{CC136286-D242-49FF-95F2-5DB405364032}.Release|Win32.ActiveCfg = Release|x64
+		{CC136286-D242-49FF-95F2-5DB405364032}.Release|x64.ActiveCfg = Release|x64
+		{CC136286-D242-49FF-95F2-5DB405364032}.Release|x64.Build.0 = Release|x64
+		{CC136286-D242-49FF-95F2-5DB405364032}.Release|x86.ActiveCfg = Release|x64
+		{A1434552-3864-4E91-A31B-3E38D966F816}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{A1434552-3864-4E91-A31B-3E38D966F816}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{A1434552-3864-4E91-A31B-3E38D966F816}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{A1434552-3864-4E91-A31B-3E38D966F816}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{A1434552-3864-4E91-A31B-3E38D966F816}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{A1434552-3864-4E91-A31B-3E38D966F816}.Debug|x64.ActiveCfg = Debug|x64
+		{A1434552-3864-4E91-A31B-3E38D966F816}.Debug|x64.Build.0 = Debug|x64
+		{A1434552-3864-4E91-A31B-3E38D966F816}.Debug|x86.ActiveCfg = Debug|x64
+		{A1434552-3864-4E91-A31B-3E38D966F816}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{A1434552-3864-4E91-A31B-3E38D966F816}.Release|Any CPU.Build.0 = Release|Any CPU
+		{A1434552-3864-4E91-A31B-3E38D966F816}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{A1434552-3864-4E91-A31B-3E38D966F816}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{A1434552-3864-4E91-A31B-3E38D966F816}.Release|Win32.ActiveCfg = Release|Any CPU
+		{A1434552-3864-4E91-A31B-3E38D966F816}.Release|x64.ActiveCfg = Release|x64
+		{A1434552-3864-4E91-A31B-3E38D966F816}.Release|x64.Build.0 = Release|x64
+		{A1434552-3864-4E91-A31B-3E38D966F816}.Release|x86.ActiveCfg = Release|x64
+		{F6229FB4-8E5B-456D-80FC-6E86182D7284}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{F6229FB4-8E5B-456D-80FC-6E86182D7284}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{F6229FB4-8E5B-456D-80FC-6E86182D7284}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{F6229FB4-8E5B-456D-80FC-6E86182D7284}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{F6229FB4-8E5B-456D-80FC-6E86182D7284}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{F6229FB4-8E5B-456D-80FC-6E86182D7284}.Debug|x64.ActiveCfg = Debug|x64
+		{F6229FB4-8E5B-456D-80FC-6E86182D7284}.Debug|x64.Build.0 = Debug|x64
+		{F6229FB4-8E5B-456D-80FC-6E86182D7284}.Debug|x86.ActiveCfg = Debug|x64
+		{F6229FB4-8E5B-456D-80FC-6E86182D7284}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{F6229FB4-8E5B-456D-80FC-6E86182D7284}.Release|Any CPU.Build.0 = Release|Any CPU
+		{F6229FB4-8E5B-456D-80FC-6E86182D7284}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{F6229FB4-8E5B-456D-80FC-6E86182D7284}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{F6229FB4-8E5B-456D-80FC-6E86182D7284}.Release|Win32.ActiveCfg = Release|Any CPU
+		{F6229FB4-8E5B-456D-80FC-6E86182D7284}.Release|x64.ActiveCfg = Release|x64
+		{F6229FB4-8E5B-456D-80FC-6E86182D7284}.Release|x64.Build.0 = Release|x64
+		{F6229FB4-8E5B-456D-80FC-6E86182D7284}.Release|x86.ActiveCfg = Release|x64
+		{36F048FD-9DFD-426A-AA72-483043CB7E17}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{36F048FD-9DFD-426A-AA72-483043CB7E17}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{36F048FD-9DFD-426A-AA72-483043CB7E17}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{36F048FD-9DFD-426A-AA72-483043CB7E17}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{36F048FD-9DFD-426A-AA72-483043CB7E17}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{36F048FD-9DFD-426A-AA72-483043CB7E17}.Debug|x64.ActiveCfg = Debug|x64
+		{36F048FD-9DFD-426A-AA72-483043CB7E17}.Debug|x64.Build.0 = Debug|x64
+		{36F048FD-9DFD-426A-AA72-483043CB7E17}.Debug|x86.ActiveCfg = Debug|x64
+		{36F048FD-9DFD-426A-AA72-483043CB7E17}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{36F048FD-9DFD-426A-AA72-483043CB7E17}.Release|Any CPU.Build.0 = Release|Any CPU
+		{36F048FD-9DFD-426A-AA72-483043CB7E17}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{36F048FD-9DFD-426A-AA72-483043CB7E17}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{36F048FD-9DFD-426A-AA72-483043CB7E17}.Release|Win32.ActiveCfg = Release|Any CPU
+		{36F048FD-9DFD-426A-AA72-483043CB7E17}.Release|x64.ActiveCfg = Release|x64
+		{36F048FD-9DFD-426A-AA72-483043CB7E17}.Release|x64.Build.0 = Release|x64
+		{36F048FD-9DFD-426A-AA72-483043CB7E17}.Release|x86.ActiveCfg = Release|x64
+		{63FC7A13-FA33-44DF-8FF0-3220F7176BC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{63FC7A13-FA33-44DF-8FF0-3220F7176BC3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{63FC7A13-FA33-44DF-8FF0-3220F7176BC3}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{63FC7A13-FA33-44DF-8FF0-3220F7176BC3}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{63FC7A13-FA33-44DF-8FF0-3220F7176BC3}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{63FC7A13-FA33-44DF-8FF0-3220F7176BC3}.Debug|x64.ActiveCfg = Debug|x64
+		{63FC7A13-FA33-44DF-8FF0-3220F7176BC3}.Debug|x64.Build.0 = Debug|x64
+		{63FC7A13-FA33-44DF-8FF0-3220F7176BC3}.Debug|x86.ActiveCfg = Debug|x64
+		{63FC7A13-FA33-44DF-8FF0-3220F7176BC3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{63FC7A13-FA33-44DF-8FF0-3220F7176BC3}.Release|Any CPU.Build.0 = Release|Any CPU
+		{63FC7A13-FA33-44DF-8FF0-3220F7176BC3}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{63FC7A13-FA33-44DF-8FF0-3220F7176BC3}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{63FC7A13-FA33-44DF-8FF0-3220F7176BC3}.Release|Win32.ActiveCfg = Release|Any CPU
+		{63FC7A13-FA33-44DF-8FF0-3220F7176BC3}.Release|x64.ActiveCfg = Release|x64
+		{63FC7A13-FA33-44DF-8FF0-3220F7176BC3}.Release|x64.Build.0 = Release|x64
+		{63FC7A13-FA33-44DF-8FF0-3220F7176BC3}.Release|x86.ActiveCfg = Release|x64
+		{51229C8F-64D5-4302-8C93-AAEC3C27864B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{51229C8F-64D5-4302-8C93-AAEC3C27864B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{51229C8F-64D5-4302-8C93-AAEC3C27864B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{51229C8F-64D5-4302-8C93-AAEC3C27864B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{51229C8F-64D5-4302-8C93-AAEC3C27864B}.Debug|Win32.ActiveCfg = Debug|Any CPU
+		{51229C8F-64D5-4302-8C93-AAEC3C27864B}.Debug|x64.ActiveCfg = Debug|x64
+		{51229C8F-64D5-4302-8C93-AAEC3C27864B}.Debug|x64.Build.0 = Debug|x64
+		{51229C8F-64D5-4302-8C93-AAEC3C27864B}.Debug|x86.ActiveCfg = Debug|x64
+		{51229C8F-64D5-4302-8C93-AAEC3C27864B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{51229C8F-64D5-4302-8C93-AAEC3C27864B}.Release|Any CPU.Build.0 = Release|Any CPU
+		{51229C8F-64D5-4302-8C93-AAEC3C27864B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{51229C8F-64D5-4302-8C93-AAEC3C27864B}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{51229C8F-64D5-4302-8C93-AAEC3C27864B}.Release|Win32.ActiveCfg = Release|Any CPU
+		{51229C8F-64D5-4302-8C93-AAEC3C27864B}.Release|x64.ActiveCfg = Release|x64
+		{51229C8F-64D5-4302-8C93-AAEC3C27864B}.Release|x64.Build.0 = Release|x64
+		{51229C8F-64D5-4302-8C93-AAEC3C27864B}.Release|x86.ActiveCfg = Release|x64
+		{AC0A17DA-3880-47A4-962F-1237431DBFD7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{AC0A17DA-3880-47A4-962F-1237431DBFD7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{AC0A17DA-3880-47A4-962F-1237431DBFD7}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
+		{AC0A17DA-3880-47A4-962F-1237431DBFD7}.Debug|Mixed Platforms.Build.0 = Debug|x64
+		{AC0A17DA-3880-47A4-962F-1237431DBFD7}.Debug|Win32.ActiveCfg = Debug|x64
+		{AC0A17DA-3880-47A4-962F-1237431DBFD7}.Debug|x64.ActiveCfg = Debug|x64
+		{AC0A17DA-3880-47A4-962F-1237431DBFD7}.Debug|x64.Build.0 = Debug|x64
+		{AC0A17DA-3880-47A4-962F-1237431DBFD7}.Debug|x86.ActiveCfg = Debug|x64
+		{AC0A17DA-3880-47A4-962F-1237431DBFD7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{AC0A17DA-3880-47A4-962F-1237431DBFD7}.Release|Any CPU.Build.0 = Release|Any CPU
+		{AC0A17DA-3880-47A4-962F-1237431DBFD7}.Release|Mixed Platforms.ActiveCfg = Release|x64
+		{AC0A17DA-3880-47A4-962F-1237431DBFD7}.Release|Mixed Platforms.Build.0 = Release|x64
+		{AC0A17DA-3880-47A4-962F-1237431DBFD7}.Release|Win32.ActiveCfg = Release|x64
+		{AC0A17DA-3880-47A4-962F-1237431DBFD7}.Release|x64.ActiveCfg = Release|x64
+		{AC0A17DA-3880-47A4-962F-1237431DBFD7}.Release|x64.Build.0 = Release|x64
+		{AC0A17DA-3880-47A4-962F-1237431DBFD7}.Release|x86.ActiveCfg = Release|x64
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/runcpp.bat
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/runcpp.bat b/geode-client-native/quickstart/runcpp.bat
new file mode 100644
index 0000000..a76d309
--- /dev/null
+++ b/geode-client-native/quickstart/runcpp.bat
@@ -0,0 +1,271 @@
+@echo off
+
+rem GFCPP must be set
+rem GEMFIRE must be set
+rem OPENSSL must be set for Security example
+
+if not "%GFCPP%"=="" goto checkGEMFIRE
+
+echo GFCPP is not set.
+goto finished
+
+:checkGEMFIRE
+
+if not "%GEMFIRE%"=="" goto checkOPENSSL
+
+echo GEMFIRE is not set.
+goto finished
+
+:checkOPENSSL
+
+if not "%OPENSSL%"=="" goto startexamples
+
+echo OPENSSL is not set.
+echo If OpenSSL libraries are not found in PATH then Security example will fail.
+
+
+:startexamples
+
+set LANG=C++
+set LANGDIR=cpp
+
+if not exist %LANGDIR%\%1.exe goto presentmenu
+
+set exname=%1
+
+:runexample
+
+if not exist %LANGDIR%\%exname%.exe goto presentmenu
+
+echo.
+echo Running GemFire %LANG% QuickStart example %exname% ...
+
+set CLASSPATH=%CLASSPATH%;../lib/javaobject.jar;%GEMFIRE%\lib\gfSecurityImpl.jar
+set PATH=%GEMFIRE%\bin;%PATH%;%GEMFIRE%\bin;%GFCPP%\bin;%OPENSSL%\bin;..\bin;
+
+if not exist gfecs mkdir gfecs
+
+if '%exname%' neq 'Delta' goto notwithlocator
+
+echo locator start
+
+call gemfire start-locator -port=34756 -dir=gfecs
+
+:notwithlocator
+
+if '%exname%' neq 'PoolRemoteQuery' goto skiplocatorstart
+
+echo locator start
+
+call gemfire start-locator -port=34756 -dir=gfecs
+
+:skiplocatorstart
+
+if '%exname%' neq 'HACache' goto skiphadir
+
+if not exist gfecs2 mkdir gfecs2
+
+:skiphadir
+
+if '%exname%' neq 'ExecuteFunctions' goto skipfuncdir
+
+if not exist gfecs2 mkdir gfecs2
+
+:skipfuncdir
+
+
+if '%exname%' equ 'PoolRemoteQuery' goto startserverwithlocator
+
+if '%exname%' equ 'Delta' goto startserverwithlocator
+
+
+if '%exname%' equ 'Security' goto startserverforsecurity
+if '%exname%' equ 'MultiuserSecurity' goto startserverformultiusersecurity
+
+call cacheserver start cache-xml-file=../XMLs/server%exname%.xml mcast-port=35673 -dir=gfecs
+
+echo cacheServer started
+
+if '%exname%' neq 'HACache' goto skiphastart
+
+call cacheserver start cache-xml-file=../XMLs/server%exname%2.xml mcast-port=35673 -dir=gfecs2
+
+echo cacheServer2 started
+
+:skiphastart
+
+if '%exname%' neq 'ExecuteFunctions' goto skipfuncstart
+
+call cacheserver start cache-xml-file=../XMLs/server%exname%2.xml mcast-port=35673 -dir=gfecs2
+
+echo cacheServer2 started
+
+:skipfuncstart
+
+if '%exname%' neq 'Security' goto :skipsecuritystart 
+if '%exname%' neq 'MultiuserSecurity' goto :skipsecuritystart 
+
+:startserverwithlocator
+call cacheserver start cache-xml-file=../XMLs/server%exname%.xml mcast-port=0 -dir=gfecs locators=localhost:34756
+
+if '%exname%' neq 'Security' goto :skipsecuritystart 
+if '%exname%' neq 'MultiuserSecurity' goto :skipsecuritystart 
+
+:startserverforsecurity
+
+call cacheserver start cache-xml-file=../XMLs/server%exname%.xml mcast-port=35673 -dir=gfecs security-client-authenticator=templates.security.PKCSAuthenticator.create security-publickey-filepath=../keystore/publickeyfile security-publickey-pass=gemfire security-authz-xml-uri=../XMLs/authz-pkcs.xml security-client-accessor=templates.security.XmlAuthorization.create
+
+if '%exname%' neq 'MultiuserSecurity' goto :skipsecuritystart 
+
+:startserverformultiusersecurity
+call cacheserver start cache-xml-file=../XMLs/server%exname%.xml mcast-port=35673 -dir=gfecs security-client-authenticator=templates.security.DummyAuthenticator.create security-authz-xml-uri=../XMLs/authz-dummy.xml security-client-accessor=templates.security.XmlAuthorization.create
+
+:skipsecuritystart
+
+if '%exname%' neq 'PoolRemoteQuery' goto notstartedserverwithlocator
+
+if '%exname%' neq 'Delta' goto notstartedserverwithlocator
+
+call cacheserver start cache-xml-file=../XMLs/server%exname%.xml mcast-port=0 -dir=gfecs locators=localhost:34756  
+
+:notstartedserverwithlocator
+
+if '%exname%' neq 'DistributedSystem' goto skipDSstart
+
+if not exist gfecs2 mkdir gfecs2
+
+call cacheserver start cache-xml-file=../XMLs/server%exname%2.xml mcast-port=35674 -dir=gfecs2
+
+:skipDSstart
+
+
+call %LANGDIR%\%exname%.exe
+if not "%errorlevel%"=="0" (
+call cacheserver stop -dir=gfecs
+call cacheserver stop -dir=gfecs2
+exit %errorlevel%
+)
+
+call cacheserver stop -dir=gfecs
+
+if '%exname%' neq 'HACache' goto skiphastop
+
+call cacheserver stop -dir=gfecs2
+
+:skiphastop
+
+if '%exname%' neq 'ExecuteFunctions' goto skipfuncstop
+
+call cacheserver stop -dir=gfecs2
+
+:skipfuncstop
+
+if '%exname%' neq 'PoolRemoteQuery' goto skiplocatorstop1
+
+call gemfire stop-locator -port=34756 -dir=gfecs
+
+:skiplocatorstop1
+
+if '%exname%' neq 'Delta' goto skiplocatorstop2
+
+call gemfire stop-locator -port=34756 -dir=gfecs
+
+:skiplocatorstop2
+
+if '%exname%' neq 'DistributedSystem' goto skipDSstop
+
+call cacheserver stop -dir=gfecs2
+
+:skipDSstop
+
+
+if '%exname%' equ 'invalidoption' goto invalidoption
+
+rem echo Please review the example's log output above then
+
+rem pause
+
+goto closeup
+
+:presentmenu
+
+echo.
+echo Please select a GemFire %LANG% QuickStart example to run.
+echo.
+echo 1. BasicOperations
+echo 2. DataExpiration
+echo 3. LoaderListenerWriter
+echo 4. RegisterInterest
+echo 5. RemoteQuery
+echo 6. HA Cache
+echo 7. Exceptions
+echo 8. DurableClient
+echo 9. Security
+echo 10.PutAllGetAllOperations
+echo 11.Continuous Query
+echo 12.DistributedSystem
+echo 13.PoolWithEndpoints
+echo 14.PoolRemoteQuery
+echo 15.ExecuteFunctions
+echo 16.Pool Continuous Query
+echo 17.Delta
+echo 18.Multiuser Security
+echo 19.RefIDExample
+echo 20.Transactions
+echo 21.TransactionsXA
+echo 22.PdxRemoteQuery
+echo 23.PdxSerializer
+echo 24.PdxInstance
+echo 25.PdxAutoSerializer
+echo 26.Quit
+echo.
+
+:getoption
+
+rem choice /c:123 /n
+
+set /p option=Enter option: 
+
+set exname=invalidoption
+
+if '%option%' equ '1' set exname=BasicOperations
+if '%option%' equ '2' set exname=DataExpiration
+if '%option%' equ '3' set exname=LoaderListenerWriter
+if '%option%' equ '4' set exname=RegisterInterest
+if '%option%' equ '5' set exname=RemoteQuery
+if '%option%' equ '6' set exname=HACache
+if '%option%' equ '7' set exname=Exceptions
+if '%option%' equ '8' set exname=DurableClient
+if '%option%' equ '9' set exname=Security
+if '%option%' equ '10' set exname=PutAllGetAllOperations
+if '%option%' equ '11' set exname=CqQuery
+if '%option%' equ '12' set exname=DistributedSystem
+if '%option%' equ '13' set exname=PoolWithEndpoints
+if '%option%' equ '14' set exname=PoolRemoteQuery
+if '%option%' equ '15' set exname=ExecuteFunctions
+if '%option%' equ '16' set exname=PoolCqQuery
+if '%option%' equ '17' set exname=Delta
+if '%option%' equ '18' set exname=MultiuserSecurity
+if '%option%' equ '19' set exname=RefIDExample
+if '%option%' equ '20' set exname=Transactions
+if '%option%' equ '21' set exname=TransactionsXA
+if '%option%' equ '22' set exname=PdxRemoteQuery
+if '%option%' equ '23' set exname=PdxSerializer
+if '%option%' equ '24' set exname=PdxInstance
+if '%option%' equ '25' set exname=PdxAutoSerializer
+if '%option%' equ '26' goto finished
+
+if '%exname%' equ 'invalidoption' goto invalidoption
+
+goto runexample
+
+:invalidoption
+
+echo Invalid option.
+goto getoption
+
+:closeup
+
+echo Finished example %exname%.
+
+:finished


[28/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/vsprojects/RefIDExample C++/RefIDExample C++.vcxproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/vsprojects/RefIDExample C++/RefIDExample C++.vcxproj b/geode-client-native/quickstart/cpp/vsprojects/RefIDExample C++/RefIDExample C++.vcxproj
new file mode 100755
index 0000000..11ff24a
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/vsprojects/RefIDExample C++/RefIDExample C++.vcxproj	
@@ -0,0 +1,195 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{8388764D-358D-4BAA-A32A-A18486CA1BC4}</ProjectGuid>
+    <RootNamespace>RefIDExampleC</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">RefIDExample</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">RefIDExample</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">RefIDExample</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">RefIDExample</TargetName>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/debug/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\RefIDExample.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\RefIDExample.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\RefIDExample.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\RefIDExample.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\RefIDExample.cpp">
+      <ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)%(Filename)1.obj</ObjectFileName>
+      <XMLDocumentationFileName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(IntDir)%(Filename)1.xdc</XMLDocumentationFileName>
+      <ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)%(Filename)1.obj</ObjectFileName>
+      <XMLDocumentationFileName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)%(Filename)1.xdc</XMLDocumentationFileName>
+      <ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)%(Filename)1.obj</ObjectFileName>
+      <XMLDocumentationFileName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(IntDir)%(Filename)1.xdc</XMLDocumentationFileName>
+      <ObjectFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)%(Filename)1.obj</ObjectFileName>
+      <XMLDocumentationFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)%(Filename)1.xdc</XMLDocumentationFileName>
+    </ClCompile>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/vsprojects/RegisterInterestC++/RegisterInterestC++.vcxproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/vsprojects/RegisterInterestC++/RegisterInterestC++.vcxproj b/geode-client-native/quickstart/cpp/vsprojects/RegisterInterestC++/RegisterInterestC++.vcxproj
new file mode 100755
index 0000000..e3a934e
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/vsprojects/RegisterInterestC++/RegisterInterestC++.vcxproj
@@ -0,0 +1,141 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectName>RegisterInterest C++</ProjectName>
+    <ProjectGuid>{B3BE10D1-41CC-4BD0-925A-DC157D09589B}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Configuration)\</IntDir>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">RegisterInterest</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">RegisterInterest</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">RegisterInterest</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">RegisterInterest</TargetName>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <Optimization>Disabled</Optimization>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/debug/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\RegisterInterest.exe</OutputFile>
+      <TargetMachine>MachineX86</TargetMachine>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <Optimization>Disabled</Optimization>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\RegisterInterest.exe</OutputFile>
+      <TargetMachine>MachineX64</TargetMachine>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\RegisterInterest.exe</OutputFile>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\RegisterInterest.exe</OutputFile>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\RegisterInterest.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/vsprojects/RemoteQueryC++/RemoteQueryC++.vcxproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/vsprojects/RemoteQueryC++/RemoteQueryC++.vcxproj b/geode-client-native/quickstart/cpp/vsprojects/RemoteQueryC++/RemoteQueryC++.vcxproj
new file mode 100755
index 0000000..a608db9
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/vsprojects/RemoteQueryC++/RemoteQueryC++.vcxproj
@@ -0,0 +1,167 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectName>RemoteQuery C++</ProjectName>
+    <ProjectGuid>{4DCC2C45-74E0-4C99-B99D-271EAC2A2026}</ProjectGuid>
+    <RootNamespace>RemoteQuery C++</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Configuration)\</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Configuration)\</IntDir>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">RemoteQuery</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">RemoteQuery</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">RemoteQuery</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">RemoteQuery</TargetName>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>BUILD_TESTOBJECT;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <Optimization>Disabled</Optimization>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/debug/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\RemoteQuery.exe</OutputFile>
+      <TargetMachine>MachineX86</TargetMachine>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+    <PostBuildEvent>
+      <Command>del /q "$(SolutionDir)\cpp\*.exp"
+del /q "$(SolutionDir)\cpp\*.lib"
+</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>BUILD_TESTOBJECT;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <Optimization>Disabled</Optimization>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\RemoteQuery.exe</OutputFile>
+      <TargetMachine>MachineX64</TargetMachine>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+    <PostBuildEvent>
+      <Command>del /q "$(SolutionDir)\cpp\*.exp"
+del /q "$(SolutionDir)\cpp\*.lib"
+</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>BUILD_TESTOBJECT;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\RemoteQuery.exe</OutputFile>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+    <PostBuildEvent>
+      <Command>del /q "$(SolutionDir)\cpp\*.exp"
+del /q "$(SolutionDir)\cpp\*.lib"
+</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>BUILD_TESTOBJECT;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\RemoteQuery.exe</OutputFile>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+    <PostBuildEvent>
+      <Command>del /q "$(SolutionDir)\cpp\*.exp"
+del /q "$(SolutionDir)\cpp\*.lib"
+</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\queryobjects\Portfolio.cpp" />
+    <ClCompile Include="..\..\queryobjects\Position.cpp" />
+    <ClCompile Include="..\..\RemoteQuery.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/vsprojects/SecurityC++/SecurityC++.vcxproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/vsprojects/SecurityC++/SecurityC++.vcxproj b/geode-client-native/quickstart/cpp/vsprojects/SecurityC++/SecurityC++.vcxproj
new file mode 100755
index 0000000..9642cca
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/vsprojects/SecurityC++/SecurityC++.vcxproj
@@ -0,0 +1,142 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectName>Security C++</ProjectName>
+    <ProjectGuid>{F0AC18A1-D592-4A0E-8BC3-D424DB7323F6}</ProjectGuid>
+    <RootNamespace>Security C++</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Configuration)\</IntDir>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Security</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Security</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Security</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Security</TargetName>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <Optimization>Disabled</Optimization>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/debug/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\Security.exe</OutputFile>
+      <TargetMachine>MachineX86</TargetMachine>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <Optimization>Disabled</Optimization>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\Security.exe</OutputFile>
+      <TargetMachine>MachineX64</TargetMachine>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\Security.exe</OutputFile>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\Security.exe</OutputFile>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\Security.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/vsprojects/TransactionsC++/TransactionsC++.vcxproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/vsprojects/TransactionsC++/TransactionsC++.vcxproj b/geode-client-native/quickstart/cpp/vsprojects/TransactionsC++/TransactionsC++.vcxproj
new file mode 100755
index 0000000..af726b6
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/vsprojects/TransactionsC++/TransactionsC++.vcxproj
@@ -0,0 +1,165 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{85BCDC6D-6F3E-4F6D-BE76-6B5B5B5611C4}</ProjectGuid>
+    <RootNamespace>TransactionsC</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Transactions</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Transactions</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Transactions</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Transactions</TargetName>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/debug/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\Transactions.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\Transactions.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\Transactions.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\Transactions.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\Transactions.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/vsprojects/TransactionsXAC++/TransactionsXAC++.vcxproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/vsprojects/TransactionsXAC++/TransactionsXAC++.vcxproj b/geode-client-native/quickstart/cpp/vsprojects/TransactionsXAC++/TransactionsXAC++.vcxproj
new file mode 100644
index 0000000..e45805d
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/vsprojects/TransactionsXAC++/TransactionsXAC++.vcxproj
@@ -0,0 +1,165 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\TransactionsXA.cpp" />
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{8C3245A6-636B-4E36-9F10-EB1A4C30008E}</ProjectGuid>
+    <RootNamespace>TransactionsC</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">TransactionsXA</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">TransactionsXA</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">TransactionsXA</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">TransactionsXA</TargetName>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/debug/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\TransactionsXA.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\TransactionsXA.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\TransactionsXA.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\TransactionsXA.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/BasicOperations.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/BasicOperations.cs b/geode-client-native/quickstart/csharp/BasicOperations.cs
new file mode 100644
index 0000000..d53f513
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/BasicOperations.cs
@@ -0,0 +1,110 @@
+/*
+ * The BasicOperations QuickStart Example.
+ *
+ * This example takes the following steps:
+ *
+ * 1. Create a GemFire Cache.
+ * 2. Create the example Region with generics support programmatically.
+ * 3.a. Put Entries (Key and Value pairs) into the Region.
+ * 3.b. If in 64 bit mode put over 4 GB data to demonstrate capacity.
+ * 4. Get Entries from the Region.
+ * 5. Invalidate an Entry in the Region.
+ * 6. Destroy an Entry in the Region.
+ * 7. Close the Cache.
+ *
+ */
+
+// Use standard namespaces
+using System;
+
+// Use the GemFire namespace
+using GemStone.GemFire.Cache.Generic;
+
+// To check for available memory.
+using System.Diagnostics;
+
+namespace GemStone.GemFire.Cache.Generic.QuickStart
+{
+
+  // The BasicOperations QuickStart example.
+  class BasicOperations
+  {
+    static void Main(string[] args)
+    {
+      try
+      {
+        // Create a GemFire Cache.
+        CacheFactory cacheFactory = CacheFactory.CreateCacheFactory();
+
+        Cache cache = cacheFactory.Create();
+
+        Console.WriteLine("Created the GemFire Cache");
+
+        RegionFactory regionFactory = cache.CreateRegionFactory(RegionShortcut.CACHING_PROXY);
+
+        IRegion<int, string> region = regionFactory.Create<int, string>("exampleRegion");
+
+        Console.WriteLine("Created the Region with generics support programmatically.");
+
+        // Put an Entry (Key and Value pair) into the Region using the IDictionary interface. 
+        region[111] = "Value1";
+
+        Console.WriteLine("Put the first Entry into the Region");
+
+        // Put an Entry into the Region the traditional way. 
+        region[123] = "123";
+
+        Console.WriteLine("Put the second Entry into the Region");
+
+        PerformanceCounter pc = new PerformanceCounter("Memory", "Available Bytes");
+        long freeMemory = Convert.ToInt64(pc.NextValue());
+
+        // Are we a 64 bit process and do we have 5 GB free memory available? 
+        if (IntPtr.Size == 8 && freeMemory > 5L * 1024L * 1024L * 1024L)
+        {
+          Char ch = 'A';
+          string text = new string(ch, 1024 * 1024);
+          Console.WriteLine("Putting over 4 GB data locally...");
+          for (int item = 0; item < (5 * 1024 /* 5 GB */); item++)
+          {
+            region.GetLocalView()[item] = text;
+          }
+          Console.WriteLine("Put over 4 GB data locally");
+        }
+        else
+        {
+          Console.WriteLine("Not putting over 4 GB data locally due to lack of memory capacity");
+        }
+        
+        // Get Entries back out of the Region via the IDictionary interface.
+        string result1 = region[111];
+
+        Console.WriteLine("Obtained the first Entry from the Region");
+
+        string result2 = region[123];
+
+        Console.WriteLine("Obtained the second Entry from the Region");
+
+        // Invalidate an Entry in the Region.
+        region.Invalidate(111);
+
+        Console.WriteLine("Invalidated the first Entry in the Region");
+
+        // Destroy an Entry in the Region using the IDictionary interface.
+        region.Remove(123);
+
+        Console.WriteLine("Destroyed the second Entry in the Region");
+
+        // Close the GemFire Cache.
+        cache.Close();
+
+        Console.WriteLine("Closed the GemFire Cache");
+      }
+      // An exception should not occur
+      catch (GemFireException gfex)
+      {
+        Console.WriteLine("BasicOperations GemFire Exception: {0}", gfex.Message);
+      }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/CqQuery.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/CqQuery.cs b/geode-client-native/quickstart/csharp/CqQuery.cs
new file mode 100644
index 0000000..f480b1f
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/CqQuery.cs
@@ -0,0 +1,172 @@
+/*
+ * The CqQuery QuickStart Example.
+ *
+ * This example takes the following steps:
+ *
+ * 1. Create a GemFire Cache Programmatically.
+ * 2. Create the example Region Programmatically.
+ * 3. Populate some query objects on the Region.
+ * 4. Register a cqQuery listener
+ * 5. Execute a cqQuery with initial Results 
+ * 6. Close the Cache.
+ *
+ */
+
+// Use standard namespaces
+using System;
+
+// Use the GemFire namespace
+using GemStone.GemFire.Cache.Generic;
+
+// Use the "Tests" namespace for the query objects.
+using GemStone.GemFire.Cache.Tests.NewAPI;
+
+namespace GemStone.GemFire.Cache.Generic.QuickStart
+{
+  // The CqQuery QuickStart example.
+
+  //User Listener
+  public class MyCqListener<TKey, TResult> : ICqListener<TKey, TResult>
+  {
+    public virtual void OnEvent(CqEvent<TKey, TResult> ev)
+    {
+      Portfolio val = ev.getNewValue() as  Portfolio;
+      TKey key = ev.getKey();
+      CqOperationType opType = ev.getQueryOperation();
+      string opStr = "DESTROY";
+      if(opType == CqOperationType.OP_TYPE_CREATE)
+         opStr = "CREATE";
+      else if(opType == CqOperationType.OP_TYPE_UPDATE)
+         opStr = "UPDATE";
+      Console.WriteLine("MyCqListener::OnEvent called with key {0}, value ({1},{2}), op {3}.", key, val.ID, val.Pkid,opStr);
+    }
+    public virtual void OnError(CqEvent<TKey, TResult> ev)
+    {
+      Console.WriteLine("MyCqListener::OnError called");
+    }
+    public virtual void Close()
+    {
+      Console.WriteLine("MyCqListener::close called");
+    }
+  }
+  class ContinuousQuery
+  {
+    static void Main(string[] args)
+    {
+      try
+      {
+        // Create a GemFire Cache Programmatically.
+        CacheFactory cacheFactory = CacheFactory.CreateCacheFactory();
+        Cache cache = cacheFactory.SetSubscriptionEnabled(true)
+                                  .AddServer("localhost", 50505)
+                                  .Create();
+
+        Console.WriteLine("Created the GemFire Cache");
+
+        RegionFactory regionFactory = cache.CreateRegionFactory(RegionShortcut.PROXY);
+        // Create the example Region programmatically.
+        IRegion<string, Portfolio> region = regionFactory.Create<string, Portfolio>("Portfolios");
+
+        Console.WriteLine("Created the Region Programmatically.");
+
+        // Register our Serializable/Cacheable Query objects, viz. Portfolio and Position.
+        Serializable.RegisterTypeGeneric(Portfolio.CreateDeserializable);
+        Serializable.RegisterTypeGeneric(Position.CreateDeserializable);
+
+        Console.WriteLine("Registered Serializable Query Objects");
+
+        // Populate the Region with some Portfolio objects.
+        Portfolio port1 = new Portfolio(1 /*ID*/, 10 /*size*/);
+        Portfolio port2 = new Portfolio(2 /*ID*/, 20 /*size*/);
+        Portfolio port3 = new Portfolio(3 /*ID*/, 30 /*size*/);
+        region["Key1"] = port1;
+        region["Key2"] = port2;
+        region["Key3"] = port3;
+
+        Console.WriteLine("Populated some Portfolio Objects");
+
+        // Get the QueryService from the Cache.
+        QueryService<string, object> qrySvc = cache.GetQueryService<string, object>();
+
+        Console.WriteLine("Got the QueryService from the Cache");
+
+	//create CqAttributes with listener
+        CqAttributesFactory<string, object> cqFac = new CqAttributesFactory<string, object>();
+        ICqListener<string, object> cqLstner = new MyCqListener<string, object>();
+        cqFac.AddCqListener(cqLstner);
+        CqAttributes<string, object> cqAttr = cqFac.Create();
+
+	//create a new cqQuery
+        CqQuery<string, object> qry = qrySvc.NewCq("MyCq", "select * from /Portfolios" + "  p where p.ID!=2", cqAttr, false);
+
+        // Execute a CqQuery with Initial Results
+        ICqResults<object> results = qry.ExecuteWithInitialResults();
+
+        Console.WriteLine("ResultSet Query returned {0} rows", results.Size);
+	//make changes to generate cq events
+        region["Key2"] = port1;
+        region["Key3"] = port2;
+        region["Key1"] = port3;
+
+        SelectResultsIterator<object> iter = results.GetIterator();
+
+        while (iter.HasNext)
+        {
+          object item = iter.Next();
+
+          if (item != null)
+          {
+            Struct st = item as Struct;
+
+            string key = st["key"] as string;
+
+            Console.WriteLine("Got key " + key);
+
+            Portfolio port = st["value"] as Portfolio;
+
+            if (port == null)
+            {
+              Position pos = st["value"] as Position;
+              if (pos == null)
+              {
+                string cs = st["value"] as string;
+                if (cs == null)
+                {
+                  Console.WriteLine("Query got other/unknown object.");
+                }
+                else
+                {
+                  Console.WriteLine("Query got string : {0}.", cs);
+                }
+              }
+              else
+              {
+                Console.WriteLine("Query got Position object with secId {0}, shares {1}.", pos.SecId, pos.SharesOutstanding);
+              }
+            }
+            else
+            {
+              Console.WriteLine("Query got Portfolio object with ID {0}, pkid {1}.", port.ID, port.Pkid);
+            }
+          }
+        }
+	//Stop the cq
+        qry.Stop();
+
+	//Close the cq
+        qry.Close();
+
+        // Close the GemFire Cache.
+        cache.Close();
+
+        Console.WriteLine("Closed the GemFire Cache");
+
+      }
+      // An exception should not occur
+      catch (GemFireException gfex)
+      {
+        Console.WriteLine("CqQuery GemFire Exception: {0}", gfex.Message);
+      }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/DataExpiration.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/DataExpiration.cs b/geode-client-native/quickstart/csharp/DataExpiration.cs
new file mode 100644
index 0000000..688e2db
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/DataExpiration.cs
@@ -0,0 +1,105 @@
+/*
+ * The DataExpiration QuickStart Example.
+ *
+ * This example takes the following steps:
+ *
+ *  1. Create a GemFire Cache programmatically.
+ *  2. Create the example Region with generics support programmatically.
+ *  3. Set the generic SimpleCacheListener plugin on the Region.
+ *  4. Put 3 Entries into the Region.
+ *  5. Get the Entry Idle Timeout setting from the Region.
+ *  6. Count the Keys in the Region before the Timeout duration elapses.
+ *  7. Wait for the Timeout Expiration Action to be reported by the SimpleCacheListener.
+ *  8. Count the remaining Keys in the Region after the Timeout duration elapses.
+ *  9. Close the Cache.
+ *
+ */
+
+// Use standard namespaces
+using System;
+using System.Threading;
+
+// Use the GemFire namespace
+using GemStone.GemFire.Cache.Generic;
+
+// Use the .NET generics namespace
+using System.Collections.Generic;
+
+namespace GemStone.GemFire.Cache.Generic.QuickStart
+{
+  // The DataExpiration QuickStart example.
+  class DataExpiration
+  {
+    static void Main(string[] args)
+    {
+      try
+      {
+        // Create a GemFire Cache Programmatically.
+        CacheFactory cacheFactory = CacheFactory.CreateCacheFactory();
+        Cache cache = cacheFactory.SetSubscriptionEnabled(true)
+                                  .Create();
+
+        Console.WriteLine("Created the GemFire Cache");
+
+        RegionFactory regionFactory = cache.CreateRegionFactory(RegionShortcut.CACHING_PROXY);
+        // Create the example Region programmatically.
+        IRegion<string, string> region = regionFactory
+          .SetEntryIdleTimeout(ExpirationAction.Destroy, 10)          
+          .Create<string, string>("exampleRegion");
+
+        Console.WriteLine("Created the Region with generics support programmatically.");
+
+        // Plugin the SimpleCacheListener to the Region.
+        AttributesMutator<string, string> attrMutator = region.AttributesMutator;
+        attrMutator.SetCacheListener(new SimpleCacheListener<string, string>());
+
+        Console.WriteLine("Set the generic SimpleCacheListener on the Region");
+
+        // Put 3 Entries into the Region using the IDictionary interface.
+        region["Key1"] = "Value1";
+        region["Key2"] = "Value2";
+        region["Key3"] = "Value3";
+
+        Console.WriteLine("Put 3 Entries into the Region");
+
+        // Get the Entry Idle Timeout specified in the Cache XML file.
+        int entryIdleTimeout = region.Attributes.EntryIdleTimeout;
+
+        Console.WriteLine("Got Entry Idle Timeout as {0} seconds", entryIdleTimeout);
+
+        // Wait for half the Entry Idle Timeout duration.
+        Thread.Sleep(entryIdleTimeout * 1000 / 2);
+
+        // Get the number of Keys remaining in the Region, should be all 3.
+        ICollection<string> keys = region.GetLocalView().Keys;
+
+        Console.WriteLine("Got {0} keys before the Entry Idle Timeout duration elapsed", keys.Count);
+
+        // Get 2 of the 3 Entries from the Region to "reset" their Idle Timeouts.
+        string value1 = region["Key1"];
+        string value2 = region["Key2"];
+
+        Console.WriteLine("The SimpleCacheListener should next report the expiration action");
+
+        // Wait for the entire Entry Idle Timeout duration.
+        Thread.Sleep(entryIdleTimeout * 1000);
+
+        // Get the number of Keys remaining in the Region, should be 0 now.
+        keys = region.GetLocalView().Keys;
+
+        Console.WriteLine("Got {0} keys after the Entry Idle Timeout duration elapsed", keys.Count);
+
+        // Close the GemFire Cache.
+        cache.Close();
+
+        Console.WriteLine("Closed the GemFire Cache");
+
+      }
+      // An exception should not occur
+      catch (GemFireException gfex)
+      {
+        Console.WriteLine("DataExpiration GemFire Exception: {0}", gfex.Message);
+      }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/Delta.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/Delta.cs b/geode-client-native/quickstart/csharp/Delta.cs
new file mode 100644
index 0000000..02fcc9f
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/Delta.cs
@@ -0,0 +1,93 @@
+/*
+ * The Delta QuickStart Example.
+ *
+ * This example takes the following steps:
+ *
+ * 1. Create a GemFire Cache.
+ * 2. Get the example Region from the Cache.
+ * 3. Put an Entry into the Region.
+ * 4. Set delta for a value.
+ * 5. Put entry with delta in region.
+ * 6. Local-invalidate entry in region.
+ * 7. Get entry from server.
+ * 8. Verify that delta was applied on server, by examining entry.
+ * 9. Close the Cache.
+ *
+ */
+
+// Use standard namespaces
+using System;
+
+// Use the GemFire namespace
+using GemStone.GemFire.Cache.Generic;
+
+namespace GemStone.GemFire.Cache.Generic.QuickStart
+{
+  // The Delta QuickStart example.
+  class Delta
+  {
+    static void Main(string[] args)
+    {
+      try
+      {
+        // Create a GemFire Cache through XMLs/clientDelta.xml
+        Properties<string, string> prop = Properties<string, string>.Create<string, string>();
+        prop.Insert("cache-xml-file", "XMLs/clientDelta.xml");
+        CacheFactory cacheFactory = CacheFactory.CreateCacheFactory(prop);
+        Cache cache = cacheFactory.Create();
+
+        Console.WriteLine("Created the GemFire Cache");
+
+        // Get the example Region from the Cache which is declared in the Cache XML file.
+        IRegion<string, DeltaExample> region = cache.GetRegion<string, DeltaExample>("exampleRegion");
+
+        Console.WriteLine("Obtained the Region from the Cache");
+
+        Serializable.RegisterTypeGeneric(DeltaExample.create);
+
+        //Creating Delta Object.
+        DeltaExample ptr = new DeltaExample(10, 15, 20);
+        
+        //Put the delta object. This will send the complete object to the server.
+        region["Key1"] = ptr;
+        
+        Console.WriteLine("Completed put for a delta object");
+
+
+        //Changing state of delta object.
+        ptr.setField1(9);
+
+        //Put delta object again. Since delta flag is set true it will calculate
+        //Delta and send only Delta to the server.
+        region["Key1"] = ptr;
+        Console.WriteLine("Completed put with delta");
+
+        //Locally invalidating the key.
+        region.GetLocalView().Invalidate("Key1");
+        //Fetching the value from server.
+        DeltaExample retVal = (DeltaExample) region["Key1"];
+
+        //Verification
+        if( retVal.getField1() != 9 )
+          throw new GemFireException("First field should have been 9");
+        if( retVal.getField2() != 15 )
+          throw new GemFireException("Second field should have been 15");
+        if( retVal.getField3() != 20 )
+          throw new GemFireException("Third field should have been 20");
+        
+        Console.WriteLine("Delta has been successfully applied at server");
+
+        // Close the GemFire Cache.
+        cache.Close();
+
+        Console.WriteLine("Closed the GemFire Cache");
+
+      }
+      // An exception should not occur
+      catch (GemFireException gfex)
+      {
+        Console.WriteLine("Delta GemFire Exception: {0}", gfex.Message);
+      }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/DeltaExample.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/DeltaExample.cs b/geode-client-native/quickstart/csharp/DeltaExample.cs
new file mode 100644
index 0000000..7849e00
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/DeltaExample.cs
@@ -0,0 +1,183 @@
+
+using System;
+using GemStone.GemFire.Cache.Generic;
+
+namespace GemStone.GemFire.Cache.Generic.QuickStart
+{
+  public class DeltaExample : IGFDelta,IGFSerializable, ICloneable
+    {
+      // data members
+      private Int32 m_field1;
+      private Int32 m_field2;
+      private Int32 m_field3;
+
+      // delta indicators
+      private bool m_f1set;
+      private bool m_f2set;
+      private bool m_f3set;
+
+      public DeltaExample(Int32 field1, Int32 field2, Int32 field3)
+      {
+        m_field1 = field1;
+        m_field2 = field2;
+        m_field3 = field3;
+        reset();
+      }
+
+      public DeltaExample()
+      {
+        reset();
+      }
+      
+      public DeltaExample(DeltaExample copy)
+      {
+        m_field1 = copy.m_field1;
+        m_field2 = copy.m_field2;
+        m_field3 = copy.m_field3;
+        reset();
+      }
+  
+      private void reset()
+      {
+        m_f1set = false;
+        m_f2set = false;
+        m_f3set = false;
+      }
+      
+      public Int32 getField1()
+      {
+        return m_field1;
+      }
+  
+      public Int32 getField2()
+      {
+        return m_field2;
+      }
+
+      public Int32 getField3()
+      {
+        return m_field3;
+      }
+
+      public void setField1(Int32 val)
+      {
+        lock(this)
+        {
+          m_field1 = val;
+          m_f1set = true;
+        }
+      }
+
+      public void setField2(Int32 val)
+      {
+        lock(this)
+        {
+          m_field2 = val;
+          m_f2set = true;
+        }
+      }
+
+      public void setField3(Int32 val)
+      {
+        lock(this)
+        {
+          m_field3 = val;
+          m_f3set = true;
+        }
+      }
+      
+      public bool HasDelta()
+      {
+        return m_f1set || m_f2set || m_f3set;
+      }
+
+      public void ToDelta(DataOutput DataOut)
+      {
+        lock(this)
+        {
+          DataOut.WriteBoolean(m_f1set);
+          if (m_f1set)
+          {
+            DataOut.WriteInt32(m_field1);
+          }
+          DataOut.WriteBoolean(m_f2set);
+          if (m_f2set)
+          {
+            DataOut.WriteInt32(m_field2);
+          }
+          DataOut.WriteBoolean(m_f3set);
+          if (m_f3set)
+          {
+            DataOut.WriteInt32(m_field3);
+          }
+          reset();
+        }
+      }
+
+      public void FromDelta(DataInput DataIn)
+      {
+        lock(this)
+        {
+          m_f1set = DataIn.ReadBoolean();
+          if (m_f1set)
+          {
+            m_field1 = DataIn.ReadInt32();
+          }
+          m_f2set = DataIn.ReadBoolean();
+          if (m_f2set)
+          {
+            m_field2 = DataIn.ReadInt32();
+          }
+          m_f3set = DataIn.ReadBoolean();
+          if (m_f3set)
+          {
+            m_field3 = DataIn.ReadInt32();
+          }
+          reset();
+        }
+      }
+
+      public void ToData(DataOutput DataOut)
+      {
+        DataOut.WriteInt32(m_field1);
+        DataOut.WriteInt32(m_field2);
+        DataOut.WriteInt32(m_field3);
+      }
+
+      public IGFSerializable FromData(DataInput DataIn)
+      {
+        m_field1 = DataIn.ReadInt32();
+        m_field2 = DataIn.ReadInt32();
+        m_field3 = DataIn.ReadInt32();
+        return this;
+      }
+
+      public UInt32 ClassId
+      {
+        get
+        {
+          return 0x02;
+        }
+      }
+
+      public UInt32 ObjectSize
+      {
+        get
+        {
+          UInt32 objectSize = 0;
+          return objectSize;
+        }
+      }
+   
+      public static IGFSerializable create()
+      {
+        return new DeltaExample();
+      }
+
+      public Object Clone()
+      {
+        return new DeltaExample(this);
+      }
+
+    }
+}


[47/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/build.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/build.xml b/geode-client-native/build.xml
new file mode 100644
index 0000000..fd46705
--- /dev/null
+++ b/geode-client-native/build.xml
@@ -0,0 +1,3255 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+  This is the Ant build file for building GemFire Native Client.
+
+    For Ant information:      http://jakarta.apache.org/ant
+
+    For JUnit information:    http://www.junit.org
+
+    For Doxygen information:  http://www.stack.nl/~dimitri/doxygen
+
+    $Id: build.xml 9885 2005-03-07 22:06:12Z matthews $
+-->
+<project default="usage" name="gemfire">
+  <description>Builds GemFire C++</description>
+
+  <condition property="gcm.dir" value="${GCMDIR}">
+    <os family="windows"/>
+  </condition>
+  <property name="gcm.dir" value="/export/gcm"/>
+  
+  <property name="cmake-build-type" value="Debug"/>
+  <condition property="isDebug">
+    <equals arg1="${cmake-build-type}" arg2="Debug" />
+  </condition>
+
+  <taskdef resource="com/gemstone/tools/ant/taskdefs/buildtasks.properties"
+           classpath="${basedir}/buildfiles/taskdefsV10.jar"/>
+
+  <!-- include external xml files here -->
+  <import file="buildfiles/dependencies.xml"/>
+  <import file="buildfiles/utilities.xml"/>
+  
+  <if>
+    <istrue value="${sonar.scan}"/>
+    <then>
+      <import file="buildfiles/sonar.xml"/>
+    </then>
+    <else>
+    </else>
+  </if>
+ 
+  <if>
+    <isset property="buildUser"/>
+    <then>
+      <property name="userName" value="${buildUser}"/>
+    </then>
+    <else>
+      <property name="userName" value="${user.name}"/>
+    </else>
+  </if>
+
+  <target name="usage">
+    <description>Prints information about what targets exist</description>
+
+    <echo>
+Commonly used targets:
+  update-git           Updates this gemfire git checkout and property files
+  src                  Builds all GemFire product jars and libraries
+  tests                Builds all GemFire product jars, libraries, and
+                       test code
+  build-all            Builds product into product tree and tests, does
+                       not run tests
+  cpp-pre-checkin      Runs: clean, build-product, compile-cpp-tests, run-cpp-tests
+                       Use this before checking in.
+  precheckin           Runs: clean, build-product, compile-cpp-tests, run-cpp-tests, run-csharp-tests
+                       Use this before checking in.
+  console              Builds the gfc.exe .NET console
+
+Available targets:
+  build-product        Packs a product tree into build-artifacts
+
+  shared-library       Compiles the C++ code and builds the shared libraries
+  rebuild-shared-library Builds &quot;shared-library&quot; and then &quot;quick-build-product&quot;
+                   the gemfire.jar is written directly to the product tree
+
+  framework            Compiles the test framework, and the test libraries
+  compile-cpp-tests    Compiles the GemFire C++ Cache test code
+  compile-all-tests    Compiles all GemFire unit test code
+  
+  compile-cpp-docexample     Compiles the NativeClient document's test examples
+  run-doc-examples           Runs the NativeClient document's test examples
+
+  run-cpp-perf-tests          Runs C++ perf tests on Linux and Windows
+  run-csharp-perf-tests   Runs C# perf tests
+
+  run-all-tests        Runs all unit tests (java, c, smoke, dunit, distcoll)
+
+  cppref-doxygen       Builds the C++ Cache reference docs with doxygen 
+  cliref-doxygen       Builds the C++ Cache .NET reference docs with doxygen 
+  cliref-sandcastle    Builds the C++ Cache .NET reference docs using sandcastle
+  glimpse              Builds a glimpse database for GemFire source code
+
+  clean                Cleans all byproducts of building
+  clean-framework      Cleans the byproducts of framework
+  clean-gfcppcache-library clean just the objs files in the gfcppcache so or dll.
+  clean-cpp-tests      clean the c++ cache unit tests
+
+  quick-build-product  Same as &quot;build-product&quot; but does not check dependencies
+  build-installer      Creates installshield installer for product tree
+
+Command Line Defines:
+  -Dproduct.dir=yourProductDir  Causes &quot;unit-tests&quot; to compile and run using
+                                yourProductDir.
+  -DtestIterations=n   Where n is the number of complete passes to make over
+                       the unit tests. The default is 1. Test failures are
+           archived to a pass-c directory where c is the current
+           pass number.
+  -DhaltOnFailure=false  Causes ant to log unit test failures but to keep
+                         executing ant targets.
+  -DlogLevel=level     The log level the unit test system should default to.
+                       One of: all, finest, finer, fine (default), debug,
+                               config, info, warning, severe, none
+  -DgfeLogLevel=level  The log level the unit test system should default to for GFE server.
+                       One of: all, finest, finer, fine, debug,
+                               config (default), info, warning, severe, none
+  -DgfeSecLogLevel=level  The security-log-level the unit test system should default to for GFE server.
+                          One of: all, finest, finer, fine, debug,
+                                  config (default), info, warning, severe, none
+
+  -Dlogging=false      Show the log on the console for the C# unit tests.
+  -Dcsharp.debug=true  Run with the debug build of GemStone.GemFire.Cache.dll and C# unit tests.
+                       Also set the log level the C# unit test system to 'debug'.
+  -Dcpp.quickstart=ExampleName      Runs only the C++ quickstart example specified in Example Name.
+  -Dcsharp.quickstart=ExampleName   Runs only the C# quickstart example specified in Example Name.
+  -Dmulticast=false    Skip the C# multicast unit tests.
+  -Dunicast=false      Skip the C# unicast unit tests.
+  -Ddeprecated=false   Skip the deprecated C# unit tests.
+  -Dgenerics=false     Skip the generics C# unit tests.
+  -Dcsharp.testcase=CLASSNAME  Only run the C# unit tests in the given CLASSNAME in GemStone.GemFire.Cache.UnitTests namespace.
+  -Dcsharp.coverage=true Run the coverage tool for C# unit tests (currently NCover)
+  -Dcleanup=true       Cleanup the C# unit tests output directories and kill any stray processes.
+  -Dskipsandcastle=false Whether to skip the time-consuming .NET API generation using the SandCastle tool.
+  -DkeepGeneratedFiles=false Do not delete generted files after the build, for debugging purpose.
+    </echo>
+  </target>
+
+  <!-- Sets properties used in this build file -->
+  <target name="props" unless="target.props.done" depends="-props,-props-dependencies">
+    <property name="target.props.done" value="true" />
+  </target>
+  
+  <target name="-props" unless="target.-props.done">
+    <property name="target.-props.done" value="true" />
+    
+    <property environment="myenv"/>  <!-- Get environment variables -->
+      <!-- 
+       read.vs.propertyfile should only be set as a -D arg to ant
+       from within a Microsoft Build environment.
+       This is a mechanism to pass info to ant within that environment.
+       It should set properties used by targets called within the antTasks
+       vcproj files: as of 9/12/2006 ace_props, pack-core, and pack-tests 
+      -->
+
+    <condition property="vs.2010">
+      <contains string="${VCVER}" substring="10"/>
+    </condition>
+     
+     <conditional if="vs.2010">
+        <property name="vs.project.dir" location="${basedir}/vs_projects_10"/>
+        <property name="vs.solution.dir" value="VS_Solutions_10"/>
+        <property name="vcp.file.ext" value="vcxproj"/>
+        <property name="quickstart.ext" value="_10"/>
+        <property name="quickstart.exclude.ext" value=""/>
+       <exec executable="cygpath" outputproperty="vcvars.path">
+         <arg value="--dos"/>
+         <arg value="C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64\vcvars64.bat"/>
+       </exec>
+    </conditional>
+    <conditional unless="vs.2010">
+        <property name="vs.project.dir" location="${basedir}/vs_projects"/>
+        <property name="vs.solution.dir" value="VS_Solutions"/>
+        <property name="vcp.file.ext" value="vcproj"/>
+        <property name="quickstart.ext" value=""/>
+        <property name="quickstart.exclude.ext" value="_10"/>
+     </conditional>
+       
+     <property name="vs.file" location="${vs.project.dir}/gemfirecpp.sln"/>
+     <property name="vs.quickstart.file" location="${basedir}/quickstart/quickstart_cpp${quickstart.ext}.sln"/>
+     
+     <property name="vs.propertyfile" value="${basedir}/vs_ant.properties"/>
+     
+     <!--<property name="read.vs.propertyfile" value="false" />-->
+
+     <conditional if="read.vs.propertyfile">
+       <echo message="Reading the vs.propertyfile ${vs.propertyfile}" level="info"/>
+       <property file="${vs.propertyfile}" />
+     </conditional>
+  
+    <echo message="OS Name is:         ${os.name}" />
+    <echo message="OS Architecture is: ${os.arch}" />
+
+    <!-- determine machine and os -->
+    <condition property="gf.os" value="sol">
+      <and>
+      <os name="SunOs"/>
+      <os arch="sparcv9"/>
+      </and>
+    </condition>
+
+    <condition property="gf.os" value="solx86">
+      <and>
+      <os name="SunOs"/>
+      <os arch="amd64"/>
+      </and>
+    </condition>
+
+    <condition property="isSolarisx86">
+      <and>
+      <os name="SunOs"/>
+      <os arch="amd64"/>
+      </and>
+    </condition>
+    
+    <condition property="gf.os" value="linux">
+      <os name="Linux"/>
+    </condition>
+
+    <condition property="gf.os" value="win">
+      <os family="windows"/>
+    </condition>
+
+    <condition property="isLinux">
+      <os name="Linux"/>
+    </condition>
+    <condition property="isWindows">
+      <os family="windows"/>
+    </condition>
+    <condition property="isSolaris">
+      <os name="SunOs"/>
+    </condition>
+
+    <exec executable="bash" outputproperty="host.name" failonerror="true" failifexecutionfails="true">
+      <arg line="-c hostname"/>
+    </exec>
+
+    <echo message="Running on host ${host.name}" level="info"/>
+    <conditional if="isWindows">
+        <echo level="info" message="VCVER = ${VCVER}"/>
+    </conditional>
+    
+    <property file="${basedir}/build${host.name}.properties"/>
+    <available file="${basedir}/build${host.name}.properties" property="build.host.exists"/>
+    <conditional if="build.host.exists">
+      <echo message="Loading properties from ${basedir}/build${host.name}.properties:" level="info"/>
+      <concat>
+        <filelist dir="${basedir}" files="build${host.name}.properties"/>
+      </concat>
+    </conditional>
+
+    <property file="${basedir}/build${gf.os}.properties"/>
+    <available file="${basedir}/build${gf.os}.properties" property="build.os.exists"/>
+    <conditional if="build.os.exists">
+      <echo message="Loading properties from ${basedir}/build${gf.os}.properties:" level="info"/>
+      <concat>
+        <filelist dir="${basedir}" files="build${gf.os}.properties"/>
+      </concat>
+    </conditional>
+
+    <property file="${basedir}/build.properties"/>
+    <available file="${basedir}/build.properties" property="build.props.exists"/>
+    <conditional if="build.props.exists">
+      <echo message="Loading properties from ${basedir}/build.properties:" level="info"/>
+      <concat>
+        <filelist dir="${basedir}" files="build.properties"/>
+      </concat>
+    </conditional>
+
+    <property name="cPointerModel" value="32bit"/>
+    <property name="cppcacheTarget" value="all"/>
+    <property name="makeTarget" value="all"/>
+    
+    <condition property="useCpp11">
+    	<isset property="myenv.USE_CPP11" />
+    </condition>
+
+    <!-- For legacy reasons thirdparty.libs.dir == thirdparty.dir 
+         when cPointerModel == 32bits -->
+    <condition property="do64bit">
+      <contains string="${cPointerModel}" substring="64bit"/>
+    </condition>
+    <conditional if="do64bit">
+      <property name="thirdparty.libs.dir" value="${thirdparty.dir}64"/>
+    </conditional>
+    <property name="thirdparty.libs.dir" value="${thirdparty.dir}"/>
+
+    <!-- property name="perftools.dir" location="default location "/ -->
+    <condition property="perftools.dir" value="${gcm.dir}/where/cplusplus/perftools">
+      <os name="Linux"/>
+    </condition>
+
+    <!-- productname cannot have trailing whitespace -->
+    <property name="gemfire.productname" value="Pivotal GemFire Native Client"/> 
+    <property name="gemfire.version" value="9.0.0.0"/>
+    <property name="gemfire.bits" value="${cPointerModel}"/>
+    
+    <!-- license.version controls the version the license code must have -->
+    <property name="license.version" value="1.2"/>
+    <property name="build.dir" value="${basedir}/build-artifacts"/>
+
+    <property name="osbuild.dir" value="${build.dir}/${gf.os}"/>
+
+    <conditional if="isWindows" >
+        <conditional unless="vs.2010">
+            <property name="osbuild.ext.dir" value="${osbuild.dir}/VS2005" />
+            <if><available file="${osbuild.dir}/product/bin/" type="dir" />
+                <then><mkdir dir="${osbuild.dir}/product/bin/Net20"/></then>
+            </if>
+        </conditional>
+    </conditional>
+
+    <property name="osbuild.ext.dir" value="${osbuild.dir}"/>
+
+    <echo message="osbuild.dir is ${osbuild.ext.dir}" level="info"/>
+
+    <condition property="bad.osbuild.dir">
+      <contains string="${osbuild.ext.dir}" substring="shared_build"/>
+    </condition>
+    <fail message="Illegal osbuild.dir, should not be on shared_build." if="bad.osbuild.dir"/>
+
+    <mkdir dir="${osbuild.ext.dir}"/>
+    <property name="scripts.dir" value="${basedir}/release/scripts"/>
+    <property name="src.dir" value="${basedir}/src"/>
+    <property name="src.out.dir" value="${osbuild.ext.dir}/src"/>
+    <property name="cppcache.dir" value="${basedir}/src/cppcache"/>
+    <property name="clicache.dir" value="${basedir}/src/clicache"/>
+    <property name="classes.dir" value="${osbuild.ext.dir}/classes"/>
+
+    <property name="tests.src.dir" value="${basedir}/src/tests"/>
+    <property name="tests.dir" value="${basedir}/tests"/>
+    <property name="tests.bin.dir" value="${tests.src.dir}/bin"/>
+    <property name="tests.lib.dir" value="${tests.dir}/lib"/>
+    <property name="tests.out.dir" value="${osbuild.ext.dir}/tests"/>
+    <property name="tests.objects.dir" value="${tests.out.dir}/objects"/>
+    <property name="tests.objects_g.dir" value="${tests.out.dir}/objects_g"/>
+    <mkdir dir="${tests.out.dir}"/>
+    <mkdir dir="${tests.objects.dir}"/>
+    <mkdir dir="${tests.objects_g.dir}"/>
+
+    <!-- CPP tests source and compilation output directories -->
+   
+    <property name="savedresults.dir" value="${basedir}"/>
+    <property name="quickstart.dir" value="${osbuild.ext.dir}/quickstart"/>
+
+    <property name="tests.cppcache.src.dir" value="${tests.src.dir}/cppcache"/>
+    <property name="tests.cppcache.out.dir" value="${tests.out.dir}/cppcache"/>
+    <property name="tests.autopdx.src.dir" value="${tests.src.dir}/pdxautoserializerclass"/>
+    <property name="tests.autopdx.out.dir" value="${tests.out.dir}/pdxautoserializerclass"/>
+
+    <property name="tests.quickstart.src.dir" value="${basedir}/quickstart"/>
+    <property name="tests.quickstart.out.dir" value="${tests.out.dir}/results/quickstart"/>
+    <property name="tests.perftest.out.dir" value="${tests.out.dir}/results/perfResults"/>
+
+    <property name="tests.results.dir" value="${osbuild.ext.dir}/tests/results"/>
+
+    <property name="hidden.dir" value="${osbuild.ext.dir}/hidden"/>
+    <property name="hiddenlib.dir" value="${hidden.dir}/lib"/>
+    
+          <echo message="hidden.dir: ${osbuild.ext.dir}/hidden " level="error"/>
+          <echo message="hiddenlib.dir: ${hidden.dir}/lib " level="error"/>
+
+    <property name="tests.docExample.src.dir" value="${tests.src.dir}/docExamples"/>
+    <property name="tests.docExample.out.dir" value="${tests.out.dir}/docExamples"/>
+
+    <!--
+      This is the directory to put thirdparty libraries that we integrate 
+      with, but cannot ship. This directory can be added to the PATH 
+      or LD_LIBRARY_PATH for testing
+    -->
+    <property name="hidden.gpl.dir" value="${hidden.dir}/gpl"/>
+    <mkdir dir="${hidden.dir}"/>
+    <mkdir dir="${hiddenlib.dir}"/>
+    <mkdir dir="${hiddenlib.dir}/debug"/>
+    <mkdir dir="${hidden.gpl.dir}/"/>
+    
+    <property name="framework.dir" value="${osbuild.ext.dir}/framework"/>
+    <mkdir dir="${framework.dir}"/>
+    <mkdir dir="${framework.dir}/bin"/>
+    <mkdir dir="${framework.dir}/bin/debug"/>
+    <mkdir dir="${framework.dir}/scripts"/>
+    <mkdir dir="${framework.dir}/xml"/>
+    <mkdir dir="${framework.dir}/lib"/>
+    <mkdir dir="${framework.dir}/lib/debug"/>
+
+    <property name="c.docs.dir" value="${basedir}/docs"/>
+    <property name="glimpse.dir" value="glimpsefiles"/>
+
+    <property name="product.dir" value="${osbuild.ext.dir}/product"/>
+
+    <property name="productlib.dir" value="${product.dir}/lib"/>
+    <condition property="product.library.dir" value="${product.dir}/lib">
+      <os family="unix"/>
+    </condition>
+    <condition property="product.library.dir" value="${product.dir}/bin">
+      <os family="windows"/>
+    </condition>
+
+    <property name="installer.dir" value="${osbuild.ext.dir}/installer"/>
+
+    <property name="docs.dir" value="${osbuild.ext.dir}/javadocs"/>
+    <property name="last.update.file" value="${build.dir}/lastUpdate.txt"/>
+
+    <conditional if="vs.2010" unless="clean-all">
+        <property file="${basedir}/build-artifacts/build.number"/>
+        <available file="${basedir}/build-artifacts/build.number" property="build.num.exists"/>
+        <conditional if="build.num.exists">
+          <echo message="Loading properties from ${basedir}/build-artifacts/build.number:" level="info"/>
+          <concat>
+            <filelist dir="${basedir}/build-artifacts" files="build.number"/>
+          </concat>
+        </conditional>
+    </conditional>
+    
+    <property name="date.pattern" value="MM/dd/yyyy HH:mm:ss z"/>
+    <tstamp>
+       <format pattern="yyyy-MM-dd-hh-mm-ss-SSS" property="sys.build.time"/>
+       <format pattern="${date.pattern}" property="build.time"/>
+    </tstamp>
+    <property name="haltOnFailure" value="true"/>
+
+    <!-- GemFire system configuration properties -->
+    <property name="logLevel" value="config"/>
+    <condition property="parallelTests" value="1">
+      <isset property="cpp.testcase"/>
+    </condition>
+    <property name="parallelTests" value="1"/>
+    <property name="gfeLogLevel" value="config"/>
+    <property name="gfeSecLogLevel" value="config"/>
+    <property name="defaultPort" value="10333"/>
+    <!-- Set gemfire.debug to true to use the debug "_g" native code library -->
+    <property name="gemfire.debug" value="false"/>
+
+    <condition property="cpp.devel" value="1">
+      <equals arg1="${cpp-devel}" arg2="true"/>
+    </condition>
+    <property name="cpp.devel" value="0"/>
+    
+    <property name="skipsandcastle" value="false"/>
+    <property name="keepGeneratedFiles" value="false"/>
+ 
+    <condition property="runsandcastle">
+      <equals arg1="${skipsandcastle}" arg2="false" casesensitive="false"/>
+    </condition>
+    
+    <property name="testIterations" value="1"/>
+
+    <property file="${basedir}/buildfiles/thirdparty_${gf.os}.properties"/>
+    <property file="${basedir}/buildfiles/thirdparty.properties"/>
+    <!-- more 32/64 bit conditional properties -->
+
+    <conditional if="isLinux">
+      <condition property="valgrind.dir" 
+                 value="${perftools.dir}/valgrind/x86_64">
+        <isset property="do64bit"/>
+      </condition>
+      <property name="valgrind.dir" value="${perftools.dir}/valgrind/i386"/>
+    </conditional>
+    <property name="vtool.args" value=" "/>
+
+    <!-- If a "last update" file doesn't exist, then create one -->
+    <available file="${last.update.file}" property="last.update.exists"/>
+
+    <conditional unless="last.update.exists">
+      <echo message="Updating lastUpdate.txt as it doesn't exist..."/>
+        <antcall target="make-last-update"/>  
+      <property name="skipLastUpdate"  value="true"/>
+    </conditional> 
+
+    <conditional if="clean-all">
+        <antcall target="make-last-update"/> 
+      <property name="skipLastUpdate"  value="true"/>
+    </conditional> 
+  </target>
+
+  <target name="update-git" depends="props">
+    <description>Updates the sources to latest revision.</description>
+
+    <property name="git.logfile" value="update-git.log"/>
+    <property name="git.hist.logfile" value=".git-history.log"/>
+    <property name="git.branch" value=".git/.git-branch.log"/>
+    <delete file="${git.logfile}" quiet="true"/>
+
+    <!-- Need finally block for git pull because it may actually
+         perform a lot of updates before failing, and we want to capture
+         those in .git-history.log -->
+    <trycatch>
+      <try>
+        <exec executable="git" resultproperty="gitpullExitStatus" output="${git.logfile}">
+          <arg value="pull"/>
+        </exec>
+      </try>
+      <finally>
+        <exec executable="git" append="true" output="${git.logfile}">
+          <arg value="status"/>
+        </exec>
+      </finally>
+    </trycatch>
+
+    <condition property="gitpullFailed">
+      <equals arg1="${gitpullExitStatus}" arg2="1"/>
+    </condition>
+    <if>
+      <isset property="gitpullFailed"/>
+      <then>
+        <exec executable="cat" >
+          <arg value="${git.logfile}"/>
+        </exec>
+        <fail if="gitpullFailed" message="git pull failed. See ${git.logfile} for details."/>
+      </then>
+    </if>
+
+    <antcall inheritAll="true" target="make-last-update"/>
+
+    <concat append="true" fixlastline="true" destfile="${git.hist.logfile}" >
+==============================
+</concat>  <!-- Leave the two lines above as is so they concat properly -->
+
+    <concat append="true" fixlastline="true" destfile="${git.hist.logfile}">
+      <filelist dir="${basedir}" files="build-artifacts/build.number"/>
+      <filelist dir="${basedir}" files="${git.logfile}"/>
+    </concat>
+  </target>
+
+  <target name="rcs-init">
+    <available file=".git" type="dir" property="git.present"/>
+    <available file=".svn" type="dir" property="svn.present"/>
+  </target>
+
+  <target name="make-last-update" depends="rcs-init" unless="skipLastUpdate">
+    <description>Creates a file that contains the time at which the
+         GemFire checkout was last updated</description>
+
+    <property name="build.dir" value="${basedir}/build-artifacts"/>
+    <mkdir dir="${build.dir}"/>
+
+    <!-- Make Last Update File with SVN workspace -->
+    <if>
+      <isset property="svn.present"/>
+      <then>
+        <delete file="${last.update.file}" quiet="true"/>
+        <echo level="info" message="Querying SVN Workspace Information" />
+        <svnSetting client="cli" dateformatter="MM/dd/yyyy HH:mm:ss z" id="svn.settings"/>
+          <!-- Get svn info of the SVN workspace -->
+          <svn refid="svn.settings">
+            <info target="."/>
+          </svn>
+          <propertyregex property="source.branch"
+            input="${svn.info.url}"
+            regexp="^https\:\/\/svn\.gemstone\.com\/repos\/"
+            replace=""
+            casesensitive="false" />
+        </then>
+        <elseif>
+          <isset property="git.present"/>
+          <then>
+            <property name="git.status" value="${basedir}/.git/.git-status.log"/>
+            <echo level="info" message="Querying GIT Workspace Information..." />
+
+            <exec executable="git" failonerror="false" output="${git.status}">
+              <arg value="log"/>
+              <arg value="--grep=git-svn-id"/>
+              <arg value="-1"/>
+            </exec>
+
+            <exec executable="git" failonerror="false" outputproperty="GIT.source.branch">
+              <arg value="rev-parse"/>
+              <arg value="--abbrev-ref"/>
+              <arg value="HEAD"/>
+            </exec>
+
+            <exec executable="git" failonerror="false" outputproperty="GIT.source.revision">
+              <arg value="rev-parse"/>
+              <arg value="HEAD"/>
+            </exec>
+
+            <exec executable="git" failonerror="false" outputproperty="GIT.source.date">
+              <arg value="show"/>
+              <arg value="-s"/>
+              <arg value="--format=%cD"/>
+              <arg value="${GIT.source.revision}"/>
+            </exec>
+
+            <exec executable="git" failonerror="false" outputproperty="TEMPGIT.build.number">
+              <arg value="rev-list"/>
+              <arg value="origin/${GIT.source.branch}"/>
+              <arg value="--count"/>
+            </exec>
+
+          </then>
+        </elseif>
+        <else>
+          <echo level="info" message="No revision control information found"/>
+        </else>
+    </if>
+
+    <!-- If git version is old then count switch won't work so use date string instead -->
+    <if>
+      <contains string="${TEMPGIT.build.number}" substring="usage" />
+      <then>
+        <tstamp>
+          <format property="GIT.build.number" pattern="MMddyy"/>
+        </tstamp>
+        <echo message="Falling back to date string for build.number due to older git version." level="info"/>
+      </then>
+      <else>
+        <property name="GIT.build.number" value="${TEMPGIT.build.number}"/>
+      </else>
+    </if>
+
+    <!-- Load lastUpdate.txt properties with prefix to avoid setting -->
+    <property file="${last.update.file}" prefix="PROP" prefixValues="true"/> 
+
+    <if>
+      <equals arg1="${GIT.source.revision}" arg2="${PROP.source.revision}" />
+      <then>
+        <echo message="Source revision hasn't changed. Skipping property file update..." />
+      </then>
+    <else>
+      <!-- Create lastUpdate.txt and build.number property files -->
+      <echo message="Updating build-artifacts property files..." level="info"/>
+
+      <property name="git.status" value="${basedir}/.git/.git-status.log"/>
+      <delete file="${git.status}" quiet="true"/>
+      <delete file="${last.update.file}" quiet="true"/>
+
+      <propertyfile comment="Information about a checkout" file="${last.update.file}">
+        <entry key="source.branch" value="${GIT.source.branch}"/>
+        <entry key="source.date" value="${GIT.source.date}"/>
+        <entry key="source.revision" value="${GIT.source.revision}"/>
+      </propertyfile>
+
+      <delete file="${build.dir}/build.number" quiet="true"/>
+      <propertyfile comment="Build Number File" file="${build.dir}/build.number">
+        <entry key="build.number" value="${GIT.build.number}"/>
+      </propertyfile>
+    </else>
+   </if>
+
+   <!-- Load lastUpdate.txt to set properties and print banner -->
+   <property file="${last.update.file}"/> 
+   <property file="${build.dir}/build.number"/>
+   <echo message="" level="info"/>
+   <echo message="=========================================" level="info"/>
+   <echo message="Version: ${gemfire.version} ${user.name} ${build.number}" level="info"/>
+   <echo message="Source-branch: ${source.branch}" level="info"/>
+   <echo message="Source-Date: ${source.date}" level="info"/>
+   <echo message="Source-Revision: ${source.revision}" level="info"/>
+   <echo message="=========================================" level="info"/>
+
+  </target>
+
+  <target name="code-verify">
+    <exec dir="." executable="perl"
+          failonerror="true" failifexecutionfails="true">
+          <arg value="${basedir}/buildfiles/source_verify.pl"/>
+          <arg value="--directory"/>
+          <arg value="${basedir}/src/com/gemstone/gemfire/internal/cppcache"/>
+    </exec>
+    <exec dir="." executable="perl"
+          failonerror="true" failifexecutionfails="true">
+          <arg value="${basedir}/buildfiles/source_verify.pl"/>
+          <arg value="--directory"/>
+          <arg value="${basedir}/src/com/gemstone/gemfire/internal/cppcache/impl"/>
+    </exec>
+    <exec dir="." executable="perl"
+          failonerror="true" failifexecutionfails="true">
+          <arg value="${basedir}/buildfiles/source_verify.pl"/>
+          <arg value="--directory"/>
+          <arg value="${basedir}/src/com/gemstone/gemfire/internal/cppcache/statistics"/>
+    </exec>    
+  </target>
+
+  <target depends="props, src" name="fortifyDotNetScan" if="isWindows">
+    <description>Runs Fortify scan for .NET code on Windows</description>
+
+    <!-- Set properties -->
+    <property name="fortify.project" value="GemFireNC"/>
+    <property name="fortify.project.version" value="ThinClient"/>
+    <property name="fortify.build" value="${fortify.project}_${fortify.project.version}"/>
+    
+    <!-- Clean last results -->
+    <delete file="${fortify.build}.fpr" quiet="true"/>
+    <exec executable="sourceanalyzer" dir="${basedir}">
+      <arg line="-b '${fortify.build}' -clean"/>
+    </exec>
+
+    <!-- Run Fortify Sourceanalyzer -->
+    <antcall target="vcbuild-solution">
+          <param name="vs.buildtool" value="sourceanalyzer"/>
+          <param name="vs.commandline" value="-64 -Xms3G -Xmx3G -b '${fortify.build}' msbuild.exe vs_projects_10/gfclicache/gfclicache.vcxproj /p:Configuration=Release /p:Platform=&quot;${platforms}&quot; /p:OutputDir=${osbuild.ext.dir}"/>
+    </antcall>
+  
+    <!-- Run Fortify Scan -->
+    <exec executable="sourceanalyzer" dir="${basedir}">
+      <arg line="-64 -Xms3G -Xmx3G -b '${fortify.build}' -scan -f ${fortify.build}.fpr"/>
+    </exec>
+  </target>
+  
+  <!-- ==============  Building GemStone Source Code  ================ -->
+
+  <target depends="build-product" name="product"/>
+   
+  <target depends="build-product, compile-all-tests, compile-cpp-docexample" name="build-all"
+     description="Build all components of the product and test suites."/>
+
+  <target depends="clean, report-versions, build-all, run-cpp-tests, run-csharp-tests" name="cruisecontrol-build-and-test"/>
+
+<!--
+  <target depends="clean, report-versions, build-all, run-cpp-tests" name="cruisecontrol-build-and-test"/>
+-->
+
+  <!-- report-versions used only by cruisecontrol-build-and-test target -->
+  <target depends="props" name="report-versions">
+
+    <!-- Make the manifest -->
+    <property file="${build.dir}/build.number"/>
+    <!-- Provide svn information and artifact path in cruisecontrol mail -->
+
+    <property name="ccartifact.file" value="${build.dir}/ccpath.txt" />
+    <touch file="${ccartifact.file}"/>
+    <echo file="${ccartifact.file}" level="info">ccArtifactPath=${basedir}/${cctimestamp}
+    </echo>
+
+    <conditional if="isWindows">
+      <replace file="${ccartifact.file}" token="\" value="/"/>
+    </conditional>
+
+    <replace file="${ccartifact.file}" token="/checkout/" value="/artifacts/"/>
+
+    <conditional if="isWindows">
+      <replace file="${ccartifact.file}" token="${cctimestamp}" value="${cctimestamp} on ${host.name}"/>
+    </conditional>
+    <property file="${build.dir}/ccpath.txt"/>
+
+    <echo message="Running build ${build.number} "/>
+    <echo message=""/>
+    <echo message="========================================================================================="/>
+    <echo message="Run artifacts can be found at: ${ccArtifactPath} "/>
+    <echo message="========================================================================================="/>
+    <echo message=""/>
+
+    <echo level="info" message="Note: the following svn info isnt accurate if you manually used svn to update specific files."/>
+    <concat>
+      <filelist dir="${build.dir}" files="lastUpdate.txt"/>
+    </concat>
+    <echo message=""/>
+    <delete file="${ccartifact.file}"/>
+  </target>
+
+  <target depends="props" name="rcsinfo">
+    <description>
+      Drop build information into rcsinfo file.
+    </description>
+    <exec executable="cat" failonerror="false" append="false" output="${framework.dir}/rcsinfo">
+      <arg value="${last.update.file}"/>
+   </exec>
+  </target>
+
+  <target depends="props" name="fwk_msi">
+    <description>
+      This target builds an msi installer to populate a windows machine with the dlls required for both release and debug builds, this only needs to be run once per machine per compiler version.
+    </description> 
+    <exec dir="${basedir}" executable="bash" failonerror="true">
+      <arg value="release/scripts/makeFwkMSI.sh"/>
+      <env key="VERSION" value="${gemfire.version}"/>
+      <env key="OSBUILDDIR" value="${osbuild.ext.dir}"/>
+      <env key="WIX" value="${wix.dir}"/>
+    </exec>
+    <copy todir="${framework.dir}/scripts" file="${osbuild.ext.dir}/installer/fwk_provision.msi"/>
+  </target>
+
+  <target depends="props"
+          name="pack-tests">
+    <description>Copies the test code into the correct places in the osbuild.dir
+    </description>
+
+    <copy todir="${framework.dir}/xml">
+      <fileset dir="${tests.src.dir}/xml"/>
+    </copy>
+    <copy file="${tests.src.dir}/scripts/runDriver.sh" verbose="true" preservelastmodified="true" tofile="${framework.dir}/scripts/runDriver"/>
+    <chmod file="${framework.dir}/scripts/runDriver" perm="a+x"/>
+     
+    <copy file="${tests.src.dir}/xml/smoketest/ops.spec" verbose="true" preservelastmodified="true" tofile="${framework.dir}/xml/smoketest/ops.spec"/>
+    <chmod file="${framework.dir}/xml/smoketest/ops.spec" perm="a+x"/>
+    
+    <copy file="${tests.src.dir}/scripts/runDriverFunctions.sh" verbose="true" preservelastmodified="true" tofile="${framework.dir}/scripts/runDriverFunctions"/>
+    <updateBuildScript file="${framework.dir}/scripts/runDriverFunctions"/>
+    <chmod file="${framework.dir}/scripts/runDriverFunctions" perm="a+x"/>
+    <copy file="${tests.src.dir}/scripts/genericFunctions.sh" verbose="true" preservelastmodified="true" tofile="${framework.dir}/scripts/genericFunctions"/>
+    <chmod file="${framework.dir}/scripts/genericFunctions" perm="a+x"/>
+    <copy file="${tests.src.dir}/scripts/piper.sh" verbose="true" preservelastmodified="true" tofile="${framework.dir}/scripts/piper"/>
+    <chmod file="${framework.dir}/scripts/piper" perm="a+x"/>
+    <copy file="${tests.src.dir}/scripts/startClient.sh" verbose="true" preservelastmodified="true" tofile="${framework.dir}/scripts/startClient"/>
+    <chmod file="${framework.dir}/scripts/startClient" perm="a+x"/>
+    <copy file="${tests.src.dir}/scripts/stopClient.sh" verbose="true" preservelastmodified="true" tofile="${framework.dir}/scripts/stopClient"/>
+    <chmod file="${framework.dir}/scripts/stopClient" perm="a+x"/>
+    <copy file="${tests.src.dir}/scripts/stopAll.sh" verbose="true" preservelastmodified="true" tofile="${framework.dir}/scripts/stopAll"/>
+    <chmod file="${framework.dir}/scripts/stopAll" perm="a+x"/>
+    <copy file="${tests.src.dir}/scripts/stopProcess.sh" verbose="true" preservelastmodified="true" tofile="${framework.dir}/scripts/stopProcess"/>
+    <chmod file="${framework.dir}/scripts/stopProcess" perm="a+x"/>
+    
+    <copy file="${tests.src.dir}/scripts/runBatch.sh" verbose="true" preservelastmodified="true" tofile="${framework.dir}/scripts/runBatch"/>
+    <chmod file="${framework.dir}/scripts/runBatch" perm="a+x"/>
+    <copy file="${tests.src.dir}/scripts/runBuild.sh" verbose="true" preservelastmodified="true" tofile="${framework.dir}/scripts/runBuild"/>
+    <chmod file="${framework.dir}/scripts/runBuild" perm="a+x"/>
+    
+    <copy file="${tests.src.dir}/scripts/setupJavaServers.sh" verbose="true" preservelastmodified="true" tofile="${framework.dir}/scripts/setupJavaServers"/>
+    <chmod file="${framework.dir}/scripts/setupJavaServers" perm="a+x"/>
+    <copy file="${tests.src.dir}/scripts/startJavaServers.sh" verbose="true" preservelastmodified="true" tofile="${framework.dir}/scripts/startJavaServers"/>
+    <chmod file="${framework.dir}/scripts/startJavaServers" perm="a+x"/>
+    <copy file="${tests.src.dir}/scripts/stopCS.sh" verbose="true" preservelastmodified="true" tofile="${framework.dir}/scripts/stopCS"/>
+    <chmod file="${framework.dir}/scripts/stopCS" perm="a+x"/>
+    <copy file="${tests.src.dir}/scripts/stopJavaServers.sh" verbose="true" preservelastmodified="true" tofile="${framework.dir}/scripts/stopJavaServers"/>
+    <chmod file="${framework.dir}/scripts/stopJavaServers" perm="a+x"/>
+    <copy file="${tests.src.dir}/scripts/killJavaServer.sh" verbose="true" preservelastmodified="true" tofile="${framework.dir}/scripts/killJavaServer"/>
+    <chmod file="${framework.dir}/scripts/killJavaServer" perm="a+x"/>
+    <copy file="${tests.src.dir}/scripts/killJavaServers.sh" verbose="true" preservelastmodified="true" tofile="${framework.dir}/scripts/killJavaServers"/>
+    <chmod file="${framework.dir}/scripts/killJavaServers" perm="a+x"/>
+    <copy file="${tests.src.dir}/scripts/setupJavaClients.sh" verbose="true" preservelastmodified="true" tofile="${framework.dir}/scripts/setupJavaClients"/>
+    <chmod file="${framework.dir}/scripts/setupJavaClients" perm="a+x"/>
+    <copy file="${tests.src.dir}/scripts/startJavaClients.sh" verbose="true" preservelastmodified="true" tofile="${framework.dir}/scripts/startJavaClients"/>
+    <chmod file="${framework.dir}/scripts/startJavaClients" perm="a+x"/>
+    <copy file="${tests.src.dir}/scripts/waitForTask.sh" verbose="true" preservelastmodified="true" tofile="${framework.dir}/scripts/waitForTask"/>
+    <chmod file="${framework.dir}/scripts/waitForTask" perm="a+x"/>
+
+    <copy file="${tests.src.dir}/scripts/runCPPCSDriver.sh" verbose="true" preservelastmodified="true" tofile="${framework.dir}/scripts/runCPPCSDriver"/>
+    <chmod file="${framework.dir}/scripts/runCPPCSDriver" perm="a+x"/>
+
+    <copy file="${tests.src.dir}/scripts/startCSFwk.sh" verbose="true" preservelastmodified="true" tofile="${framework.dir}/scripts/startCSFwk"/>
+    <chmod file="${framework.dir}/scripts/startCSFwk" perm="a+x"/>
+    <copy file="${tests.src.dir}/scripts/stopCSFwk.sh" verbose="true" preservelastmodified="true" tofile="${framework.dir}/scripts/stopCSFwk"/>
+    <chmod file="${framework.dir}/scripts/stopCSFwk" perm="a+x"/>
+    <copy file="${tests.src.dir}/scripts/waitForBBKey.sh" verbose="true" preservelastmodified="true" tofile="${framework.dir}/scripts/waitForBBKey"/>
+    <chmod file="${framework.dir}/scripts/waitForBBKey" perm="a+x"/>
+
+    <copy file="${tests.src.dir}/scripts/gdb.pl" verbose="true" preservelastmodified="true" tofile="${framework.dir}/scripts/gdb.pl"/>
+    <chmod file="${framework.dir}/scripts/gdb.pl" perm="a+x"/>
+    <copy file="${tests.src.dir}/scripts/cdb.pl" verbose="true" preservelastmodified="true" tofile="${framework.dir}/scripts/cdb.pl"/>
+    <chmod file="${framework.dir}/scripts/cdb.pl" perm="a+x"/>
+    <copy file="${basedir}/release/build/grepLogs.pl" verbose="true" preservelastmodified="true" tofile="${framework.dir}/scripts/grepLogs.pl"/>
+    <chmod file="${framework.dir}/scripts/grepLogs.pl" perm="a+x"/>
+    <copy file="${tests.src.dir}/scripts/runPerfTest.sh" verbose="true" preservelastmodified="true" tofile="${framework.dir}/scripts/runPerfTest"/>
+    <chmod file="${framework.dir}/scripts/runPerfTest" perm="a+x"/>
+    <copy file="${tests.src.dir}/scripts/runScalePerf.sh" verbose="true" preservelastmodified="true" tofile="${framework.dir}/scripts/runScalePerf"/>
+    <chmod file="${framework.dir}/scripts/runScalePerf" perm="a+x"/>
+    <mkdir dir="${framework.dir}/lib/openssl"/>
+    <copy todir="${framework.dir}/lib/openssl" >
+      <fileset dir="${openssl.dir}/lib/"/>
+    </copy>
+    <!-- copy additional data files required by tests -->
+    <mkdir dir="${framework.dir}/data"/>
+    <copy todir="${framework.dir}/data" >
+      <fileset dir="${basedir}/src/templates/security" excludes="CMake*.*"/>
+      <fileset dir="${tests.cppcache.src.dir}">
+        <include name="keystore/**"/>
+      </fileset>
+    </copy>
+
+    <conditional unless="isWindows">
+      <copy file="${perl.devel.gdb.dir}/Devel/GDB.pm" verbose="true" preservelastmodified="true" tofile="${framework.dir}/scripts/GDB.pm"/>
+    </conditional>
+
+    <conditional if="isWindows">
+      <copy file="${cdb.dir}/cdb.exe" verbose="true" preservelastmodified="true" tofile="${framework.dir}/bin/cdb.exe"/>
+      <chmod file="${framework.dir}/bin/cdb.exe" perm="a+x"/>
+      <copy file="${cdb.dir}/dbghelp.dll" verbose="true" preservelastmodified="true" tofile="${framework.dir}/bin/dbghelp.dll"/>
+      <chmod file="${framework.dir}/bin/dbghelp.dll" perm="a+x"/>
+      <copy file="${cdb.dir}/dbgeng.dll" verbose="true" preservelastmodified="true" tofile="${framework.dir}/bin/dbgeng.dll"/>
+      <chmod file="${framework.dir}/bin/dbgeng.dll" perm="a+x"/>
+      <!-- copy the C# framework -->
+      <mkdir dir="${framework.dir}/csharp"/>
+      <copy file="${thirdparty.libs.dir}/PsExec.exe" verbose="true" preservelastmodified="true" tofile="${framework.dir}/csharp/bin/PsExec.exe"/>
+      <copy file="${tests.out.dir}/clicache/FwkUI/FwkUI.exe" verbose="true" preservelastmodified="true" tofile="${framework.dir}/bin/FwkUI.exe"/>
+      <copy todir="${framework.dir}/csharp/bin">
+        <fileset dir="${tests.out.dir}/clicache/FwkDriver"/>
+        <fileset dir="${tests.out.dir}/clicache/NewFwkLib">
+          <include name="NewFwkLib.*"/>
+        </fileset>
+        <fileset dir="${tests.out.dir}/clicache/FwkLauncher">
+          <include name="FwkLauncher.*"/>
+        </fileset>
+        <fileset dir="${tests.out.dir}/clicache/UnitTests"/>
+      </copy>
+      <updateBuildScript file="${framework.dir}/csharp/bin/genCSFwkReport.sh"/>
+      <mkdir dir="${framework.dir}/bin/openssl"/>
+      <copy todir="${framework.dir}/bin/openssl" >
+        <fileset dir="${openssl.dir}/bin/"/>
+      </copy>
+      <!-- copy additional data files required by tests -->
+      <mkdir dir="${framework.dir}/data"/>
+      <copy todir="${framework.dir}/data" >
+        <fileset dir="${basedir}/src/templates/security" excludes="CMake*.*"/>
+        <fileset dir="${tests.cppcache.src.dir}">
+          <include name="keystore/**"/>
+        </fileset>
+      </copy>
+    </conditional>
+
+    <description>
+      Retain some env info in a file for runDriver to source.
+    </description>
+    <exec executable="echo" dir="${basedir}" append="false" output="${framework.dir}/scripts/run.env">
+      <arg value="## Some variables set at compile time"/>
+    </exec>
+    <exec executable="echo" dir="${basedir}" append="true" output="${framework.dir}/scripts/run.env">
+      <arg value="export GFE_DIR=NO_GFE_DIR_SPECIFIED"/>
+    </exec>
+    <conditional if="gfe.dir">
+      <exec executable="echo" dir="${basedir}" append="true" output="${framework.dir}/scripts/run.env">
+        <arg value="export GFE_DIR=${gfe.dir}"/>
+      </exec>
+    </conditional>
+
+    <conditional if="isWindows">
+      <condition property="frameworkReleaseBuild">
+         <or>
+           <available file="${tests.out.dir}/objects/fwkbin/Driver.exe"/>
+           <available file="${tests.out.dir}/objects/fwkbin/Client.exe"/>
+           <available file="${tests.out.dir}/objects/fwkbin/FileProcessor.exe"/>
+         </or>
+      </condition>
+      <condition property="frameworkDebugBuild">
+         <or>
+           <available file="${tests.out.dir}/objects_g/fwkbin/Driver.exe"/>
+           <available file="${tests.out.dir}/objects_g/fwkbin/Client.exe"/>
+           <available file="${tests.out.dir}/objects_g/fwkbin/FileProcessor.exe"/>
+         </or>
+      </condition>
+      <conditional if="frameworkReleaseBuild">
+        <copy file="${tests.out.dir}/objects/fwkbin/Driver.exe" verbose="true" preservelastmodified="true" tofile="${framework.dir}/bin/Driver.exe"/>
+        <chmod file="${framework.dir}/bin/Driver.exe" perm="a+x"/>
+        <copy file="${tests.out.dir}/objects/fwkbin/Client.exe" verbose="true" preservelastmodified="true" tofile="${framework.dir}/bin/Client.exe"/>
+        <chmod file="${framework.dir}/bin/Client.exe" perm="a+x"/>
+        <copy file="${tests.out.dir}/objects/fwkbin/FileProcessor.exe" verbose="true" preservelastmodified="true" tofile="${framework.dir}/bin/FileProcessor.exe"/>
+        <chmod file="${framework.dir}/bin/FileProcessor.exe" perm="a+x"/>
+        <copy file="${tests.out.dir}/objects/fwkbin/Validate.exe" verbose="true" preservelastmodified="true" tofile="${framework.dir}/bin/Validate.exe"/>
+        <chmod file="${framework.dir}/bin/Validate.exe" perm="a+x"/>
+        <copy file="${tests.out.dir}/objects/fwkbin/FwkBB.exe" verbose="true" preservelastmodified="true" tofile="${framework.dir}/bin/FwkBB.exe"/>
+        <chmod file="${framework.dir}/bin/FwkBB.exe" perm="a+x"/>
+        <copy file="${tests.out.dir}/objects/fwkbin/TimeStr.exe" verbose="true" preservelastmodified="true" tofile="${framework.dir}/bin/TimeStr.exe"/>
+        <chmod file="${framework.dir}/bin/TimeStr.exe" perm="a+x"/>
+      </conditional>
+
+      <conditional if="frameworkDebugBuild">
+        <copy file="${tests.out.dir}/objects_g/fwkbin/Driver.exe" verbose="true" preservelastmodified="true" tofile="${framework.dir}/bin/debug/Driver.exe"/>
+        <chmod file="${framework.dir}/bin/debug/Driver.exe" perm="a+x"/>
+        <copy file="${tests.out.dir}/objects_g/fwkbin/Client.exe" verbose="true" preservelastmodified="true" tofile="${framework.dir}/bin/debug/Client.exe"/>
+        <chmod file="${framework.dir}/bin/debug/Client.exe" perm="a+x"/>
+        <copy file="${tests.out.dir}/objects_g/fwkbin/FileProcessor.exe" verbose="true" preservelastmodified="true" tofile="${framework.dir}/bin/debug/FileProcessor.exe"/>
+        <chmod file="${framework.dir}/bin/debug/FileProcessor.exe" perm="a+x"/>
+        <copy file="${tests.out.dir}/objects_g/fwkbin/Validate.exe" verbose="true" preservelastmodified="true" tofile="${framework.dir}/bin/debug/Validate.exe"/>
+        <chmod file="${framework.dir}/bin/debug/Validate.exe" perm="a+x"/>
+        <copy file="${tests.out.dir}/objects_g/fwkbin/FwkBB.exe" verbose="true" preservelastmodified="true" tofile="${framework.dir}/bin/debug/FwkBB.exe"/>
+        <chmod file="${framework.dir}/bin/debug/FwkBB.exe" perm="a+x"/>
+        <copy file="${tests.out.dir}/objects_g/fwkbin/TimeStr.exe" verbose="true" preservelastmodified="true" tofile="${framework.dir}/bin/debug/TimeStr.exe"/>
+        <chmod file="${framework.dir}/bin/debug/TimeStr.exe" perm="a+x"/>
+      </conditional>
+    </conditional>
+    <conditional unless="isWindows">
+      <copy file="${tests.out.dir}/objects/fwkbin/Driver" verbose="true" preservelastmodified="true" tofile="${framework.dir}/bin/Driver"/>
+      <chmod file="${framework.dir}/bin/Driver" perm="a+x"/>
+      <copy file="${tests.out.dir}/objects_g/fwkbin/Driver" verbose="true" preservelastmodified="true" tofile="${framework.dir}/bin/debug/Driver"/>
+      <chmod file="${framework.dir}/bin/debug/Driver" perm="a+x"/>
+      <copy file="${tests.out.dir}/objects/fwkbin/Client" verbose="true" preservelastmodified="true" tofile="${framework.dir}/bin/Client"/>
+      <chmod file="${framework.dir}/bin/Client" perm="a+x"/>
+      <copy file="${tests.out.dir}/objects_g/fwkbin/Client" verbose="true" preservelastmodified="true" tofile="${framework.dir}/bin/debug/Client"/>
+      <chmod file="${framework.dir}/bin/debug/Client" perm="a+x"/>
+      <copy file="${tests.out.dir}/objects/fwkbin/FileProcessor" verbose="true" preservelastmodified="true" tofile="${framework.dir}/bin/FileProcessor"/>
+      <chmod file="${framework.dir}/bin/FileProcessor" perm="a+x"/>
+      <copy file="${tests.out.dir}/objects_g/fwkbin/FileProcessor" verbose="true" preservelastmodified="true" tofile="${framework.dir}/bin/debug/FileProcessor"/>
+      <chmod file="${framework.dir}/bin/debug/FileProcessor" perm="a+x"/>
+      <copy file="${tests.out.dir}/objects/fwkbin/Validate" verbose="true" preservelastmodified="true" tofile="${framework.dir}/bin/Validate"/>
+      <chmod file="${framework.dir}/bin/Validate" perm="a+x"/>
+      <copy file="${tests.out.dir}/objects_g/fwkbin/Validate" verbose="true" preservelastmodified="true" tofile="${framework.dir}/bin/debug/Validate"/>
+      <chmod file="${framework.dir}/bin/debug/Validate" perm="a+x"/>
+      <copy file="${tests.out.dir}/objects/fwkbin/FwkBB" verbose="true" preservelastmodified="true" tofile="${framework.dir}/bin/FwkBB"/>
+      <chmod file="${framework.dir}/bin/FwkBB" perm="a+x"/>
+      <copy file="${tests.out.dir}/objects_g/fwkbin/FwkBB" verbose="true" preservelastmodified="true" tofile="${framework.dir}/bin/debug/FwkBB"/>
+      <chmod file="${framework.dir}/bin/debug/FwkBB" perm="a+x"/>
+      <copy file="${tests.out.dir}/objects/fwkbin/TimeStr" verbose="true" preservelastmodified="true" tofile="${framework.dir}/bin/TimeStr"/>
+      <chmod file="${framework.dir}/bin/TimeStr" perm="a+x"/>
+      <copy file="${tests.out.dir}/objects_g/fwkbin/TimeStr" verbose="true" preservelastmodified="true" tofile="${framework.dir}/bin/debug/TimeStr"/>
+      <chmod file="${framework.dir}/bin/debug/TimeStr" perm="a+x"/>
+    </conditional>
+
+  </target>
+
+  <target name="mixed-mode" depends="props, javaobject-library">
+    <property name="mixed.src.dir" value="${tests.src.dir}/mixed/javaclient"/>
+    <property name="mixed.out.dir" value="${tests.out.dir}/mixed"/>
+    <mkdir dir="${mixed.out.dir}"/>
+    <echo message="mixed.out.dir=${mixed.out.dir}" level="info"/>
+    <javac debug="on"
+           target="1.5"
+           destdir="${mixed.out.dir}"
+           includeAntRuntime="true"
+           optimize="off"
+           srcdir="${mixed.src.dir}">
+      <include name="*.java"/>
+      <classpath>
+        <pathelement location="${java.home}/lib/tools.jar"/>
+        <pathelement location="${gfe.dir}/lib/gemfire.jar"/>
+        <pathelement location="${gfe.dir}/lib/gfSecurityImpl.jar"/>
+        <pathelement location="${framework.dir}/lib/javaobject.jar"/>
+      </classpath>
+    </javac>
+    <jar basedir="${mixed.out.dir}" jarfile="${framework.dir}/lib/mixed.jar"/>
+    <copy file="${mixed.src.dir}/bridge_client.xml" preservelastmodified="true" todir="${mixed.out.dir}/javaclient"/>
+    <copy file="${mixed.src.dir}/bridge_server.xml" preservelastmodified="true" todir="${mixed.out.dir}/javaclient"/>
+    <copy file="${mixed.src.dir}/mytest.txt" preservelastmodified="true" todir="${mixed.out.dir}/javaclient"/>
+    <copy file="${mixed.src.dir}/gemfire.properties" preservelastmodified="true" todir="${mixed.out.dir}/javaclient"/>
+    <copy file="${mixed.src.dir}/README" preservelastmodified="true" todir="${mixed.out.dir}/javaclient"/>
+  </target>
+
+  <target name="javaobject-library" depends="props">                                     
+    <property name="javaobject.src.dir" value="${tests.dir}/javaobject"/>
+    <property name="javaobject.out.dir" value="${tests.out.dir}/javaobject"/>
+    <mkdir dir="${javaobject.out.dir}"/>
+    <echo message="javaobject.out.dir=${javaobject.out.dir}" level="info"/>
+    <javac debug="off"
+           target="1.5"
+           destdir="${javaobject.out.dir}"
+           optimize="on"
+           srcdir="${javaobject.src.dir}">
+      <include name="*.java"/>
+      <include name="newapi/*.java"/>
+    <include name="PdxTests/*.java"/>
+      <classpath>
+        <pathelement location="${java.home}/lib/tools.jar"/>
+        <pathelement location="${gfe.dir}/lib/gemfire.jar"/>
+        <pathelement location="${tests.lib.dir}/dom4j-1.6.1.jar"/>
+        <pathelement location="${tests.lib.dir}/vijava5b20110825.jar"/>
+      </classpath>
+    </javac>
+    <jar basedir="${javaobject.out.dir}" jarfile="${framework.dir}/lib/javaobject.jar"/>
+    <copy file="${tests.lib.dir}/dom4j-1.6.1.jar" todir="${framework.dir}/lib"/>
+    <copy file="${tests.lib.dir}/vijava5b20110825.jar" todir="${framework.dir}/lib"/>
+  </target>
+  
+  <target name="testdb-library" depends="props">                                     
+    <property name="testdb.src.dir" value="${tests.src.dir}/testdb"/>
+    <property name="testdb.out.dir" value="${tests.out.dir}/testdb"/>
+    <mkdir dir="${testdb.out.dir}"/>
+    <echo message="testdb.out.dir=${testdb.out.dir}" level="info"/>
+    <javac debug="off"
+           target="1.5"
+           destdir="${testdb.out.dir}"
+           optimize="on"
+           srcdir="${testdb.src.dir}">
+      <include name="*.java"/>
+      <classpath>
+        <pathelement location="${java.home}/lib/tools.jar"/>
+        <pathelement location="${gcm.dir}/where/java/mysql/mysql-connector-java-5.1.8-bin.jar"/>
+        <pathelement location="${gfe.dir}/lib/gemfire.jar"/>
+      </classpath>
+    </javac>
+    <jar basedir="${testdb.out.dir}" jarfile="${framework.dir}/lib/testdb.jar"/>
+  </target>
+
+  <target name="-cppcachemake-impl" >
+    <mkdir dir="${tests.cppcache.out.dir}"/>
+    <echo message="osbuild.dir=${osbuild.ext.dir}" level="info"/>
+
+    <!-- gnumake to compile C++ test programs -->
+    <exec dir="${tests.cppcache.src.dir}" executable="${ant.make}" failonerror="true">
+      <arg value="${ant.make.threads}"/>
+      <arg value="${cppcacheTarget}"/>
+      <arg value="OSNAME=${os.name}"/>
+      <arg value="GFLIB_MODEL=${cPointerModel}"/>
+      <arg value="base=${basedir}"/>
+      <arg value="product=${product.dir}"/>
+      <arg value="OSBUILDDIR=${osbuild.ext.dir}"/>
+      <arg value="ACE_DIR=${ace.dir}"/>
+      <arg value="ACEDIR=${ace.dir}"/>
+      <arg value="ACELINKNAME=${acelinkname}"/>
+      <arg value="XERCESDIR=${xerces.dir}"/>
+      <arg value="CPPDEBUG=${cpp-debug}"/>
+      <arg value="CPPDEVEL=${cpp.devel}"/>
+      <arg value="STLPORT=${stlport.dir}"/>
+      <arg value="STACKTRACE=${stacktrace.dir}"/>
+      <arg value="XML=${xml.dir}"/>
+      <arg value="TESTOBJECTLIB=testobject"/>
+      <arg value="ZZIP=${zzip.dir}"/>
+      <env key="MAKE_MODE" value="unix"/>
+      <env key="FASTDEPEXE" value="${fastdep.exe}"/>
+      <env key="FRAMEWORK" value="${framework.dir}"/>
+      <env key="EXTRA_CLASSPATH" value="${framework.dir}/lib/javaobject.jar:${gfe.dir}/lib/gfSecurityImpl.jar"/>
+    </exec>
+    <copy todir="${tests.cppcache.out.dir}" >
+      <fileset dir="${basedir}/src/templates/security" excludes="CMake*.*"/>
+      <fileset dir="${tests.cppcache.src.dir}">
+        <include name="*.xml"/>
+        <include name="keystore/**"/>
+      </fileset>
+    </copy>
+  </target>
+
+  <!-- make-c-tests expects the arguments makefile-source and makefile-target
+   to be set -->
+  <target name="make-c-tests">
+    <!-- gnumake to create shared library -->
+    <!-- mkdir dir="${tests.classes.dir}/${makefile-source}"/ -->
+    <exec dir="${tests.src.dir}/${makefile-source}" executable="${ant.make}"
+     failonerror="true">
+      <arg value="${makefile-target}"/>
+      <arg value="OSNAME=${os.name}"/>
+      <arg value="GFLIB_MODEL=${cPointerModel}"/>
+      <arg value="base=${basedir}"/>
+      <arg value="product=${product.dir}"/>
+      <arg value="OSBUILDDIR=${osbuild.ext.dir}"/>
+      <arg value="DESTDIR=${tests.objects.dir}/${makefile-source}"/>
+      <arg value="ACE_DIR=${ace.dir}"/>
+      <arg value="SQLITE=${sqlite.dir}"/>
+      <arg value="ANTLR=${antlr.dir}"/>
+      <arg value="CPP_DIR=${cppcache.dir}"/>
+      <arg value="BASEDIR=${basedir}"/>
+      <arg value="ACEDIR=${ace.dir}"/>
+      <arg value="ACELINKNAME=${acelinkname}"/>
+      <arg value="XERCESDIR=${xerces.dir}"/>
+      <arg value="STLPORT=${stlport.dir}"/>
+      <arg value="STACKTRACE=${stacktrace.dir}"/>
+      <arg value="XMLDIR=${xml.dir}"/>
+      <arg value="CPPDEVEL=${cpp.devel}"/>
+      <arg value="OPENSSL=${openssl.dir}"/>
+      <arg value="ZZIP=${zzip.dir}"/>
+      <env key="MAKE_MODE" value="unix"/>
+      <env key="FASTDEPEXE" value="${fastdep.exe}"/>
+    </exec>
+  </target>
+
+  <!-- test-env is for debugging only, echoes all enviroment variables -->
+  <target name="test-env">
+    <exec executable="bash">
+      <arg value="-c"/>
+      <arg value="set"/>
+    </exec>
+  </target>
+  
+  <target depends ="props" name="generate-pdx-auto-files">
+    <description>Generate new C++ files for pdxautoserialization unit tests</description>
+      <conditional if="isWindows">
+      <antcall target="vcbuild-solution">
+        <param name="vs.file" value="${vs.project.dir}\\executables\\pdxautoserializer.${vcp.file.ext}"/>
+        <param name="vs.configuration" value="Release"/>
+      </antcall>
+    </conditional>      
+    <exec executable="${src.out.dir}/executables/pdxautoserializer" failonerror="true">
+      <arg value="--outDir=${basedir}/tests/testobject"/>
+      <arg value="${basedir}/tests/testobject/PdxAutoMegaType.hpp" />
+    </exec>
+    
+    <exec executable="${src.out.dir}/executables/pdxautoserializer" failonerror="true">
+      <arg value="--outDir=${basedir}/tests/testobject"/>
+      <arg value="--className=CharTypes"/>
+      <arg value="--suffix=_UTImpl"/>	  
+      <arg value="${basedir}/tests/testobject/PdxTypeWithAuto.hpp" />
+    </exec>  
+    
+    <exec executable="${src.out.dir}/executables/pdxautoserializer" failonerror="true">
+      <arg value="--outDir=${basedir}/tests/testobject"/>
+      <arg value="--className=PdxType"/>
+      <arg value="--suffix=_UTImpl"/>
+	  <arg value="--classNameStr=PdxType:PdxTests.PdxTestsWithAuto"/>
+      <arg value="${basedir}/tests/testobject/PdxTypeWithAuto.hpp" />
+    </exec>
+    
+    <exec executable="${src.out.dir}/executables/pdxautoserializer" failonerror="true">
+      <arg value="--outDir=${basedir}/tests/testobject"/>
+      <arg value="--className=Address"/>
+      <arg value="--suffix=_UTImpl"/>
+	  <arg value="--classNameStr=Address:PdxTests.Address"/>
+      <arg value="${basedir}/tests/testobject/PdxTypeWithAuto.hpp" />
+    </exec>
+    
+    <exec executable="${src.out.dir}/executables/pdxautoserializer" failonerror="true">
+      <arg value="--outDir=${basedir}/tests/testobject"/>
+      <arg value="--className=Child"/>
+      <arg value="--suffix=_UTImpl"/>
+      <arg value="${basedir}/tests/testobject/PdxTypeWithAuto.hpp" />
+    </exec>
+
+    <exec executable="${src.out.dir}/executables/pdxautoserializer" failonerror="true">
+      <arg value="--outDir=${basedir}/tests/testobject"/>
+      <arg value="--className=PdxTypes1"/>
+      <arg value="--className=PdxTypes2"/>
+      <arg value="--className=PdxTypes3"/>
+      <arg value="--className=PdxTypes4"/>
+      <arg value="--className=PdxTypes5"/>
+      <arg value="--className=PdxTypes6"/>
+      <arg value="--className=PdxTypes7"/>
+      <arg value="--className=PdxTypes8"/>
+      <arg value="--className=PdxTypes9"/>
+      <arg value="--className=PdxTypes10"/>
+      <arg value="--className=NestedPdx"/>
+      <arg value="--suffix=_UTImpl"/>
+      <arg value="${basedir}/tests/testobject/VariousPdxTypesWithAuto.hpp" />
+    </exec>
+
+    <exec executable="${src.out.dir}/executables/pdxautoserializer" failonerror="true">
+      <arg value="--outDir=${basedir}/tests/testobject"/>
+      <arg value="--className=PdxType1V1"/>
+      <arg value="--className=PdxType2V1"/>
+      <arg value="--className=PdxType3V1"/>
+      <arg value="--className=PdxTypesV1R1"/>
+      <arg value="--className=PdxTypesV1R2"/>
+      <arg value="--className=PdxTypesIgnoreUnreadFieldsV1"/>
+      <arg value="--className=TestEqualsV1"/>     
+      <arg value="--className=PdxVersionedV1"/>
+      
+      <arg value="--classNameStr=PdxType1V1:PdxTestsAuto.PdxType1V1"/>
+      <arg value="--classNameStr=PdxType2V1:PdxTestsAuto.PdxType2V1"/>
+      <arg value="--classNameStr=PdxType3V1:PdxTestsAuto.PdxType3V1"/>
+      <arg value="--classNameStr=PdxTypesV1R1:PdxTestsAuto.PdxTypesV1R1"/>
+      <arg value="--classNameStr=PdxTypesV1R2:PdxTestsAuto.PdxTypesV1R2"/>
+      <arg value="--classNameStr=PdxTypesIgnoreUnreadFieldsV1:PdxTestsAuto.PdxTypesIgnoreUnreadFieldsV1"/>
+      <arg value="--classNameStr=TestEqualsV1:PdxTestsAuto.TestEqualsV1"/>
+      <arg value="--classNameStr=PdxVersionedV1:PdxTestsAuto.PdxVersionedV1"/>
+      
+      <arg value="--suffix=_UTImpl"/>
+      <arg value="${basedir}/tests/testobject/PdxClassV1WithAuto.hpp" />
+    </exec>
+
+    <exec executable="${src.out.dir}/executables/pdxautoserializer" failonerror="true">
+      <arg value="--outDir=${basedir}/tests/testobject"/>
+      <arg value="--className=PdxTypes1V2"/>
+      <arg value="--className=PdxTypes2V2"/>
+      <arg value="--className=PdxTypes3V2"/>
+      <arg value="--className=PdxTypesR1V2"/>
+      <arg value="--className=PdxTypesR2V2"/>
+      <arg value="--className=PdxTypesIgnoreUnreadFieldsV2"/>
+      <arg value="--className=PdxVersionedV2"/>
+      
+      <arg value="--classNameStr=PdxTypes1V2:PdxTestsAuto.PdxType1V1"/>
+      <arg value="--classNameStr=PdxTypes2V2:PdxTestsAuto.PdxType2V1"/>
+      <arg value="--classNameStr=PdxTypes3V2:PdxTestsAuto.PdxType3V1"/>
+      <arg value="--classNameStr=PdxTypesR1V2:PdxTestsAuto.PdxTypesV1R1"/>
+      <arg value="--classNameStr=PdxTypesR2V2:PdxTestsAuto.PdxTypesV1R2"/>
+      <arg value="--classNameStr=PdxTypesIgnoreUnreadFieldsV2:PdxTestsAuto.PdxTypesIgnoreUnreadFieldsV1"/>
+      <arg value="--classNameStr=TestEqualsV1:PdxTestsAuto.TestEqualsV1"/>
+      <arg value="--classNameStr=PdxVersionedV2:PdxTestsAuto.PdxVersionedV1"/>
+      
+      <arg value="--suffix=_UTImpl"/>
+      <arg value="${basedir}/tests/testobject/PdxClassV2WithAuto.hpp" />
+    </exec>
+    
+  </target>
+
+  <target depends="props, -cppcachemake-impl" name="compile-unit-tests"
+    description="Compile all the unit tests"/>
+
+  <target depends="props, compile-unit-tests" name="compile-cpp-tests"/>
+  <target depends="props, compile-doc-tests" name="compile-cpp-docexample"/>
+
+  <target depends="props, native-client, pack-core" name="src">
+    <description>Builds all of the GemFire product source code</description>
+  </target>
+
+  <target name="cppref-doxygen" depends="props">
+    <description>Uses Doxygen to create HTML document for the C++ Cache reference</description>
+
+    <mkdir dir="${product.dir}/docs"/>
+    <echo message="building Doxygen documentation for C++ Cache reference" level="info"/>
+
+    <copy file="${c.docs.dir}/common-Doxyfile"
+          tofile="${docs.dir}/cpp-reference-Doxyfile" overwrite="true"/>
+    <copy todir="${product.dir}/docs" overwrite="true">
+       <fileset dir="${basedir}/release/images">
+         <include name="gemFireCPPLogo.png"/>
+         <include name="PIVOTAL_GemFire_139x64.png"/>
+         <include name="gemFireDotNETLogo.png"/>
+       </fileset>
+    </copy>
+    <echo file="${docs.dir}/cpp-reference-Doxyfile" append="true" level="info">
+ALPHABETICAL_INDEX     = YES
+ENABLED_SECTIONS       = nativeclient 
+EXCLUDE_PATTERNS       = */impl/* AtomicBits.hpp AtomicInc.hpp AtomicOpT.hpp BridgeLoader.hpp CacheableToken.hpp Debug.hpp ExpirationAttributes.hpp gfcpp_globals.hpp Lock.hpp SpinLock.hpp Task.hpp Timecode.hpp 
+EXTRACT_PRIVATE        = NO
+EXTRACT_STATIC         = NO
+FILE_PATTERNS          = *.h *.hpp statistics/*.hpp
+GENERATE_TODOLIST      = NO
+GENERATE_TREEVIEW      = YES
+HIDE_UNDOC_CLASSES     = YES
+HIDE_UNDOC_MEMBERS     = YES
+HTML_FOOTER            = ${c.docs.dir}/cpp-footer.html
+IMAGE_PATH             = ${product.dir}/docs
+INPUT                  = ${product.dir}/include/gfcpp ${product.dir}/include/gfcpp/statistics
+JAVADOC_AUTOBRIEF      = YES
+MACRO_EXPANSION        = YES
+OUTPUT_DIRECTORY       = ${docs.dir}/cppreference
+PROJECT_NAME           = "${gemfire.productname} Cache Reference"
+PROJECT_NUMBER         = "${gemfire.version}"
+PREDEFINED             = DOXYGEN
+SHOW_USED_FILES        = NO
+SKIP_FUNCTION_MACROS   = NO
+SORT_BRIEF_DOCS        = YES
+SORT_MEMBER_DOCS       = YES
+WARNINGS               = NO
+WARN_IF_DOC_ERROR      = NO
+WARN_IF_UNDOCUMENTED   = NO
+WARN_LOGFILE           = cppDoxygenWarnings.log
+SOURCE_BROWSER         = NO
+SHOW_INCLUDE_FILES     = NO
+SHOW_USED_FILES        = NO
+SHOW_DIRECTORIES       = NO
+INTERNAL_DOCS          = NO
+INLINE_INHERITED_MEMB  = YES
+INHERIT_DOCS           = YES
+
+</echo>    
+
+    <!-- I couldn't get Doxygen to compile on Solaris with the Sun
+         compiler, so I had to use GCC 3.2 which isn't in the standard
+         LD_LIBRARY_PATH -->
+    <condition property="ld_library_path"
+               value="/export/localnew/sparc.Solaris/gcc32/lib:${doxygen}/lib:${ld_library_path}">
+      <os name="SunOs"/>
+    </condition>
+    <property name="ld_library_path" value="${myenv.LD_LIBRARY_PATH}"/>
+
+    <exec dir="" executable="${doxygen}/bin/doxygen" failOnError="true">
+      <env key="LD_LIBRARY_PATH" value="${ld_library_path}"/>
+      <arg value="${docs.dir}/cpp-reference-Doxyfile"/>
+    </exec>
+    <exec executable="grep" resultproperty="grepExitStatus">
+      <arg value="Warning"/>
+      <arg value="cppDoxygenWarnings.log"/>
+    </exec>
+    <condition property="grepFailed">
+      <equals arg1="${grepExitStatus}" arg2="0"/>
+    </condition>
+    <exec executable="rm" resultproperty="rmStatus">
+      <arg value="cppDoxygenWarnings.log"/>
+    </exec>
+    <fail if="grepFailed" message="cppref-doxygen warnings found, see build${gf.os}.log"/>
+
+  </target>
+
+  <target name="cliref-doxygen" depends="props" if="isWindows">
+    <description>Uses Doxygen to create HTML document for the C++ Cache .NET reference</description>
+
+    <mkdir dir="${docs.dir}/clireference"/>
+    <echo message="building Doxygen documentation for C++ Cache .NET reference" level="info"/>
+
+    <copy file="${c.docs.dir}/common-Doxyfile"
+          tofile="${docs.dir}/cli-reference-Doxyfile" overwrite="true"/>
+    <echo file="${docs.dir}/cli-reference-Doxyfile" append="true" level="info">
+ALPHABETICAL_INDEX     = YES
+ENABLED_SECTIONS       = nativeclient
+EXCLUDE_PATTERNS       = */clicache/impl/*
+EXTRACT_PRIVATE        = NO
+EXTRACT_STATIC         = YES
+FILE_PATTERNS          = *.h *.hpp
+GENERATE_TODOLIST      = NO
+GENERATE_TREEVIEW      = YES
+HIDE_UNDOC_CLASSES     = YES
+HIDE_UNDOC_MEMBERS     = YES
+HTML_FOOTER            = ${c.docs.dir}/cli-footer.html
+IMAGE_PATH             = ${product.dir}/docs
+INPUT                  = ${clicache.dir}
+JAVADOC_AUTOBRIEF      = YES
+MACRO_EXPANSION        = YES
+OUTPUT_DIRECTORY       = ${docs.dir}/clireference
+PROJECT_NAME           = "${gemfire.productname} Cache .NET Reference"
+PROJECT_NUMBER         = "${gemfire.version}"
+PREDEFINED             = "internal=private" \
+                         "STATICCLASS=" \
+                         "GFINDEXER(x)=Item"
+CPP_CLI_SUPPORT        = YES
+SKIP_FUNCTION_MACROS   = NO
+SORT_BRIEF_DOCS        = YES
+SORT_MEMBER_DOCS       = YES
+WARNINGS               = YES
+WARN_IF_DOC_ERROR      = NO
+WARN_IF_UNDOCUMENTED   = YES
+WARN_LOGFILE           = cliDoxygenWarnings.log
+SOURCE_BROWSER         = NO
+VERBATIM_HEADERS       = NO
+SHOW_INCLUDE_FILES     = NO
+SHOW_USED_FILES        = NO
+SHOW_DIRECTORIES       = NO
+INTERNAL_DOCS          = NO
+INLINE_INHERITED_MEMB  = YES
+INHERIT_DOCS           = YES
+</echo>    
+
+    <exec dir="" executable="${doxygen}/bin/doxygen" failOnError="true">
+      <env key="LD_LIBRARY_PATH" value="${ld_library_path}"/>
+      <arg value="${docs.dir}/cli-reference-Doxyfile"/>
+    </exec>
+    <exec executable="grep" resultproperty="grepExitStatus">
+      <arg value="Warning"/>
+      <arg value="cliDoxygenWarnings.log"/>
+    </exec>
+    <condition property="grepFailed">
+      <equals arg1="${grepExitStatus}" arg2="0"/>
+    </condition>
+    <exec executable="rm" resultproperty="rmStatus">
+      <arg value="cliDoxygenWarnings.log"/>
+    </exec>
+    <fail if="grepFailed" message="cliref-doxygen warnings found, see build${gf.os}.log"/>
+
+  </target>
+
+  <target name="cliref-sandcastle" depends="props" if="isWindows">
+    <conditional if="runsandcastle">
+      <description>Uses Sandcastle (and sandcastle help file builder) to create HTML document for the C++ Cache .NET reference</description>
+      <delete dir="${docs.dir}/clireference-sandcastle"/>
+      <mkdir dir="${docs.dir}/clireference-sandcastle"/>
+      <echo message="building Sandcastle documentation for C++ Cache .NET reference" level="info"/>  
+      <msbuild buildfile="${scripts.dir}/gfclicache.shfbproj">
+        <property name="HIDDENLIBDIR" value="${product.dir}\bin"/>
+        <property name="SANDCASTLE" value="${sandcastle.dir}"/>
+        <property name="HTMLWORKSHOP" value="${htmlworkshop.dir}"/>
+        <property name="DOTNETDOCSDIR" value="${docs.dir}/clireference-sandcastle"/>
+        <property name="SHFBROOT" value="${sandcastle.builder}"/>
+        <property name="PRODVERSION" value="${gemfire.version}"/>
+      </msbuild>
+    </conditional>
+  </target>
+
+  <target depends="props" name="clean-gfcppcache-library">
+    <delete dir="${src.out.dir}/cpp_objects"/>
+    <delete dir="${src.out.dir}/cpp_objects_g"/>
+    <delete>
+      <fileset dir="${src.out.dir}" includes="*_depend"/>
+    </delete>
+  </target>
+  <target depends="props" name="clean-cpp-tests">
+    <delete dir="${tests.cppcache.out.dir}"/>
+  </target>
+  
+  <target depends="clean-gfcppcache-library" name="clean-shared-libraries"/>
+  
+  <target depends="native-client, pack-core" name="rebuild-shared-library">
+    <description>Rebuilds native library and packs it into product tree</description>
+  </target>
+
+  <target depends="make-last-update" name="build-test-library">
+  <echo message="Building framework" level="info"/>
+
+    <exec dir="${tests.src.dir}" executable="${ant.make}" failonerror="true">
+      <arg value="${ant.make.threads}"/>
+      <arg value="${library-target}"/>
+      <arg value="OSNAME=${os.name}"/>
+      <arg value="GFLIB_MODEL=${cPointerModel}"/>
+      <arg value="GEMFIRE_SOURCE_REVISION=${source.revision}"/>
+      <arg value="GEMFIRE_SOURCE_REPOSITORY=${source.branch}"/>
+      <arg value="BASEDIR=${basedir}"/>
+      <arg value="OSBUILDDIR=${osbuild.ext.dir}"/>
+      <arg value="CPP_DIR=${cppcache.dir}"/>
+      <arg value="ACEDIR=${ace.dir}"/>
+      <arg value="ACELINKNAME=${acelinkname}"/>
+      <arg value="XERCESDIR=${xerces.dir}"/>
+      <arg value="STLPORT=${stlport.dir}"/>
+      <arg value="STACKTRACE=${stacktrace.dir}"/>
+      <arg value="XMLDIR=${xml.dir}"/>
+      <arg value="CPPDEVEL=${cpp.devel}"/>
+      <arg value="ZZIP=${zzip.dir}"/>
+      <env key="MAKE_MODE" value="unix"/>
+      <arg value="OPENSSL=${openssl.dir}"/>
+      <env key="FASTDEPEXE" value="${fastdep.exe}"/>
+    </exec>
+
+    <delete>
+        <fileset dir="${basedir}/tests/testobject" includes="PdxAuto*Serializable.cpp"/>
+        <fileset dir="${basedir}/tests/testobject" includes="*_UTImpl*.cpp"/>
+    </delete>
+
+  </target>
+
+<!-- ==========================  Clean  =========================== -->
+
+  <!-- Removes osbuild.dir which now contains all artifacts of building
+       Excludes save past performance results in saved-results dir -->
+  <target name="set-clean-env">
+    <property name="clean-all" value="true" />
+  </target>
+  <target depends="set-clean-env, -props" name="clean" 
+    description="clean all build artifacts.">
+   
+    <echo message="Cleaning osbuild.dir excludes=saved-results" level="info"/>
+
+    <!-- Remove osbuild.dir now with exclude -->
+    <delete includeEmptyDirs="true">
+      <fileset dir="${osbuild.ext.dir}" defaultexcludes="false" excludes="**/saved-results/**"/>
+    </delete>
+  </target>
+
+  <!-- Removes all byproducts of building the tests -->
+  <target depends="props" name="clean-framework">
+    <delete dir="${framework.dir}"/>
+    <delete dir="${tests.objects.dir}"/>
+    <delete dir="${tests.objects_g.dir}"/>
+  </target>
+
+  <!-- Alias because Tim is a lousy typist -->
+  <target depends="clean-framework" name="clean-fwk"/>
+
+<!-- =======================  Glimpse  ======================== -->
+
+  <!-- Builds a glimpse database for the source code -->
+  <target depends="props" name="glimpse">
+    <delete dir="${glimpse.dir}" quiet="true"/>
+    <mkdir dir="${glimpse.dir}"/>
+
+    <!-- What kinds of files do we not include in the glimpse DB -->
+    <echo file="${glimpse.dir}/.glimpse_exclude" level="info">
+/CVS/
+/glimpsefiles/
+/build-artifacts/
+/results/
+/objects/
+/objects_g/
+/defaultSystem/
+/lib/
+/classes/
+/docs/
+~$
+/.#
+/MANIFEST.MF
+.cvsignore$
+.class$
+.exe$
+.gif$
+.gz$
+.lib$
+.log$
+.log10$
+.log50$
+.o$
+.s$
+.so$
+.zip$
+.gfs$
+.pdf$
+.checkin.data$
+.checkin.data.bak$
+    </echo>
+
+    <exec executable="glimpseindex">
+      <!-- use a bigger hash table while building the index -->
+      <arg line="-B"/>
+
+      <!-- use 32 Mb of memory for temporary tables -->
+      <arg line="-M 32"/>
+
+      <!-- build a larger index, for faster searches -->
+      <arg line="-b"/>
+
+      <!-- update existing index -->
+      <!-- <arg line="-f"/> -->
+
+      <!-- index numerals as well as words -->
+      <arg line="-n"/>
+
+      <!-- allocate more space for tables? -->
+      <arg line="-o"/>
+
+      <!-- order files reverse-sorted by date -->
+      <arg line="-t"/>
+
+      <!-- Put the index in ${glimpse.dir} -->
+      <arg line="-H ${glimpse.dir}"/>
+
+      <!-- Where to start looking for files to index -->
+      <arg line="${basedir}/src ${basedir}/tests ${basedir}/bin ${basedir}/docs ${basedir}/makefiles ${basedir}/release"/>
+
+    </exec>
+  </target>
+
+<!-- =====================  Run Tests  ========================= -->
+<!--  do not execute the *tests_impl targets directly, they do not
+      check for failure status -->
+
+  <target depends="props, run-cpp-tests, run-csharp-tests" name="run-all-unit-tests">
+    <antcall target="run-cpp-tests">
+      <param name="tst_res.arg" value="${tests.results.dir}"/>
+      <param name="ld.librarypath.arg" value="${product.library.dir}${path.separator}${hiddenlib.dir}"/>
+    </antcall>
+  </target>
+
+  <target depends="check-public-headers, run-unicast-tests" name="run-cpp-tests"/>
+  <target depends="props, test_props" name="run-unicast-tests" description="Run the unit tests in unicast/TCP mode">
+      <antcall target="run-cpp-tests-impl">
+        <param name="test.type" value="unicast"/>
+      </antcall>
+      <!--
+      <antcall target="-fail-if-any-cpp-test-failures">
+        <param name="test.type" value="unicast"/>
+        <param name="test.method" value="unit"/>
+      </antcall>
+      -->
+  </target>
+
+  <target name="test_props">
+     <property name="cpptest.exedir" value="${tests.cppcache.out.dir}"/>
+     <property name="cppdoctest.exedir" value="${tests.docExample.out.dir}"/>
+     <property name="tst_res" value="${tests.results.dir}"/>
+     <property name="ld.library.dir" value="${product.library.dir}${path.separator}${hiddenlib.dir}"/>
+  </target>
+
+  <target depends="compile-cpp-tests" name="compile-all-tests"/>
+
+  <!-- begin targets for interactive execution of specific parts of the tests -->
+  <target depends="run-cpp-tests" name="run-unit-tests" description="Alias for run-cpp-tests"/>
+  
+  <!-- end targets for interactive execution of specific parts of the tests -->
+
+  <target name="-cpp-unit-tests-body">
+      <property name="errorsDir" value="${tst_res}/cpp/${test.type}/failures${iterations.count}"/>
+      <delete quiet="true">
+          <fileset dir="${tst_res}/cpp/${test.type}" excludes="cppTestFailedIterations, transport.config" includes="*"/>
+      </delete>
+      <mkdir dir="${errorsDir}"/>
+
+      <echo message="Running tests..." level="info"/>
+
+      <ant antfile="${tests.cppcache.src.dir}/${test.type}.xml" dir="${tests.cppcache.src.dir}" target="${test.type}-tests"/>
+<!--
+      <antcall target="-check-${test.type}-test-results"/>
+      -->
+
+  </target>
+
+  <target depends="props" name="run-cpp-tests-impl"
+    description="Runs the C++ tests.">
+
+
+    <mkdir dir="${tst_res}/cpp"/>
+    <delete dir="${tst_res}/cpp/${test.type}"/>
+    <mkdir dir="${tst_res}/cpp/${test.type}"/>
+    <mkdir dir="${tst_res}/cpp/${test.type}/native-client-only"/>
+    
+    <antcall target="-init-cpp-test-results"/>
+
+    <iterations announce="true" totalIterations="${testIterations}">
+      <antcall target="-cpp-unit-tests-body"/>
+    </iterations>
+  </target>
+
+  <target name="-init-cpp-test-results">
+    <delete file="${failedIterations}" quiet="true"/>
+    <propertyfile comment="Number of C++ Unit Test Iterations that Failed" file="${tst_res}/cpp/cppTestFailedIterations">
+      <entry key="failedIterationCount" type="int" value="0"/>
+    </propertyfile>
+  </target>
+
+  <target name="-check-unicast-test-results">
+    <antcall target="-check-cpp-test-results">
+      <param name="test.type" value="unicast"/>
+      <param name="test.method" value="unit"/>
+    </antcall>
+  </target>
+
+  <target name="-check-example-test-results">
+    <antcall target="-check-cpp-test-results">
+      <param name="test.type" value="example"/>
+      <param name="test.method" value="doc example"/>
+    </antcall>
+  </target>
+
+  <target name="-check-cpp-test-results">
+    <property file="${tst_res}/cpp/${test.type}/cppTestFailures"/>
+    <condition property="cppTestsFailed">
+        <not>
+           <equals arg1="${failureCount}" arg2="0"/>
+        </not>
+    </condition>
+    <conditional if="cppTestsFailed">
+        <echo level="info" message="FAILED: The following ${test.type} tests failed: ${failedTests} "/>
+        <propertyfile comment="Number of C++ ${test.method} Test Iterations that Failed" file="${tst_res}/cpp/cppTestFailedIterations">
+          <entry key="failedIterationCount" operation="+" type="int" value="1"/>
+        </propertyfile>
+    </conditional>
+    <conditional unless="cppTestsFailed">
+        <echo level="info" message="Info: all ${test.type} tests ran successfully."/>
+        <delete dir="${errorsDir}" quiet="true"/>
+    </conditional>
+  </target>
+
+  <target name="-fail-if-any-cpp-test-failures">
+    <property file="${tst_res}/cpp/cppTestFailedIterations"/>
+    <condition property="cppTestsFailed">
+        <not>
+           <equals arg1="${failedIterationCount}" arg2="0"/>
+        </not>
+    </condition>
+    <conditional if="cppTestsFailed">
+      <condition property="haltNow">
+         <istrue value="${haltOnFailure}"/>
+      </condition>
+      <conditional if="haltNow">
+         <fail message="FAILED: One or more C++ ${test.method} tests failed"/>
+      </conditional>
+      <conditional unless="haltNow">
+         <echo message="FAILED: One or more C++ ${test.method} tests failed" level="info"/>
+      </conditional>
+    </conditional>
+  </target>
+
+ <!--Running cpp perf tests-->
+ <target depends="props, make-last-update" name="run-cpp-perf-tests">
+   <condition property="JAVA_HOME" value="${gfe.jre}/bin/java">
+     <os family="windows"/>
+   </condition>
+   <condition property="JAVA_HOME" value="${gfe.jre}/bin/java">
+     <not><os family="windows"/></not>
+   </condition>
+   <condition property="HOST1" value="${host1}">
+     <isset property="host1"/>
+   </condition>
+   <condition property="HOST2" value="${host2}">
+     <isset property="host2"/>
+   </condition>
+   <condition property="OkToRunPerf">
+     <and>
+       <isset property="host1"/>
+       <isset property="host2"/>
+     </and>
+   </condition>
+   <property name="SAVEDRESULTDIR" value="${savedresults.dir}/${build.number}/perf"/>
+   <mkdir dir="${SAVEDRESULTDIR}"/>
+   <echo message="Saved result dir is ${SAVEDRESULTDIR}"/>
+   <conditional unless="OkToRunPerf">
+     <echo message="No hosts specified to run the perf tests ,hence skipping run-perf-tests target"/>
+     <echo message="Syntax : -Dhost1=abc -Dhost2=xyz"/>
+   </conditional>
+   <conditional if="isWindows">
+     <echo message="The OS is windows"/>
+     <property name="resultDir" value="${tests.perftest.out.dir}"/>
+     <mkdir dir="${resultDir}"/> 
+   </conditional>
+   <conditional unless="isWindows">
+     <echo message="OS is Linux"/>
+     <property name="resultDir" value="${SAVEDRESULTDIR}"/>
+   </conditional>
+   <conditional if="OkToRunPerf">
+     <property name="OSBUILDDIR" value="${osbuild.ext.dir}"/>
+     <property name="GEMFIRE" value="${gfe.dir}"/>
+     <echo message="Detailed results can be found at ${resultDir}"/>
+     <exec dir="${resultDir}"
+         executable="bash"
+         failonerror="false" resultproperty="ExitCode">
+       <arg file="${osbuild.ext.dir}/framework/scripts/runPerfTest"/> 
+       <arg value="${OSBUILDDIR}"/>
+       <arg value="${JAVA_HOME}"/>
+       <arg value="${GEMFIRE}"/>
+       <arg value="${resultDir}"/>
+       <arg value="${HOST1}"/>
+       <arg value="${HOST2}"/>
+     </exec>
+     <conditional if="isWindows">
+       <echo message="Copying results to saved directory ..."/>
+       <copy todir="${SAVEDRESULTDIR}" failonerror="false" preservelastmodified="true">
+         <fileset dir="${resultDir}">
+           <include name="summary.prop"/>
+           <include name="gfcpp.env"/>
+           <include name="perf*/*"/>
+         </fileset>
+       </copy>
+     </conditional>
+     <condition property="TestFailed">
+       <not>
+         <equals arg1="${ExitCode}" arg2="0"/>
+       </not>
+     </condition>
+   </conditional>
+   <fail message="Output can be found at ${resultDir}" if="TestFailed"/>
+ </target>
+
+ <!--Running Csharp perf tests -->
+
+ <target name="run-csharp-perf-tests-new">
+   <antcall target="run-csharpperf-tests">
+     <param name="perf.bt" value="genericPerf.list"/>
+   </antcall>
+ </target>
+
+ <target name="run-csharp-perf-tests">
+   <antcall target="run-csharpperf-tests">
+     <param name="perf.bt" value="perf.list"/>
+   </antcall>
+ </target>
+
+ <target name="run-csharpperf-tests" depends="props, make-last-update">
+   <!--condition property="perf.list" value="${list}">
+     <isset property="list"/>
+   </condition-->
+   <condition property="HOST1" value="${host1}">
+     <isset property="host1"/>
+   </condition>
+   <condition property="HOST2" value="${host2}">
+     <isset property="host2"/>
+   </condition>
+   <condition property="OkToRunPerf">
+     <and>
+       <isset property="host1"/>
+       <isset property="host2"/>
+     </and>
+   </condition>
+   <conditional unless="OkToRunPerf">
+     <echo message="No hosts specified to run the perf tests ,hence skipping run-perf-tests target"/>
+     <echo message="Syntax : -Dhost1=abc -Dhost2=xyz"/>
+   </conditional>
+   <conditional if="OkToRunPerf">
+     <property name="SAVERESULTS" value="${savedresults.dir}/${build.number}/perf"/>
+     <mkdir dir="${SAVERESULTS}"/>
+     <copy file="${osbuild.ext.dir}/framework/xml/${perf.bt}" preservelastmodified="true" todir="${SAVERESULTS}"/>
+     <exec executable="echo" dir="${basedir}" append="true" output="${framework.dir}/csharp/bin/run.env">
+       <arg value="CLASSPATH=${gfe.dir}/lib/antlr.jar;${gfe.dir}/lib/gfSecurityImpl.jar;${framework.dir}/lib/javaobject.jar"/>
+     </exec>
+     <exec executable="echo" dir="${basedir}" append="true" output="${framework.dir}/csharp/bin/run.env">
+       <arg value="FWK_LOGDIR.WIN=${SAVERESULTS}"/>
+     </exec>
+     <exec executable="echo" dir="${basedir}" append="true" output="${framework.dir}/csharp/bin/run.env">
+       <arg value="GF_JAVA.WIN=${gfe.jre}/bin/java"/>
+     </exec>
+     <echo message="Detailed results can be found at ${SAVERESULTS}"/>
+     <echo message="the perf list = ${perf.bt}"/>
+     <exec dir="${SAVERESULTS}"
+       executable="bash"
+       failonerror="false" resultproperty="ExitCode">
+       <arg file="${osbuild.ext.dir}/framework/csharp/bin/runCSDriver.sh"/>
+       <arg value="--auto-ssh"/>
+       <arg value="--list=${perf.bt}"/>
+       <arg value="CS1:${HOST1}"/>
+       <arg value="CS2:${HOST2}"/>
+       <env key="OSBUILDDIR" file="${osbuild.ext.dir}"/>
+       <env key="GFCPP" file="${product.dir}"/>
+       <env key="GFE_DIR" file="${gfe.dir}"/>
+       <env key="PERFTEST" value="true"/>
+       <env key="COPYON" value="true"/> 
+     </exec>
+   </conditional>
+  <fail message="Output can be found at ${SAVERESULTS}" if="TestFailed"/>
+</target>
+
+ <!--Running C++ QuickStart examples for unix/windows -->
+ 
+  <target name="run-cpp-quickstart" depends="props">
+    <property name="test.type" value="quickstart"/>
+    <condition property="scriptsfx" value="bat">
+      <os family="windows"/>
+    </condition>
+    <condition property="scriptsfx" value="sh">
+      <not><os family="windows"/></not>
+    </condition>
+    <mkdir dir="${tests.quickstart.out.dir}"/>
+    <delete dir="${tests.quickstart.out.dir}/cpp"/>
+    <delete>
+      <fileset dir="${product.dir}/SampleCode/quickstart">
+        <include name="gfecs*/*"/>
+      </fileset>
+    </delete>
+    <mkdir dir="${tests.quickstart.dir}/cpp"/>
+    <mkdir dir="${tests.quickstart.src.dir}"/>
+    <echo message="Running tests..." level="info"/>
+    <ant antfile="${tests.quickstart.src.dir}/${test.type}.xml" dir="${tests.quickstart.src.dir}" target="${test.type}-tests">
+      <property name="runscript.file" value="${product.dir}/SampleCode/quickstart/runcpp.${scriptsfx}"/>
+    </ant>
+    <echo message="The output files can be found at ${tests.quickstart.out.dir}/cpp"/>
+  </target>
+
+<!--Running C# QuickStart examples -->
+
+ <target name="run-csharp-quickstart" depends="props" if="isWindows">
+   <property name="test.type" value="quickstart"/>
+   <mkdir dir="${tests.quickstart.out.dir}"/>
+   <delete dir="${tests.quickstart.out.dir}/csharp"/>
+   <delete>
+     <fileset dir="${product.dir}/SampleCode/quickstart"> 
+       <include name="gfecs*/*"/>
+     </fileset>
+   </delete>
+   <mkdir dir="${tests.quickstart.out.dir}/csharp"/>
+   <echo message="Running tests..." level="info"/>
+   <ant antfile="${tests.quickstart.src.dir}/${test.type}.xml" dir="${tests.quickstart.src.dir}" target="${test.type}-tests">
+     <property name="runscript.file" value="${product.dir}/SampleCode/quickstart/runcs.bat"/>
+   </ant>
+   <echo message="The output files can be found at ${tests.quickstart.out.dir}/csharp"/>
+ </target>
+
+  
+  <target depends="props" name="run-csharp-tests" if="isWindows">
+    <property name="logging" value="true"/>
+    <property name="csharp.debug" value="false"/>
+    <property name="unicast" value="true"/>
+    <property name="multicast" value="false"/>
+    <property name="cleanup" value="false"/>
+    <condition property="runSequential" value="true">
+      <equals arg1="${deprecated}" arg2="false"/>
+    </condition>
+    <condition property="runSequential" value="true">
+      <equals arg1="${generics}" arg2="false"/>
+    </condition>
+    <property name="runSequential" value="false" />
+    <condition property="runSingleTest" value="true">
+      <isset property="csharp.testcase"/>
+    </condition>
+    <condition property="deprecated" value="false">
+      <and>
+        <isset property="csharp.testcase"/>
+        <contains string="${csharp.testcase}" substring="NewAPI"/>
+      </and>
+    </condition>
+    <property name="deprecated" value="true"/>
+    <!-- Code added for category=generics-->
+    <condition property="generics" value="false">
+      <and>
+        <isset property="csharp.testcase"/>
+        <not><contains string="${csharp.testcase}" substring="NewAPI"/></not>
+      </and>
+    </condition>
+    <property name="generics" value="true"/>
+
+    <property name="runSingleTest" value="false" />
+    <condition property="doclean" value="-clean">
+      <istrue value="${cleanup}"/>
+    </condition>
+    <condition property="fixturearg" value="/run=GemStone.GemFire.Cache.UnitTests.${csharp.testcase}">
+      <isset property="csharp.testcase"/>
+    </condition>
+    <condition property="runscript.file" value="${osbuild.ext.dir}/tests/clicache/UnitTests/Debug/runCSTests.sh">
+      <istrue value="${csharp.debug}"/>
+    </condition>
+    <condition property="coveragearg" value="-coverage">
+      <isset property="csharp.coverage"/>
+    </condition>
+    <property name="runscript.file" value="${osbuild.ext.dir}/tests/clicache/UnitTests/runCSTests.sh"/>
+    <property name="doclean" value=""/>
+    <property name="fixturearg" value=""/>
+    <property name="coveragearg" value=""/>
+    <exec dir="${basedir}" 
+          executable="bash"
+          failonerror="true">
+      <arg file="${runscript.file}"/>
+      <arg value="-logging=${logging}"/>
+      <arg value="-logLevel=${logLevel}"/>
+      <arg value="-gfeLogLevel=${gfeLogLevel}"/>
+      <arg value="-gfeSecLogLevel=${gfeSecLogLevel}"/>
+      <arg value="-debug=${csharp.debug}"/>
+      <arg value="-unicast=${unicast}"/>
+      <arg value="-deprecated=${deprecated}"/>
+      <arg value="-generics=${generics}"/>
+      <arg value="-multicast=${multicast}"/>
+      <a

<TRUNCATED>


[27/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/DistributedSystem.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/DistributedSystem.cs b/geode-client-native/quickstart/csharp/DistributedSystem.cs
new file mode 100755
index 0000000..43df927
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/DistributedSystem.cs
@@ -0,0 +1,113 @@
+/*
+ * The DistributedSystem QuickStart Example.
+ * This example connects to two distributed systems.
+ * This example takes the following steps:
+ *
+ * 1. Create a GemFire Cache.
+ * 2. Now it creates a Pool with poolName1.
+ * 3. Adds server(localhost:40404) to a pool factory.
+ * 4. Creates a generic region "root1" with the pool then creates a generic subregion "exampleRegion" with the pool.  
+ * 5. Put Entries (Key and Value pairs) into the Region.
+ * 6. Get Entries from the Region.
+ * 7. Invalidate an Entry in the Region.
+ * 8. Destroy an Entry in the Region.
+ * 9. Now it creates another generic region "root2" and subregion "exampleRegion" with another pool "poolName2", which connects to the server(localhost:40405).
+ * 10. Now we do put/get operations.  
+ * 11. Close the Cache.
+ *
+ */
+
+
+// Use standard namespaces
+using System;
+
+// Use the GemFire namespaces
+//using GemStone.GemFire.Cache;
+using GemStone.GemFire.Cache.Generic;
+
+namespace GemStone.GemFire.Cache.Generic.QuickStart
+{
+  // The DistributedSystem QuickStart example.
+  class DistributedSystem
+  {
+  
+    static void TestDistributedSystem(Cache cache, String hostname, int port, String poolName, String regionName)
+    {
+      //create pool factory to create the pool.
+      PoolFactory fact = PoolManager.CreateFactory();
+
+      //adding host(endpoint) in pool
+      fact.AddServer(hostname, port);
+
+      //enabling subscription on pool
+      fact.SetSubscriptionEnabled(true);
+
+      //creating pool with name "examplePool"
+      fact.Create(poolName);
+	  
+	    RegionFactory regionFactory = cache.CreateRegionFactory(RegionShortcut.CACHING_PROXY);
+
+      IRegion<string, string> region = regionFactory.SetPoolName(poolName).Create<string, string>(regionName);
+
+      Console.WriteLine("Created a generic Region.");
+
+      // Put an Entry (Key and Value pair) into the Region using the IDictionary interface.
+      region["Key1"] = "Value1";
+
+      Console.WriteLine("Put the first Entry into the Region");
+
+      // Put another Entry into the Region.
+      region["123"] = "123";
+
+      Console.WriteLine("Put the second Entry into the Region");
+
+      // Get Entries back out of the Region.
+      string result1 = region["Key1"];
+
+      Console.WriteLine("Obtained the first Entry from the Region");
+
+      string result2 = region["123"];
+
+      Console.WriteLine("Obtained the second Entry from the Region");
+
+      // Invalidate an Entry in the Region.
+      region.Invalidate("Key1");
+
+      Console.WriteLine("Invalidated the first Entry in the Region");
+
+      // Destroy an Entry in the Region using the IDictionary interface.
+      region.Remove("123");
+
+      Console.WriteLine("Destroyed the second Entry in the Region");
+    }
+  
+    static void Main(string[] args)
+    {
+      try
+      {
+        // Create a GemFire Cache.
+        CacheFactory cacheFactory = CacheFactory.CreateCacheFactory();
+
+        Cache cache = cacheFactory.SetSubscriptionEnabled(true).Create();
+
+        Console.WriteLine("Created the GemFire Cache");
+
+        //test on first distributem system
+        TestDistributedSystem(cache, "localhost", 40404, "poolName1", "exampleRegion1");
+        
+        //test on second distributed system
+        TestDistributedSystem(cache, "localhost", 40405, "poolName2", "exampleRegion2");
+
+        // Close the GemFire Cache.
+        cache.Close();
+
+        Console.WriteLine("Closed the GemFire Cache");
+      }
+      // An exception should not occur
+      catch (GemFireException gfex)
+      {
+        Console.WriteLine("DistributedSystem GemFire Exception: {0}", gfex.Message);
+      }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/DurableClient.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/DurableClient.cs b/geode-client-native/quickstart/csharp/DurableClient.cs
new file mode 100644
index 0000000..b8cea24
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/DurableClient.cs
@@ -0,0 +1,134 @@
+/*
+ * The Durable Client QuickStart Example.
+ *
+ * This example takes the following steps:
+ *
+ * 1. Create a GemFire Cache with durable client properties Programmatically.
+ * 2. Create the example generic Region programmatically.
+ * 3. Set DurableCacheListener with "AfterRegionLive" implementation to region.
+ * 4. Register Interest to region with durable option.
+ * 5. call to readyForEvent().
+ * 6. Close the Cache with keepalive options as true.
+ *
+ */
+
+// Use standard namespaces
+using System;
+
+// Use the GemFire namespace
+using GemStone.GemFire.Cache.Generic;
+
+namespace GemStone.GemFire.Cache.Generic.QuickStart
+{
+  // The DurableClient QuickStart example.
+  class DurableClientExample
+  {
+    public void RunDurableClient()
+    {
+        // Create durable client's properties using api.
+      Properties<string, string> durableProp = Properties<string, string>.Create<string, string>();
+        durableProp.Insert("durable-client-id", "DurableClientId");
+        durableProp.Insert("durable-timeout", "300");
+
+        // Create a Gemfire Cache programmatically.
+        CacheFactory cacheFactory = CacheFactory.CreateCacheFactory(durableProp);
+
+        Cache cache = cacheFactory.SetSubscriptionEnabled(true)
+                                  .Create();
+
+        Console.WriteLine("Created the GemFire Cache");
+             
+        // Create the example Region programmatically.
+        RegionFactory regionFactory = cache.CreateRegionFactory(RegionShortcut.CACHING_PROXY);
+
+        IRegion<string, string> region = regionFactory.Create<string, string>("exampleRegion");
+
+        Console.WriteLine("Created the generic Region programmatically.");            
+
+        // Plugin the CacheListener with afterRegionLive. "afterRegionLive()"  will be called 
+        // after all the queued events are recieved by client
+        AttributesMutator<string, string> attrMutator = region.AttributesMutator;
+        attrMutator.SetCacheListener(new DurableCacheListener<string, string>());
+
+        Console.WriteLine("DurableCacheListener set to region.");
+        
+        // For durable Clients, Register Intrest can be durable or non durable ( default ), 
+        // Unregister Interest APIs remain same.
+
+        string [] keys = new string[] { "Key-1" };
+        region.GetSubscriptionService().RegisterKeys(keys, true, true);
+
+        Console.WriteLine("Called Register Interest for Key-1 with isDurable as true");
+
+        //Send ready for Event message to Server( only for Durable Clients ). 
+        //Server will send queued events to client after recieving this.
+        cache.ReadyForEvents();
+    	
+        Console.WriteLine("Sent ReadyForEvents message to server");
+
+        //wait for some time to recieve events
+        System.Threading.Thread.Sleep(1000);
+
+        // Close the GemFire Cache with keepalive = true.  Server will queue events for
+        // durable registered keys and will deliver all events when client will reconnect
+        // within timeout period and send "readyForEvents()"
+        cache.Close(true);
+
+        Console.WriteLine("Closed the GemFire Cache with keepalive as true");
+    }
+
+    public void RunFeeder()
+    {
+        // Create a GemFire Cache Programmatically.
+        CacheFactory cacheFactory = CacheFactory.CreateCacheFactory();
+        Cache cache = cacheFactory.SetSubscriptionEnabled(true).Create();
+
+        Console.WriteLine("Created the GemFire Cache");
+
+        RegionFactory regionFactory = cache.CreateRegionFactory(RegionShortcut.PROXY);
+
+        // Created the Region Programmatically.
+        IRegion<string, string> region = regionFactory.Create<string, string>("exampleRegion");
+
+        Console.WriteLine("Created the Region Programmatically.");
+
+        // create two keys with value
+        string key1 = "Key-1";
+        string value1 = "Value-1";
+        region[key1] = value1;
+        string key2 = "Key-2";
+        string value2 = "Value-2";
+        region[key2] = value2;
+
+        Console.WriteLine("Created Key-1 and Key-2 in region. Durable interest was registered only for Key-1.");
+
+        // Close the GemFire Cache
+        cache.Close();
+
+        Console.WriteLine("Closed the GemFire Cache");
+
+    }
+    static void Main(string[] args)
+    {
+      try
+      {
+        DurableClientExample ex = new DurableClientExample();
+ 
+        //First Run of Durable Client
+        ex.RunDurableClient();
+
+        //Intermediate Feeder, feeding events
+        ex.RunFeeder();
+
+        //Reconnect Durable Client
+        ex.RunDurableClient();
+
+      }
+      // An exception should not occur
+      catch (GemFireException gfex)
+      {
+        Console.WriteLine("DurableClient GemFire Exception: {0}", gfex.Message);
+      }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/Exceptions.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/Exceptions.cs b/geode-client-native/quickstart/csharp/Exceptions.cs
new file mode 100644
index 0000000..5064b7f
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/Exceptions.cs
@@ -0,0 +1,124 @@
+/*
+ * The Exceptions QuickStart Example.
+ *
+ * This example takes the following steps:
+ *
+ * 1. Create CacheFactory using the user specified settings or from the gfcpp.properties file by default.
+ * 2. Create a GemFire Cache.
+ * 3. Get the example generic Regions from the Cache.
+ * 4. Perform some operations which should cause exceptions.
+ * 5. Close the Cache.
+ * 6. Put an Entry into the Region when Cache is already closed.
+ *
+ */
+
+// Use standard namespaces
+using System;
+
+// Use the GemFire namespace
+using GemStone.GemFire.Cache.Generic;
+
+namespace GemStone.GemFire.Cache.Generic.QuickStart
+{
+  // The Exceptions QuickStart example.
+  class Exceptions
+  {
+    static void Main(string[] args)
+    {
+      try
+      {
+        // Create CacheFactory using the user specified settings or from the gfcpp.properties file by default.
+        Properties<string, string> prp = Properties<string, string>.Create<string, string>();
+        prp.Insert("cache-xml-file", "XMLs/clientExceptions.xml");
+
+        CacheFactory cacheFactory = CacheFactory.CreateCacheFactory(prp);
+
+        Console.WriteLine("Created CacheFactory");
+
+        // Create a GemFire Cache with the "clientExceptions.xml" Cache XML file.
+        Cache cache = cacheFactory.SetSubscriptionEnabled(true).Create();
+
+        Console.WriteLine("Created the GemFire Cache");
+        
+        // Get the example Regions from the Cache which are declared in the Cache XML file.
+        IRegion<object, string> region = cache.GetRegion<object, string>("exampleRegion");
+        IRegion<object, string> region2 = cache.GetRegion<object, string>("exampleRegion2");
+
+        Console.WriteLine("Obtained the generic Region from the Cache");
+
+        // Put an Entry (Key and Value pair) into the Region using the IDictionary interface.
+        region["Key1"] = "Value1";
+
+        Console.WriteLine("Put the first Entry into the Region");
+
+        // Put an Entry into the Region by manually creating a Key and a Value pair.
+        int key = 123;
+        string value = "123";
+        region[key] = value;
+
+        Console.WriteLine("Put the second Entry into the Region");
+
+        // Get Entries back out of the Region.
+        string result1 = region["Key1"];
+
+        Console.WriteLine("Obtained the first Entry from the Region");
+
+        string result2 = region[key];
+
+        Console.WriteLine("Obtained the second Entry from the Region");
+
+        //Destroy exampleRegion2.
+        object userData = null;
+        region2.DestroyRegion(userData);
+        
+        try
+        {
+          // Try to Put an Entry into a destroyed Region.
+          region2["Key1"] = "Value1";
+  
+          Console.WriteLine("UNEXPECTED: Put should not have succeeded");
+        }
+        catch (RegionDestroyedException gfex)
+        {
+          Console.WriteLine("Expected RegionDestroyedException: {0}", gfex.Message);
+        }
+        
+        try
+        {
+          //Its not valid to create two instance of Cache with different settings.
+          //If the settings are the same it returns the existing Cache instance.
+          CacheFactory cacheFactory2 = CacheFactory.CreateCacheFactory(prp);
+          Cache cache1 = cacheFactory2.SetSubscriptionEnabled(true).AddServer("localhost", 40405).Create();
+
+          Console.WriteLine("UNEXPECTED: Cache create should not have succeeded");
+        }
+        catch (IllegalStateException gfex)
+        {
+          Console.WriteLine("Expected IllegalStateException: {0}", gfex.Message);
+        }
+        
+        // Close the GemFire Cache.
+        cache.Close();
+
+        Console.WriteLine("Closed the GemFire Cache");
+
+        try
+        {
+          // Put an Entry into the Region when Cache is already closed.
+          region["Key1"] = "Value1";
+  
+          Console.WriteLine("UNEXPECTED: Put should not have succeeded");
+        }
+        catch (RegionDestroyedException gfex)
+        {
+          Console.WriteLine("Expected RegionDestroyedException: {0}", gfex.Message);
+        }
+      }
+      // An exception should not occur
+      catch (GemFireException gfex)
+      {
+        Console.WriteLine("Exceptions GemFire Exception: {0}", gfex.Message);
+      }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/ExecuteFunctions.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/ExecuteFunctions.cs b/geode-client-native/quickstart/csharp/ExecuteFunctions.cs
new file mode 100644
index 0000000..039eaf5
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/ExecuteFunctions.cs
@@ -0,0 +1,151 @@
+/*
+ * The ExecuteFunction QuickStart Example.
+ *
+ * This example takes the following steps:
+ *
+ * 1. Create a GemFire Cache.
+ * 2. Get the example Region from the Cache.
+ * 3. Populate some query objects on the Region.
+ * 4. Create Execute Objects
+ * 5. Execute Functions
+ * 6. Close the Cache.
+ *
+ */
+
+// Use standard namespaces
+using System;
+
+// Use the GemFire namespace
+using GemStone.GemFire.Cache.Generic;
+using System.Collections.Generic;
+using System.Collections;
+
+namespace GemStone.GemFire.Cache.Generic.QuickStart
+{
+  // The Function Execution QuickStart example.
+
+  class ExecuteFunctions
+  {
+    private static string getFuncName = "MultiGetFunction";
+    private static string getFuncIName = "MultiGetFunctionI";
+
+    static void Main(string[] args)
+    {
+      try
+      {
+        CacheFactory cacheFactory = CacheFactory.CreateCacheFactory();
+
+        Cache cache = cacheFactory.SetSubscriptionEnabled(true).AddServer("localhost", 50505).AddServer("localhost", 40404).Create();
+
+        Console.WriteLine("Created the GemFire Cache");
+        IRegion<string, string> region = cache.CreateRegionFactory(RegionShortcut.CACHING_PROXY).Create<string, string>("partition_region");
+        Console.WriteLine("Created the Region");
+
+        region.GetSubscriptionService().RegisterAllKeys();
+
+        for (int i = 0; i < 34; i++)
+        {
+          region["KEY--" + i] = "VALUE--" + i;
+        }
+
+        object[] routingObj = new object[17];
+        int j = 0;
+        for (int i = 0; i < 34; i++)
+        {
+          if (i % 2 == 0) continue;
+          routingObj[j] = "KEY--" + i;
+          j++;
+        }
+        Console.WriteLine("routingObj count= {0}.", routingObj.Length);
+
+        bool args0 = true;
+        Boolean getResult = true;
+        //test data dependant function execution
+        //test get function with result
+        Execution<object> exc = FunctionService<object>.OnRegion<string, string>(region);
+        IResultCollector<object> rc = exc.WithArgs<bool>(args0).WithFilter<object>(routingObj).Execute(
+      getFuncName, getResult);
+        ICollection<object> executeFunctionResult = rc.GetResult();
+
+        List<object> resultList = new List<object>();
+        foreach (List<object> item in executeFunctionResult)
+        {
+
+          foreach (object subitem in item)
+          {
+            resultList.Add(subitem);
+          }
+        }
+
+        Console.WriteLine("on region: result count= {0}.", resultList.Count);
+        for (int i = 0; i < resultList.Count; i++)
+        {
+          Console.WriteLine("on region:get:result[{0}]={1}.", i, (string)resultList[i]);
+        }
+
+        getResult = true;
+        //test date independant fucntion execution on one server
+        //test get function with result
+        exc = FunctionService<object>.OnServer(cache);
+        ArrayList args1 = new ArrayList();
+        for (int i = 0; i < routingObj.Length; i++)
+        {
+          Console.WriteLine("routingObj[{0}]={1}.", i, (string)routingObj[i]);
+          args1.Add(routingObj[i]);
+        }
+        rc = exc.WithArgs<ArrayList>(args1).Execute(getFuncIName, getResult);
+        executeFunctionResult = rc.GetResult();
+        Console.WriteLine("on one server: result count= {0}.", executeFunctionResult.Count);
+        List<object> resultList1 = new List<object>();
+
+        foreach (List<object> item in executeFunctionResult)
+        {
+          foreach (object subitem in item)
+          {
+            resultList1.Add(subitem);
+          }
+        }
+        if (resultList1.Count != 17)
+          Console.WriteLine("result count check failed on one server:get:");
+        for (int i = 0; i < resultList1.Count; i++)
+        {
+          Console.WriteLine("on one server:get:result[{0}]={1}.", i, (string)resultList1[i]);
+        }
+
+        //test date independant fucntion execution on all servers
+        //test get function with result
+        exc = FunctionService<object>.OnServers(cache);
+        rc = exc.WithArgs<ArrayList>(args1).Execute(getFuncIName, getResult);
+        executeFunctionResult = rc.GetResult();
+        Console.WriteLine("on all servers: result count= {0}.", executeFunctionResult.Count);
+
+        List<object> resultList2 = new List<object>();
+
+        foreach (List<object> item in executeFunctionResult)
+        {
+          foreach (object subitem in item)
+          {
+            resultList2.Add(subitem);
+          }
+        }
+
+        if (resultList2.Count != 34)
+          Console.WriteLine("result count check failed on all servers");
+        for (int i = 0; i < resultList2.Count; i++)
+        {
+          Console.WriteLine("on all servers:result[{0}]={1}.", i, (string)resultList2[i]);
+        }
+
+        // Close the GemFire Cache.
+        cache.Close();
+
+        Console.WriteLine("Closed the GemFire Cache");
+      }
+      // An exception should not occur
+      catch (GemFireException gfex)
+      {
+        Console.WriteLine("ExecuteFunctions GemFire Exception: {0}", gfex.Message);
+      }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/HACache.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/HACache.cs b/geode-client-native/quickstart/csharp/HACache.cs
new file mode 100644
index 0000000..38d772b
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/HACache.cs
@@ -0,0 +1,114 @@
+/*
+ * The HA QuickStart Example.
+ *
+ * This example takes the following steps:
+ *
+ * 1. Connect to a GemFire Distributed System which has two cache servers.
+ * 2. Create a GemFire Cache with redundancy level = 1.
+ * 3. Get the example generic Region from the Cache.
+ * 4. Call registerKeys() on the Region.
+ * 5. Call registerRegex() on the Region.
+ * 6. Put two keys in the Region.
+ * 7. Verify that the keys are destroyed via expiration in server. 
+ * 8. Close the Cache.
+ *
+ */
+
+// Use standard namespaces
+using System;
+using System.Threading;
+
+// Use the GemFire namespace
+using GemStone.GemFire.Cache.Generic;
+
+namespace GemStone.GemFire.Cache.Generic.QuickStart
+{
+  // The HA QuickStart example.
+  class HA
+  {
+    static void Main(string[] args)
+    {
+      try
+      {
+        // Create a GemFire Cache.
+        GemStone.GemFire.Cache.Generic.CacheFactory cacheFactory = CacheFactory.CreateCacheFactory();
+
+        Cache cache = cacheFactory.Set("cache-xml-file", "XMLs/clientHACache.xml")
+                  .AddServer("localhost", 40404)
+                  .AddServer("localhost", 40405)
+                  .SetSubscriptionRedundancy(1)
+                  .SetSubscriptionEnabled(true)
+                  .Create();
+
+        Console.WriteLine("Created the GemFire Cache");
+
+        // Get the example Region from the Cache which is declared in the Cache XML file.
+        IRegion<object, int> region = cache.GetRegion<object, int>("/exampleRegion");
+
+        Console.WriteLine("Obtained the generic Region from the Cache");
+
+        // Register and Unregister Interest on Region for Some Keys.
+        object [] keys = new object[] { 123, "Key-123" };
+        region.GetSubscriptionService().RegisterKeys(keys);
+        region.GetSubscriptionService().RegisterRegex("Keys.*");
+
+        Console.WriteLine("Called RegisterKeys() and RegisterRegex()");
+
+        region[123] = 1;
+        region["Key-123"] = 2;
+        
+        Console.WriteLine("Called put() on Region");
+        
+        Console.WriteLine("Waiting for updates on keys");
+        Thread.Sleep(10000);
+        
+        int count = 0;
+
+        //try to get the entries for keys destroyed by server.
+        try
+        {
+          int value1 = region[123];
+          Console.WriteLine("UNEXPECTED: First get should not have succeeded");
+
+        }
+        catch(KeyNotFoundException){
+          Console.WriteLine("gfex.Message: Verified that key1 has been destroyed");
+          count++;
+        }
+
+        try
+        {
+          int value2 = region["Key-123"];
+          Console.WriteLine("UNEXPECTED: Second get should not have succeeded");
+        }
+        catch (KeyNotFoundException)
+        {
+          Console.WriteLine("gfex.Message: Verified that key2 has been destroyed");
+          count++;
+        }
+
+        if (count == 2) {
+          Console.WriteLine("Verified all updates");
+        }
+        else {
+          Console.WriteLine("Could not verify all updates");
+        }
+
+        region.GetSubscriptionService().UnregisterKeys(keys);
+        region.GetSubscriptionService().UnregisterRegex("Keys.*");
+    
+        Console.WriteLine("Unregistered keys");
+            
+        // Close the GemFire Cache.
+        cache.Close();
+
+        Console.WriteLine("Closed the GemFire Cache");
+      }
+      // An exception should not occur
+      catch (GemFireException gfex)
+      {
+        Console.WriteLine("HACache GemFire Exception: {0}", gfex.Message);
+      }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/LoaderListenerWriter.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/LoaderListenerWriter.cs b/geode-client-native/quickstart/csharp/LoaderListenerWriter.cs
new file mode 100644
index 0000000..dc7e438
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/LoaderListenerWriter.cs
@@ -0,0 +1,110 @@
+/*
+ * The LoaderListenerWriter QuickStart Example.
+ *
+ * This example takes the following steps:
+ *
+ *  1. Connect to a GemFire Distributed System.
+ *  2. Create a GemFire Cache.
+ *  3. Get the generic example Region from the Cache.
+ *  4. Set the generic SimpleCacheLoader, SimpleCacheListener and SimpleCacheWriter plugins on the Region.
+ *  5. Put 3 Entries into the Region.
+ *  6. Update an Entry in the Region.
+ *  7. Destroy an Entry in the Region.
+ *  8. Invalidate an Entry in the Region.
+ *  9. Get a new Entry from the Region.
+ * 10. Get the destroyed Entry from the Region.
+ * 11. Close the Cache.
+ * 12. Disconnect from the Distributed System.
+ *
+ */
+
+// Use standard namespaces
+using System;
+
+// Use the GemFire namespace
+using GemStone.GemFire.Cache.Generic;
+
+namespace GemStone.GemFire.Cache.Generic.QuickStart
+{
+  // The LoaderListenerWriter QuickStart example.
+  class LoaderListenerWriter
+  {
+    static void Main(string[] args)
+    {
+      try
+      {
+        // Create a GemFire Cache.
+        CacheFactory cacheFactory = CacheFactory.CreateCacheFactory();
+
+        Cache cache = cacheFactory.Set("cache-xml-file", "XMLs/clientLoaderListenerWriter.xml")
+                                  .SetSubscriptionEnabled(true)
+                                  .Create();
+
+        Console.WriteLine("Created the GemFire Cache");
+
+        // Get the example Region from the Cache which is declared in the Cache XML file.
+        IRegion<string, string> region = cache.GetRegion<string, string>("/exampleRegion");
+
+        Console.WriteLine("Obtained the generic Region from the Cache");
+
+        // Plugin the SimpleCacheLoader, SimpleCacheListener and SimpleCacheWrite to the Region.
+        AttributesMutator<string, string> attrMutator = region.AttributesMutator;
+        attrMutator.SetCacheLoader(new SimpleCacheLoader<string, string>());
+        attrMutator.SetCacheListener(new SimpleCacheListener<string, string>());
+        attrMutator.SetCacheWriter(new SimpleCacheWriter<string, string>());
+
+        Console.WriteLine("Attached the simple generic plugins on the Region");
+
+        // The following operations should cause the plugins to print the events.
+
+        // Put 3 Entries into the Region using the IDictionary interface.
+        region["Key1"] = "Value1";
+        region["Key2"] = "Value2";
+        region["Key3"] = "Value3";
+
+        Console.WriteLine("Put 3 Entries into the Region");
+
+        // Update Key3.
+        region["Key3"] = "Value3-Updated";
+
+        // Destroy Key3 using the IDictionary interface.
+        region.Remove("Key3");
+
+        // Invalidate Key2.
+        region.Invalidate("Key2");
+
+        string value = null;
+        
+        try
+        {
+          // Get a new Key.
+          value = region["Key4"];
+        }
+        catch (KeyNotFoundException knfex)
+        {
+          Console.WriteLine("Got expected KeyNotFoundException: {0}", knfex.Message);
+        }
+        
+        try
+        {
+          // Get a destroyed Key.
+          value = region["Key3"];
+        }
+        catch (KeyNotFoundException knfex)
+        {
+          Console.WriteLine("Got expected KeyNotFoundException: {0}", knfex.Message);
+        }
+
+        // Close the GemFire Cache.
+        cache.Close();
+
+        Console.WriteLine("Closed the GemFire Cache");
+      }
+      // An exception should not occur
+      catch (GemFireException gfex)
+      {
+        Console.WriteLine("LoaderListenerWriter GemFire Exception: {0}", gfex.Message);
+      }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/MultiuserSecurity.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/MultiuserSecurity.cs b/geode-client-native/quickstart/csharp/MultiuserSecurity.cs
new file mode 100755
index 0000000..08b1ecc
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/MultiuserSecurity.cs
@@ -0,0 +1,181 @@
+/*
+ * The MultiuserSecurityExample QuickStart Example.
+ *
+ * This example takes the following steps:
+ *
+ * 1. Create a GemFire Cache with multiuser enabled.
+ * 2. Creates userCache using user "root". Who is authorized to do get and put operations.
+ * 3. Creates userCache using user "writer2". Who is authorized to do only put operation. It tries to do get operation and gets NotAuthorizedException.
+ * 4.  Close the Cache.
+ *
+ */
+
+// Use standard namespaces
+using System;
+
+// Use the GemFire namespace
+using GemStone.GemFire.Cache.Generic;
+using System.Collections.Generic;
+using System.Collections;
+namespace GemStone.GemFire.Cache.Generic.QuickStart
+{
+  // The MultiuserSecurityExample QuickStart example.
+  class MultiuserSecurityExample
+  {
+    private static string getFuncIName = "MultiGetFunctionI";
+
+    public void RunMultiuserSecurityExample()
+    {
+      // Create client's Authentication Intializer and Credentials using api ( Same can be set to gfcpp.properties & comment following code ).
+      Properties<string, string> secProp = Properties<string, string>.Create<string, string>();
+
+      //By setting this property client will send credential in encrypted form.
+      //to do this one need to setup OpenSSL.
+      //secProp.Insert("security-client-dhalgo", "Blowfish:128");
+
+      // Connect to the GemFire Distributed System using the settings from the gfcpp.properties file by default.
+      // Create a GemFire Cache.
+      CacheFactory cacheFactory = CacheFactory.CreateCacheFactory(null);
+
+      Cache cache = cacheFactory.SetMultiuserAuthentication(true).Create();
+
+      Console.WriteLine("Created the GemFire Cache");
+
+      RegionFactory regionFactory = cache.CreateRegionFactory(RegionShortcut.PROXY);
+
+      IRegion<string, string> region = regionFactory.Create<string, string>("partition_region");
+
+      Console.WriteLine("Created the Region Programmatically.");
+
+      runWithUserRoot(cache);
+      runWithUserWriter(cache);
+
+      cache.Close();
+
+      Console.WriteLine("Client disconnected from the GemFire Distributed System");
+    }
+    
+    void runWithUserRoot(Cache cache)
+    {
+      Console.WriteLine("Created the Region Programmatically. 0");
+      //user "root" 's credential
+      Properties<string, object> credentials = Properties<string, object>.Create<string, object>();
+      //user = "root" has permission to do put/get both  
+      credentials.Insert("security-username", "root");
+      credentials.Insert("security-password", "root");
+
+      Console.WriteLine("Created the Region Programmatically. 1");
+      // Create user cache by passing credentials
+      IRegionService userCache1 = cache.CreateAuthenticatedView(credentials);
+
+      Console.WriteLine("Created the Region Programmatically. 2");
+      // Create region using usercache
+      IRegion<string, string> userRegion1 = userCache1.GetRegion<string, string>("partition_region");
+
+      //doing operation on behalf of user "root"
+      userRegion1["key-1"] = "val-1";
+
+      string result = userRegion1["key-1"];
+
+      //to execute function on server
+      Execution<object> exc = FunctionService<object>.OnServer(userCache1);
+
+      bool getResult = true;
+      ArrayList args1 = new ArrayList();
+      args1.Add("key-1");
+
+      IResultCollector<object> rc = exc.WithArgs<ArrayList>(args1).Execute(
+      getFuncIName, getResult);
+      ICollection<object> executeFunctionResult = rc.GetResult();
+      Console.WriteLine("on one server: result count= {0}.", executeFunctionResult.Count);
+
+      List<object> resultList1 = new List<object>();    
+      foreach (List<object> item in executeFunctionResult)
+      {
+        foreach (object subitem in item)
+        {
+          resultList1.Add(subitem);
+        }
+      }
+
+      for (int i = 0; i < resultList1.Count; i++)
+      {
+        Console.WriteLine("on one server:get:result[{0}]={1}.", i, (string)resultList1[i]);
+      }
+
+      //to execute Query
+
+      // Get the QueryService from the Cache.
+      QueryService<string, string> qrySvc = userCache1.GetQueryService<string, string>();
+
+      Console.WriteLine("Got the QueryService from the user Cache");
+
+      // Execute a Query which returns a ResultSet.    
+      Query<string> qry = qrySvc.NewQuery("SELECT DISTINCT * FROM /partition_region");
+      ISelectResults<string> results = qry.Execute();
+
+      Console.WriteLine("ResultSet Query returned {0} rows", results.Size);
+
+      userCache1.Close();
+
+      Console.WriteLine("User root done put/get ops successfully");
+    }
+    
+    void runWithUserWriter(Cache cache)
+    {
+      //user "writer2" 's credential
+      Properties<string, object> credentials = Properties<string, object>.Create<string, object>();
+      //user = "writer2" has permission to do put ops only  
+      credentials.Insert("security-username", "writer2");
+      credentials.Insert("security-password", "writer2");
+
+      // Create user cache by passing credentials
+      IRegionService userCache2 = cache.CreateAuthenticatedView(credentials);
+
+      // Create region using usercache
+      IRegion<string, string> userRegion2 = userCache2.GetRegion<string, string>("partition_region");
+
+      bool exceptiongot = false;
+
+      try
+      {
+        //"writer2" trying to do get operation on region, it should get NotAuthorized exception
+        string res = userRegion2["key-1"];
+      }
+      catch (NotAuthorizedException ex)
+      {
+        Console.WriteLine("Got expected UnAuthorizedException: {0}", ex.Message);
+        exceptiongot = true;
+      }
+
+      if (exceptiongot == false)
+      {
+        Console.WriteLine("Example FAILED: Did not get expected NotAuthorizedException");
+      }
+      else
+      {
+        Console.WriteLine("User writer2 got expected while doing get operation.");
+      }
+
+      //close the user cache
+      userCache2.Close();
+    }
+    
+    static void Main(string[] args)
+    {
+      try
+      {
+        MultiuserSecurityExample ex = new MultiuserSecurityExample();
+
+        //Run Security Client
+        ex.RunMultiuserSecurityExample();
+
+      }
+      // An exception should not occur
+      catch (GemFireException gfex)
+      {
+        Console.WriteLine("FAILED: MultiuserSecurityExample GemFire Exception: {0}", gfex.Message);
+      }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/PdxInstance.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/PdxInstance.cs b/geode-client-native/quickstart/csharp/PdxInstance.cs
new file mode 100755
index 0000000..9c54429
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/PdxInstance.cs
@@ -0,0 +1,120 @@
+/*
+ * The PdxInstance QuickStart Example.
+ * This example takes the following steps:
+ *
+ * This example shows IPdxInstanceFactory and IPdxInstance usage. 
+ *
+ * 1. Create a GemFire Cache.
+ * 2. Creates the PdxInstanceFactory for Person class.
+ * 3. Then creates instance of PdxInstance
+ * 4. It does put.
+ * 5. Then it does get and access it fields.
+ * 6. Close the Cache.
+ *
+ */
+// Use standard namespaces
+using System;
+using System.Reflection;
+// Use the GemFire namespace
+using GemStone.GemFire.Cache.Generic;
+
+
+namespace GemStone.GemFire.Cache.Generic.QuickStart
+{
+  public class Person
+  {
+    private string name;
+    //this is the only field used on server to create hashcode and use in equals method
+    [PdxIdentityField]
+    private int id;
+    private int age;
+    
+    public Person() { }
+
+    public Person(string name, int id, int age)
+    {
+      this.name = name;
+      this.id = id;
+      this.age = age;
+    }
+    
+    #region Public Properties
+    public string Name
+    {
+      get { return name; }
+    }
+    public int ID
+    {
+      get { return id; }
+    }
+    public int Age
+    {
+      get { return age; }
+    }
+    #endregion
+  }   
+  // The PdxInstance QuickStart example.
+  class PdxInstance
+  {
+    static void Main(string[] args)
+    {
+      try
+      {
+
+        CacheFactory cacheFactory = CacheFactory.CreateCacheFactory();
+
+        Console.WriteLine("Connected to the GemFire Distributed System");
+
+        // Create a GemFire Cache with the "clientPdxRemoteQuery.xml" Cache XML file.
+        // Set SetPdxReadSerialized to true to access PdxInstance
+        Cache cache = cacheFactory.Set("cache-xml-file", "XMLs/clientPdxInstance.xml").Create();
+
+        Console.WriteLine("Created the GemFire Cache");
+
+        // Get the example Region from the Cache which is declared in the Cache XML file.
+        IRegion<string, IPdxInstance> region = cache.GetRegion<string, IPdxInstance>("Person");
+
+        Console.WriteLine("Obtained the Region from the Cache");
+
+        Person p = new Person("Jack", 7, 21);
+        
+        //PdxInstanceFactory for Person class
+        IPdxInstanceFactory pif = cache.CreatePdxInstanceFactory("Person");
+        
+        pif.WriteString("name", p.Name);
+        pif.WriteInt("id", p.ID);
+        pif.MarkIdentityField("id");
+        pif.WriteInt("age", p.Age);
+        
+        IPdxInstance pdxInstance = pif.Create();
+        
+        Console.WriteLine("Created PdxInstance for Person class");
+        
+        region["Key1"] = pdxInstance;
+
+        Console.WriteLine("Populated PdxInstance Object");
+
+        IPdxInstance retPdxInstance = region["Key1"];
+
+        if((int)retPdxInstance.GetField("id") == p.ID
+             && (int)retPdxInstance.GetField("age") == p.Age
+               && (string)retPdxInstance.GetField("name") == p.Name 
+                 && retPdxInstance.IsIdentityField("id") == true)
+           Console.WriteLine("PdxInstance returns all fields value expected");
+        else
+           Console.WriteLine("PdxInstance doesn't returns all fields value expected");
+        
+        // Close the GemFire Cache.
+        cache.Close();
+
+        Console.WriteLine("Closed the GemFire Cache");
+
+      }
+      // An exception should not occur
+      catch (GemFireException gfex)
+      {
+        Console.WriteLine("PdxInstance GemFire Exception: {0}", gfex.Message);
+      }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/PdxRemoteQuery.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/PdxRemoteQuery.cs b/geode-client-native/quickstart/csharp/PdxRemoteQuery.cs
new file mode 100644
index 0000000..25e7752
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/PdxRemoteQuery.cs
@@ -0,0 +1,125 @@
+/*
+ * The PdxRemoteQuery QuickStart Example.
+ * This example takes the following steps:
+ *
+ * This example shows IPdxSerializable usage with remote query. It can query .NET objects without having corresponding java classes at server.
+ * Look PortfolioPdx.cs and PositionPdx.cs to know more.
+ *
+ * 1. Create a GemFire Cache.
+ * 2. Get the example Region from the Cache.
+ * 3. Populate some query Pdx objects on the Region.
+ * 4. Get the pool, get the Query Service from Pool. Pool is define in clientPdxRemoteQuery.xml. 
+ * 5. Execute a query that returns a Result Set.
+ * 6. Execute a query that returns a Struct Set.
+ * 7. Execute the region shortcut/convenience query methods.
+ * 8. Close the Cache.
+ *
+ */
+// Use standard namespaces
+using System;
+
+// Use the GemFire namespace
+using GemStone.GemFire.Cache.Generic;
+
+// Use the "Tests" namespace for the query objects.
+using PdxTests;
+
+namespace GemStone.GemFire.Cache.Generic.QuickStart
+{
+  // The PdxRemoteQuery QuickStart example.
+  class PdxRemoteQuery
+  {
+    static void Main(string[] args)
+    {
+      try
+      {
+
+        CacheFactory cacheFactory = CacheFactory.CreateCacheFactory();
+
+        Console.WriteLine("Connected to the GemFire Distributed System");
+
+        // Create a GemFire Cache with the "clientPdxRemoteQuery.xml" Cache XML file.
+        Cache cache = cacheFactory.Set("cache-xml-file", "XMLs/clientPdxRemoteQuery.xml").Create();
+
+        Console.WriteLine("Created the GemFire Cache");
+
+        // Get the example Region from the Cache which is declared in the Cache XML file.
+        IRegion<string, PortfolioPdx> region = cache.GetRegion<string, PortfolioPdx>("Portfolios");
+
+        Console.WriteLine("Obtained the Region from the Cache");
+
+        // Register our Serializable/Cacheable Query objects, viz. Portfolio and Position.
+        Serializable.RegisterPdxType(PortfolioPdx.CreateDeserializable);
+        Serializable.RegisterPdxType(PositionPdx.CreateDeserializable);
+
+        Console.WriteLine("Registered Serializable Query Objects");
+
+        // Populate the Region with some PortfolioPdx objects.
+        PortfolioPdx port1 = new PortfolioPdx(1 /*ID*/, 10 /*size*/);
+        PortfolioPdx port2 = new PortfolioPdx(2 /*ID*/, 20 /*size*/);
+        PortfolioPdx port3 = new PortfolioPdx(3 /*ID*/, 30 /*size*/);
+        region["Key1"] = port1;
+        region["Key2"] = port2;
+        region["Key3"] = port3;
+
+        Console.WriteLine("Populated some PortfolioPdx Objects");
+
+        //find the pool
+        Pool pool = PoolManager.Find("examplePool");
+
+        // Get the QueryService from the pool
+        QueryService<string, PortfolioPdx> qrySvc = pool.GetQueryService<string, PortfolioPdx>();
+
+        Console.WriteLine("Got the QueryService from the Pool");
+
+        // Execute a Query which returns a ResultSet.    
+        Query<PortfolioPdx> qry = qrySvc.NewQuery("SELECT DISTINCT * FROM /Portfolios");
+        ISelectResults<PortfolioPdx> results = qry.Execute();
+
+        Console.WriteLine("ResultSet Query returned {0} rows", results.Size);
+
+        // Execute a Query which returns a StructSet.
+        QueryService<string, Struct> qrySvc1 = pool.GetQueryService<string, Struct>();
+        Query<Struct> qry1 = qrySvc1.NewQuery("SELECT DISTINCT id, status FROM /Portfolios WHERE id > 1");
+        ISelectResults<Struct> results1 = qry1.Execute();
+
+        Console.WriteLine("StructSet Query returned {0} rows", results1.Size);
+
+        // Iterate through the rows of the query result.
+        int rowCount = 0;
+        foreach (Struct si in results1)
+        {
+          rowCount++;
+          Console.WriteLine("Row {0} Column 1 is named {1}, value is {2}", rowCount, si.Set.GetFieldName(0), si[0].ToString());
+          Console.WriteLine("Row {0} Column 2 is named {1}, value is {2}", rowCount, si.Set.GetFieldName(1), si[1].ToString());
+        }
+
+        // Execute a Region Shortcut Query (convenience method).
+        results = region.Query<PortfolioPdx>("id = 2");
+
+        Console.WriteLine("Region Query returned {0} rows", results.Size);
+
+        // Execute the Region selectValue() API.
+        object result = region.SelectValue("id = 3");
+
+        Console.WriteLine("Region selectValue() returned an item:\n {0}", result.ToString());
+
+        // Execute the Region existsValue() API.
+        bool existsValue = region.ExistsValue("id = 4");
+
+        Console.WriteLine("Region existsValue() returned {0}", existsValue ? "true" : "false");
+
+        // Close the GemFire Cache.
+        cache.Close();
+
+        Console.WriteLine("Closed the GemFire Cache");
+
+      }
+      // An exception should not occur
+      catch (GemFireException gfex)
+      {
+        Console.WriteLine("PdxRemoteQuery GemFire Exception: {0}", gfex.Message);
+      }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/PdxSerializer.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/PdxSerializer.cs b/geode-client-native/quickstart/csharp/PdxSerializer.cs
new file mode 100755
index 0000000..d932c09
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/PdxSerializer.cs
@@ -0,0 +1,233 @@
+/*
+ * The PdxSerializer QuickStart Example.
+ * This example takes the following steps:
+ *
+ * This example shows IPdxSerializer usage. 
+ * We have used inbuilt ReflectionBasedAutoSerializer as IPdxSerializer. ReflectionBasedAutoSerializer class implements the IPdxSerializer interface
+ * This auto serializer uses reflection to serialize and de-serialize class members.
+ * User can use PdxIdentityField attribute on member fields to define field as identity field.
+ * ReflectionBasedAutoSerializer will use this attribute to set field as identity field for Pdx data.
+ *
+ * AutoSerializerEx class extends the ReflectionBasedAutoSerializer class and override WriteTransform and ReadTransform methods.
+ * In this method it handles serialization of .NET decimal type and Guid type.
+ * 
+ * PdxTypeMapper class demonstrates that how app can map .NET types to pdx types(java types)
+ * 
+ * Domain class should have default constructor(zero-arg).
+ *
+ * After that test demonstrartes query on .NET objects without having corresponding java classes at server.
+ *
+ * 1. Create a GemFire Cache.
+ * 2. Get the Person from the Cache.
+ * 3. Populate some query Person objects on the Region.
+ * 4. Get the pool, get the Query Service from Pool. Pool is define in clientPdxRemoteQuery.xml. 
+ * 5. Execute a query that returns a Result Set.
+ * 6. Execute a query that returns a Struct Set.
+ * 7. Execute the region shortcut/convenience query methods.
+ * 8. Close the Cache.
+ *
+ */
+// Use standard namespaces
+using System;
+using System.Reflection;
+// Use the GemFire namespace
+using GemStone.GemFire.Cache.Generic;
+
+
+namespace GemStone.GemFire.Cache.Generic.QuickStart
+{
+  public class Person
+  {
+    private string name;
+    //this is the only field used on server to create hashcode and use in equals method
+    [PdxIdentityField]
+    private int id;
+    private int age;
+    //private decimal salary;
+    private Guid guid = Guid.NewGuid();
+
+    public Person() { }
+
+    public Person(string name, int id, int age)
+    {
+      this.name = name;
+      this.id = id;
+      this.age = age;
+      //this.salary = 217773.12321M;
+    }
+    #region Public Properties
+    public string Name
+    {
+      get { return name; }
+    }
+    public int ID
+    {
+      get { return id; }
+    }
+    public int Age
+    {
+      get { return age; }
+    }
+    #endregion
+  }
+  
+  //This demonstrates, how to extend ReflectionBasedAutoSerializer
+  public class AutoSerializerEx : ReflectionBasedAutoSerializer
+  {
+    public override object WriteTransform(FieldInfo fi, Type type, object originalValue)
+    {
+      if (fi.FieldType.Equals(Type.GetType("System.Guid")))
+      {
+        return originalValue.ToString();
+      }
+      else if (fi.FieldType.Equals(Type.GetType("System.Decimal")))
+      {
+        return originalValue.ToString();
+      }
+      else
+        return base.WriteTransform(fi, type, originalValue);
+    }
+    
+    public override object ReadTransform(FieldInfo fi, Type type, object serializeValue)
+    {
+      if (fi.FieldType.Equals(Type.GetType("System.Guid")))
+      {
+        Guid g = new Guid((string)serializeValue);
+        return g;
+      }
+      else if (fi.FieldType.Equals(Type.GetType("System.Decimal")))
+      {
+        return Convert.ToDecimal((string)serializeValue);
+      }
+      else
+        return base.ReadTransform(fi, type, serializeValue);
+    }
+    
+    public override FieldType GetFieldType(FieldInfo fi, Type type)
+    {
+      if (fi.FieldType.Equals(Type.GetType("System.Guid")) || fi.FieldType.Equals(Type.GetType("System.Decimal")))
+        return FieldType.STRING;
+      return base.GetFieldType(fi, type);
+    }
+    
+    public override bool IsIdentityField(FieldInfo fi, Type type)
+    {
+      if (fi.Name == "_identityField")
+        return true;
+      return base.IsIdentityField(fi, type);
+    }
+    public override string GetFieldName(FieldInfo fi, Type type)
+    {
+      if (fi.Name == "_nameChange")
+        return fi.Name + "NewName";
+
+      return fi.Name ;
+    }
+
+    public override bool IsFieldIncluded(FieldInfo fi, Type type)
+    {
+      if (fi.Name == "_notInclude")
+        return false;
+      return base.IsFieldIncluded(fi, type);
+    }
+  }
+  
+  //This demonstrates, how to map .NET type to pdx type or java type
+  public class PdxTypeMapper : IPdxTypeMapper
+  { 
+    public string ToPdxTypeName(string localTypeName)
+    {
+      return "pdx_" + localTypeName;
+    }
+
+    public string FromPdxTypeName(string pdxTypeName)
+    {
+      return pdxTypeName.Substring(4);//need to extract "pdx_"
+    }
+  }
+  
+  // The PdxRemoteQuery QuickStart example.
+  class PdxSerializer
+  {
+    static void Main(string[] args)
+    {
+      try
+      {
+
+        CacheFactory cacheFactory = CacheFactory.CreateCacheFactory();
+
+        Console.WriteLine("Connected to the GemFire Distributed System");
+
+        // Create a GemFire Cache with the "clientPdxRemoteQuery.xml" Cache XML file.
+        Cache cache = cacheFactory.Set("cache-xml-file", "XMLs/clientPdxSerializer.xml").Create();
+
+        Console.WriteLine("Created the GemFire Cache");
+
+        // Get the example Region from the Cache which is declared in the Cache XML file.
+        IRegion<string, Person> region = cache.GetRegion<string, Person>("Person");
+
+        Console.WriteLine("Obtained the Region from the Cache");
+
+        //to map .net type tp pdx type or java type
+        Serializable.SetPdxTypeMapper(new PdxTypeMapper());
+        
+        // Register inbuilt reflection based autoserializer to serialize the domain types(Person class) as pdx format
+        Serializable.RegisterPdxSerializer(new AutoSerializerEx());
+        Console.WriteLine("Registered Person Query Objects");
+
+        // Populate the Region with some PortfolioPdx objects.
+        Person p1 = new Person("John", 1 /*ID*/, 23 /*age*/);
+        Person p2 = new Person("Jack", 2 /*ID*/, 20 /*age*/);
+        Person p3 = new Person("Tony", 3 /*ID*/, 35 /*age*/);
+        
+        region["Key1"] = p1;
+        region["Key2"] = p2;
+        region["Key3"] = p3;
+
+        Console.WriteLine("Populated some Person Objects");
+
+        //find the pool
+        Pool pool = PoolManager.Find("examplePool");
+
+        // Get the QueryService from the pool
+        QueryService<string, Person> qrySvc = pool.GetQueryService<string, Person>();
+
+        Console.WriteLine("Got the QueryService from the Pool");
+
+        // Execute a Query which returns a ResultSet.    
+        Query<Person> qry = qrySvc.NewQuery("SELECT DISTINCT * FROM /Person");
+        ISelectResults<Person> results = qry.Execute();
+
+        Console.WriteLine("ResultSet Query returned {0} rows", results.Size);
+
+        // Execute a Query which returns a StructSet.
+        QueryService<string, Struct> qrySvc1 = pool.GetQueryService<string, Struct>();
+        Query<Struct> qry1 = qrySvc1.NewQuery("SELECT name, age FROM /Person WHERE id = 1");
+        ISelectResults<Struct> results1 = qry1.Execute();
+
+        Console.WriteLine("StructSet Query returned {0} rows", results1.Size);
+
+        // Iterate through the rows of the query result.
+        int rowCount = 0;
+        foreach (Struct si in results1)
+        {
+          rowCount++;
+          Console.WriteLine("Row {0} Column 1 is named {1}, value is {2}", rowCount, si.Set.GetFieldName(0), si[0].ToString());
+          Console.WriteLine("Row {0} Column 2 is named {1}, value is {2}", rowCount, si.Set.GetFieldName(1), si[1].ToString());
+        }
+
+        
+        // Close the GemFire Cache.
+        cache.Close();
+
+        Console.WriteLine("Closed the GemFire Cache");
+
+      }
+      // An exception should not occur
+      catch (GemFireException gfex)
+      {
+        Console.WriteLine("PdxSerializer GemFire Exception: {0}", gfex.Message);
+      }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/PoolCqQuery.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/PoolCqQuery.cs b/geode-client-native/quickstart/csharp/PoolCqQuery.cs
new file mode 100755
index 0000000..a6f20aa
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/PoolCqQuery.cs
@@ -0,0 +1,174 @@
+/*
+ * The Pool Continuous Query QuickStart Example.
+ *
+ * This example takes the following steps:
+ *
+ * 1. Create CacheFactory using the user specified properties or from the gfcpp.properties file by default.
+ * 2. Create a GemFire Cache.
+ * 3. Get the Portfolios Region from the Pool.
+ * 4. Populate some query objects on the Region.
+ * 5. Get the Query Service from cache.
+ * 6. Register a cqQuery listener
+ * 7. Execute a cqQuery with initial Results
+ * 8. Close the Cache.
+ *
+ */
+
+// Use standard namespaces
+using System;
+
+// Use the GemFire namespace
+using GemStone.GemFire.Cache.Generic;
+
+// Use the "Tests" namespace for the query objects.
+using GemStone.GemFire.Cache.Tests.NewAPI;
+
+namespace GemStone.GemFire.Cache.Generic.QuickStart
+{
+  // The PoolCqQuery QuickStart example.
+
+  //User Listener
+  public class MyCqListener<TKey, TResult> : ICqListener<TKey, TResult>
+  {
+    public virtual void OnEvent(CqEvent<TKey, TResult> ev)
+    {
+      Portfolio val = ev.getNewValue() as  Portfolio;
+      TKey key = ev.getKey();
+      CqOperationType opType = ev.getQueryOperation();
+      string opStr = "DESTROY";
+      if(opType == CqOperationType.OP_TYPE_CREATE)
+         opStr = "CREATE";
+      else if(opType == CqOperationType.OP_TYPE_UPDATE)
+         opStr = "UPDATE";
+      Console.WriteLine("MyCqListener::OnEvent called with key {0}, value ({1},{2}), op {3}.", key, val.ID, val.Pkid,opStr);
+    }
+    public virtual void OnError(CqEvent<TKey, TResult> ev)
+    {
+      Console.WriteLine("MyCqListener::OnError called");
+    }
+    public virtual void Close()
+    {
+      Console.WriteLine("MyCqListener::close called");
+    }
+  }
+  class ContinuousQuery
+  {
+    static void Main(string[] args)
+    {
+      try
+      {
+        //Create CacheFactory using the user specified properties or from the gfcpp.properties file by default.
+        Properties<string, string> prp = Properties<string, string>.Create<string, string>();
+        prp.Insert("cache-xml-file", "XMLs/clientPoolCqQuery.xml");
+        CacheFactory cacheFactory = CacheFactory.CreateCacheFactory(prp);
+
+        Console.WriteLine("Created CacheFactory");
+
+        // Create a GemFire Cache with the "clientPoolCqQuery.xml" Cache XML file.
+        Cache cache = cacheFactory.Create();
+
+        Console.WriteLine("Created the GemFire Cache");
+
+        // Get the Portfolios Region from the Cache which is declared in the Cache XML file.
+        IRegion<string, Portfolio> region = cache.GetRegion<string, Portfolio>("Portfolios");
+
+        Console.WriteLine("Obtained the Region from the Cache");
+
+        // Register our Serializable/Cacheable Query objects, viz. Portfolio and Position.
+        Serializable.RegisterTypeGeneric(Portfolio.CreateDeserializable);
+        Serializable.RegisterTypeGeneric(Position.CreateDeserializable);
+
+        Console.WriteLine("Registered Serializable Query Objects");
+
+        // Populate the Region with some Portfolio objects.
+        Portfolio port1 = new Portfolio(1 /*ID*/, 10 /*size*/);
+        Portfolio port2 = new Portfolio(2 /*ID*/, 20 /*size*/);
+        Portfolio port3 = new Portfolio(3 /*ID*/, 30 /*size*/);
+        region["Key1"] = port1;
+        region["Key2"] = port2;
+        region["Key3"] = port3;
+
+        Console.WriteLine("Populated some Portfolio Objects");
+
+        Pool pp = PoolManager.Find("examplePool");
+
+        // Get the QueryService from the Pool
+        QueryService<string, object> qrySvc = pp.GetQueryService<string, object>();
+
+        Console.WriteLine("Got the QueryService from the Cache");
+
+	    //create CqAttributes with listener
+        CqAttributesFactory<string, object> cqFac = new CqAttributesFactory<string, object>();
+        ICqListener<string, object> cqLstner = new MyCqListener<string, object>();
+        cqFac.AddCqListener(cqLstner);
+        CqAttributes<string, object> cqAttr = cqFac.Create();
+
+	    //create a new cqQuery
+        CqQuery<string, object> qry = qrySvc.NewCq("MyCq", "select * from /Portfolios" + "  p where p.ID!=2", cqAttr, false);
+
+        // Execute a CqQuery with Initial Results
+        ICqResults<object> results = qry.ExecuteWithInitialResults(); 
+
+        Console.WriteLine("ResultSet Query returned {0} rows", results.Size);
+	    //make changes to generate cq events
+        region["Key2"] = port1;
+        region["Key3"] = port2;
+        region["Key1"] = port3;
+
+        SelectResultsIterator<object> iter = results.GetIterator();
+
+        while (iter.HasNext)
+        {
+          object  item = iter.Next();
+         
+          if (item != null)
+          {
+            Struct st = item as Struct;
+            string key = st["key"] as string;;
+            Console.WriteLine("Got key " + key);
+            Portfolio port = st["value"] as Portfolio;
+            if (port == null)
+            {
+              Position pos = st["value"] as Position;
+              if (pos == null)
+              {
+                string cs = st["value"] as string;
+                if (cs == null)
+                {
+                  Console.WriteLine("Query got other/unknown object.");
+                }
+                else
+                {
+                  Console.WriteLine("Query got string : {0}.", cs);
+                }
+              }
+              else
+              {
+                Console.WriteLine("Query got Position object with secId {0}, shares {1}.", pos.SecId, pos.SharesOutstanding);
+              }
+            }
+            else
+            {
+              Console.WriteLine("Query got Portfolio object with ID {0}, pkid {1}.", port.ID, port.Pkid);
+            }
+          }
+        }
+	//Stop the cq
+        qry.Stop();
+
+	//Close the cq
+        qry.Close();
+
+        // Close the GemFire Cache.
+        cache.Close();
+
+        Console.WriteLine("Closed the GemFire Cache");
+      }
+      // An exception should not occur
+      catch (GemFireException gfex)
+      {
+        Console.WriteLine("PoolCqQuery GemFire Exception: {0}", gfex.Message);
+      }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/PoolRemoteQuery.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/PoolRemoteQuery.cs b/geode-client-native/quickstart/csharp/PoolRemoteQuery.cs
new file mode 100755
index 0000000..433b323
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/PoolRemoteQuery.cs
@@ -0,0 +1,123 @@
+/*
+ * The PoolRemoteQuery QuickStart Example.
+ * This examples creates pool using locator.
+ * This example takes the following steps:
+ *
+ * 1. Create a GemFire Cache.
+ * 2. Get the example Region from the Cache.
+ * 3. Populate some query objects on the Region.
+ * 4. Get the pool, get the Query Service from Pool. Pool is define in clientRemoteQueryWithPool.xml. Pool has locator to get the server. Apart from that pool is bind to server group "ServerGroup1".
+ * 5. Execute a query that returns a Result Set.
+ * 6. Execute a query that returns a Struct Set.
+ * 7. Execute the region shortcut/convenience query methods.
+ * 8. Close the Cache.
+ *
+ */
+// Use standard namespaces
+using System;
+
+// Use the GemFire namespace
+using GemStone.GemFire.Cache.Generic;
+
+// Use the "Tests" namespace for the query objects.
+using GemStone.GemFire.Cache.Tests.NewAPI;
+
+namespace GemStone.GemFire.Cache.Generic.QuickStart
+{
+  // The PoolRemoteQuery QuickStart example.
+  class PoolRemoteQuery
+  {
+    static void Main(string[] args)
+    {
+      try
+      {
+
+        CacheFactory cacheFactory = CacheFactory.CreateCacheFactory();
+       
+        Console.WriteLine("Connected to the GemFire Distributed System");
+
+        // Create a GemFire Cache with the "clientPoolRemoteQuery.xml" Cache XML file.
+        Cache cache = cacheFactory.Set("cache-xml-file", "XMLs/clientPoolRemoteQuery.xml").Create();
+
+        Console.WriteLine("Created the GemFire Cache");
+
+        // Get the example Region from the Cache which is declared in the Cache XML file.
+        IRegion<string, Portfolio> region = cache.GetRegion<string, Portfolio>("Portfolios");
+
+        Console.WriteLine("Obtained the Region from the Cache");
+        
+        // Register our Serializable/Cacheable Query objects, viz. Portfolio and Position.
+        Serializable.RegisterTypeGeneric(Portfolio.CreateDeserializable);
+        Serializable.RegisterTypeGeneric(Position.CreateDeserializable);
+
+        Console.WriteLine("Registered Serializable Query Objects");
+
+        // Populate the Region with some Portfolio objects.
+        Portfolio port1 = new Portfolio(1 /*ID*/, 10 /*size*/);
+        Portfolio port2 = new Portfolio(2 /*ID*/, 20 /*size*/);
+        Portfolio port3 = new Portfolio(3 /*ID*/, 30 /*size*/);
+        region["Key1"] = port1;
+        region["Key2"] = port2;
+        region["Key3"] = port3;
+
+        Console.WriteLine("Populated some Portfolio Objects");
+
+        //find the pool
+        Pool pool = PoolManager.Find("examplePool");
+
+        // Get the QueryService from the pool
+        QueryService<string, Portfolio> qrySvc = pool.GetQueryService<string, Portfolio>();
+
+        Console.WriteLine("Got the QueryService from the Pool");
+
+        // Execute a Query which returns a ResultSet.    
+        Query<Portfolio> qry = qrySvc.NewQuery("SELECT DISTINCT * FROM /Portfolios");
+        ISelectResults<Portfolio> results = qry.Execute();
+
+        Console.WriteLine("ResultSet Query returned {0} rows", results.Size);
+
+        // Execute a Query which returns a StructSet.
+        QueryService<string, Struct> qrySvc1 = pool.GetQueryService<string, Struct>();
+        Query<Struct> qry1 = qrySvc1.NewQuery("SELECT DISTINCT ID, status FROM /Portfolios WHERE ID > 1");
+        ISelectResults<Struct> results1 = qry1.Execute();
+
+        Console.WriteLine("StructSet Query returned {0} rows", results1.Size);
+
+        // Iterate through the rows of the query result.
+        int rowCount = 0;
+        foreach (Struct si in results1)
+        {
+          rowCount++;
+          Console.WriteLine("Row {0} Column 1 is named {1}, value is {2}", rowCount, si.Set.GetFieldName(0), si[0].ToString());
+          Console.WriteLine("Row {0} Column 2 is named {1}, value is {2}", rowCount, si.Set.GetFieldName(1), si[1].ToString());
+        }
+
+        // Execute a Region Shortcut Query (convenience method).
+        results = region.Query<Portfolio>("ID = 2");
+
+        Console.WriteLine("Region Query returned {0} rows", results.Size);
+
+        // Execute the Region selectValue() API.
+        object result = region.SelectValue("ID = 3");
+
+        Console.WriteLine("Region selectValue() returned an item:\n {0}", result.ToString());
+
+        // Execute the Region existsValue() API.
+        bool existsValue = region.ExistsValue("ID = 4");
+
+        Console.WriteLine("Region existsValue() returned {0}", existsValue ? "true" : "false");
+
+        // Close the GemFire Cache.
+        cache.Close();
+
+        Console.WriteLine("Closed the GemFire Cache");
+
+      }
+      // An exception should not occur
+      catch (GemFireException gfex)
+      {
+        Console.WriteLine("PoolRemoteQuery GemFire Exception: {0}", gfex.Message);
+      }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/PoolWithEndpoints.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/PoolWithEndpoints.cs b/geode-client-native/quickstart/csharp/PoolWithEndpoints.cs
new file mode 100755
index 0000000..abfcdfd
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/PoolWithEndpoints.cs
@@ -0,0 +1,99 @@
+/*
+ * The PoolWithEndpoints QuickStart Example.
+ *
+ * This example takes the following steps:
+ *
+ * 1. Create CacheFactory using the settings from the gfcpp.properties file by default.
+ * 2. Create a GemFire Cache.
+ * 3. Create Poolfactory with endpoint and then create pool using poolfactory.
+ * 4. Create a Example Region programmatically.
+ * 5. Put Entries (Key and Value pairs) into the Region.
+ * 6. Get Entries from the Region.
+ * 7. Invalidate an Entry in the Region.
+ * 8. Destroy an Entry in the Region.
+ * 9. Close the Cache.
+ *
+ */
+
+// Use standard namespaces
+using System;
+
+// Use the GemFire namespace
+using GemStone.GemFire.Cache.Generic;
+
+namespace GemStone.GemFire.Cache.Generic.QuickStart
+{
+  // The PoolWithEndpoints QuickStart example.
+  class PoolWithEndpoints
+  {
+    static void Main(string[] args)
+    {
+      try
+      {
+        // Create CacheFactory using the settings from the gfcpp.properties file by default.
+        CacheFactory cacheFactory = CacheFactory.CreateCacheFactory();
+
+        Console.WriteLine("Created CacheFactory");
+
+        // Create a GemFire Cache.
+        Cache cache = cacheFactory.SetSubscriptionEnabled(true).Create();
+
+        Console.WriteLine("Created the GemFire Cache");
+
+        //Create Poolfactory with endpoint and then create pool using poolfactory.
+        PoolFactory pfact = PoolManager.CreateFactory();
+        Pool pptr = pfact.AddServer("localhost", 40404).Create("examplePool");
+
+        RegionFactory regionFactory = cache.CreateRegionFactory(RegionShortcut.CACHING_PROXY);
+
+        Console.WriteLine("Created the Regionfactory");
+
+        // Create the example Region programmatically.
+        IRegion<string, string> region = regionFactory.SetPoolName("examplePool").Create<string, string>("exampleRegion");
+
+        Console.WriteLine("Created the Region Programmatically");
+
+        // Put an Entry (Key and Value pair) into the Region using the direct/shortcut method.
+        region["Key1"] = "Value1";
+
+        Console.WriteLine("Put the first Entry into the Region");
+
+        // Put an Entry into the Region by manually creating a Key and a Value pair.
+        string key = "key-123";
+        string value = "val-123";
+        region[key] = value;
+
+        Console.WriteLine("Put the second Entry into the Region");
+
+        // Get Entries back out of the Region.
+        string result1 = region["Key1"];
+
+        Console.WriteLine("Obtained the first Entry from the Region");
+
+        string result2 = region[key];
+
+        Console.WriteLine("Obtained the second Entry from the Region");
+
+        // Invalidate an Entry in the Region.
+        region.Invalidate("Key1");
+
+        Console.WriteLine("Invalidated the first Entry in the Region");
+
+        // Destroy an Entry in the Region.
+        region.Remove(key);
+
+        Console.WriteLine("Destroyed the second Entry in the Region");
+
+        // Close the GemFire Cache.
+        cache.Close();
+
+        Console.WriteLine("Closed the GemFire Cache");
+      }
+      // An exception should not occur
+      catch (GemFireException gfex)
+      {
+        Console.WriteLine("PoolWithEndpoints GemFire Exception: {0}", gfex.Message);
+      }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/PutAllGetAllOperations.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/PutAllGetAllOperations.cs b/geode-client-native/quickstart/csharp/PutAllGetAllOperations.cs
new file mode 100644
index 0000000..d511ed5
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/PutAllGetAllOperations.cs
@@ -0,0 +1,78 @@
+/*
+ * The PutAllGetAllOperations QuickStart Example.
+ *
+ * This example takes the following steps:
+ *
+ * 1. Create a GemFire Cache using CacheFactory. By default it will connect to "localhost" at port 40404".
+ * 2. Create a Example Region.
+ * 3. PutAll Entries (Key and Value pairs) into the Region.
+ * 4. GetAll Entries from the Region.
+ * 5. Close the Cache.
+ *
+ */
+
+// Use standard namespaces
+using System;
+using System.Collections.Generic;
+
+// Use the GemFire namespace
+using GemStone.GemFire.Cache.Generic;
+
+namespace GemStone.GemFire.Cache.Generic.QuickStart
+{
+  // The PutAllGetAllOperations QuickStart example.
+  class PutAllGetAllOperations
+  {
+    static void Main(string[] args)
+    {
+      try
+      {
+        //Create a GemFire Cache using CacheFactory. By default it will connect to "localhost" at port 40404".
+        Cache cache = CacheFactory.CreateCacheFactory().Create();
+
+        Console.WriteLine("Created the GemFire Cache");
+
+        //Set Attributes for the region.
+        RegionFactory regionFactory = cache.CreateRegionFactory(RegionShortcut.CACHING_PROXY);
+
+        //Create exampleRegion
+        IRegion<int, string> region = regionFactory.Create<int, string>("exampleRegion");
+        
+        Console.WriteLine("Created exampleRegion");
+
+        // PutAll Entries (Key and Value pairs) into the Region.
+        Dictionary<int, string> entryMap = new Dictionary<int, string>();
+        for (Int32 item = 0; item < 100; item++)
+        {
+          int key = item;
+          string value = item.ToString();
+          entryMap.Add(key, value);
+        }
+        region.PutAll(entryMap);
+        Console.WriteLine("PutAll 100 entries into the Region");
+        
+        //GetAll Entries back out of the Region
+        List<int> keys  = new List<int>();
+        for (int item = 0; item < 100; item++)
+        {
+          int key = item;
+          keys.Add(key);
+        }
+        Dictionary<int, string> values = new Dictionary<int, string>();
+        region.GetAll(keys.ToArray(), values, null, true);
+
+        Console.WriteLine("Obtained 100 entries from the Region");
+
+        // Close the GemFire Cache.
+        cache.Close();
+
+        Console.WriteLine("Closed the GemFire Cache");
+      }
+      // An exception should not occur
+      catch (GemFireException gfex)
+      {
+        Console.WriteLine("PutAllGetAllOperations GemFire Exception: {0}", gfex.Message);
+      }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/RefIDExample.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/RefIDExample.cs b/geode-client-native/quickstart/csharp/RefIDExample.cs
new file mode 100644
index 0000000..eb385ab
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/RefIDExample.cs
@@ -0,0 +1,103 @@
+/*
+ * The RefIDExample QuickStart Example.
+ * This example creates two pools through XML and sets region attributes using refid.
+ * This example takes the following steps:
+ *
+ * 1. Create a GemFire Cache.
+ * 2. Now it creates 2 Pools with the names poolName1, poolName2 respectively.
+ * 3. Sets the region attribute using refid.
+ * 4. Gets the region "root1" with poolName1, and region "root2" with poolName2.
+ * 5. Check for the region attribute set through refid.
+ * 6. Put Entries (Key and Value pairs) into both the Regions.
+ * 7. Get Entries from the Regions.
+ * 8. Invalidate an Entry in both the Regions.
+ * 9. Destroy an Entry in both the Regions.
+ * 10. Close the Cache.
+ *
+ */
+
+// Use standard namespaces
+using System;
+
+// Use the GemFire namespace
+using GemStone.GemFire.Cache.Generic;
+
+namespace GemStone.GemFire.Cache.Generic.QuickStart
+{
+  // The RefIDExample QuickStart example.
+  class RefIDExample
+  {
+    static void Main(string[] args)
+    {
+      try
+      {
+        Properties<string, string> prop = Properties<string, string>.Create<string, string>();
+        prop.Insert("cache-xml-file", "XMLs/clientRefIDExample.xml");
+        CacheFactory cacheFactory = CacheFactory.CreateCacheFactory(prop);
+        Cache cache = cacheFactory.Create();
+
+        Console.WriteLine("Created the GemFire Cache");
+
+        // Get the Regions from the Cache which is declared in the Cache XML file.
+        IRegion<string, string> region1 = cache.GetRegion<string, string>("root1");
+
+        Console.WriteLine("Obtained the root1 Region from the Cache");
+
+        IRegion<string, string> region2 = cache.GetRegion<string, string>("root2");
+
+        Console.WriteLine("Obtained the root2 Region from the Cache");
+
+        Console.WriteLine("For region root1 cachingEnabled is {0} ", region1.Attributes.CachingEnabled);
+
+        Console.WriteLine("For region root2 cachingEnabled is {0} ", region2.Attributes.CachingEnabled);
+
+        // Put an Entry (Key and Value pair) into the Region using the direct/shortcut method.
+        region1["Key1"] = "Value1";
+        region2["Key1"] = "Value1";
+
+        Console.WriteLine("Put the first Entries into both the Regions");
+
+        // Put an Entry into the Region by manually creating a Key and a Value pair.
+        string key = "123";
+        string value = "123";
+        region1[key] = value;
+        region2[key] = value;
+
+        Console.WriteLine("Put the second Entries into both the Regions.");
+
+        // Get Entries back out of the Region.
+        string result1 = region1["Key1"];
+        string result2 = region2["Key1"];
+
+        Console.WriteLine("Obtained the first Entry from both the Regions");
+
+        result1 = region1[key];
+        result2 = region2[key];
+
+        Console.WriteLine("Obtained the second Entry from both the Regions");
+
+        // Invalidate an Entry in the Region.
+        region1.Invalidate("Key1");
+        region2.Invalidate("Key1");
+
+        Console.WriteLine("Invalidated the first Entry in both the Regions.");
+
+        // Destroy an Entry in the Region.
+        region1.Remove(key);
+        region2.Remove(key);
+
+        Console.WriteLine("Destroyed the second Entry in both the Regions");
+
+        // Close the GemFire Cache.
+        cache.Close();
+
+        Console.WriteLine("Closed the GemFire Cache");        
+      }
+      // An exception should not occur
+      catch (GemFireException gfex)
+      {
+        Console.WriteLine("RefIDExample GemFire Exception: {0}", gfex.Message);
+      }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/RegisterInterest.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/RegisterInterest.cs b/geode-client-native/quickstart/csharp/RegisterInterest.cs
new file mode 100644
index 0000000..53d194a
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/RegisterInterest.cs
@@ -0,0 +1,103 @@
+/*
+ * The RegisterInterest QuickStart Example.
+ *
+ * This example takes the following steps:
+ *
+ * 1. Create CacheFactory using the user specified properties or from the gfcpp.properties file by default.
+ * 2. Create a GemFire Cache.
+ * 3. Get the example Region from the Cache.
+ * 4. Call registerAllKeys() and unregisterAllKeys() on the Region.
+ * 5. Call registerKeys() and unregisterKeys() on the Region.
+ * 6. Call registerRegex() and unregisterRegex() on the Region.
+ * 7. Close the Cache.
+ *
+ */
+// Use standard namespaces
+using System;
+using System.Collections.Generic;
+
+// Use the GemFire namespace
+using GemStone.GemFire.Cache.Generic;
+
+namespace GemStone.GemFire.Cache.Generic.QuickStart
+{
+  // The RegisterInterest QuickStart example.
+  class RegisterInterest
+  {
+    static void Main(string[] args)
+    {
+      try
+      {
+        //Create CacheFactory using the user specified properties or from the gfcpp.properties file by default.
+        Properties<string, string> prp = Properties<string, string>.Create<string, string>();
+        prp.Insert("cache-xml-file", "XMLs/clientRegisterInterest.xml");
+        CacheFactory cacheFactory = CacheFactory.CreateCacheFactory(prp);
+
+        Console.WriteLine("Created CacheFactory");
+
+        // Create a GemFire Cache with the "clientRegisterInterest.xml" Cache XML file.
+        Cache cache = cacheFactory.Create();
+
+        Console.WriteLine("Created the GemFire Cache");
+
+        // Get the example Region from the Cache which is declared in the Cache XML file.
+        IRegion<string, string> region = cache.GetRegion<string, string>("exampleRegion");
+
+        Console.WriteLine("Obtained the Region from the Cache");
+
+        // Register and Unregister Interest on Region for All Keys.
+        region.GetSubscriptionService().RegisterAllKeys();
+        region.GetSubscriptionService().UnregisterAllKeys();
+
+        Console.WriteLine("Called RegisterAllKeys() and UnregisterAllKeys()");
+
+        // Register and Unregister Interest on Region for Some Keys.
+        ICollection<string> keys = new List<string>();
+        keys.Add("123");
+        keys.Add("Key-123");
+
+        region.GetSubscriptionService().RegisterKeys(keys);
+        region.GetSubscriptionService().UnregisterKeys(keys);
+
+        Console.WriteLine("Called RegisterKeys() and UnregisterKeys()");
+
+        // Register and Unregister Interest on Region for Keys matching a Regular Expression.
+        region.GetSubscriptionService().RegisterRegex("Keys-*");
+        region.GetSubscriptionService().UnregisterRegex("Keys-*");
+
+        Console.WriteLine("Called RegisterRegex() and UnregisterRegex()");
+
+        //Register Interest on Region for All Keys with getInitialValues to populate the cache with values of all keys from the server.
+        region.GetSubscriptionService().RegisterAllKeys(false, null, true); // Where the 3rd argument is getInitialValues.
+        //Unregister Interest on Region for All Keys.
+        region.GetSubscriptionService().UnregisterAllKeys();
+
+        Console.WriteLine("Called RegisterAllKeys() and UnregisterAllKeys() with getInitialValues argument");
+    
+        //Register Interest on Region for Some Keys with getInitialValues.
+        region.GetSubscriptionService().RegisterKeys(keys, false, true); // Where the 3rd argument is getInitialValues.
+
+        //Unregister Interest on Region for Some Keys.
+        region.GetSubscriptionService().UnregisterKeys(keys);
+
+        Console.WriteLine("Called RegisterKeys() and UnregisterKeys() with getInitialValues argument");
+        
+        //Register and Unregister Interest on Region for Keys matching a Regular Expression with getInitialValues.
+        region.GetSubscriptionService().RegisterRegex("Keys-*", false, null, true);
+        region.GetSubscriptionService().UnregisterRegex("Keys-*");
+
+        Console.WriteLine("Called RegisterRegex() and UnregisterRegex() with getInitialValues argument");
+        
+        // Close the GemFire Cache.
+        cache.Close();
+
+        Console.WriteLine("Closed the GemFire Cache");
+      }
+      // An exception should not occur
+      catch (GemFireException gfex)
+      {
+        Console.WriteLine("RegisterInterest GemFire Exception: {0}", gfex.Message);
+      }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/RemoteQuery.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/RemoteQuery.cs b/geode-client-native/quickstart/csharp/RemoteQuery.cs
new file mode 100644
index 0000000..4c1e3dd
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/RemoteQuery.cs
@@ -0,0 +1,142 @@
+/*
+ * The RemoteQuery QuickStart Example.
+ *
+ * This example takes the following steps:
+ *
+ * 1. Create a GemFire Cache Programmatically.
+ * 2. Create the example Region Programmatically.
+ * 3. Populate some query objects on the Region.
+ * 4. Execute a query that returns a Result Set.
+ * 5. Execute a query that returns a Struct Set.
+ * 6. Execute the region shortcut/convenience query methods.
+ * 7. Close the Cache.
+ *
+ */
+
+// Use standard namespaces
+using System;
+
+// Use the GemFire namespace
+using GemStone.GemFire.Cache.Generic;
+
+// Use the "Tests" namespace for the query objects.
+using GemStone.GemFire.Cache.Tests.NewAPI;
+
+namespace GemStone.GemFire.Cache.Generic.QuickStart
+{
+  // The RemoteQuery QuickStart example.
+  class RemoteQuery
+  {
+    static void Main(string[] args)
+    {
+      try
+      {
+        // Create a GemFire Cache Programmatically.
+        CacheFactory cacheFactory = CacheFactory.CreateCacheFactory();
+        Cache cache = cacheFactory.SetSubscriptionEnabled(true).Create();
+
+        Console.WriteLine("Created the GemFire Cache");
+
+        RegionFactory regionFactory = cache.CreateRegionFactory(RegionShortcut.CACHING_PROXY);
+
+        // Create the example Region programmatically.
+        IRegion<string, Portfolio> region = regionFactory.Create<string, Portfolio>("Portfolios");
+
+        Console.WriteLine("Created the Region Programmatically.");    
+
+        // Register our Serializable/Cacheable Query objects, viz. Portfolio and Position.
+        Serializable.RegisterTypeGeneric(Portfolio.CreateDeserializable);
+        Serializable.RegisterTypeGeneric(Position.CreateDeserializable);
+
+        Console.WriteLine("Registered Serializable Query Objects");
+
+        // Populate the Region with some Portfolio objects.
+        Portfolio port1 = new Portfolio(1 /*ID*/, 10 /*size*/);
+        Portfolio port2 = new Portfolio(2 /*ID*/, 20 /*size*/);
+        Portfolio port3 = new Portfolio(3 /*ID*/, 30 /*size*/);
+        region["Key1"] = port1;
+        region["Key2"] = port2;
+        region["Key3"] = port3;
+
+        Console.WriteLine("Populated some Portfolio Objects");
+
+        // Get the QueryService from the Cache.
+        QueryService<string, Portfolio> qrySvc = cache.GetQueryService<string, Portfolio>();
+
+        Console.WriteLine("Got the QueryService from the Cache");
+
+        // Execute a Query which returns a ResultSet.    
+        Query<Portfolio> qry = qrySvc.NewQuery("SELECT DISTINCT * FROM /Portfolios");
+        ISelectResults<Portfolio> results = qry.Execute();
+
+        Console.WriteLine("ResultSet Query returned {0} rows", results.Size);
+
+        // Execute a Query which returns a StructSet.
+        QueryService<string, Struct> qrySvc1 = cache.GetQueryService<string, Struct>();
+        Query<Struct> qry1 = qrySvc1.NewQuery("SELECT DISTINCT ID, status FROM /Portfolios WHERE ID > 1");
+        ISelectResults<Struct> results1 = qry1.Execute();
+
+        Console.WriteLine("StructSet Query returned {0} rows", results1.Size);
+
+        // Iterate through the rows of the query result.
+        int rowCount = 0;
+        foreach (Struct si in results1)
+        {
+          rowCount++;
+          Console.WriteLine("Row {0} Column 1 is named {1}, value is {2}", rowCount, si.Set.GetFieldName(0), si[0].ToString());
+          Console.WriteLine("Row {0} Column 2 is named {1}, value is {2}", rowCount, si.Set.GetFieldName(0), si[1].ToString());
+        }
+
+        // Execute a Region Shortcut Query (convenience method).
+        results = region.Query<Portfolio>("ID = 2");
+
+        Console.WriteLine("Region Query returned {0} rows", results.Size);
+
+        // Execute the Region selectValue() API.
+        object result = region.SelectValue("ID = 3");
+
+        Console.WriteLine("Region selectValue() returned an item:\n {0}", result.ToString());
+
+        // Execute the Region existsValue() API.
+        bool existsValue = region.ExistsValue("ID = 4");
+
+        Console.WriteLine("Region existsValue() returned {0}", existsValue ? "true" : "false");
+
+        //Execute the parameterized query
+        //Populate the parameter list (paramList) for the query.
+        //TODO:remove once query service is generic
+        QueryService<string, Struct> pqrySvc = cache.GetQueryService<string, Struct>();
+
+        Query<Struct> pquery = pqrySvc.NewQuery("SELECT DISTINCT ID, status FROM /Portfolios WHERE ID > $1 and status=$2");
+
+        object[] paramList = new object[2];
+        paramList[0] = 1; //param-1
+        paramList[1] = "active"; //param-2
+
+        ISelectResults<Struct> pqresults = pquery.Execute(paramList);
+
+        Console.WriteLine("Parameterized Query returned {0} rows", pqresults.Size);
+
+        // Iterate through the rows of the query result.
+        rowCount = 0;
+        foreach (Struct st in pqresults)
+        {
+          rowCount++;
+          Console.WriteLine("Row {0} Column 1 is named {1}, value is {2}", rowCount, st.Set.GetFieldName(0), st[0].ToString());
+          Console.WriteLine("Row {0} Column 2 is named {1}, value is {2}", rowCount, st.Set.GetFieldName(0), st[1].ToString());
+        }
+        
+        // Close the GemFire Cache.
+        cache.Close();
+
+        Console.WriteLine("Closed the GemFire Cache");
+        
+      }
+      // An exception should not occur
+      catch (GemFireException gfex)
+      {
+        Console.WriteLine("RemoteQuery GemFire Exception: {0}", gfex.Message);
+      }
+    }
+  }
+}


[44/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/CacheRunner/README.html
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/CacheRunner/README.html b/geode-client-native/examples/clicache/CacheRunner/README.html
new file mode 100644
index 0000000..dff87ea
--- /dev/null
+++ b/geode-client-native/examples/clicache/CacheRunner/README.html
@@ -0,0 +1,653 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<HTML>
+        <IMG SRC="../../../docs/PIVOTAL_GemFire_220x100.png" BORDER="0">
+	<HEAD>
+		<TITLE>CacheRunner: GemFire Native Client C# Example</TITLE>
+		<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+		<META http-equiv="Content-Style-Type" content="text/css">
+		<META content="Adobe FrameMaker 7.0/HTML Export Filter" name="GENERATOR">
+		<LINK href="DocIndex.css" type="text/css" charset="ISO-8859-1" rel="STYLESHEET">
+	</HEAD>
+	<BODY>
+        <IMG SRC="../../../docs/PIVOTAL_GemFire_190x81.png" BORDER="0">
+	<DIV>
+              <h1 align="center"><a name="Top" id="Top"></a>CacheRunner</h1>
+			  <h2 align="center"> Pivotal GemFire&#174; Native Client </h2>
+			  <h2 align="center">C# Programming Example</h2>
+    </DIV>
+            <DIV>
+              <P>The <code>CacheRunner</code> C# example is an interactive program for modifying and viewing GemFire cache contents as a C# client interacts with a Java cache server. The <code>CacheRunner</code> program joins the distributed system, creates a cache, and then accepts command-line input for inspecting, modifying, and remotely querying the cache while working with a cache server. XML files are provided to configure <code>CacheRunner</code> for different functional operations or behavior.</P>
+              <blockquote>
+                <p><em>You can review the C# source code for this example by opening the files in the <code>cli_CacheRunner</code> directory that have a <code>.cs</code> file extension. </em></p>
+              </blockquote>
+              <P>This example is divided into three parts, with each part requiring a different XML configuration file for the Java cache server. <code>CacheRunner</code> is also configured using a local <code>gfcpp.properties</code> file.</P>
+              <ul>
+                        <li><em><a href="#part1">Part 1: Inspecting and Modifying the Cache</a></em> demonstrates cache operations using two C# native clients with a GemFire Java cache server. It shows how to <code>put</code> and <code>get</code> data between clients, and how to derive a complex number as a user-defined class for use as a key or value. You start two C# client instances and see how a <code>put</code> value in one can be gotten in another as the cache server is updated with the new values. This part uses server configuration file <code><a href="./cacherunner.xml" target="_blank">cacherunner.xml</a></code>. The procedures describing non-cacheable and cacheable values use client configuration files <code><a href="./tcr_cacheless.xml" target="_blank">tcr_cacheless.xml</a></code> and <code><a href="./tcr_cache.xml" target="_blank">tcr_cache.xml</a></code>. </li>
+                        <br>                      
+ 				    <li><em><a href="#part2">Part 2: Remote Querying</a></em> demonstrates how to initiate a query from a C# client that is executed on data stored on a Java cache server. The query results are returned to the C# client. This part uses server configuration file <code><a href="./csQueryPortfolios.xml" target="_blank">csQueryPortfolios.xml</a></code>. If no XML file is specified when <code>CacheRunner</code> is started, it's configured using <a href="./tcr_cache.xml" target="_blank"><code>tcr_cache.xml</code></a> by default. </li>
+ 					<br>
+ 				    <li><em><a href="#part3">Part 3: High Availability</a> </em> shows how you can set up redundant cache servers in case the primary server fails.</li>
+  </ul>
+ 				  <P>In the procedures, the lines you type are shown in a <code> <strong>boldface fixed</strong></code> font. System output is shown in a <code>regular fixed</code> font.
+                      </P><br>
+</DIV>
+
+<DIV>
+<H2>
+<a name="configuring_environment" id="configuring_environment"></a>Configuring the Environment</H2>
+<P>
+Examples that interact with a Java cache server require specific environment configurations so the cache server will run properly. Follow the configuration steps listed below that apply to your operating system: </P>
+</DIV>
+ <DIV>
+<ol>
+  <li>From the GemFire product installation directory, configure your environment settings by following the steps in <code>examples/EnvSetup.html</code>. Refer to the system configuration information in the <em>GemFire User's Guide</em> if you need help with   this step.<br>
+      <br>
+  <li>Set the <code>JAVA_HOME</code> and <code>GF_JAVA_HOME</code>  environment variables to your installed Java JRE or JDK. See the installation information in the <em>GemFire User's Guide</em> for the   versions of Java that are compatible with GemFire. The <code>JAVA_HOME</code> setting is for your applications, and  <code>GF_JAVA_HOME</code> is for the GemFire scripts.  You must have a compatible Java JRE or JDK installed  and you must set <code>JAVA_HOME</code> and <code>GF_JAVA_HOME</code> to point to it.<br>
+      <br>
+  <li>Add <code>$JAVA_HOME/bin</code> to the start of your <code>PATH</code>. <br>
+</ol>
+<p>The following is a list of the environment configuration commands for the <code>CacheRunner</code> example. Choose the set of commands that are appropriate for your operating system. The text that you type is shown in bold.
+  These configurations only need to be performed for the sessions that invoke the Java cache server.</p>
+<p><strong>Bourne and Korn shells (sh, ksh, bash)</strong></p>
+<blockquote>
+  <p>    <code>% <strong>cd GemFireInstallDirectory</strong><br>
+    % <strong>JAVA_HOME=&lt;installed JRE PATH&gt;; export JAVA_HOME</strong><br>
+    % <strong>GF_JAVA_HOME=$JAVA_HOME; export GF_JAVA_HOME</strong><br>
+    % <strong>PATH=$JAVA_HOME/bin:$PATH; export PATH</strong></code></p>
+</blockquote>
+<p><strong>Windows</strong></p>
+<blockquote>
+  <p><code>&gt; <strong>cd GemFireInstallDirectory</strong><br>
+&gt; <strong>set JAVA_HOME=&lt;installed JRE PATH&gt;</strong><br>
+&gt; <strong>set GF_JAVA_HOME=%JAVA_HOME%</strong><br>
+&gt; <strong>set PATH=%JAVA_HOME%\bin;%PATH%</strong> </code></p>
+</blockquote>
+<a name="part1"></a><br>
+<br>
+</DIV>
+
+<DIV>
+<hr size="3" noshade>
+<h1>Part 1: Inspecting and Modifying the Cache</h1>
+<hr size="3" noshade>
+</DIV>
+
+ <DIV>
+   <h2>CacheRunner Configuration Files </h2>
+   <P>
+The <code>CacheRunner</code> C# example uses a GemFire cache server configuration file called <code><a href="./cacherunner.xml" target="_blank">cacherunner.xml</a></code>. When the Java cache server starts, <code>cacherunner.xml</code> creates two regions <code>root</code> and <code>listenerWriterLoader</code>. This is a description of each cache server region and how they are configured:</P>
+   <UL>
+  <LI CLASS="Bulleted">root &#151; The root region for the cache server. The region's scope is <code>distributed-no-ack</code>, and <code>notify-by-subscription</code> is set to <code>true</code>.</LI>
+  <LI CLASS="Bulleted"><code> listenerWriterLoader</code> &#151; A region with <code>distributed-ack</code> scope and  <code>mirror-type</code> set to <code>keys-values</code>.</LI>
+  </UL>
+<p>The <code>CacheRunner</code> application comes with XML configuration files that configure the cache server and the local client cache to demonstrate various operations with the cache server. This example does not use <code>tcr_hacacheless.xml</code>.</p>
+<UL><LI CLASS="Bulleted"><code><a href="./tcr_cache.xml" target="_blank">tcr_cache.xml</a></code> &#151; The <code>listenerWriterLoader</code> region establishes an endpoint connection with the server and performs distributed caching operations by receiving updates from the cache server. If <code>CacheRunner.exe</code> is run without specifying an XML file, it is automatically configured using <code>tcr_cache.xml</code>.</LI>
+  <LI CLASS="Bulleted"><code><a href="./tcr_hacache.xml" target="_blank">tcr_hacache.xml</a></code> &#151; Configures the client for high availability by specifying multiple servers for storing data and setting a server redundancy level.</LI>
+  <LI CLASS="Bulleted"><code><a href="./tcr_cacheless.xml" target="_blank">tcr_cacheless.xml</a></code> &#151; The <code>listenerWriterLoader</code> region establishes an endpoint connection with the server and receives data from the cache server. Entries retrieved from the cache server are not retained in the client's local cache because the <code>caching-enabled</code> region attribute is set to <code>false</code>. The <code>Portfolios</code> region is used for remote querying. </LI>
+</UL>
+<P>
+These procedures introduce a few of the <code> CacheRunner</code>
+ commands. For information on the others, enter <strong>
+ <code>help</code></strong>
+ or <strong>
+ <code>?</code></strong>
+ at the session prompt.</P>
+<P>In the procedures, the lines you type are shown in a <code> <strong>boldface fixed</strong></code> font. System output is shown in a <code>regular fixed</code> font.</P>
+<br>
+ </DIV>
+ <DIV>
+                      <H2> <a name="starting_application_processes" id="starting_application_processes"></a>Starting the Cache Server </H2>
+ 				  <P> To start the cache server, create a session from the GemFire product installation directory and complete the following steps. </P>
+    </DIV>
+ 				<DIV>
+                      <OL>
+                        <LI CLASS="Numbered-1st">
+                          <p>Configure the session environment according to the steps listed in <a href="#configuring_environment">Configuring the Environment</a><a href="..\EnvSetup.html" target="_blank"></a>.</p>
+                        </LI>
+                        <LI CLASS="Numbered">Go to the <code>cli_CacheRunner</code> directory, then start the cache server with the local <code>cacherunner.xml</code> file:
+                          <blockquote>
+                              <p><strong> <code>cd examples\cli_CacheRunner</code></strong></p>
+                              <p><strong><code>cacheserver start cache-xml-file=cacherunner.xml</code></strong></p>
+                          </blockquote>
+                          <P>The cache server is initialized using the configurations in <code>cacherunner.xml</code>. A message similar to the following appears, indicating that the cache server is running:</P>
+                        </LI>
+                        <blockquote>
+                          <p> <code>Cacheserver pid: 2120 status: running</code><br>
+                      </p>
+                        </blockquote>
+                      </OL>
+    </DIV>
+ 				<DIV>
+                      <H2> <a name="starting_application_processes" id="starting_application_processes"></a>Starting Two CacheRunner Clients Using tcr_cache.xml </H2>
+ 				  <P> Start two <code>CacheRunner</code> clients and configure their caches using <code>tcr_cache.xml</code> by following these steps:</P>
+ 	  </DIV>
+ 				<DIV>
+                      <OL>
+                        <LI CLASS="Numbered-1st">
+                          <p>Create two sessions for two <code>CacheRunner</code> clients.</p>
+                        </LI>
+                        <LI CLASS="Numbered-1st">
+                        <p><span class="Numbered">In each session, go to the <code>cli_CacheRunner</code> directory</span>:                                                </LI>
+                        <blockquote>
+                          <p><strong> <code>cd examples\cli_CacheRunner</code></strong></p>
+                        </blockquote>
+                        <LI CLASS="Numbered"> In each session, start the <code>CacheRunner</code> client with <code>tcr_cache.xml</code>:
+                          <blockquote>
+                              <p><strong><code>CacheRunner.exe tcr_cache.xml </code></strong> </p>
+                          </blockquote>
+                          <P><code>CacheRunner</code> is configured using the settings in <code><a href="./tcr_cache.xml" target="_blank">tcr_cache.xml</a></code>. The following command prompt appears for both C# clients:</P>
+                        </LI>
+                          <blockquote>
+                              <p><code>/root: chrgn, lsrgn, get, put, exec, query, existsvalue, selectvalue, quit:</code></p>
+                          </blockquote>
+                          <p>This is a brief description of the prompts and commands you can uses with <code>CacheRunner</code>. See the GemFire product documentation for more information about these commands:</p>
+                          <ul>
+                            <li><code>/root:</code> &#151; A prompt that indicates the current region.</li>
+                            <li><code> chrgn</code> &#151; Navigate to a different region.</li>
+                            <li><code>lsrgn</code> &#151; List all regions in cache.</li>
+                            <li><code>get</code> &#151; Get a value from the cache server and add it to the local cache.</li>
+                            <li><code>put</code> &#151; Put a value into the local cache and propagate the value to the cache server.</li>
+                            <li><code>exec</code> &#151; Execute a query.</li>
+                            <li><code>query</code> &#151; Run a query shortcut method.</li>
+                            <li><code>existsvalue</code> &#151;Run a query shortcut method.</li>
+                            <li><code>selectvalue</code> &#151;Run a query shortcut method.</li>
+                            <li><code>quit</code> &#151; Quit the <code>CacheRunner</code> application.</li>
+ 						<br>
+                          </ul>
+ 					 
+                      </OL>
+                      
+    </DIV>
+
+                    <DIV>
+                      <H2> Entering and Receiving Data in the Clients </H2>
+ 				  <P> In this exercise, you <code>put</code> data in one client and the client updates the cache server region with the new data. Next, the second client does a <code>get</code> to retrieve the updated values from the cache server and update its local cache. The cache listeners for the clients report the cache events that occur for each <code>put</code> and <code>get</code>. </P>
+ 	  </DIV>
+ <DIV>
+                      <P><strong> In both CacheRunner clients </strong></P>
+ 				  <p>In both clients, go to the <code> listenerWriterLoader</code> region:</p>
+ 				  <OL>
+ 				    <blockquote>
+ 				      <p><code><strong>
+ 		            chrgn listenerWriterLoader</strong></code><br>
+      </blockquote>
+   </OL>
+ 				  <p><strong> In the first CacheRunner client:</strong></p>
+ 				    <OL>
+ 				      <LI CLASS="Numbered">Add an entry:
+ 				        <blockquote>
+ 				          <p><strong> <code>put key1 first</code></strong></p>
+ 				        </blockquote>
+ 			            <P> The cache listener reports the events related to the <code>put</code> command. The entry is identified as a string, and the cache server is updated with the new entry.</P>
+ 			            <blockquote>
+ 			              <p> <code>--- Received afterCreate event of: key1<br>
+ 		                  Put string -- key: key1 value: first </code></p>
+ 				        </blockquote>
+ 			            <P> The second <code>CacheRunner</code> client also receives an <code>afterCreate</code> event message from the server for the <code>put</code>:</P>
+ 			            <blockquote>
+ 			              <p> <code>--- Received afterCreate event of: key1</code></p>
+ 				        </blockquote>
+ 				      </LI>
+ 				      <LI CLASS="Numbered"> Add another entry in the first client:
+ 				        <blockquote>
+ 				          <p><strong><code>put key2 7.2+3i</code></strong></p>
+ 			            </blockquote>
+ 				        <P> The cache listener reports the events related to the <code>put</code> command. The entry is identified as a complex number, and the cache server is updated with the new entry.</P>
+ 				        <blockquote>
+ 				          <p> <code>--- Received afterCreate event of: key2<br>
+ 			              Put complex -- key: key2 value: 7.2+3i</code></p>
+ 			            </blockquote>
+ 			          <P> The second <code>CacheRunner</code> client also receives an <code>afterCreate</code> event message from the server for the <code>put</code>:</P>
+ 			          <blockquote>
+ 			            <p> <code>--- Received afterCreate event of: key2</code></p>
+ 				      </blockquote>
+ 			          </LI>
+      </OL>
+ 				    <br>
+ 				      <P><strong>In the second CacheRunner client </strong></P>
+ 				      <OL>
+ 				        <LI CLASS="Numbered">Get the <code>key1</code> entry from the cache server that was added by the first client:
+                              <blockquote>
+                                <p><strong> <code>get key1</code></strong></p>
+                            </blockquote>
+                            <P> The key name and value are retrieved from the cache server and displayed:                              </P>
+                            <blockquote>
+                              </code></strong><code>Get [CacheableString] -- key: key1 value: first </code>
+                              </p>
+                            </blockquote>
+                            </LI>
+ 				        <LI CLASS="Numbered"> Enter a new value for <code>key1</code>:
+ 				          <blockquote>
+                                  <p><strong><code>put key1 second </code></strong></p>
+ 			              </blockquote>
+ 						  <P> The cache listener reports the events related to the <code>put</code> command, identifying the entry as a string. The cache server is updated with the new value for <code>key1</code>.</P>
+ 			              <blockquote>
+                                <p> <code>--- Received afterUpdate event of: key1<br>
+                                Put string -- key: key1 value: second </code></p>
+ 		                  </blockquote>
+ 				        </LI>
+ 			          </OL>
+ 				      
+ 				    <br>
+ 				      <P><strong>In the first CacheRunner client</strong></P>
+       Get the new <code>key1</code> entry<span class="Numbered"> from the cache server that was added by </span>the second client:
+            <blockquote>
+                <p><strong> <code>get key1</code></strong></p>
+            </blockquote>
+            <P> The key name and new value are retrieved from the cache server: </P>
+            <blockquote> </code></strong><code>Get [CacheableString] -- key: key1 value: second</code></blockquote><br><br>
+            
+    </DIV>
+
+
+    <DIV>
+ 				<H2> Stopping the Cache Server and Clients </H2>
+ 		        <P>To complete the procedures in Part 1 and prepare for Part 2, the Java cache server and the two C# clients must be stopped. However, their sessions need to remain open so the cache server and clients can be started again from those sessions using a different XML configuration file. </P>
+                    <ol>
+                      <li>Stop the cache server, but leave its session open:      
+                          <blockquote>
+                            <strong><code>cacheserver stop</code></strong>
+                          </blockquote>
+ 				  </li>
+                      <li>Stop both C# clients:
+
+                                                <blockquote>
+                                                  <p><strong><code>quit</code></strong></p>
+                                                </blockquote>
+ 				  </li>
+ 				  <li>Close one of the C# client sessions. Only one client is needed for <em>Part 2: Remote Querying</em> and <em>Part 3: High Availability</em>.
+                                                <blockquote>
+                                                  <p><strong><code>exit</code></strong></p>
+                                                </blockquote>
+ 				  </li>
+                    </ol>
+                    <p><a name="part2" id="part2"></a><br> 				  
+                    </p>
+    </DIV>
+
+<DIV>
+<hr size="3" noshade>
+<h1>Part 2: Remote Querying</h1>
+<hr size="3" noshade>
+</DIV>
+
+          <DIV>
+            <P>These procedures introduce some of the querying commands available for the native client. The <code>CacheRunner</code> C# client accepts query strings in input, runs them against the cached data stored on the cache server, then returns the query results to the C# client.</P>
+            <P><br>
+</P>
+   </DIV>
+
+ <DIV>
+                      <H2> <a name="starting_application_processes" id="starting_application_processes"></a>Starting the Cache Server and Client </H2>
+ 				  <P> To start the cache server, complete the following steps using the open cache server and client sessions: </P>
+    </DIV>
+
+ 				<DIV>
+ 				  <OL><LI CLASS="Numbered-1st">
+                        <p>In the cache server session, add the classes for <code>javaobject.jar</code> to your <code>CLASSPATH</code> by entering the following in a single line: </p>
+                        </LI>
+                        <blockquote>
+                          <p><strong> <code>set CLASSPATH=examples\cli_CacheRunner\javaobject.jar;%CLASSPATH%</code></strong></p>
+                        </blockquote>
+                        <p> The file <code>javaobject.jar</code> is required for registering the <code>Portfolio</code> and <code>Position</code> objects on the cache server for remote querying.</p>
+                        <LI CLASS="Numbered">Make sure the <code>cli_CacheRunner</code> directory is still the current working directory. If it isn't, then set it.
+                          <blockquote>
+                              <p><strong> <code>cd examples\cli_CacheRunner</code></strong></p>
+                          </blockquote>
+                        <LI CLASS="Numbered">Start the cache server with  <code>csQueryPortfolios.xml</code>: 					  
+ 					  <blockquote>
+                              <p><strong><code>cacheserver start cache-xml-file=csQueryPortfolios.xml</code></strong></p>
+                          </blockquote>
+                          <P>The cache server is initialized using the configurations in <code><a href="./csQueryPortfolios.xml" target="_blank">csQueryPortfolios.xml</a></code>. The XML file sets up a <code>root</code> region  on the server named <code>DistRegionAck</code> with scope set to <code>distributed-ack</code>. It also creates a <code>Portfolio</code> data object on the server for querying, along with five stock portfolio objects whose keys are the portfolio ID. A message similar to the following appears, indicating that the cache server is running:</P>
+                        </LI>
+                        <blockquote>
+                          <p> <code>Cacheserver pid: 2120 status: running</code></p>
+                        </blockquote>
+                        <LI CLASS="Numbered">In the client session,  start the <code>CacheRunner</code> client with <code><a href="./tcr_cacheless.xml" target="_blank">tcr_cacheless.xml</a></code> to create a <code>Portfolios</code> client region for the querying exercises.
+                          <blockquote>
+                              <p><strong><code>cacherunner.exe tcr_cacheless.xml</code></strong></p>
+                          </blockquote>
+                      </OL>
+    </DIV>
+
+<DIV>
+  <h2>Executing Queries</h2>
+  <P>
+You invoke the <code>execute</code> method on the client to submit several queries that are run on the cache server, then the results are returned to the local client cache. You only need to use one of the <code>CacheRunner</code> clients for querying; the other client can be set aside for now. </P>
+</DIV>
+
+<DIV>
+<P CLASS="Head-D"><strong>
+In the CacheRunner client</strong>:</P>
+
+<ol>
+  <li>Go to the client's <code>Portfolios</code> region:</li>
+  <blockquote>
+    <p><code><strong>chrgn Portfolios</strong></code>  </p>
+  </blockquote>
+  <li>This query returns the status of the cache entries for the <code>/Portfolios</code> region on the cache server. Enter the following command:  </li>
+  <blockquote>
+    <p><code><strong>exec select distinct ID, status from  /Portfolios</strong></code></p>
+  </blockquote>
+      <P>
+      Query output:</P>
+         <blockquote>
+      <p> <code>Columns:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;status<br>
+      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Result (0): 4 || inactive || <br>
+      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Result (0): 5 || active || <br>
+      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Result (0): 2 || inactive || <br>
+      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Result (0): 3 || active || <br>
+      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Result (0): 1 || active || 
+      </code></p>
+    </blockquote>
+      <li>Run a second query. 
+        This query returns the row IDs on the cache server:
+        <blockquote>
+      <p><strong> <code><strong>exec select distinct ID from /Portfolios</strong></code></strong></p>
+   </blockquote>
+      <P>
+      Query output:</P>
+   <blockquote>
+      <p><code>        Result 1: 1 <br>
+        Result 2: 2 <br>
+        Result 3: 3 <br>
+        Result 4: 4 <br>
+        Result 5: 5
+      </code></p>
+        </blockquote>
+    </li>
+      <li>Run a third query. This query returns the object types for the <code>root/Portfolios</code> region on the cache server:
+        <blockquote>
+          <p><strong>
+          <code><strong>exec select distinct ID, pkid, getType from /Portfolios where 1=1</strong></code></strong></p>
+     </blockquote>
+      <P>
+      Query output:</P>
+         <blockquote>
+      <p> <code>Columns:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pkid&nbsp;&nbsp;&nbsp;&nbsp;getType<br>
+      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Result (0): 2 || 2 || type2 || <br>
+      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Result (0): 1 || 1 || type1 || <br>
+      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Result (0): 3 || 3 || type3 || <br>
+      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Result (0): 5 || 5 || type2 || <br>
+      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Result (0): 4 || 4 || type1 ||</code></p>
+    </blockquote>
+    </li>
+  </ol>
+</DIV>
+<br>
+<DIV>
+  <h2>Executing Region Query Shortcuts </h2>
+  <P>
+In these exercises you use region query shortcut  methods to submit queries to the cache server, then the results are returned to the local client cache. Query shortcuts take the query &quot;predicate&quot; as a parameter (the part after the <code>WHERE</code> clause), or they can take a normal full query. The three query shortcut methods are described below: </P>
+  <UL>
+    <LI CLASS="Bulleted"><code>query</code> &#151; Executes a query and returns the results. <code></code></LI>
+    <LI CLASS="Bulleted"><code> existsValue</code> &#151;Executes a query and returns <code>TRUE</code> or <code>FALSE</code> based on whether any results (rows) are obtained. </LI>
+    <LI CLASS="Bulleted"><code>selectValue</code> &#151;Executes a query and returns only a single result (row). If no results are obtained then it returns <code>NULL</code>. If more than one result (row) is obtained then a <code>QueryException</code> occurs.</LI>
+
+  </UL>
+
+</DIV>
+
+<DIV>
+<P CLASS="Head-D"><strong>
+In the CacheRunner client</strong>:</P>
+
+<ol>
+  <li>
+    Run this <code>query</code> shortcut, which returns the <code>Portfolios</code> objects with an <code>ID</code> of <code>1</code>:  </li>
+  <blockquote>
+    <p><code><strong>
+    query ID=1</strong></code></p>
+  </blockquote>
+      <P>
+      Query result:</P>
+         <blockquote>
+      <p> <code>Result 1: Portfolio [ID=1 status=active type=type1 pkid=1]<br>
+   P1:<br>
+   P2:</code></p>
+    </blockquote>
+      <P>
+      The <code>query</code> shortcut takes the predicate string <code>ID=1</code>, constructs the full query statement, then executes the query.  </P>
+      <li>Run this <code>existsValue</code> shortcut. 
+        The query returns either <code>True</code> or <code>False</code>, depending on whether the result is obtained.
+        <blockquote>
+      <p><strong> <code><strong>existsvalue ID=1</strong></code></strong></p>
+   </blockquote>
+      <P>
+      Query result:        </P>
+         <blockquote>
+           <p><code>      Result is True 
+      </code></p>
+    </blockquote>
+    </li>
+      <li>Run this <code>selectValue</code> shortcut. The query returns the object types  on the cache server for the specified ID:
+        <blockquote>
+          <p><strong>
+          <code><strong>selectValue ID=2</strong></code></strong></p>
+        </blockquote>
+      <P>
+      Query result:</P>
+         <blockquote>
+      <p> <code>Result : Portfolio [ID=2 status=inactive type=type2 pkid=2]<br>
+      P1:<br>
+   P2:
+      </code></p>
+    </blockquote><br>
+    </li>
+  </ol>
+
+</DIV>
+
+    <DIV>
+ 				<H2> Stopping the Cache Server and Client </H2>
+ 		        <P>To complete the procedures in Part 2 and prepare for <em>Part 3: High Availability </em>, the Java cache server and the C# client must be stopped. However, their sessions need to remain open so the cache server and client can be started again using a different XML configuration file. </P>
+                    <ol>
+                      <li>Stop the cache server, but leave its session open:      
+                        <blockquote>
+                          <blockquote>
+                            <p><strong> <code>cacheserver stop</code></strong></p>
+                          </blockquote>
+                      <li>Stop the <code>CacheRunner</code> client and leave its session open:
+
+                                                <blockquote>
+                                                  <p><strong><code>quit</code></strong></p>
+                                                </blockquote>
+ 			    </ol>
+                    <a name="part3" id="part3"></a></DIV>
+
+<DIV>
+<hr size="3" noshade>
+<h1>Part 3: High Availability</h1>
+<hr size="3" noshade>
+</DIV>
+
+ <DIV>
+   <h2>Running CacheRunner for Failover and High Availability </h2>
+   <P>The CacheRunner C# example demonstrates server failover to highly available client queue backups by failing over to a secondary cache server when the primary server becomes unavailable. </P>
+   <P>In the procedures, the lines you type are shown in a <code> <strong>boldface fixed</strong></code> font. System output is shown in a <code>regular fixed</code> font.</P>
+<br>
+ </DIV>
+
+ <DIV>
+   <h2>
+     Starting the Primary and Secondary Cache Servers</h2>
+   <P>
+To start the primary and secondary cache server, complete the following steps in the open cache server session:</P>
+</DIV>
+
+<DIV>
+  <OL><LI CLASS="Numbered">Make sure the <code>cli_CacheRunner</code> directory is still the current working directory. If it isn't, then set it.
+  <blockquote>
+   <p><strong>
+     <code>cd examples\cli_CacheRunner</code></strong></p>
+     </blockquote>
+ </LI>
+<LI CLASS="Numbered">Start the first cache server by running this command:
+   <blockquote>
+     <p><strong>
+       <code>cacheserver start cache-xml-file=cacherunner.xml -dir=gfecs1</code></strong></p>
+      </blockquote>
+   <P>The <code>gfecs1</code> directory contains a copy of <code><a href="./cacherunner.xml" target="_blank">cacherunner.xml</a></code>, which specifies 50505 for the BridgeServer port for the primary cache server.</P>
+ </LI>
+ <LI CLASS="Numbered">Start the second cache server by running this command:
+   <blockquote>
+     <p><strong>
+       <code>cacheserver start cache-xml-file=cacherunner2.xml -dir=gfecs2</code></strong></p>
+      </blockquote>
+   <P>The <code>gfecs2</code> directory contains a copy of <code><a href="./cacherunner2.xml" target="_blank">cacherunner2.xml</a></code>, which specifies 50506 for the BridgeServer port for the secondary cache server.</P>
+ </LI>
+ </OL>
+</DIV>
+
+ <DIV>
+   <h2>
+     Starting the  CacheRunner Client</h2>
+   <P>
+To start the <code>CacheRunner</code> client, complete the following steps in the open client session:</P>
+</DIV>
+
+ <DIV>
+   <OL><LI CLASS="Numbered-1st">
+   <p><span class="Numbered">Make sure the <code>cli_CacheRunner</code> directory is still the current working directory. If it isn't, then set it.</span></p>
+ </LI>
+ <blockquote>
+   <p><strong>
+     <code>cd examples\cli_CacheRunner</code></strong></p>
+   </blockquote>
+
+<LI CLASS="Numbered">
+Start the <code> CacheRunner</code>
+ client, specifying <code>tcr_hacache.xml</code>:
+ <blockquote>
+       <p><strong><code>cacherunner.exe tcr_hacache.xml</code></strong></p>
+   </blockquote>
+ <P>The <code>CacheRunner</code> client is initialized using the settings in <code><a href="./tcr_hacache.xml" target="_blank">tcr_hacache.xml</a></code> in the <code>cli_CacheRunner</code> directory. The XML specifies two cache-level server endpoints that the client connects to (50505 for the primary, and 50506 for the secondary). The <code>redundancy-level=1</code> attribute specifies the number of redundant servers to use in addition to the primary server.<br>
+</P>
+  </LI>
+</OL>
+</DIV>
+
+<DIV>
+  <h2>Performing Cache Operations to Update the Server </h2>
+  <P>
+In these steps you produce data in the <code>CacheRunner</code> local client cache. The cache servers receive the updated values.</P>
+</DIV>
+<DIV>
+  <OL>
+  <LI CLASS="Numbered">In the <code>CacheRunner</code> client, change it to the <code>listenerWriterLoader</code> region:
+    <blockquote>
+        <p><strong><code> chrgn listenerWriterLoader</code></strong>    </p>
+    </blockquote>
+  <LI CLASS="Numbered">Add an entry to the region:
+    <blockquote>
+      <p><strong>
+        <code>put entry1 ball str</code></strong></p>
+      </blockquote>
+    <P>
+      This creates an entry whose key is <code> entry1</code>
+      and whose value is the string <code>ball</code>. The cache servers are updated with the new entry. <br>
+</P>
+  </LI>
+  </OL>
+
+</DIV>
+
+<DIV>
+  <h2>Stopping the Primary Cache Server to Initiate Failover </h2>
+  <P>
+In this procedure you stop the primary cache server to initiate a server failover condition.</P>
+</DIV>
+<DIV>
+  <OL><LI CLASS="Numbered">Stop the primary cache server by running this command in the server session:
+    <blockquote>
+      <p><strong>
+        <code>cacheserver stop -dir=gfecs1</code></strong></p>
+      </blockquote>
+    <P>
+      Failover sets the secondary server as the new primary server:</P>
+  </LI>
+  <LI CLASS="Numbered">
+    In the client session, add an entry to the region:
+      <blockquote>
+        <p><strong>
+        <code>put entry2 bat str </code></strong></p>
+      </blockquote>
+     <P>
+      This creates an entry whose key is <code> entry2</code> and whose value is the string <code>bat</code>. The cache server is updated with the new entry.</P>
+  </LI>
+    <br>
+</OL>
+
+</DIV>
+
+<DIV>
+  <h2>Restarting the Stopped Cache Server and Initiating Another Failover </h2>
+  <P>
+Now restart the cache server that was previously stopped so both servers are running, then stop the other server to produce another failover condition.</P>
+</DIV>
+<DIV>
+  <OL>
+    <LI CLASS="Numbered">Restart the stopped cache server by running this command in the server session:
+      <blockquote>
+      <p><strong><code>cacheserver start cache-xml-file=cacherunner.xml -dir=gfecs1</code></strong></p>
+      </blockquote>
+    <P>
+      Now both cache servers are running.</P>
+  </LI>
+  <LI CLASS="Numbered">Stop the other cache server by running this command in the server session:
+    <blockquote>
+        <p><strong><code>cacheserver stop -dir=gfecs2</code></strong></p>
+      </blockquote>
+     <P>
+      Failover occurs, and the restarted server is now the only server running.</P>
+  </LI>
+  <LI CLASS="Numbered">In the client session, get the new entry from the server:
+    <blockquote>
+        <p><strong><code>get entry2</code></strong></p>
+      </blockquote>
+                            <P> The key name and value are retrieved from the cache server and displayed:                              </P>
+                            <blockquote>
+                              </code></strong><code>Get [CacheableString] -- key: entry2 value: bat </code>
+                              </p>
+                            </blockquote>
+  </LI>
+    <br>
+</OL>
+
+</DIV>
+
+ 	  <DIV>
+ 				<H2> Closing the Client and the Cache Server </H2>
+ 				  <OL>
+ 				    <LI CLASS="Numbered">In the client session, quit the  <code>CacheRunner</code> application and then exit the session:
+                          <blockquote>
+          <p><strong> <code>quit</code></strong><br>
+ 	  <strong> <code>exit</code></strong></p>
+      </blockquote>
+      </LI>
+
+                            <LI CLASS="Numbered">In the server session, stop the remaining cache server and then exit the session:
+                              <blockquote>
+                                <p><strong><code>cacheserver stop -dir=gfecs1</code></strong><br>
+                                <strong><code>exit</code></strong></p>
+                              </blockquote>
+                        </LI>
+            </OL>
+    </DIV>
+
+<br>
+       <DIV>
+            <H2> Changing System Parameters</H2>
+         <P>This product ships configured to run with default system properties. If you need to run in a non-default configuration, GemFire also takes a system-level configuration file. Copy the <code>gfcpp.properties</code> file into your <code>cli_CacheRunner</code> directory from the native client <code>defaultSystem</code> directory and edit it as needed. For example, to change the name of the <code>cache.xml</code> file, uncomment this line and change the file name:</P>
+         <P> <code>#cache-xml-file=cache.xml</code></P>
+         <P>When you are finished with the example, delete the copied <code>gfcpp.properties</code> file from the <code>cli_CacheRunner</code> directory so it can run with the default configuration.<br>
+           <br>
+            </P>
+       </DIV>
+       <a href="#Top">Top</a>
+          <P>&nbsp;</P>
+<p><span class=GramE>Copyright &#169; 2006-2014 Pivotal Software, Inc. All rights reserved.
+This product is protected by U.S. and international copyright and intellectual
+property laws. Pivotal products are covered by one or more patents listed at http://www.pivotal.io/patents. </p>
+	</BODY>
+</HTML>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/CqQuery/CqQuery.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/CqQuery/CqQuery.cs b/geode-client-native/examples/clicache/CqQuery/CqQuery.cs
new file mode 100644
index 0000000..5b516ac
--- /dev/null
+++ b/geode-client-native/examples/clicache/CqQuery/CqQuery.cs
@@ -0,0 +1,325 @@
+/*
+ * The CqQuery Example.
+ *
+ * This example takes the following steps:
+ *
+ */
+
+// Use standard namespaces
+using System;
+
+// Use the GemFire namespace
+using GemStone.GemFire.Cache;
+
+// Use the "Tests" namespace for the query objects.
+using GemStone.GemFire.Cache.Tests;
+
+namespace GemStone.GemFire.Cache.Examples
+{
+  // The CqQuery example.
+
+  //User Listener
+  public class MyCqListener : ICqListener
+  {
+    private int m_updateCnt;
+    private int m_createCnt;
+    private int m_destroyCnt;
+    private int m_errorCnt;
+    private int m_eventCnt;
+    private int m_id;
+    bool m_verbose;
+    public MyCqListener(int id, bool verbose)
+    {
+      m_updateCnt = 0;
+      m_createCnt = 0;
+      m_destroyCnt = 0;
+      m_errorCnt = 0;
+      m_eventCnt = 0;
+      m_id = id;
+      m_verbose = verbose;
+    }
+    public virtual void OnEvent(CqEvent ev)
+    {
+      m_eventCnt++;
+      Portfolio val = ev.getNewValue() as Portfolio;
+      CacheableString key = ev.getKey() as CacheableString;
+      CqOperationType opType = ev.getQueryOperation();
+      CqQuery cq = ev.getCq();
+      string opStr = "DESTROY";
+      if (opType == CqOperationType.OP_TYPE_CREATE) {
+        m_createCnt++;
+        opStr = "CREATE";
+      }
+      else if (opType == CqOperationType.OP_TYPE_UPDATE) {
+        m_updateCnt++;
+        opStr = "UPDATE";
+      }
+      else if (opType == CqOperationType.OP_TYPE_DESTROY) {
+        m_destroyCnt++;
+        opStr = "DESTROY";
+      }
+      if (m_eventCnt % 5000 == 0) {
+        if (m_verbose == true) {
+          Console.WriteLine("MyCqListener{0}::OnEvent called with key {1}, value ({2},{3}), op {4}.", m_id, key.Value, val.ID, val.Pkid, opStr);
+        }
+        else {
+          Console.WriteLine("cq{0}, listener{1}::OnEvent update count={2}, create Count={3}, destroy Count={4}, total count={5}", cq.Name, m_id, m_updateCnt, m_createCnt, m_destroyCnt, m_eventCnt);
+        }
+        Console.WriteLine("*******Type \'q\' to quit !!!! ******");
+      }
+    }
+    public virtual void OnError(CqEvent ev)
+    {
+      m_errorCnt++;
+      m_eventCnt++;
+      Console.WriteLine("MyCqListener{0}::OnError called", m_id);
+    }
+    public virtual void Close()
+    {
+      m_eventCnt++;
+      Console.WriteLine("MyCqListener{0}::close called", m_id);
+    }
+  }
+
+  class MyCacheListener : CacheListenerAdapter
+  {
+    private int m_eventCount;
+    private bool m_verbose;
+    private void check(EntryEvent ev, string opStr)
+    {
+      m_eventCount++;
+      Portfolio val = ev.NewValue as Portfolio;
+      CacheableString key = ev.Key as CacheableString;
+      if (m_eventCount % 3000 == 0) {
+        if (m_verbose == true) {
+          Console.WriteLine("MyCacheListener called with key {0}, value ({1},{2}), op {3}.", key.Value, val.ID, val.Pkid, opStr);
+        }
+        else {
+          Console.WriteLine("MyCacheListener::event count={0}", m_eventCount);
+        }
+        Console.WriteLine("*******Type \'q\' to quit !!!! ******");
+      }
+    }
+    public MyCacheListener(bool verbose)
+    {
+      m_eventCount = 0;
+      m_verbose = verbose;
+    }
+
+    public override void AfterCreate(EntryEvent ev)
+    {
+      check(ev, "AfterCreate");
+    }
+    public override void AfterUpdate(EntryEvent ev)
+    {
+      check(ev, "AfterUpdate");
+    }
+    public override void AfterDestroy(EntryEvent ev)
+    {
+      check(ev, "AfterDestroy");
+    }
+    public override void AfterInvalidate(EntryEvent ev)
+    {
+      check(ev, "AfterInvalidate");
+    }
+  }
+  class ContinuousQuery
+  {
+    private static string[] cqNames = new string[8]{
+  "MyCq_0",
+  "MyCq_1",
+  "MyCq_2",
+  "MyCq_3",
+  "MyCq_4",
+  "MyCq_5",
+  "MyCq_6",
+  "MyCq_7"
+};
+
+    private static string[] queryStrings = new string[8]{
+  "select * from /Portfolios p where p.ID < 4",
+  "select * from /Portfolios p where p.ID < 9",
+  "select * from /Portfolios p where p.ID < 12",
+  "select * from /Portfolios p where p.ID < 3",
+  "select * from /Portfolios p where p.ID < 14",
+  "select * from /Portfolios p where p.ID < 5",
+  "select * from /Portfolios p where p.ID < 6",
+  "select * from /Portfolios p where p.ID < 7"
+};
+    static void Main(string[] args)
+    {
+      bool verbose = false;
+      if (args.Length == 1 && args[0] == "-v")
+        verbose = true;
+      try {
+        // Connect to the GemFire Distributed System using the settings from the gfcpp.properties file by default.
+        Properties prop = Properties.Create();
+        prop.Insert("cache-xml-file", "clientCqQuery.xml");
+        CacheFactory cacheFactory = CacheFactory.CreateCacheFactory(prop);
+        Cache cache = cacheFactory.SetSubscriptionEnabled(true)
+                                  .Create();
+
+        Console.WriteLine("Created the GemFire Cache");
+
+        // Get the Portfolios Region from the Cache which is declared in the Cache XML file.
+        Region region = cache.GetRegion("Portfolios");
+
+        Console.WriteLine("Obtained the Region from the Cache");
+
+        region.GetAttributesMutator().SetCacheListener(new MyCacheListener(verbose));
+
+        // Register our Serializable/Cacheable Query objects, viz. Portfolio and Position.
+        Serializable.RegisterType(Portfolio.CreateDeserializable);
+        Serializable.RegisterType(Position.CreateDeserializable);
+
+        //Register all keys
+        region.RegisterAllKeys();
+
+        Console.WriteLine("Registered Serializable Query Objects");
+
+        // Populate the Region with some Portfolio objects.
+        Portfolio port1 = new Portfolio(1 /*ID*/, 10 /*size*/);
+        Portfolio port2 = new Portfolio(2 /*ID*/, 20 /*size*/);
+        Portfolio port3 = new Portfolio(3 /*ID*/, 30 /*size*/);
+        region.Put("Key1", port1);
+        region.Put("Key2", port2);
+        region.Put("Key3", port3);
+
+        Console.WriteLine("Populated some Portfolio Objects");
+
+        // Get the QueryService from the Cache.
+        QueryService qrySvc = cache.GetQueryService();
+
+        Console.WriteLine("Got the QueryService from the Cache");
+
+        //create CqAttributes with listener
+        CqAttributesFactory cqFac = new CqAttributesFactory();
+        ICqListener cqLstner = new MyCqListener(0, verbose);
+        cqFac.AddCqListener(cqLstner);
+        CqAttributes cqAttr = cqFac.Create();
+
+        //create a new cqQuery
+        CqQuery qry = qrySvc.NewCq(cqNames[0], queryStrings[0], cqAttr, true);
+
+        // Execute a CqQuery with Initial Results
+        ICqResults results = qry.ExecuteWithInitialResults();
+
+        Console.WriteLine("ResultSet Query returned {0} rows", results.Size);
+
+        SelectResultsIterator iter = results.GetIterator();
+
+        while (iter.HasNext) {
+          IGFSerializable item = iter.Next();
+
+          if (item != null) {
+            Struct st = item as Struct;
+
+            CacheableString key = st["key"] as CacheableString;
+
+            Console.WriteLine("Got key " + key.Value);
+
+            Portfolio port = st["value"] as Portfolio;
+
+            if (port == null) {
+              Position pos = st["value"] as Position;
+              if (pos == null) {
+                CacheableString cs = st["value"] as CacheableString;
+                if (cs == null) {
+                  Console.WriteLine("Query got other/unknown object.");
+                }
+                else {
+                  Console.WriteLine("Query got string : {0}.", cs.Value);
+                }
+              }
+              else {
+                Console.WriteLine("Query got Position object with secId {0}, shares {1}.", pos.SecId, pos.SharesOutstanding);
+              }
+            }
+            else {
+              Console.WriteLine("Query got Portfolio object with ID {0}, pkid {1}.", port.ID, port.Pkid);
+            }
+          }
+        }        
+        //Stop the cq
+        qry.Stop();
+        //Restart the cq
+        qry.Execute();
+
+        for (int i = 1; i < cqNames.Length; i++) {
+          ICqListener cqLstner1 = new MyCqListener(i, verbose);
+          cqFac.AddCqListener(cqLstner1);
+          cqAttr = cqFac.Create();
+          qry = qrySvc.NewCq(cqNames[i], queryStrings[i], cqAttr, true);
+        }
+
+        qry = qrySvc.GetCq(cqNames[6]);
+        cqAttr = qry.GetCqAttributes();
+        ICqListener[] vl = cqAttr.getCqListeners();
+        Console.WriteLine("number of listeners for cq[{0}] is {1}", cqNames[6], vl.Length);
+        qry = qrySvc.GetCq(cqNames[0]);
+        CqAttributesMutator cqam = qry.GetCqAttributesMutator();
+        for (int i = 0; i < vl.Length; i++) {
+          cqam.AddCqListener(vl[i]);
+        }
+
+        //Stop the cq
+        qry.Stop();
+
+        //Start all Cq Query
+        qrySvc.ExecuteCqs();
+
+        for (int i = 0; i < cqNames.Length; i++) {
+          Console.WriteLine("get info for cq[{0}]:", cqNames[i]);
+          CqQuery cqy = qrySvc.GetCq(cqNames[i]);
+          CqStatistics cqStats = cqy.GetStatistics();
+          Console.WriteLine("Cq[{0}]: CqStatistics: numInserts[{1}], numDeletes[{2}], numUpdates[{3}], numEvents[{4}]", 
+                              cqNames[i], cqStats.numInserts(), cqStats.numDeletes(), cqStats.numUpdates(), cqStats.numEvents());
+        }
+
+        CqServiceStatistics serviceStats = qrySvc.GetCqStatistics();
+        Console.WriteLine("numCqsActive={0}, numCqsCreated={1}, numCqsClosed={2}, numCqsStopped={3}, numCqsOnClient={4}", 
+                              serviceStats.numCqsActive(), serviceStats.numCqsCreated(), serviceStats.numCqsClosed(), 
+                              serviceStats.numCqsStopped(), serviceStats.numCqsOnClient());
+
+        while (true) {
+          Console.WriteLine("*******Type \'q\' to quit !!!! ******");
+          ConsoleKeyInfo ckey;
+          ckey = Console.ReadKey(true);
+          if (ckey.Key == ConsoleKey.Q)
+            break;
+        }
+
+        //Stop all cqs
+        qrySvc.StopCqs();
+
+        for (int i = 0; i < cqNames.Length; i++) {
+          Console.WriteLine("get info for cq[{0}]:", cqNames[i]);
+          CqQuery cqy = qrySvc.GetCq(cqNames[i]);
+          cqAttr = qry.GetCqAttributes();
+          vl = cqAttr.getCqListeners();
+          Console.WriteLine("number of listeners for cq[{0}] is {1}", cqNames[i], vl.Length);
+          CqStatistics cqStats = cqy.GetStatistics();
+          Console.WriteLine("Cq[{0}]: CqStatistics: numInserts[{1}], numDeletes[{2}], numUpdates[{3}], numEvents[{4}]", 
+                         cqNames[i], cqStats.numInserts(), cqStats.numDeletes(), cqStats.numUpdates(), cqStats.numEvents());
+        }
+
+        //Close all cqs
+        qrySvc.CloseCqs();
+
+        Console.WriteLine("numCqsActive={0}, numCqsCreated={1}, numCqsClosed={2}, numCqsStopped={3}, numCqsOnClient={4}", 
+                         serviceStats.numCqsActive(), serviceStats.numCqsCreated(), serviceStats.numCqsClosed(), serviceStats.numCqsStopped(),
+                         serviceStats.numCqsOnClient());
+
+        // Close the GemFire Cache.
+        cache.Close();
+
+        Console.WriteLine("Closed the GemFire Cache");
+
+      }
+      // An exception should not occur
+      catch (GemFireException gfex) {
+        Console.WriteLine("CqQuery GemFire Exception: {0}", gfex.Message);
+      }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/CqQuery/CqQuery.csproj
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/CqQuery/CqQuery.csproj b/geode-client-native/examples/clicache/CqQuery/CqQuery.csproj
new file mode 100644
index 0000000..cd255fd
--- /dev/null
+++ b/geode-client-native/examples/clicache/CqQuery/CqQuery.csproj
@@ -0,0 +1,97 @@
+\ufeff<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{D8F67104-CDDE-433F-A8EE-470A92180AA9}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>GemStone.GemFire.Cache.Examples</RootNamespace>
+    <AssemblyName>CqQuery</AssemblyName>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>2.0</OldToolsVersion>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <IntermediateOutputPath>$(OSBUILDDIR)\examples\clicache\Debug\CqQuery\</IntermediateOutputPath>
+    <OutputPath>$(OSBUILDDIR)\examples\clicache\Debug\CqQuery\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x86</PlatformTarget>
+    <NoWarn>618</NoWarn>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <IntermediateOutputPath>$(OSBUILDDIR)\examples\clicache\CqQuery\</IntermediateOutputPath>
+    <OutputPath>$(OSBUILDDIR)\examples\clicache\CqQuery\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x86</PlatformTarget>
+    <NoWarn>618</NoWarn>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <IntermediateOutputPath>$(OSBUILDDIR)\examples\clicache\Debug\CqQuery\</IntermediateOutputPath>
+    <OutputPath>$(OSBUILDDIR)\examples\clicache\Debug\CqQuery\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <NoWarn>618</NoWarn>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <IntermediateOutputPath>$(OSBUILDDIR)\examples\clicache\CqQuery\</IntermediateOutputPath>
+    <OutputPath>$(OSBUILDDIR)\examples\clicache\CqQuery\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <NoWarn>618</NoWarn>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\..\..\tests\clicache\TestObject\Portfolio.cs">
+      <Link>Portfolio.cs</Link>
+    </Compile>
+    <Compile Include="..\..\..\tests\clicache\TestObject\Position.cs">
+      <Link>Position.cs</Link>
+    </Compile>
+    <Compile Include="CqQuery.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\..\vs_projects\gfclicache\gfclicache.vcproj">
+      <Project>{B274E3B1-6A09-4322-952B-8BDA712892CE}</Project>
+      <Name>gfclicache</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="..\..\dist\cqQuery\XMLs\clientCqQuery.xml">
+      <Link>clientCqQuery.xml</Link>
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/CqQuery/CqQuery.csproj.user
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/CqQuery/CqQuery.csproj.user b/geode-client-native/examples/clicache/CqQuery/CqQuery.csproj.user
new file mode 100644
index 0000000..99f5303
--- /dev/null
+++ b/geode-client-native/examples/clicache/CqQuery/CqQuery.csproj.user
@@ -0,0 +1,6 @@
+\ufeff<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <ReferencePath>$(OSBUILDDIR)\hidden\lib\</ReferencePath>
+    <ProjectView>ProjectFiles</ProjectView>
+  </PropertyGroup>
+</Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/CqQuery/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/CqQuery/Properties/AssemblyInfo.cs b/geode-client-native/examples/clicache/CqQuery/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..1721ef5
--- /dev/null
+++ b/geode-client-native/examples/clicache/CqQuery/Properties/AssemblyInfo.cs
@@ -0,0 +1,33 @@
+\ufeffusing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("GemFireCqQuery")]
+[assembly: AssemblyDescription("GemFire Simple Bank Example")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("GemStone Systems Inc.")]
+[assembly: AssemblyProduct("GemFireCqQuery")]
+[assembly: AssemblyCopyright("Copyright � GemStone Systems Inc. 2008")]
+[assembly: AssemblyTrademark("All Rights Reserved")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("446a6d15-e898-4fd5-8493-2076da55bd84")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+[assembly: AssemblyVersion("9.0.0.0")]
+[assembly: AssemblyFileVersion("9.0.0.0")]

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/CqQuery/README.html
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/CqQuery/README.html b/geode-client-native/examples/clicache/CqQuery/README.html
new file mode 100755
index 0000000..f85c9b3
--- /dev/null
+++ b/geode-client-native/examples/clicache/CqQuery/README.html
@@ -0,0 +1,420 @@
+<html xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:w="urn:schemas-microsoft-com:office:word"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
+<meta name=ProgId content=Word.Document>
+<meta name=Generator content="Microsoft Word 11">
+<meta name=Originator content="Microsoft Word 11">
+<link rel=File-List href="README_files/filelist.xml">
+<title>cqQuery: Pivotal GemFire&#174; Native Client Example</title>
+<!--[if gte mso 9]><xml>
+ <o:DocumentProperties>
+  <o:Author>qhe</o:Author>
+  <o:Template>Normal</o:Template>
+  <o:LastAuthor>qhe</o:LastAuthor>
+  <o:Revision>4</o:Revision>
+  <o:TotalTime>13</o:TotalTime>
+  <o:Created>2008-10-29T17:56:00Z</o:Created>
+  <o:LastSaved>2008-10-29T18:10:00Z</o:LastSaved>
+  <o:Pages>1</o:Pages>
+  <o:Words>632</o:Words>
+  <o:Characters>3608</o:Characters>
+  <o:Company>GemStone Systems, Inc.</o:Company>
+  <o:Lines>30</o:Lines>
+  <o:Paragraphs>8</o:Paragraphs>
+  <o:CharactersWithSpaces>4232</o:CharactersWithSpaces>
+  <o:Version>11.6360</o:Version>
+ </o:DocumentProperties>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:WordDocument>
+  <w:SpellingState>Clean</w:SpellingState>
+  <w:GrammarState>Clean</w:GrammarState>
+  <w:ValidateAgainstSchemas/>
+  <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
+  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
+  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
+  <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
+ </w:WordDocument>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:LatentStyles DefLockedState="false" LatentStyleCount="156">
+ </w:LatentStyles>
+</xml><![endif]-->
+<style>
+<!--
+ /* Font Definitions */
+ @font-face
+	{font-family:Wingdings;
+	panose-1:5 0 0 0 0 0 0 0 0 0;
+	mso-font-charset:2;
+	mso-generic-font-family:auto;
+	mso-font-pitch:variable;
+	mso-font-signature:0 268435456 0 0 -2147483648 0;}
+ /* Style Definitions */
+ p.MsoNormal, li.MsoNormal, div.MsoNormal
+	{mso-style-parent:"";
+	margin:0in;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	font-family:"Times New Roman";
+	mso-fareast-font-family:"Times New Roman";}
+h1
+	{mso-margin-top-alt:auto;
+	margin-right:0in;
+	mso-margin-bottom-alt:auto;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	mso-outline-level:1;
+	font-size:24.0pt;
+	font-family:"Times New Roman";
+	font-weight:bold;}
+h2
+	{mso-margin-top-alt:auto;
+	margin-right:0in;
+	mso-margin-bottom-alt:auto;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	mso-outline-level:2;
+	font-size:18.0pt;
+	font-family:"Times New Roman";
+	font-weight:bold;}
+h4
+	{mso-margin-top-alt:auto;
+	margin-right:0in;
+	mso-margin-bottom-alt:auto;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	mso-outline-level:4;
+	font-size:12.0pt;
+	font-family:"Times New Roman";
+	font-weight:bold;}
+a:link, span.MsoHyperlink
+	{color:blue;
+	text-decoration:underline;
+	text-underline:single;}
+a:visited, span.MsoHyperlinkFollowed
+	{color:blue;
+	text-decoration:underline;
+	text-underline:single;}
+p
+	{mso-margin-top-alt:auto;
+	margin-right:0in;
+	mso-margin-bottom-alt:auto;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	font-family:"Times New Roman";
+	mso-fareast-font-family:"Times New Roman";}
+code
+	{font-family:"Courier New";
+	mso-ascii-font-family:"Courier New";
+	mso-fareast-font-family:"Times New Roman";
+	mso-hansi-font-family:"Courier New";
+	mso-bidi-font-family:"Courier New";}
+span.SpellE
+	{mso-style-name:"";
+	mso-spl-e:yes;}
+span.GramE
+	{mso-style-name:"";
+	mso-gram-e:yes;}
+@page Section1
+	{size:8.5in 11.0in;
+	margin:1.0in 1.25in 1.0in 1.25in;
+	mso-header-margin:.5in;
+	mso-footer-margin:.5in;
+	mso-paper-source:0;}
+div.Section1
+	{page:Section1;}
+ /* List Definitions */
+ @list l0
+	{mso-list-id:162935388;
+	mso-list-template-ids:1394253234;}
+@list l0:level1
+	{mso-level-number-format:bullet;
+	mso-level-text:\F0B7;
+	mso-level-tab-stop:.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Symbol;}
+@list l1
+	{mso-list-id:226569577;
+	mso-list-template-ids:-1947287032;}
+@list l1:level2
+	{mso-level-text:"%2\)";
+	mso-level-tab-stop:1.0in;
+	mso-level-number-position:left;
+	text-indent:-.25in;}
+@list l2
+	{mso-list-id:1273512360;
+	mso-list-template-ids:699437352;}
+@list l3
+	{mso-list-id:1483305081;
+	mso-list-template-ids:1760043970;}
+ol
+	{margin-bottom:0in;}
+ul
+	{margin-bottom:0in;}
+-->
+</style>
+<!--[if gte mso 10]>
+<style>
+ /* Style Definitions */
+ table.MsoNormalTable
+	{mso-style-name:"Table Normal";
+	mso-tstyle-rowband-size:0;
+	mso-tstyle-colband-size:0;
+	mso-style-noshow:yes;
+	mso-style-parent:"";
+	mso-padding-alt:0in 5.4pt 0in 5.4pt;
+	mso-para-margin:0in;
+	mso-para-margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:10.0pt;
+	font-family:"Times New Roman";
+	mso-ansi-language:#0400;
+	mso-fareast-language:#0400;
+	mso-bidi-language:#0400;}
+</style>
+<![endif]-->
+<meta http-equiv=Content-Style-Type content="text/css">
+</head>
+
+<IMG SRC="../../../docs/PIVOTAL_GemFire_190x81.png" BORDER="0">
+<body lang=EN-US link=blue vlink=blue style='tab-interval:.5in'>
+
+<div class=Section1>
+
+<div>
+
+<h1 align=center style='text-align:center'><span class=SpellE>CqQuery</span></h1>
+
+<h2 align=center style='text-align:center'>Pivotal GemFire Native Client </h2>
+
+<h2 align=center style='text-align:center'>C# Programming Example</h2>
+
+</div>
+
+
+<div>
+
+<h2>About the <span class=SpellE>CqQuery</span> Example </h2>
+
+<p>The <span class=SpellE><code><span style='font-size:10.0pt'>CqQuery</span></code></span>
+example is a C# program that uses Microsoft .NET Framework 4.0 to access the
+GemFire C++ API for continuous query.</p>
+
+<blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'>
+
+<p><em>Microsoft .NET Framework 4.0 must be installed before running this
+example. For information about installing the .NET Framework, see the </em>GemFire
+Native Client User's Guide<em>.</em> </p>
+
+</blockquote>
+
+<p>The client application comes with a cache configuration file, <code><span
+style='font-size:10.0pt'><a href="clientCqQuery.xml" target="_blank"><span
+class=SpellE>clientCqQuery.xml</span></a></span></code>, which is configured to
+create a root region and establish the native client endpoints to the
+locally-run server by specifying <code><span style='font-size:10.0pt'>localhost<span
+class=GramE>:50505</span></span></code>. <span class=GramE>If java server is
+located on another host, change <span class=SpellE>localhost</span> to that
+host accordingly.</span></p>
+
+<p>The <span class=SpellE><code><span style='font-size:10.0pt'>CqQuery</span></code></span>
+cache listens for client requests at a specific port (see <code><span
+style='font-size:10.0pt'><a
+href="serverCqQuery.xml" target="_blank"><span
+class=SpellE>serverCqQuery.xml</span></a></span></code>). The client connects
+to the cache server's port.</p>
+
+</div>
+
+<div>
+
+<h2><a name="configuring_environment"></a>Configuring the Environment </h2>
+
+<p>Examples that interact with a Java cache server require specific environment
+configurations so the Java cache server will run properly. Follow the
+configuration steps listed below that apply to your operating system: </p>
+
+</div>
+
+<div>
+
+<ol start=1 type=1>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;margin-bottom:12.0pt;
+     mso-list:l3 level1 lfo2;tab-stops:list .5in'>From the GemFire
+     product installation directory, configure your environment settings by
+     following the steps in <code><span style='font-size:10.0pt'>examples/EnvSetup.html</span></code>.
+     Refer to the developer's guide if you need help with this step.</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;margin-bottom:12.0pt;
+     mso-list:l3 level1 lfo2;tab-stops:list .5in'>Set the <code><span
+     style='font-size:10.0pt'>JAVA_HOME</span></code> and <code><span
+     style='font-size:10.0pt'>GF_JAVA_HOME</span></code> environment variables
+     to your installed Java JRE or JDK. See the Installation chapter of the <em>GemFire
+     Users's Guide</em> for the versions of Java that
+     are compatible with GemFire. The <code><span style='font-size:
+     10.0pt'>JAVA_HOME</span></code> setting is for your applications, and <code><span
+     style='font-size:10.0pt'>GF_JAVA_HOME</span></code> is for the GemFire
+     scripts. You must have a compatible Java JRE or JDK installed and you must
+     set <code><span style='font-size:10.0pt'>JAVA_HOME</span></code> and <code><span
+     style='font-size:10.0pt'>GF_JAVA_HOME</span></code> to point to it.</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;margin-bottom:12.0pt;
+     mso-list:l3 level1 lfo2;tab-stops:list .5in'>Add <code><span
+     style='font-size:10.0pt'>$JAVA_HOME/bin</span></code> to the start of your
+     <code><span style='font-size:10.0pt'>PATH</span></code>. </li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l3 level1 lfo2;tab-stops:list .5in'>Add the GemFire <span
+     class=SpellE>quickstart</span> classes to your <code><span
+     style='font-size:10.0pt'>CLASSPATH</span></code>. </li>
+</ol>
+
+<p style='margin-left:.5in'><span class=GramE><strong><span style='font-size:
+10.0pt;font-family:"Courier New"'>set</span></strong></span><strong><span
+style='font-size:10.0pt;font-family:"Courier New"'> CLASSPATH=%GEMFIRE%\<span
+class=SpellE>quickstart\classes;%CLASSPATH</span>%</span></strong></p>
+
+<p>The following is a list of the environment configuration commands for the <span
+class=SpellE><code><span style='font-size:10.0pt'>CqQuery</span></code></span>
+example. Choose the set of commands that are appropriate for your operating
+system. The text that you type is shown in bold. These configurations only need
+to be performed for the sessions that invoke the Java cache server.</p>
+
+<p><strong>Bourne and <span class=SpellE>Korn</span> shells (<span
+class=SpellE>sh</span>, <span class=SpellE>ksh</span>, bash)</strong></p>
+
+<blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'>
+
+<p><code><span style='font-size:10.0pt'>% </span></code><span class=SpellE><strong><span
+style='font-size:10.0pt;font-family:"Courier New"'>cd</span></strong></span><strong><span
+style='font-size:10.0pt;font-family:"Courier New"'> <span class=SpellE>GemFireInstallDirectory</span></span></strong><span
+style='font-size:10.0pt;font-family:"Courier New"'><br>
+<code>% </code><strong><span style='font-family:"Courier New"'>CLASSPATH=$CLASSPATH<span
+class=GramE>:$</span>GEMFIRE/<span class=SpellE>quickstart</span>/classes;
+export CLASSPATH</span></strong><br>
+<code>% </code><span class=SpellE><strong><span style='font-family:"Courier New"'>cd</span></strong></span><strong><span
+style='font-family:"Courier New"'> $GEMFIRE/<span class=SpellE>quickstart</span></span></strong><br>
+<code>% </code><strong><span style='font-family:"Courier New"'>JAVA_HOME=&lt;Installed
+JRE PATH&gt;; export JAVA_HOME</span></strong><br>
+<code>% </code><strong><span style='font-family:"Courier New"'>GF_JAVA_HOME=$JAVA_HOME;
+export GF_JAVA_HOME</span></strong><br>
+<code>% </code><strong><span style='font-family:"Courier New"'>PATH=$JAVA_HOME/<span
+class=SpellE>bin:$PATH</span>; export PATH</span></strong></span></p>
+
+</blockquote>
+
+<p><strong>Windows</strong></p>
+
+<blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'>
+
+<p><code><span style='font-size:10.0pt'>&gt; </span></code><span class=SpellE><span
+class=GramE><strong><span style='font-size:10.0pt;font-family:"Courier New"'>cd</span></strong></span></span><strong><span
+style='font-size:10.0pt;font-family:"Courier New"'> <span class=SpellE>GemFireInstallDirectory</span></span></strong><span
+style='font-size:10.0pt;font-family:"Courier New"'><br>
+<code>&gt; </code><strong><span style='font-family:"Courier New"'>set
+CLASSPATH=%GEMFIRE%\<span class=SpellE>quickstart\classes;%CLASSPATH</span>%</span></strong><br>
+<code>&gt; </code><span class=SpellE><strong><span style='font-family:"Courier New"'>cd</span></strong></span><strong><span
+style='font-family:"Courier New"'> %GEMFIRE%\<span class=SpellE>quickstart</span></span></strong><br>
+<code>&gt; </code><strong><span style='font-family:"Courier New"'>set
+JAVA_HOME=&lt;Installed JRE PATH&gt;</span></strong><br>
+<code>&gt; </code><strong><span style='font-family:"Courier New"'>set
+GF_JAVA_HOME=%JAVA_HOME%</span></strong><br>
+<code>&gt; </code><strong><span style='font-family:"Courier New"'>set
+PATH=%JAVA_HOME%\<span class=SpellE>bin;%PATH</span>%</span></strong><code> </code></span></p>
+
+</blockquote>
+
+</div>
+
+<div>
+
+<h2>Starting <span class=SpellE>CqQuery</span> </h2>
+
+<p>To run the <span class=SpellE><code><span style='font-size:10.0pt'>CqQuery</span></code></span>
+example, create a session from the GemFire product directory and
+complete the following steps. Throughout this example, when you're prompted to enter the NativeClient_InstallDir\SampleCode directory, replace the NativeClient_InstallDir\SampleCode with the actual path to unzipped location of the Distribution SampleCode.  Note that in the following steps, except CqQuery.exe, all other programs can be run on other operating system machines.</p>
+
+<p>This first session starts the Java cache server. <code><span
+style='mso-ansi-font-size:12.0pt;mso-bidi-font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></code></p>
+
+</div>
+
+<div>
+
+<p style='margin-left:.5in'><span class=SpellE><code><b><span
+style='font-size:10.0pt'>cd NativeClient_InstallDir\SampleCode\examples\cqQuery</span></b></code></span><b><span
+style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></b></p>
+
+
+<ol start=1 type=1>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l2 level1 lfo3;tab-stops:list .5in'>Start Java server: </li>
+</ol>
+
+<p style='margin-left:.5in'><span class=SpellE><code><b><span
+style='font-size:10.0pt'>startServer.bat</span></b></code></span><b><span
+style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></b></p>
+
+<ol start=2 type=1>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l2 level1 lfo3;tab-stops:list .5in'>Create another session and go
+     to the <span class=SpellE><code><span style='font-size:10.0pt'>cli_CqQuery</span></code></span>
+     example directory: </li>
+</ol>
+
+<p style='margin-left:.5in'><span class=SpellE><span class=GramE><code><b><span
+style='font-size:10.0pt'>cd</span></b></code></span></span><code><b><span
+style='font-size:10.0pt'> <span class=SpellE>NativeClient_InstallDir\SampleCode\examples\cli_CqQuery</span></span></b></code></p>
+
+<ol start=3 type=1>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l2 level1 lfo3;tab-stops:list .5in'>Start the <span class=SpellE><code><span
+     style='font-size:10.0pt'>CqQuery</span></code></span> application:</li>
+</ol>
+
+<blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'>
+
+<p><code><b><span style='margin-left:.1in;font-size:10.0pt'>CqQuery.exe</span></b></code><b><span
+style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></b></p>
+
+</blockquote>
+
+<ol start=4 type=1>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l2 level1 lfo3;tab-stops:list .5in'>Start the <code><span
+     style='font-size:10.0pt'>updater</span></code> application. In another window:</li>
+</ol>
+<br>
+<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+margin-left:.5in'><span class=SpellE><span class=GramE><code><b><span
+style='font-size:10.0pt'>cd</span></b></code></span></span><code><b><span
+style='font-size:10.0pt'> <span class=SpellE>NativeClient_InstallDir\SampleCode\examples\cqQuery</span><o:p></o:p></span></b></code></p>
+
+<p style="margin-left:.25in"><code><b><span style='font-size:10.0pt'><span style='mso-spacerun:yes'>\ufffd\ufffd
+</span><span class=SpellE>runUpdater.bat</span> &lt;<span class=SpellE>itr</span>
+number&gt;, where <span class=SpellE>itr</span> number is the number of
+iterations you want this program to run, <span class=SpellE>e.g</span>, 500.</span></b></code><code><span
+style='mso-ansi-font-size:12.0pt;mso-bidi-font-size:12.0pt;font-family:"Times New Roman"'><o:p></o:p></span></code></p>
+
+<ol start=5 type=1>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l2 level1 lfo3;tab-stops:list .5in'>Stop Java server. In the window where java server was started:</li>
+</ol>
+<br>
+<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+margin-left:.5in'><span class=SpellE><code><b><span style='font-size:10.0pt'>stopServer.bat</span></b></code></span></p>
+<br>
+</div>
+
+<p class=MsoNormal><a href="#Top">Top</a> </p>
+
+<p>
+<p><span class=GramE>Copyright &#169; 2005-2014 Pivotal Software, Inc. All rights reserved.  This product is protected by U.S. and international copyright and intellectual property laws. Pivotal products are covered by one or more patents listed at http://www.pivotal.io/patents. </p>
+</div>
+
+</body>
+
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/ExecuteFunctions/ExecuteFunctions.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/ExecuteFunctions/ExecuteFunctions.cs b/geode-client-native/examples/clicache/ExecuteFunctions/ExecuteFunctions.cs
new file mode 100644
index 0000000..a391949
--- /dev/null
+++ b/geode-client-native/examples/clicache/ExecuteFunctions/ExecuteFunctions.cs
@@ -0,0 +1,217 @@
+/*
+ * The ExecuteFunction Example.
+ */
+
+// Use standard namespaces
+using System;
+using System.Threading;
+
+// Use the GemFire namespace
+using GemStone.GemFire.Cache;
+using System.Collections.Generic;
+
+namespace GemStone.GemFire.Cache.Examples
+{
+  // The Function Execution example.
+  //customer result collector
+  public class MyResultCollector : IResultCollector
+  {
+    private bool m_resultReady = false;
+    private CacheableVector m_results = null;
+    private int m_addResultCount = 0;
+    private int m_getResultCount = 0;
+    private int m_endResultCount = 0;
+
+    public int GetAddResultCount()
+    {
+      return m_addResultCount ;
+    }
+    public int GetGetResultCount()
+    {
+      return m_getResultCount ;
+    }
+    public int GetEndResultCount()
+    {
+      return m_endResultCount ;
+    }
+    public MyResultCollector()
+    {
+      m_results = new CacheableVector();
+    }
+    public void AddResult(IGFSerializable result)
+    {
+      m_addResultCount++;
+      CacheableArrayList rs = result as CacheableArrayList;
+      for(int i = 0; i < rs.Count; i++)
+      {
+	m_results.Add(rs[i]);
+      }
+    }
+    public IGFSerializable[] GetResult()
+    {
+      return GetResult(50);
+    }
+    public IGFSerializable[] GetResult(UInt32 timeout)
+    {
+      m_getResultCount++;
+      if(m_resultReady == true)
+      {
+	return m_results.ToArray();
+      }
+      else 
+      {
+	for(int i=0; i < timeout; i++)
+	{
+	  Thread.Sleep(1000);
+          if(m_resultReady == true)
+          {
+	    return m_results.ToArray();
+          }
+	}
+	throw new FunctionExecutionException(
+	           "Result is not ready, endResults callback is called before invoking getResult() method");
+	
+      }
+    }
+    public void EndResults()
+    {
+       m_endResultCount++;
+       m_resultReady = true;
+    }
+    public void ClearResults()
+    {
+      m_results.Clear();
+    }
+  }
+
+  class ExecuteFunctions
+  {        
+    private static string getFuncName = "MultiGetFunction";
+    private static string getFuncIName = "MultiGetFunctionI";
+
+    static void Main(string[] args)
+    {
+      try
+      {
+        // Create CacheFactory using the settings from the gfcpp.properties file by default.
+        CacheFactory cacheFactory = CacheFactory.CreateCacheFactory();
+
+        Cache cache = cacheFactory.SetSubscriptionEnabled(true)
+                                  .AddServer("localhost", 40404)
+                                  .AddServer("localhost", 50505)          
+                                  .Create();
+
+        Console.WriteLine("Created the GemFire Cache");
+
+        Region region = cache.CreateRegionFactory(RegionShortcut.CACHING_PROXY)          
+                             .Create("partition_region");
+
+        Console.WriteLine("Created the partition_region.");
+
+        for(int i=0; i < 34; i++)
+        {
+          region.Put("KEY--"+i, "VALUE--"+i);
+        }
+      
+        IGFSerializable[] routingObj = new IGFSerializable[17];
+        int j=0;
+        for(int i=0; i < 34; i++)
+        {
+          if(i%2==0) continue;
+          routingObj[j] = new CacheableString("KEY--"+i);
+	  j++;
+        }
+        Console.WriteLine("routingObj count= {0}.", routingObj.Length);
+
+        //test data dependant function execution
+        //     test get function with result
+        Boolean getResult = true;
+        IGFSerializable args0 = new CacheableBoolean(true);
+        Execution exc = FunctionService.OnRegion(region);
+        IResultCollector rc =  exc.WithArgs(args0).WithFilter(routingObj).Execute(
+	  getFuncName, getResult);
+        IGFSerializable[] executeFunctionResult = rc.GetResult();
+        Console.WriteLine("on region: result count= {0}.", executeFunctionResult.Length);
+
+        List<IGFSerializable> resultList = new List<IGFSerializable>();
+
+        for (int pos = 0; pos < executeFunctionResult.Length; pos++) {
+          CacheableArrayList resultItem = executeFunctionResult[pos] as CacheableArrayList;
+          foreach (IGFSerializable item in resultItem) {
+            resultList.Add(item);
+          }
+        }
+        Console.WriteLine("on region: result count= {0}.", resultList.Count);
+        for (int i = 0; i < resultList.Count; i++) {
+          Console.WriteLine("on region:get:result[{0}]={1}.", i, (resultList[i] as CacheableString).Value);
+        }        
+            
+        getResult = true;
+        //test date independant fucntion execution on one server
+        //     test get function with result
+        exc = FunctionService.OnServer(cache);
+        CacheableVector args1 = new  CacheableVector();
+        for(int i=0; i < routingObj.Length; i++)
+        {
+          Console.WriteLine("routingObj[{0}]={1}.", i, (routingObj[i] as CacheableString).Value);
+          args1.Add(routingObj[i]);
+        }
+        rc =  exc.WithArgs(args1).Execute(
+	  getFuncIName, getResult);
+        executeFunctionResult = rc.GetResult();
+        Console.WriteLine("on one server: result count= {0}.", executeFunctionResult.Length);
+
+        List<IGFSerializable> resultList1 = new List<IGFSerializable>();
+        for (int pos = 0; pos < executeFunctionResult.Length; pos++) {
+          CacheableArrayList resultItem = executeFunctionResult[pos] as CacheableArrayList;
+          foreach (IGFSerializable item in resultItem) {
+            resultList1.Add(item);
+          }
+        }
+        
+        for (int i = 0; i < resultList1.Count; i++) {
+          Console.WriteLine("on one server:get:result[{0}]={1}.", i, (resultList1[i] as CacheableString).Value);
+        }        
+
+        //test date independant fucntion execution on all servers
+        //     test get function with result
+        exc = FunctionService.OnServers(cache);
+        rc =  exc.WithArgs(args1).Execute(getFuncIName, getResult);
+        executeFunctionResult = rc.GetResult();
+        Console.WriteLine("on all servers: result count= {0}.", executeFunctionResult.Length);
+
+        List<IGFSerializable> resultList2 = new List<IGFSerializable>();
+        for (int pos = 0; pos < executeFunctionResult.Length; pos++) {
+          CacheableArrayList resultItem = executeFunctionResult[pos] as CacheableArrayList;
+          foreach (IGFSerializable item in resultItem) {
+            resultList2.Add(item);
+          }
+        }
+        if (resultList2.Count != 34)
+          Console.WriteLine("result count check failed on all servers");
+        for (int i = 0; i < resultList2.Count; i++) {
+          Console.WriteLine("on all servers:result[{0}]={1}.", i, (resultList2[i] as CacheableString).Value);
+        }       
+
+        //test withCollector
+        MyResultCollector myRC = new MyResultCollector();
+        rc =  exc.WithArgs(args1).WithCollector(myRC).Execute(getFuncIName, getResult);
+        executeFunctionResult = rc.GetResult();
+        Console.WriteLine("add result count= {0}.", myRC.GetAddResultCount());
+        Console.WriteLine("get result count= {0}.", myRC.GetGetResultCount());
+        Console.WriteLine("end result count= {0}.", myRC.GetEndResultCount());
+        Console.WriteLine("on all servers with collector: result count= {0}.", executeFunctionResult.Length);
+
+        // Close the GemFire Cache.
+        cache.Close();
+
+        Console.WriteLine("Closed the GemFire Cache");        
+      }
+      // An exception should not occur
+      catch (GemFireException gfex)
+      {
+        Console.WriteLine("ExecuteFunctions GemFire Exception: {0}", gfex.Message);
+      }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/ExecuteFunctions/ExecuteFunctions.csproj
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/ExecuteFunctions/ExecuteFunctions.csproj b/geode-client-native/examples/clicache/ExecuteFunctions/ExecuteFunctions.csproj
new file mode 100644
index 0000000..c3fa3e9
--- /dev/null
+++ b/geode-client-native/examples/clicache/ExecuteFunctions/ExecuteFunctions.csproj
@@ -0,0 +1,85 @@
+\ufeff<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{D8F67104-CDDE-433F-A8EE-470A92180BA9}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>GemStone.GemFire.Cache.Examples</RootNamespace>
+    <AssemblyName>ExecuteFunctions</AssemblyName>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>2.0</OldToolsVersion>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <IntermediateOutputPath>$(OSBUILDDIR)\examples\clicache\Debug\ExecuteFunctions\</IntermediateOutputPath>
+    <OutputPath>$(OSBUILDDIR)\examples\clicache\Debug\ExecuteFunctions\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x86</PlatformTarget>
+    <NoWarn>618</NoWarn>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <IntermediateOutputPath>$(OSBUILDDIR)\examples\clicache\ExecuteFunctions\</IntermediateOutputPath>
+    <OutputPath>$(OSBUILDDIR)\examples\clicache\ExecuteFunctions\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x86</PlatformTarget>
+    <NoWarn>618</NoWarn>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <IntermediateOutputPath>$(OSBUILDDIR)\examples\clicache\Debug\ExecuteFunctions\</IntermediateOutputPath>
+    <OutputPath>$(OSBUILDDIR)\examples\clicache\Debug\ExecuteFunctions\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <Optimize>false</Optimize>
+    <WarningLevel>4</WarningLevel>
+    <NoWarn>618</NoWarn>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <IntermediateOutputPath>$(OSBUILDDIR)\examples\clicache\ExecuteFunctions\</IntermediateOutputPath>
+    <OutputPath>$(OSBUILDDIR)\examples\clicache\ExecuteFunctions\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <NoWarn>618</NoWarn>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="ExecuteFunctions.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\..\vs_projects\gfclicache\gfclicache.vcproj">
+      <Project>{B274E3B1-6A09-4322-952B-8BDA712892CE}</Project>
+      <Name>gfclicache</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/ExecuteFunctions/ExecuteFunctions.csproj.user
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/ExecuteFunctions/ExecuteFunctions.csproj.user b/geode-client-native/examples/clicache/ExecuteFunctions/ExecuteFunctions.csproj.user
new file mode 100644
index 0000000..99f5303
--- /dev/null
+++ b/geode-client-native/examples/clicache/ExecuteFunctions/ExecuteFunctions.csproj.user
@@ -0,0 +1,6 @@
+\ufeff<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <ReferencePath>$(OSBUILDDIR)\hidden\lib\</ReferencePath>
+    <ProjectView>ProjectFiles</ProjectView>
+  </PropertyGroup>
+</Project>
\ No newline at end of file



[34/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/README.html
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/README.html b/geode-client-native/quickstart/README.html
new file mode 100644
index 0000000..64d1651
--- /dev/null
+++ b/geode-client-native/quickstart/README.html
@@ -0,0 +1,1415 @@
+<html xmlns:v="urn:schemas-microsoft-com:vml"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:w="urn:schemas-microsoft-com:office:word"
+xmlns:st1="urn:schemas-microsoft-com:office:smarttags"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+<meta name=ProgId content=Word.Document>
+<meta name=Generator content="Microsoft Word 11">
+<meta name=Originator content="Microsoft Word 11">
+<link rel=File-List href="README_files/filelist.xml">
+<link rel=Edit-Time-Data href="README_files/editdata.mso">
+<!--[if !mso]>
+<style>
+v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+w\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+</style>
+<![endif]-->
+<title>Pivotal GemFire&#174; Native Client QuickStart Guide</title>
+<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
+ name="Street"/>
+<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
+ name="PostalCode"/>
+<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
+ name="City"/>
+<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
+ name="State"/>
+<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
+ name="address"/>
+<!--[if gte mso 9]><xml>
+ <o:DocumentProperties>
+  <o:Author>qhe</o:Author>
+  <o:Template>Normal</o:Template>
+  <o:LastAuthor>qhe</o:LastAuthor>
+  <o:Revision>3</o:Revision>
+  <o:TotalTime>1</o:TotalTime>
+  <o:Created>2008-10-29T18:27:00Z</o:Created>
+  <o:LastSaved>2008-10-29T18:28:00Z</o:LastSaved>
+  <o:Pages>1</o:Pages>
+  <o:Words>2653</o:Words>
+  <o:Characters>15126</o:Characters>
+  <o:Company>GemStone Systems, Inc.</o:Company>
+  <o:Lines>126</o:Lines>
+  <o:Paragraphs>35</o:Paragraphs>
+  <o:CharactersWithSpaces>17744</o:CharactersWithSpaces>
+  <o:Version>11.6360</o:Version>
+ </o:DocumentProperties>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:WordDocument>
+  <w:SpellingState>Clean</w:SpellingState>
+  <w:GrammarState>Clean</w:GrammarState>
+  <w:ValidateAgainstSchemas/>
+  <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
+  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
+  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
+  <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
+ </w:WordDocument>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:LatentStyles DefLockedState="false" LatentStyleCount="156">
+ </w:LatentStyles>
+</xml><![endif]--><!--[if !mso]><object
+ classid="clsid:38481807-CA0E-42D2-BF39-B33AF135CC4D" id=ieooui></object>
+<style>
+st1\:*{behavior:url(#ieooui) }
+</style>
+<![endif]-->
+<style>
+<!--
+ /* Font Definitions */
+ @font-face
+	{font-family:Wingdings;
+	panose-1:5 0 0 0 0 0 0 0 0 0;
+	mso-font-charset:2;
+	mso-generic-font-family:auto;
+	mso-font-pitch:variable;
+	mso-font-signature:0 268435456 0 0 -2147483648 0;}
+ /* Style Definitions */
+ p.MsoNormal, li.MsoNormal, div.MsoNormal
+	{mso-style-parent:"";
+	margin:0in;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	font-family:"Times New Roman";
+	mso-fareast-font-family:"Times New Roman";}
+h1
+	{mso-margin-top-alt:auto;
+	margin-right:0in;
+	mso-margin-bottom-alt:auto;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	mso-outline-level:1;
+	font-size:24.0pt;
+	font-family:"Times New Roman";
+	font-weight:bold;}
+h2
+	{mso-margin-top-alt:auto;
+	margin-right:0in;
+	mso-margin-bottom-alt:auto;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	mso-outline-level:2;
+	font-size:18.0pt;
+	font-family:"Times New Roman";
+	font-weight:bold;}
+h3
+	{mso-margin-top-alt:auto;
+	margin-right:0in;
+	mso-margin-bottom-alt:auto;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	mso-outline-level:3;
+	font-size:13.5pt;
+	font-family:"Times New Roman";
+	font-weight:bold;}
+p
+	{font-size:12.0pt;
+	font-family:"Times New Roman";
+	mso-fareast-font-family:"Times New Roman";}
+code
+	{font-family:"Courier New";
+	mso-ascii-font-family:"Courier New";
+	mso-fareast-font-family:"Times New Roman";
+	mso-hansi-font-family:"Courier New";
+	mso-bidi-font-family:"Courier New";}
+span.SpellE
+	{mso-style-name:"";
+	mso-spl-e:yes;}
+span.GramE
+	{mso-style-name:"";
+	mso-gram-e:yes;}
+@page Section1
+	{size:8.5in 11.0in;
+	margin:1.0in 1.25in 1.0in 1.25in;
+	mso-header-margin:.5in;
+	mso-footer-margin:.5in;
+	mso-paper-source:0;}
+div.Section1
+	{page:Section1;}
+ /* List Definitions */
+ @list l0
+	{mso-list-id:3483968;
+	mso-list-template-ids:1404578712;}
+@list l0:level1
+	{mso-level-number-format:bullet;
+	mso-level-text:\F0B7;
+	mso-level-tab-stop:.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Symbol;}
+@list l1
+	{mso-list-id:99837355;
+	mso-list-template-ids:519213850;}
+@list l2
+	{mso-list-id:257758118;
+	mso-list-template-ids:-86754458;}
+@list l3
+	{mso-list-id:412242023;
+	mso-list-template-ids:-1537711854;}
+@list l4
+	{mso-list-id:475685102;
+	mso-list-template-ids:-907134536;}
+@list l5
+	{mso-list-id:897012002;
+	mso-list-template-ids:-1281953210;}
+@list l5:level1
+	{mso-level-number-format:bullet;
+	mso-level-text:\F0B7;
+	mso-level-tab-stop:.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Symbol;}
+@list l6
+	{mso-list-id:1085611677;
+	mso-list-template-ids:587892910;}
+@list l7
+	{mso-list-id:1095860104;
+	mso-list-template-ids:-748251592;}
+@list l7:level1
+	{mso-level-number-format:bullet;
+	mso-level-text:\F0B7;
+	mso-level-tab-stop:.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Symbol;}
+@list l8
+	{mso-list-id:1780684537;
+	mso-list-template-ids:-193442186;}
+@list l9
+	{mso-list-id:1802921706;
+	mso-list-template-ids:-690195988;}
+@list l9:level1
+	{mso-level-number-format:bullet;
+	mso-level-text:\F0B7;
+	mso-level-tab-stop:.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Symbol;}
+@list l10
+	{mso-list-id:1814712329;
+	mso-list-template-ids:2142788068;}
+@list l11
+	{mso-list-id:1956714238;
+	mso-list-template-ids:-1584504088;}
+@list l12
+	{mso-list-id:2025857035;
+	mso-list-template-ids:-106034156;}
+@list l12:level1
+	{mso-level-number-format:bullet;
+	mso-level-text:\F0B7;
+	mso-level-tab-stop:.5in;
+	mso-level-number-position:left;
+	text-indent:-.25in;
+	mso-ansi-font-size:10.0pt;
+	font-family:Symbol;}
+ol
+	{margin-bottom:0in;}
+ul
+	{margin-bottom:0in;}
+-->
+</style>
+<!--[if gte mso 10]>
+<style>
+ /* Style Definitions */
+ table.MsoNormalTable
+	{mso-style-name:"Table Normal";
+	mso-tstyle-rowband-size:0;
+	mso-tstyle-colband-size:0;
+	mso-style-noshow:yes;
+	mso-style-parent:"";
+	mso-padding-alt:0in 5.4pt 0in 5.4pt;
+	mso-para-margin:0in;
+	mso-para-margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:10.0pt;
+	font-family:"Times New Roman";
+	mso-ansi-language:#0400;
+	mso-fareast-language:#0400;
+	mso-bidi-language:#0400;}
+</style>
+<![endif]-->
+</head>
+
+<h3 align=center style='text-align:center'>
+<IMG SRC="../../docs/PIVOTAL_GemFire_190x81.png" BORDER="0">
+<body lang=EN-US link=blue vlink=blue style='tab-interval:.5in'>
+</h3>
+
+<h1 align=center style='text-align:center'><a name=Top>Native Client<br><span class=SpellE>QuickStart</span> Guide</h1>
+
+<h3 align=center style='text-align:center'>Feburary 2014</h3>
+<div class=Section1>
+<p><br>
+The GemFire Native Client <span class=SpellE>QuickStart</span> Guide
+provides a set of examples that demonstrate the capabilities of the GemFire
+Native Client product. Reviewing the operation of these <span
+class=SpellE>QuickStart</span> examples, along with studying the source files
+for the examples, can help you quickly get started with C++ and Microsoft .NET
+code development for the GemFire native client. The examples can be
+invoked individually from the command line, or by using the <span class=SpellE>QuickStart</span>
+menu.</p>
+
+<p>The examples and their source files are located in the <span class=SpellE><code><span
+style='font-size:10.0pt'>SampleCode\quickstart</span></code></span>
+directory.  The C++ examples are in the <span
+class=SpellE><code><span style='font-size:10.0pt'>cpp</span></code></span>
+directory, and the C# examples are in the <span class=SpellE><code><span
+style='font-size:10.0pt'>csharp</span></code></span> directory. The <span
+class=SpellE>Interop</span> example is in its own <span class=SpellE><code><span
+style='font-size:10.0pt'>interop</span></code></span> directory. Note that the
+C# examples are only available for Windows.</p>
+
+<p>In Each example, client and server are configured either using a pair of companion XML files in the <span class=SpellE><code><span
+style='font-size:10.0pt'>XMLs</span></code></span> directory or by programatically. For example, <span class=SpellE><code><span
+style='font-size:10.0pt'>LoaderListenerWriter</span></code></span> uses <span
+class=SpellE><code><span style='font-size:10.0pt'>serverLoaderListenerWriter.xml</span></code></span>
+to configure the cache server and <span class=SpellE><code><span
+style='font-size:10.0pt'>clientLoaderListenerWriter.xml</span></code></span> to
+configure the client, while <span class=SpellE><code><span style='font-size:10.0pt'>BasicOperations</span></code></span> uses <span
+class=SpellE><code><span style='font-size:10.0pt'>serverBasicOperations.xml</span></code></span>
+to configure the cache server and initialize the client programmatically.
+
+Additional support files are stored in the <code><span
+style='font-size:10.0pt'>lib</span></code> directory. </p>
+
+<p>The C++ and C# example files are packaged as Microsoft Visual Studio 2010
+solutions (<span class=SpellE><code><span style='font-size:10.0pt'>quickstart_cpp_10.sln</span></code></span>
+and <span class=SpellE><code><span style='font-size:10.0pt'>quickstart_csharp_10.sln</span></code></span>),
+and can be accessed through the IDE or through any editor.</p>
+
+<p class=MsoNormal><o:p>&nbsp;</o:p></p>
+
+<div class=MsoNormal align=center style='text-align:center'>
+
+<hr size=2 width="100%" align=center>
+
+</div>
+
+<h2>About the GemFire Native Client </h2>
+
+<p>The GemFire Native Client provides access for C++ and Microsoft
+.NET clients to the GemFire distributed system. GemFire
+native clients in C++ and .NET communicate only with the cache server and do
+not communicate with each other. C++ and .NET native clients provide access to
+the full region API, including support for application <span class=SpellE>plugins</span>.
+All of this is transparent to the end user.</p>
+
+<p>This figure provides a conceptual overview of how .NET and C++ applications
+access the GemFire cache server: <br>
+<br>
+<img width=768 height=268 id="_x0000_i1026" src=overview.gif border="0/"></p>
+
+<p class=MsoNormal><o:p>&nbsp;</o:p></p>
+
+<div class=MsoNormal align=center style='text-align:center'>
+
+<hr size=2 width="100%" align=center>
+
+</div>
+
+<h2><a name="configuring_environment" id="configuring_environment"></a>Configuring
+the <span class=SpellE>QuickStart</span> Environment</h2>
+
+<p>Follow these steps to prepare your system environment to run the <span
+class=SpellE>QuickStart</span> examples. Throughout this <span class=SpellE>QuickStart</span>
+Guide, text that you type is shown in <code><b><span style='font-size:10.0pt'>bold</span></b></code>.</p>
+
+<ol start=1 type=1>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;margin-bottom:12.0pt;
+     mso-list:l4 level1 lfo1;tab-stops:list .5in'><em>For Linux and Solaris:</em>
+     Start a terminal session from the GemFire product installation
+     directory, <span class=GramE>then</span> configure the environment
+     settings by following these steps.<br>
+     <br>
+     <em>For Windows:</em> Run the Visual Studio 2010 Command Prompt to create
+     a session with preset compiler environment configurations. Change to the
+     GemFire product installation directory, <span class=GramE>then</span>
+     configure the environment settings by following these steps.<br>
+     <br>
+     See the environment configuration list below for system-specific
+     instructions for the following steps.</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l4 level1 lfo1;tab-stops:list .5in'>Install <span class=SpellE>OpenSSL</span>
+     (optional):</li>
+</ol>
+
+<p style='margin-left:.5in'>To enable security in GemFire, the security <span
+class=SpellE>plugin</span> <span class=SpellE><code><span style='font-size:
+10.0pt'>securityImpl</span></code></span> needs to be compiled. The security <span
+class=SpellE>plugin</span> <strong>optionally</strong> depends on <span
+class=SpellE>OpenSSL</span> for its <strong>PKCS sample template</strong>, so <span
+class=SpellE>OpenSSL</span> needs to be compiled or installed first.<br>
+<br>
+For Linux and Solaris, you can download the <a
+href="http://www.openssl.org/source/" target="_blank">latest <span
+class=SpellE>tarball</span></a> archive for <span class=SpellE>OpenSSL</span>.
+For Windows users, you can get the <span class=SpellE>OpenSSL</span> installer <a
+href="http://www.openssl.org/related/binaries.html" target="_blank">here</a>. </p>
+
+<blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'>
+
+<p style='margin-left:.5in'><em>To compile <span class=SpellE>OpenSSL</span>
+(Linux and Solaris):</em></p>
+
+<blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'>
+
+<p style='margin-left:.5in'>Copy the downloaded <span class=SpellE>OpenSSL</span>
+<span class=SpellE>tarball</span> to your appropriate <code><span
+style='font-size:10.0pt'>Linux</span></code> or <code><span style='font-size:
+10.0pt'>SunOS</span></code> folder at <span class=SpellE><code><span
+style='font-size:10.0pt'>templates/security/openssl</span></code></span>,
+<span class=GramE>then</span> execute <span class=SpellE><code><span
+style='font-size:10.0pt'>buildit.sh</span></code></span> from the shell.</p>
+
+</blockquote>
+
+<p style='margin-left:.5in'><em>To install <span class=SpellE>OpenSSL</span>
+(Windows):</em></p>
+
+<blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'>
+
+<p style='margin-left:.5in'>Run the downloaded <span class=SpellE>OpenSSL</span>
+installer and accept the default installation path (<code><span
+style='font-size:10.0pt'>C:\OpenSSL</span></code>). </p>
+
+</blockquote>
+
+</blockquote>
+
+<ol start=3 type=1>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;margin-bottom:12.0pt;
+     mso-list:l4 level1 lfo1;tab-stops:list .5in'>Set the <code><span
+     style='font-size:10.0pt'>JAVA_HOME</span></code> and <code><span
+     style='font-size:10.0pt'>GF_JAVA_HOME</span></code> environment variables
+     to your installed JRE or JDK. See the installation information in the <em>GemFire
+     User's Guide</em> for the versions of Java that
+     are compatible with GemFire. The <code><span style='font-size:
+     10.0pt'>JAVA_HOME</span></code> setting is for your applications, and <code><span
+     style='font-size:10.0pt'>GF_JAVA_HOME</span></code> is for the GemFire
+     scripts. You must have a compatible JRE or JDK installed and you must set <code><span
+     style='font-size:10.0pt'>JAVA_HOME</span></code> and <code><span
+     style='font-size:10.0pt'>GF_JAVA_HOME</span></code> to point to it. See
+     the Sun Java web site at <a href="http://java.sun.com" target="_blank">http://java.sun.com</a>
+     for the latest Java version for your operating system. </li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;margin-bottom:12.0pt;
+     mso-list:l4 level1 lfo1;tab-stops:list .5in'>Add <code><span
+     style='font-size:10.0pt'>$JAVA_HOME/bin</span></code> to the start of your
+     <code><span style='font-size:10.0pt'>PATH</span></code>.<br>
+     Set the <code><span style='font-size:10.0pt'>GFCPP</span></code>
+     environment variable to point to <span class=SpellE><code><span
+     style='font-size:10.0pt'>NativeClient_InstallDir</span></code></span>.<br>
+     Set the <code><span style='font-size:10.0pt'>OPENSSL</span></code>
+     environment variable. For Linux and Solaris, point it to the parent folder
+     for the <span class=SpellE>OpenSSL</span> binaries created from the <span
+     class=SpellE>tarball</span>. For Windows, if you accept the default
+     installation path in step 2, it will be <code><span style='font-size:10.0pt'>set
+     OPENSSL=C<span class=GramE>:\</span><span class=SpellE>OpenSSL</span></span></code>.
+     </li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;margin-bottom:12.0pt;
+     mso-list:l4 level1 lfo1;tab-stops:list .5in'><em>For Solaris and Linux
+     only</em>: <br>
+     Set the <code><span style='font-size:10.0pt'>LD_LIBRARY_PATH</span></code>
+     environment variable to point to the <span class=SpellE><code><span
+     style='font-size:10.0pt'>NativeClient_InstallDir</span></code></span><code><span
+     style='font-size:10.0pt'>/lib</span></code> directory and <code><span
+     style='font-size:10.0pt'>$OPENSSL/lib</span></code> directory for running
+     the <strong>Security</strong> example.</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l4 level1 lfo1;tab-stops:list .5in'><em>For Windows only</em>: <br>
+     Set the <code><span style='font-size:10.0pt'>PATH</span></code>
+     environment variable to point to the <span class=SpellE><code><span
+     style='font-size:10.0pt'>NativeClient_InstallDir</span></code></span><code><span
+     style='font-size:10.0pt'>\bin</span></code> directory and <code><span
+     style='font-size:10.0pt'>%OPENSSL%\bin</span></code> directory for running
+     the <strong>Security</strong> example.</li>
+</ol>
+
+<p style='margin-left:.5in'>The following environment configuration list is a
+summary of the commands described in steps 1 through 6 that you need to run for
+the <span class=SpellE>QuickStart</span> Guide. Choose the set of commands that
+are appropriate for your operating system. The text that you type is shown in <code><b><span
+style='font-size:10.0pt'>bold</span></b></code>.</p>
+
+<p style='margin-left:.5in'><strong>Bourne and <span class=SpellE>Korn</span>
+shells (<span class=SpellE>sh</span>, <span class=SpellE>ksh</span>, bash)</strong></p>
+
+<blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'>
+
+<p style='margin-left:.5in'><code><span style='font-size:10.0pt'>% </span></code><span
+class=SpellE><strong><span style='font-size:10.0pt;font-family:"Courier New"'>cd</span></strong></span><strong><span
+style='font-size:10.0pt;font-family:"Courier New"'> <span class=SpellE>GemFireInstallDirectory</span></span></strong><span
+style='font-size:10.0pt;font-family:"Courier New"'><br>
+<code>% </code><strong><span style='font-family:"Courier New"'>GEMFIRE=<span
+class=SpellE>GemFireInstallDirectory</span>; export GEMFIRE </span></strong><br>
+<code>% </code><strong><span style='font-family:"Courier New"'>CLASSPATH=$GEMFIRE/lib/gemfire.jar:$GEMFIRE/lib/antlr.jar:$GEMFIRE/lib/gfSecurityImpl.jar:$CLASSPATH;
+export CLASSPATH </span></strong><br>
+<code>% </code><strong><span style='font-family:"Courier New"'>JAVA_HOME=&lt;installed
+JRE PATH&gt; export JAVA_HOME</span></strong><br>
+<code>% </code><strong><span style='font-family:"Courier New"'>GF_JAVA_HOME=$JAVA_HOME;
+export GF_JAVA_HOME</span></strong><br>
+<code>% </code><strong><span style='font-family:"Courier New"'>PATH=$JAVA_HOME/<span
+class=SpellE>bin:$GEMFIRE/bin:$PATH</span>; export PATH</span></strong><br>
+<code>% </code><strong><span style='font-family:"Courier New"'>GFCPP=&lt;full
+path to <span class=SpellE>NativeClient_InstallDir</span>&gt;; export GFCPP</span></strong><b><br>
+</b><code>% </code><strong><span style='font-family:"Courier New"'>OPENSSL=&lt;parent
+folder for <span class=SpellE>OpenSSL</span> binaries&gt;; export OPENSSL </span></strong><br>
+<code>% </code><strong><span style='font-family:"Courier New"'>LD_LIBRARY_PATH=$GFCPP/lib:${LD_LIBRARY_PATH};
+export LD_LIBRARY_PATH</span></strong><b><br>
+</b><code>% </code><strong><span style='font-family:"Courier New"'>LD_LIBRARY_PATH=$OPENSSL/lib:${LD_LIBRARY_PATH};
+export LD_LIBRARY_PATH</span></strong></span></p>
+
+</blockquote>
+
+<p style='margin-left:.5in'><strong>Windows</strong></p>
+
+<blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'>
+
+<p style='margin-left:.5in'><code><span style='font-size:10.0pt'>&gt; </span></code><span
+class=SpellE><span class=GramE><strong><span style='font-size:10.0pt;
+font-family:"Courier New"'>cd</span></strong></span></span><strong><span
+style='font-size:10.0pt;font-family:"Courier New"'> <span class=SpellE>GemFireInstallDirectory</span></span></strong><span
+style='font-size:10.0pt;font-family:"Courier New"'><br>
+<code>&gt; </code><strong><span style='font-family:"Courier New"'>set GEMFIRE=<span
+class=SpellE>GemFireInstallDirectory</span> </span></strong><br>
+<code>&gt; </code><strong><span style='font-family:"Courier New"'>set
+CLASSPATH=%GEMFIRE%\lib\gemfire.jar;%GEMFIRE%\lib\antlr.jar;%GEMFIRE%\lib\gfSecurityImpl.jar%CLASSPATH%</span></strong><br>
+<code>&gt; </code><strong><span style='font-family:"Courier New"'>set
+JAVA_HOME=&lt;installed JRE PATH&gt;</span></strong><br>
+<code>&gt; </code><strong><span style='font-family:"Courier New"'>set
+GF_JAVA_HOME=%JAVA_HOME%</span></strong><br>
+<code>&gt; </code><strong><span style='font-family:"Courier New"'>set GFCPP=C:\<span
+class=SpellE>NativeClient_InstallDir</span></span></strong><br>
+<code>&gt; </code><strong><span style='font-family:"Courier New"'>set
+OPENSSL=C:\<span class=SpellE>OpenSSL</span></span></strong><br>
+<code>&gt; </code><strong><span style='font-family:"Courier New"'>set
+PATH=%JAVA_HOME%\bin;%GFCPP%\bin;%OPENSSL%\bin;%GEMFIRE%\bin;%PATH%</span></strong></span></p>
+
+</blockquote>
+
+<ol start=7 type=1>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l4 level1 lfo1;tab-stops:list .5in'>Compile the security <span
+     class=SpellE>plugin</span>:</li>
+</ol>
+
+<p style='margin-left:.5in'><em>To compile the </em><span class=SpellE><code><i><span
+style='font-size:10.0pt'>securityImpl</span></i></code></span><em> security <span
+class=SpellE>plugin</span> on Linux and Solaris:</em></p>
+
+<blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'>
+
+<p style='margin-left:.5in'>Execute the <span class=SpellE><code><span
+style='font-size:10.0pt'>buildit.sh</span></code></span> script in the <span
+class=SpellE><code><span style='font-size:10.0pt'>NativeClient_InstallDir</span></code></span><code><span
+style='font-size:10.0pt'>/templates/security</span></code> directory.</p>
+
+</blockquote>
+
+<p style='margin-left:.5in'><em>To compile the </em><span class=SpellE><code><i><span
+style='font-size:10.0pt'>securityImpl</span></i></code></span><em> security <span
+class=SpellE>plugin</span> on Windows:</em></p>
+
+<blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'>
+
+<p style='margin-left:.5in'>Execute the <span class=SpellE><code><span
+style='font-size:10.0pt'>buildit.bat</span></code></span> script in the <span
+class=SpellE><code><span style='font-size:10.0pt'>NativeClient_InstallDir</span></code></span><code><span
+style='font-size:10.0pt'>/templates/security</span></code> directory.</p>
+
+</blockquote>
+
+<ol start=8 type=1>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l4 level1 lfo1;tab-stops:list .5in'>Change the working directory
+     to the <span class=SpellE><code><span style='font-size:10.0pt'>quickstart</span></code></span>
+     directory for the native client:</li>
+</ol>
+
+<blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'>
+
+<p class=MsoNormal style='margin-left:.5in'><span class=SpellE><span
+class=GramE><code><b><span style='font-size:10.0pt'>cd</span></b></code></span></span><code><b><span
+style='font-size:10.0pt'> <span class=SpellE>SampleCode\quickstart</span></span></b></code></p>
+
+</blockquote>
+
+<blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'>
+
+<p><o:p>&nbsp;</o:p></p>
+
+</blockquote>
+
+<div class=MsoNormal align=center style='text-align:center'>
+
+<hr size=2 width="100%" align=center>
+
+</div>
+
+<h2>About the <span class=SpellE>QuickStart</span> Examples</h2>
+
+<p>The examples are briefly described in this section. Each example performs
+the following steps:</p>
+
+<ol start=1 type=1>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l8 level1 lfo2;tab-stops:list .5in'>Starts the cache server with
+     the example's server XML.</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l8 level1 lfo2;tab-stops:list .5in'>Creates a GemFire cache.</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l8 level1 lfo2;tab-stops:list .5in'>Performs operations specific
+     to the example.</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l8 level1 lfo2;tab-stops:list .5in'>Closes the GemFire cache.</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l8 level1 lfo2;tab-stops:list .5in'>Shuts down the cache server.</li>
+</ol>
+
+<p>Note the messages that appear in the example's session as it runs and
+performs the steps in the list.</p>
+
+<p class=MsoNormal><o:p>&nbsp;</o:p></p>
+
+<h3>Basic Operations </h3>
+
+<p>The <span class=SpellE><code><span style='font-size:10.0pt'>BasicOperations</span></code></span>
+example puts entries (key and value pairs) into a region, gets entries from the
+region, invalidates an entry in the region, and destroys an entry in the
+region.</p>
+
+<p>The <span class=SpellE><code><span style='font-size:10.0pt'>BasicOperations</span></code></span>
+example uses the built-in <span class=SpellE>serializable</span> types <code><span
+style='font-size:10.0pt'>CacheableInt32</span></code> and <span class=SpellE><code><span
+style='font-size:10.0pt'>CacheableString</span></code></span>. There are other
+built-in types which can be used for an entry. Some types can be used as keys
+or values, while others can only be used as values. The types are listed in the
+following table: </p>
+
+<table class=MsoNormalTable border=1 cellpadding=0 width=575 style='width:431.25pt;
+ mso-cellspacing:1.5pt'>
+ <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
+  <td colspan=2 style='border:none;padding:.75pt .75pt .75pt .75pt'>
+  <p class=MsoNormal align=center style='text-align:center'><strong>Built-In <span
+  class=SpellE>Serializable</span> Types</strong> </p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:1'>
+  <td width=276 style='width:207.0pt;padding:.75pt .75pt .75pt .75pt'>
+  <p class=MsoNormal align=center style='text-align:center'><em>Cacheable Types
+  For Keys or Values </em></p>
+  </td>
+  <td width=289 style='width:216.75pt;padding:.75pt .75pt .75pt .75pt'>
+  <p class=MsoNormal align=center style='text-align:center'><em>Cacheable Types
+  Only For Values </em></p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:2'>
+  <td style='padding:.75pt .75pt .75pt .75pt'>
+  <p class=MsoNormal><code><span style='font-size:10.0pt'>CacheableInt32</span></code></p>
+  </td>
+  <td style='padding:.75pt .75pt .75pt .75pt'>
+  <p class=MsoNormal><span class=SpellE><code><span style='font-size:10.0pt'>CacheableBytes</span></code></span></p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:3'>
+  <td style='padding:.75pt .75pt .75pt .75pt'>
+  <p class=MsoNormal><span class=SpellE><code><span style='font-size:10.0pt'>CacheableString</span></code></span></p>
+  </td>
+  <td style='padding:.75pt .75pt .75pt .75pt'>
+  <p class=MsoNormal><span class=SpellE><code><span style='font-size:10.0pt'>CacheableDoubleArray</span></code></span></p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:4'>
+  <td style='padding:.75pt .75pt .75pt .75pt'>
+  <p class=MsoNormal><span class=SpellE><code><span style='font-size:10.0pt'>CacheableBoolean</span></code></span></p>
+  </td>
+  <td style='padding:.75pt .75pt .75pt .75pt'>
+  <p class=MsoNormal><span class=SpellE><code><span style='font-size:10.0pt'>CacheableFloatArray</span></code></span></p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:5'>
+  <td style='padding:.75pt .75pt .75pt .75pt'>
+  <p class=MsoNormal><span class=SpellE><code><span style='font-size:10.0pt'>CacheableByte</span></code></span></p>
+  </td>
+  <td style='padding:.75pt .75pt .75pt .75pt'>
+  <p class=MsoNormal><code><span style='font-size:10.0pt'>CacheableInt16Array</span></code></p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:6'>
+  <td style='padding:.75pt .75pt .75pt .75pt'>
+  <p class=MsoNormal><span class=SpellE><code><span style='font-size:10.0pt'>CacheableDouble</span></code></span></p>
+  </td>
+  <td style='padding:.75pt .75pt .75pt .75pt'>
+  <p class=MsoNormal><code><span style='font-size:10.0pt'>CacheableInt32Array</span></code></p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:7'>
+  <td style='padding:.75pt .75pt .75pt .75pt'>
+  <p class=MsoNormal><span class=SpellE><code><span style='font-size:10.0pt'>CacheableFloat</span></code></span></p>
+  </td>
+  <td style='padding:.75pt .75pt .75pt .75pt'>
+  <p class=MsoNormal><code><span style='font-size:10.0pt'>CacheableInt64Array</span></code></p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:8'>
+  <td style='padding:.75pt .75pt .75pt .75pt'>
+  <p class=MsoNormal><code><span style='font-size:10.0pt'>CacheableInt16</span></code></p>
+  </td>
+  <td style='padding:.75pt .75pt .75pt .75pt'>
+  <p class=MsoNormal><span class=SpellE><code><span style='font-size:10.0pt'>CacheableStringArray</span></code></span></p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:9'>
+  <td style='padding:.75pt .75pt .75pt .75pt'>
+  <p class=MsoNormal><code><span style='font-size:10.0pt'>CacheableInt64</span></code></p>
+  </td>
+  <td style='padding:.75pt .75pt .75pt .75pt'>
+  <p class=MsoNormal><span class=SpellE><code><span style='font-size:10.0pt'>CacheableObjectArray</span></code></span></p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:10'>
+  <td style='padding:.75pt .75pt .75pt .75pt'>
+  <p class=MsoNormal><span class=SpellE><code><span style='font-size:10.0pt'>CacheableWideChar</span></code></span></p>
+  </td>
+  <td style='padding:.75pt .75pt .75pt .75pt'>
+  <p class=MsoNormal><span class=SpellE><code><span style='font-size:10.0pt'>CacheableVector</span></code></span></p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:11'>
+  <td style='padding:.75pt .75pt .75pt .75pt'>
+  <p class=MsoNormal><span class=SpellE><code><span style='font-size:10.0pt'>CacheableDate</span></code></span></p>
+  </td>
+  <td style='padding:.75pt .75pt .75pt .75pt'>
+  <p class=MsoNormal><span class=SpellE><code><span style='font-size:10.0pt'>CacheableHashMap</span></code></span></p>
+  </td>
+ </tr>
+ <tr style='mso-yfti-irow:12;mso-yfti-lastrow:yes'>
+  <td style='padding:.75pt .75pt .75pt .75pt'>
+  <p class=MsoNormal><span class=SpellE><code><span style='font-size:10.0pt'>CacheableFileName</span></code></span></p>
+  </td>
+  <td style='padding:.75pt .75pt .75pt .75pt'>
+  <p class=MsoNormal><span class=SpellE><code><span style='font-size:10.0pt'>CacheableHashSet</span></code></span></p>
+  </td>
+ </tr>
+</table>
+
+<p>You can also provide your own <span class=SpellE>serializable</span>
+objects. Examples of custom <span class=SpellE>serializable</span> objects are <code><span
+style='font-size:10.0pt'>Position</span></code> and <code><span
+style='font-size:10.0pt'>Portfolio</span></code> in the <span class=SpellE><code><span
+style='font-size:10.0pt'>RemoteQuery</span></code></span> example. For more
+information regarding serialization, refer to the <em>GemFire Native
+Client Guide</em> and the online API documentation for the native client.</p>
+
+<p class=MsoNormal><o:p>&nbsp;</o:p></p>
+
+<h3>Data Expiration </h3>
+
+<p>The <span class=SpellE><code><span style='font-size:10.0pt'>DataExpiration</span></code></span>
+example is configured with an expiration action of <code><span
+style='font-size:10.0pt'>destroy</span></code> that has a 10 second timeout. It
+performs the following operations:</p>
+
+<ul type=disc>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l7 level1 lfo3;tab-stops:list .5in'>Sets the <span class=SpellE><code><span
+     style='font-size:10.0pt'>SimpleCacheListener</span></code></span> <span
+     class=SpellE>plugin</span> on a region</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l7 level1 lfo3;tab-stops:list .5in'>Puts three entries into the
+     region</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l7 level1 lfo3;tab-stops:list .5in'>Gets the entry idle timeout
+     setting from the region</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l7 level1 lfo3;tab-stops:list .5in'>Counts the keys in the region
+     before the timeout duration elapses</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l7 level1 lfo3;tab-stops:list .5in'>Waits for the timeout
+     expiration action to be reported by the <span class=SpellE><code><span
+     style='font-size:10.0pt'>SimpleCacheListener</span></code></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l7 level1 lfo3;tab-stops:list .5in'>Counts the remaining keys in
+     the region after the timeout duration elapses </li>
+</ul>
+
+<p>Multiple eviction action options are available, including <code><span
+style='font-size:10.0pt'>overflow</span></code>. For detailed information, see
+the <em>GemFire Native Client Guide</em>.</p>
+
+<p class=MsoNormal><o:p>&nbsp;</o:p></p>
+
+<h3>Loader Listener Writer</h3>
+
+<p>The <span class=SpellE><code><span style='font-size:10.0pt'>LoaderListenerWriter</span></code></span>
+example sets the <span class=SpellE><code><span style='font-size:10.0pt'>SimpleCacheLoader</span></code></span>,
+<span class=SpellE><code><span style='font-size:10.0pt'>SimpleCacheListener</span></code></span>,
+and <span class=SpellE><code><span style='font-size:10.0pt'>SimpleCacheWriter</span></code></span>
+<span class=SpellE>plugins</span> on a region. These <span class=SpellE>plugins</span>
+report the events that occur during the following region operations:</p>
+
+<ul type=disc>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l5 level1 lfo4;tab-stops:list .5in'>Put three entries into the
+     region</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l5 level1 lfo4;tab-stops:list .5in'>Update an entry in the region</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l5 level1 lfo4;tab-stops:list .5in'>Destroy an entry in the
+     region</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l5 level1 lfo4;tab-stops:list .5in'>Invalidate an entry in the
+     region</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l5 level1 lfo4;tab-stops:list .5in'>Get a new entry from the
+     region</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l5 level1 lfo4;tab-stops:list .5in'>Get the destroyed entry from
+     the region </li>
+</ul>
+
+<p class=MsoNormal><o:p>&nbsp;</o:p></p>
+
+<h3>Register Interest</h3>
+
+<p>The <span class=SpellE><code><span style='font-size:10.0pt'>RegisterInterest</span></code></span>
+example calls the interest API on a region. These are the functions that are
+called:</p>
+
+<ul type=disc>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l12 level1 lfo5;tab-stops:list .5in'><span class=SpellE><code><span
+     style='font-size:10.0pt'>registerAllKeys</span></code></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l12 level1 lfo5;tab-stops:list .5in'><span class=SpellE><code><span
+     style='font-size:10.0pt'>unregisterAllKeys</span></code></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l12 level1 lfo5;tab-stops:list .5in'><span class=SpellE><code><span
+     style='font-size:10.0pt'>registerKeys</span></code></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l12 level1 lfo5;tab-stops:list .5in'><span class=SpellE><code><span
+     style='font-size:10.0pt'>unregisterKeys</span></code></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l12 level1 lfo5;tab-stops:list .5in'><span class=SpellE><code><span
+     style='font-size:10.0pt'>registerRegex</span></code></span></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l12 level1 lfo5;tab-stops:list .5in'><span class=SpellE><code><span
+     style='font-size:10.0pt'>unregisterRegex</span></code></span></li>
+</ul>
+
+<p class=MsoNormal><o:p>&nbsp;</o:p></p>
+
+<h3>Remote Query</h3>
+
+<p>The <span class=SpellE><code><span style='font-size:10.0pt'>RemoteQuery</span></code></span>
+example populates some query objects on a region, executes a query that returns
+a <span class=SpellE><code><span style='font-size:10.0pt'>ResultSet</span></code></span>,
+executes a query that returns a <span class=SpellE><code><span
+style='font-size:10.0pt'>StructSet</span></code></span>, and executes the
+region shortcut query methods.</p>
+
+<h3>Continuous Query</h3>
+
+<p>The <span class=SpellE><code><span style='font-size:10.0pt'>CqQuery</span></code></span>
+<span class=GramE>example demonstrate</span> the continuous query APIs.</p>
+
+<h3>Function Execution</h3>
+
+<p>The <span class=SpellE><code><span style='font-size:10.0pt'>ExecuteFunctions</span></code></span>
+<span class=GramE>example demonstrate</span> the function execution APIs.</p>
+
+
+<h3><span class=SpellE>Interop</span></h3>
+
+<p>The <span class=SpellE><code><span style='font-size:10.0pt'>Interop</span></code></span>
+example is a simple demonstration that starts a cache server with a C++ client,
+a C# client, and a Java client to demonstrate their interoperability. The C#
+client is not started on Linux or Solaris.</p>
+
+<p>Each client populates a single entry on a region, <span class=GramE>then</span>
+waits for the other clients to populate their entries. Each client then gets
+and prints out every entry populated on the server. You might see multiple
+lines output every second with the message <code><span style='font-size:10.0pt'>Checking
+server for keys...</span></code> displayed while the clients wait for the <span
+class=GramE>others</span> to complete their puts. You should eventually see the
+output from each client printing its own entry and the entries from the other
+clients.</p>
+
+<p>The <span class=SpellE><code><span style='font-size:10.0pt'>Interop</span></code></span>
+example is not included on the <span class=SpellE>QuickStart</span> menu, so it
+can only be started from the command line. See <a href="#run_interop">Running
+the <span class=SpellE>Interop</span> Example</a> for more information.</p>
+
+<p class=MsoNormal><o:p>&nbsp;</o:p></p>
+
+<h3>HA Cache</h3>
+
+<p>The <code><span style='font-size:10.0pt'>HA Cache</span></code> example uses
+client and server <span class=SpellE>XMLs</span> configured to provide high
+availability functionality for client queues. The example calls the interest
+API on a region and does simple puts.</p>
+
+<p class=MsoNormal><o:p>&nbsp;</o:p></p>
+
+<h3>Exceptions</h3>
+
+<p>The <code><span style='font-size:10.0pt'>Exceptions</span></code> example
+performs some operations in incorrect ways, <span class=GramE>then</span> logs
+the exceptions thrown by GemFire to demonstrate error handling.</p>
+
+<p class=MsoNormal><o:p>&nbsp;</o:p></p>
+
+<h3>Durable Client</h3>
+
+<p>The <span class=SpellE><code><span style='font-size:10.0pt'>DurableClient</span></code></span>
+example demonstrates durable client messaging. If the client loses its
+connection with a cache server, the primary server and any redundant servers
+maintain an event queue until the client reconnects. The queued messages are
+then sent to the client. This example demonstrates the following functionality:</p>
+
+<ul type=disc>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l9 level1 lfo6;tab-stops:list .5in'>Durable client properties ( <code><span
+     style='font-size:10.0pt'>durable-client-id, durable-timeout</span></code>)</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l9 level1 lfo6;tab-stops:list .5in'><span class=SpellE><code><span
+     style='font-size:10.0pt'>readyForEvents</span></code></span> cache API</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l9 level1 lfo6;tab-stops:list .5in'>Register interest APIs with
+     the <span class=SpellE><code><span style='font-size:10.0pt'>isDurable</span></code></span>
+     option</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l9 level1 lfo6;tab-stops:list .5in'>Cache close API with the <span
+     class=SpellE><code><span style='font-size:10.0pt'>keepalive</span></code></span>
+     option</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l9 level1 lfo6;tab-stops:list .5in'><span class=SpellE><code><span
+     style='font-size:10.0pt'>CacheListener</span></code></span> with the <span
+     class=SpellE><code><span style='font-size:10.0pt'>afterRegionLive</span></code></span>
+     API</li>
+</ul>
+
+<h3>Security</h3>
+
+<p>The <code><span style='font-size:10.0pt'>Security</span></code> example
+demonstrates how native client credentials are authenticated when the client
+connects to a cache server. Authorization for client cache operations is also
+shown. </p>
+
+<p class=MsoNormal><o:p>&nbsp;</o:p></p>
+
+<h3><span class=SpellE>PutAll</span> <span class=GramE>And</span> <span
+class=SpellE>GetAll</span> Operations </h3>
+
+<p>The <span class=SpellE><code><span style='font-size:10.0pt'>PutAllGetAllOperations</span></code></span>
+example demonstrates <span class=SpellE>PutAll</span> and <span class=SpellE>GetAll</span>
+operations</p>
+
+<ul type=disc>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l0 level1 lfo7;tab-stops:list .5in'>The Client is initialized
+     programmatically rather than declaratively</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l0 level1 lfo7;tab-stops:list .5in'><span class=SpellE>PutAll</span>
+     is called with 100 entries into the region</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l0 level1 lfo7;tab-stops:list .5in'><span class=SpellE>GetAll</span>
+     is called with 100 entries from the region</li>
+</ul>
+
+<p class=MsoNormal><o:p>&nbsp;</o:p></p>
+
+<h3><span class=SpellE>DistributedSystem</span></h3>
+
+<p>The <span class=SpellE><code><span style='font-size:10.0pt'>DistributedSystem</span></code></span>
+example demonstrates how client can connect to two distributed systems.</p>
+
+<ul type=disc>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l0 level1 lfo7;tab-stops:list .5in'>Client creates the instance of cache.</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l0 level1 lfo7;tab-stops:list .5in'>Then clients creates two different regions in two
+     different distributed systems.</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l0 level1 lfo7;tab-stops:list .5in'> And then it creates basic put-get operations on those regions and closes
+     the instance of cache.</li>
+</ul>
+
+<p class=MsoNormal><o:p>&nbsp;</o:p></p>
+
+
+<h3><span class=SpellE>PoolWithEndpoints</span></h3>
+
+<p>This example demonstrates how client can create programatically pool with endpoints.</p>
+
+<ul type=disc>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l0 level1 lfo7;tab-stops:list .5in'>Client creates the instance of cache.</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l0 level1 lfo7;tab-stops:list .5in'>Then clients creates poolfactory with endpoints. Then it creates
+     pool using this poolfactory</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l0 level1 lfo7;tab-stops:list .5in'> Then it creates region with pool and does put-get operations on this region.</li>
+</ul>
+
+<p class=MsoNormal><o:p>&nbsp;</o:p></p>
+
+
+<h3><span class=SpellE>PoolRemoteQuery</span></h3>
+
+<p>This example demonstrates how client can create pool with locator using xml. And then it demonstrates how it can execute qurey on region(attached with pool).</p>
+
+<ul type=disc>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l0 level1 lfo7;tab-stops:list .5in'>Client creates the instance of cache using XML.</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l0 level1 lfo7;tab-stops:list .5in'>Then client gets region from the cache. And then it puts some data on cache.</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l0 level1 lfo7;tab-stops:list .5in'> And then it gets queryService from cache and executes some queries.</li>
+</ul>
+
+<p class=MsoNormal><o:p>&nbsp;</o:p></p>
+
+
+<h3>Pool Continuous Query</h3>
+
+<p>The <span class=SpellE><code><span style='font-size:10.0pt'>PoolCqQuery</span></code></span>
+<span class=GramE>example demonstrates</span> the continuous query with Pool APIs.</p>
+
+
+<p class=MsoNormal><o:p>&nbsp;</o:p></p>
+
+
+<h3>Delta Propagation</h3>
+
+<p>The <span class=SpellE><code><span style='font-size:10.0pt'>Delta</span></code></span>
+<span class=GramE>example </span> shows how a change in a value stored in a client can be propagated to the server.
+ In the example, a single field of an existing value in a region is modified, and the delta for the value (which is
+ the new value for the updated field) is propagated to the server in a put operation.</p>
+
+
+<p class=MsoNormal><o:p>&nbsp;</o:p></p>
+
+<h3>Multiuser Security</h3>
+
+<p>The <span class=SpellE><code><span style='font-size:10.0pt'>Multiuser Security</span></code></span>
+<span class=GramE>example </span> shows per user authenticated cache usage.</p>
+
+
+<p class=MsoNormal><o:p>&nbsp;</o:p></p>
+
+<h3>RefIDExample</h3>
+
+<p>The <span class=SpellE><code><span style='font-size:10.0pt'>RefIDExample</span></code></span>
+<span class=GramE>example </span> shows how to declaratively intialize the Region using refid.</p>
+
+<p class=MsoNormal><o:p>&nbsp;</o:p></p>
+
+<h3>Transactions</h3>
+
+<p>The <span class=SpellE><code><span style='font-size:10.0pt'>Transactions</span></code></span>
+<span class=GramE>example </span> shows the use of the client-server transactions API.</p>
+
+<p class=MsoNormal><o:p>&nbsp;</o:p></p>
+
+<h3>PdxRemoteQuery</h3>
+
+<p>The <span class=SpellE><code><span style='font-size:10.0pt'>PdxRemoteQuery</span></code></span>
+<span class=GramE>example </span> shows the use of PDX serialized objects with GemFire querying.</p>
+
+<p class=MsoNormal><o:p>&nbsp;</o:p></p>
+
+<h3>PdxSerializer</h3>
+
+<p>The <span class=SpellE><code><span style='font-size:10.0pt'>PdxSerializer</span></code></span>
+<span class=GramE>example </span> shows the use of an external PDX serializer for user domain classes that aren't modified to implement the <span class=SpellE><code><span style='font-size:10.0pt'>IPdxSerializable</span></code></span> interface.</p>
+
+<p class=MsoNormal><o:p>&nbsp;</o:p></p>
+
+<h3>PdxInstance</h3>
+
+<p>The <span class=SpellE><code><span style='font-size:10.0pt'>PdxInstance</span></code></span>
+<span class=GramE>example </span> shows the ability of clients to work with PDX serialized objects without having the actual domain classes available.</p>
+
+
+<p class=MsoNormal><o:p>&nbsp;</o:p></p>
+
+<p class=MsoNormal style='margin-bottom:12.0pt'><o:p>&nbsp;</o:p></p>
+
+
+<div class=MsoNormal align=center style='text-align:center'>
+
+<hr size=2 width="100%" align=center>
+
+</div>
+
+<h2>Running the Examples</h2>
+
+<p>You can run the <span class=SpellE>QuickStart</span> examples by starting
+each C++ or C# example individually from the command line, or by starting the
+examples from a menu. The menu provides a numbered list of the example names,
+so you just enter the example number to start it.</p>
+
+<blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'>
+
+<p><em>The C# examples are only available for Windows.</em></p>
+
+</blockquote>
+
+<p class=MsoNormal><o:p>&nbsp;</o:p></p>
+
+<h3>Running an Example <span class=GramE>From</span> the Command Line</h3>
+
+<blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'>
+
+<h4>C++ examples </h4>
+
+<blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'>
+
+<p><em>For Windows:</em> <span class=SpellE><code><b><span style='font-size:
+10.0pt'>runcpp</span></b></code></span><code><b><span style='font-size:10.0pt'>
+<span class=SpellE>ExampleName</span></span></b></code> (for example, <span
+class=SpellE><code><b><span style='font-size:10.0pt'>runcpp</span></b></code></span><code><b><span
+style='font-size:10.0pt'> <span class=SpellE>DataExpiration</span></span></b></code>)</p>
+
+<p><em>For Linux or Solaris:</em> <code><b><span style='font-size:10.0pt'>./<span
+class=SpellE>runcpp.sh</span> <span class=SpellE>ExampleName</span></span></b></code>
+(for example, <code><b><span style='font-size:10.0pt'>./<span class=SpellE>runcpp.sh</span>
+<span class=SpellE>BasicOperations</span></span></b></code>)</p>
+
+</blockquote>
+
+<h4>C# examples </h4>
+
+<blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'>
+
+<p><span class=SpellE><span class=GramE><code><b><span style='font-size:10.0pt'>runcs</span></b></code></span></span><code><b><span
+style='font-size:10.0pt'> <span class=SpellE>ExampleName</span></span></b></code>
+(for example, <span class=SpellE><code><b><span style='font-size:10.0pt'>runcs</span></b></code></span><code><b><span
+style='font-size:10.0pt'> <span class=SpellE>RemoteQuery</span></span></b></code>)</p>
+
+</blockquote>
+
+<p class=MsoNormal><o:p>&nbsp;</o:p></p>
+
+</blockquote>
+
+<h3>Running a C++ Example <span class=GramE>From</span> the Menu</h3>
+
+<blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'>
+
+<p><em>For Windows:</em></p>
+
+<ol start=1 type=1>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l11 level1 lfo8;tab-stops:list .5in'>Start the C++ menu. </li>
+</ol>
+
+<p style='margin-left:.5in'><span class=SpellE><span class=GramE><code><b><span
+style='font-size:10.0pt'>runcpp</span></b></code></span></span></p>
+
+<ol start=2 type=1>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l11 level1 lfo8;tab-stops:list .5in'>Enter a number from the list
+     to start that example. </li>
+</ol>
+
+<p><em>For Linux or Solaris:</em></p>
+
+<ol start=1 type=1>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l10 level1 lfo9;tab-stops:list .5in'>Start the C++ menu. </li>
+</ol>
+
+<p style='margin-left:.5in'><code><b><span style='font-size:10.0pt'>./<span
+class=SpellE>runcpp.sh</span></span></b></code></p>
+
+<ol start=2 type=1>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l10 level1 lfo9;tab-stops:list .5in'>Enter a number from the list
+     to start that example</li>
+</ol>
+
+<p class=MsoNormal><o:p>&nbsp;</o:p></p>
+
+</blockquote>
+
+<h3>Running a C# Example <span class=GramE>From</span> the Menu</h3>
+
+<ol start=1 type=1>
+ <ol start=1 type=1>
+  <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
+      auto;mso-list:l2 level2 lfo10;tab-stops:list 1.0in'>Start the C# menu. </li>
+ </ol>
+</ol>
+
+<p style='margin-left:1.0in'><span class=SpellE><span class=GramE><code><b><span
+style='font-size:10.0pt'>runcs</span></b></code></span></span></p>
+
+<ol start=1 type=1>
+ <ol start=2 type=1>
+  <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
+      auto;mso-list:l2 level2 lfo10;tab-stops:list 1.0in'>Enter a number from
+      the list to start that example. </li>
+ </ol>
+</ol>
+
+<p class=MsoNormal><o:p>&nbsp;</o:p></p>
+
+<h3><a name="run_interop" id="run_interop"></a>Running the <span class=SpellE>Interop</span>
+Example</h3>
+
+<blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'>
+
+<p>The <span class=SpellE><code><span style='font-size:10.0pt'>Interop</span></code></span>
+example can only be run from the command line, so it's not listed on the <span
+class=SpellE>QuickStart</span> menu. Follow these steps to run <span
+class=SpellE><code><span style='font-size:10.0pt'>Interop</span></code></span>.
+</p>
+
+<p><em>For Windows:</em></p>
+
+<ol start=1 type=1>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l1 level1 lfo11;tab-stops:list .5in'>Start the <span
+     class=SpellE><code><span style='font-size:10.0pt'>Interop</span></code></span>
+     example. </li>
+</ol>
+
+<p style='margin-left:.5in'><span class=SpellE><span class=GramE><code><b><span
+style='font-size:10.0pt'>runinterop</span></b></code></span></span></p>
+
+<ol start=2 type=1>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l1 level1 lfo11;tab-stops:list .5in'>When the example has finished,
+     stop the Java cache server by entering this command in the open terminal
+     session: </li>
+</ol>
+
+<p style='margin-left:.5in'><span class=SpellE><span class=GramE><code><b><span
+style='font-size:10.0pt'>cacheserver</span></b></code></span></span><code><b><span
+style='font-size:10.0pt'> stop -dir=<span class=SpellE>gfecs</span></span></b></code></p>
+
+<p><em>For Linux or Solaris:</em></p>
+
+<ol start=1 type=1>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l3 level1 lfo12;tab-stops:list .5in'>Start the <span
+     class=SpellE><code><span style='font-size:10.0pt'>Interop</span></code></span>
+     example. </li>
+</ol>
+
+<p style='margin-left:.5in'><code><b><span style='font-size:10.0pt'>./<span
+class=SpellE>runinterop.sh</span></span></b></code></p>
+
+<ol start=2 type=1>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l3 level1 lfo12;tab-stops:list .5in'>When the example has
+     finished, stop the Java cache server by entering this command in the open
+     terminal session:</li>
+</ol>
+
+<p style='margin-left:.5in'><span class=SpellE><span class=GramE><code><b><span
+style='font-size:10.0pt'>cacheserver</span></b></code></span></span><code><b><span
+style='font-size:10.0pt'> stop -dir=<span class=SpellE>gfecs</span></span></b></code></p>
+
+<p class=MsoNormal style='mso-margin-top-alt:auto;margin-bottom:12.0pt;
+margin-left:.5in'><o:p>&nbsp;</o:p></p>
+
+</blockquote>
+
+<div class=MsoNormal align=center style='text-align:center'>
+
+<hr size=2 width="100%" align=center>
+
+</div>
+
+<h2>If you have problems running the examples</h2>
+
+<p>This section discusses problems you might encounter when you run the
+examples, and suggests corrective actions. If your problems aren't covered or
+resolved here, please contact Pivotal Technical Support. For instructions, see 
+the Pivotal page <a href="https://support.pivotal.io/hc/en-us/articles/202278056-How-do-I-submit-a-request-for-Pivotal-support-">How to File a Support Request</a>.
+<p class=MsoNormal><o:p>&nbsp;</o:p></p>
+<h3>Error Messages</h3>
+
+<p><code><span style='font-size:10.0pt'>Exception ... <span class=SpellE>Region<span
+class=GramE>:put</span></span> not connected to GemFire</span></code> </p>
+
+<blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'>
+
+<p>Verify that the cache server has successfully started by reviewing the <span
+class=SpellE><code><span style='font-size:10.0pt'>cacheserver.log</span></code></span>
+file in the <span class=SpellE><code><span style='font-size:10.0pt'>gfecs</span></code></span>
+directory. The log may indicate why the cache server failed to start. </p>
+
+</blockquote>
+
+<p><code><span style='font-size:10.0pt'>Exception ... <span class=SpellE>NoClassDefFoundError</span></span></code>
+</p>
+
+<blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'>
+
+<p>This error may appear in the <span class=SpellE><code><span
+style='font-size:10.0pt'>cacheserver.log</span></code></span> file in the <span
+class=SpellE><code><span style='font-size:10.0pt'>gfecs</span></code></span>
+directory. Verify that you have followed all the steps in the <a
+href="#configuring_environment">Configuring the <span class=SpellE>QuickStart</span>
+Environment</a> section. You must run the example from the <span class=SpellE><code><span
+style='font-size:10.0pt'>quickstart</span></code></span> directory with the <span
+class=SpellE><code><span style='font-size:10.0pt'>runcpp</span></code></span>
+or <span class=SpellE><code><span style='font-size:10.0pt'>runcs</span></code></span>
+scripts for the <code><span style='font-size:10.0pt'>CLASSPATH</span></code>
+setting to work, and so the example can find its XML files. </p>
+
+</blockquote>
+
+<p><code><span style='font-size:10.0pt'>Exception ... XML file/resource does
+not exist or not found</span></code> </p>
+
+<blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'>
+
+<p>This error might appear in the <span class=SpellE><code><span
+style='font-size:10.0pt'>cacheserver.log</span></code></span> file in the <span
+class=SpellE><code><span style='font-size:10.0pt'>gfecs</span></code></span>
+directory, or in the <span class=GramE>example's</span> screen output. Verify
+that you have followed all the steps in the <a href="#configuring_environment">Configuring
+the <span class=SpellE>QuickStart</span> Environment</a> section. You must run
+the example from the <span class=SpellE><code><span style='font-size:10.0pt'>quickstart</span></code></span>
+directory with the <span class=SpellE><code><span style='font-size:10.0pt'>runcpp</span></code></span>
+or <span class=SpellE><code><span style='font-size:10.0pt'>runcs</span></code></span>
+scripts so the example can find its XML files.</p>
+
+</blockquote>
+
+<p class=MsoNormal><o:p>&nbsp;</o:p></p>
+<h3>Connection Problems</h3>
+
+<p>GemFire is a network-centric distributed system, so if you have a firewall
+running it could cause connection problems. For example, your connections may
+fail if your firewall places restrictions on inbound or outbound permissions
+for sockets. You may need to modify your firewall configuration to permit
+traffic to applications running on your machine. The specific configuration
+depends on the firewall you're using.</p>
+
+<p>If you experience port conflicts with other distributed systems, change the <span
+class=SpellE><code><span style='font-size:10.0pt'>localhost</span></code></span>
+and <code><span style='font-size:10.0pt'>bridge-server</span></code> port
+numbers for each of the XML files in the <span class=SpellE><code><span
+style='font-size:10.0pt'>quickstart/XMLs</span></code></span> directory. If you
+need to specify a non-default multicast port setting for the Java cache server,
+place a copy of the GemFire <span class=SpellE><code><span
+style='font-size:10.0pt'>gemfire.properties</span></code></span> file in the <span
+class=SpellE><code><span style='font-size:10.0pt'>quickstart/gfecs</span></code></span>
+directory, then change the <span class=SpellE><code><span style='font-size:
+10.0pt'>mcast</span></code></span><code><span style='font-size:10.0pt'>-port=</span></code>
+setting to a unique value for your network.</p>
+
+<p class=MsoNormal style='margin-bottom:12.0pt'><br style='mso-special-character:
+line-break'>
+<![if !supportLineBreakNewLine]><br style='mso-special-character:line-break'>
+<![endif]></p>
+
+<div class=MsoNormal align=center style='text-align:center'>
+
+<hr size=2 width="100%" align=center>
+
+</div>
+
+<h2>Building the Examples</h2>
+
+<p>If you want to build the <span class=SpellE>QuickStart</span> examples
+yourself from the source files provided, follow these steps:</p>
+
+<ol start=1 type=1>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l6 level1 lfo13;tab-stops:list .5in'>Run the Visual Studio 2010
+     Command Prompt tool to open a command prompt shell.</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l6 level1 lfo13;tab-stops:list .5in'>In the command shell, enter
+     the following environment configurations:</li>
+</ol>
+
+<p style='margin-left:.5in'><span class=GramE><code><span style='font-size:
+10.0pt'>set</span></code></span><code><span style='font-size:10.0pt'>
+GEMFIRE=&lt;</span></code><em><span style='font-size:10.0pt;font-family:"Courier New"'>full
+path to the GemFire directory</span></em><code><span
+style='font-size:10.0pt'>&gt;</span></code><b><span style='font-size:10.0pt;
+font-family:"Courier New"'><br>
+</span></b><code><span style='font-size:10.0pt'>set GFCPP=<span class=SpellE>NativeClient_InstallDir</span></span></code><br>
+<code><span style='font-size:10.0pt'>set JAVA_HOME=&lt;installed JDK PATH&gt;</span></code><br>
+<code><span style='font-size:10.0pt'>set PATH=%PATH%;%JAVA_HOME%/<span
+class=SpellE>bin;%GFCPP</span>%\bin</span></code></p>
+
+<ol start=3 type=1>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l6 level1 lfo13;tab-stops:list .5in'>In the command shell, change
+     to the <span class=SpellE><code><span style='font-size:10.0pt'>quickstart</span></code></span>
+     directory:</li>
+</ol>
+
+<p style='margin-left:.5in'><span class=SpellE><span class=GramE><code><span
+style='font-size:10.0pt'>cd</span></code></span></span><code><span
+style='font-size:10.0pt'> SampleCode\<span class=SpellE>quickstart</span></span></code></p>
+
+<p style='margin-left:.5in;text-indent:-.25in;mso-list:l6 level1 lfo13;
+tab-stops:list .5in'><![if !supportLists]><span style='mso-list:Ignore'>4.<span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><![endif]>In
+the command shell, run the appropriate build script for your system. The build
+script uses the <span class=SpellE><code><span style='font-size:10.0pt'>quickstart_cpp_10.sln</span></code></span>
+and <span class=SpellE><code><span style='font-size:10.0pt'>quickstart_csharp_10.sln</span></code></span>
+Visual Studio solution files in the <span class=SpellE><code><span
+style='font-size:10.0pt'>quickstart</span></code></span> directory. </p>
+
+<blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'>
+
+<p style='margin-left:.5in'>For Windows<span class=GramE>: <strong>.</strong></span><strong>\
+</strong><span class=SpellE><code><b><span style='font-size:10.0pt'>buildit_10.bat</span></b></code></span>
+</p>
+
+<p style='margin-left:.5in'>For Linux and Solaris: <code><b><span
+style='font-size:10.0pt'>./<span class=SpellE>buildit.sh</span></span></b></code></p>
+
+</blockquote>
+
+<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+margin-left:.5in'><o:p>&nbsp;</o:p></p>
+
+<div class=MsoNormal align=center style='text-align:center'>
+
+<hr size=2 width="100%" align=center>
+
+</div>
+
+<BR>Pivotal Software, Inc.
+<BR>3495 Deer Creek Road
+<BR>Palo Alto, CA 94304
+<BR><a href="http://www.pivotal.io">www.pivotal.io</a>
+
+<p><a href="#Top">Top</a></p>
+
+<p><span class=GramE>Copyright &#169; 2006-2014 Pivotal Software, Inc. All rights reserved. This product is protected by U.S. and international copyright and intellectual property laws. Pivotal products are covered by one or more patents listed at http://www.pivotal.io/patents. </p>
+
+</div>
+
+</body>
+
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/XMLs/clientDelta.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/XMLs/clientDelta.xml b/geode-client-native/quickstart/XMLs/clientDelta.xml
new file mode 100644
index 0000000..acc089f
--- /dev/null
+++ b/geode-client-native/quickstart/XMLs/clientDelta.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!-- Well-formed and valid xml file -->
+<client-cache>
+
+  <region name = "exampleRegion" >
+      <region-attributes refid="CACHING_PROXY" cloning-enabled="true"
+        pool-name="examplePool"/>
+    </region>
+  <pool name="examplePool"  server-group="ServerGroup1" >
+    <locator host="localhost" port="34756" />
+  </pool>
+
+</client-cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/XMLs/clientExceptions.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/XMLs/clientExceptions.xml b/geode-client-native/quickstart/XMLs/clientExceptions.xml
new file mode 100644
index 0000000..8ba4353
--- /dev/null
+++ b/geode-client-native/quickstart/XMLs/clientExceptions.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Well-formed and valid xml file -->
+<client-cache>
+
+	<region name = "exampleRegion" refid="CACHING_PROXY"/>
+	<region name = "exampleRegion2" refid="CACHING_PROXY"/>
+																
+</client-cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/XMLs/clientHACache.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/XMLs/clientHACache.xml b/geode-client-native/quickstart/XMLs/clientHACache.xml
new file mode 100644
index 0000000..eaf89cf
--- /dev/null
+++ b/geode-client-native/quickstart/XMLs/clientHACache.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Well-formed and valid xml file -->
+<client-cache>
+  <region name = "exampleRegion" refid="CACHING_PROXY"/>
+</client-cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/XMLs/clientInterop.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/XMLs/clientInterop.xml b/geode-client-native/quickstart/XMLs/clientInterop.xml
new file mode 100644
index 0000000..7e827b9
--- /dev/null
+++ b/geode-client-native/quickstart/XMLs/clientInterop.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Well-formed and valid xml file -->
+<client-cache>
+  <region name="exampleRegion" refid="CACHING_PROXY"/>
+</client-cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/XMLs/clientInteropJava.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/XMLs/clientInteropJava.xml b/geode-client-native/quickstart/XMLs/clientInteropJava.xml
new file mode 100644
index 0000000..fdfad1a
--- /dev/null
+++ b/geode-client-native/quickstart/XMLs/clientInteropJava.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+
+<!DOCTYPE client-cache PUBLIC
+  "-//GemStone Systems, Inc.//GemFire Declarative Caching 6.5//EN"
+  "http://www.gemstone.com/dtd/cache6_5.dtd">
+<client-cache>
+  <region name="exampleRegion">
+    <region-attributes refid="CACHING_PROXY"/>
+  </region>
+</client-cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/XMLs/clientLoaderListenerWriter.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/XMLs/clientLoaderListenerWriter.xml b/geode-client-native/quickstart/XMLs/clientLoaderListenerWriter.xml
new file mode 100644
index 0000000..0203036
--- /dev/null
+++ b/geode-client-native/quickstart/XMLs/clientLoaderListenerWriter.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Well-formed and valid xml file -->
+<client-cache>
+
+  <region name = "exampleRegion" refid="CACHING_PROXY"/>
+																
+</client-cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/XMLs/clientPdxAutoSerializer.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/XMLs/clientPdxAutoSerializer.xml b/geode-client-native/quickstart/XMLs/clientPdxAutoSerializer.xml
new file mode 100644
index 0000000..85fe212
--- /dev/null
+++ b/geode-client-native/quickstart/XMLs/clientPdxAutoSerializer.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Well-formed and valid xml file -->
+<client-cache>
+
+  <region name = "Portfolios" >
+     <region-attributes refid="CACHING_PROXY" pool-name="examplePool" />
+  </region>	
+  <pool name="examplePool"  subscription-enabled="true" >
+    <server host="localhost" port="40404" />    
+  </pool> 										
+</client-cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/XMLs/clientPdxInstance.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/XMLs/clientPdxInstance.xml b/geode-client-native/quickstart/XMLs/clientPdxInstance.xml
new file mode 100755
index 0000000..a374c1b
--- /dev/null
+++ b/geode-client-native/quickstart/XMLs/clientPdxInstance.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Well-formed and valid xml file -->
+<client-cache>
+  <pdx read-serialized="true" />
+  <region name = "Person" >
+     <region-attributes refid="PROXY" pool-name="examplePool" />
+  </region>	
+  <pool name="examplePool"  subscription-enabled="true" >
+    <server host="localhost" port="40404" />    
+  </pool> 										
+</client-cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/XMLs/clientPdxRemoteQuery.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/XMLs/clientPdxRemoteQuery.xml b/geode-client-native/quickstart/XMLs/clientPdxRemoteQuery.xml
new file mode 100644
index 0000000..85fe212
--- /dev/null
+++ b/geode-client-native/quickstart/XMLs/clientPdxRemoteQuery.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Well-formed and valid xml file -->
+<client-cache>
+
+  <region name = "Portfolios" >
+     <region-attributes refid="CACHING_PROXY" pool-name="examplePool" />
+  </region>	
+  <pool name="examplePool"  subscription-enabled="true" >
+    <server host="localhost" port="40404" />    
+  </pool> 										
+</client-cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/XMLs/clientPdxSerializer.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/XMLs/clientPdxSerializer.xml b/geode-client-native/quickstart/XMLs/clientPdxSerializer.xml
new file mode 100755
index 0000000..fb8209d
--- /dev/null
+++ b/geode-client-native/quickstart/XMLs/clientPdxSerializer.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Well-formed and valid xml file -->
+<client-cache>
+
+  <region name = "Person" >
+     <region-attributes refid="PROXY" pool-name="examplePool" />
+  </region>	
+  <pool name="examplePool"  subscription-enabled="true" >
+    <server host="localhost" port="40404" />    
+  </pool> 										
+</client-cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/XMLs/clientPoolCqQuery.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/XMLs/clientPoolCqQuery.xml b/geode-client-native/quickstart/XMLs/clientPoolCqQuery.xml
new file mode 100755
index 0000000..4b0f34a
--- /dev/null
+++ b/geode-client-native/quickstart/XMLs/clientPoolCqQuery.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Well-formed and valid xml file -->
+<client-cache>
+	<region name = "exampleRegion" >
+          <region-attributes refid="CACHING_PROXY" pool-name="examplePool"/>
+  	</region> 
+  	<region name = "Portfolios" >
+    	  <region-attributes refid="CACHING_PROXY" pool-name="examplePool"/>
+  	</region> 
+ 	<pool name="examplePool"  subscription-enabled="true" >
+    	  <server host="localhost" port="50505" />    
+  	</pool>                                
+</client-cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/XMLs/clientPoolRemoteQuery.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/XMLs/clientPoolRemoteQuery.xml b/geode-client-native/quickstart/XMLs/clientPoolRemoteQuery.xml
new file mode 100755
index 0000000..870cbeb
--- /dev/null
+++ b/geode-client-native/quickstart/XMLs/clientPoolRemoteQuery.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Well-formed and valid xml file -->
+<client-cache>
+
+  <region name = "exampleRegion" >
+     <region-attributes refid="CACHING_PROXY" pool-name="examplePool"/>
+  </region>	
+  <region name = "Portfolios" >
+     <region-attributes refid="CACHING_PROXY" pool-name="examplePool"/>
+  </region>	
+  
+  <pool name="examplePool"  subscription-enabled="true"  server-group="ServerGroup1" >
+    <locator host="localhost" port="34756" />    
+  </pool>
+
+</client-cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/XMLs/clientRefIDExample.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/XMLs/clientRefIDExample.xml b/geode-client-native/quickstart/XMLs/clientRefIDExample.xml
new file mode 100644
index 0000000..4700a99
--- /dev/null
+++ b/geode-client-native/quickstart/XMLs/clientRefIDExample.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Well-formed and valid xml file -->
+<client-cache>
+
+  <region name = "root1" >
+     <region-attributes refid="CACHING_PROXY" pool-name="poolName1"/>
+  </region>	
+  <region name = "root2" >
+     <region-attributes refid="PROXY" pool-name="poolName2"/>
+  </region>	
+  
+  <pool name="poolName1"  subscription-enabled="true">
+	<server host="localhost" port="40404" />    
+  </pool>
+  <pool name="poolName2"  subscription-enabled="true">
+    <server host="localhost" port="40404" /> 
+  </pool>
+
+</client-cache>
+
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/XMLs/clientRegisterInterest.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/XMLs/clientRegisterInterest.xml b/geode-client-native/quickstart/XMLs/clientRegisterInterest.xml
new file mode 100644
index 0000000..c9f0bdf
--- /dev/null
+++ b/geode-client-native/quickstart/XMLs/clientRegisterInterest.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Well-formed and valid xml file -->
+<client-cache>
+  <region name = "exampleRegion" >
+    <region-attributes refid="CACHING_PROXY" pool-name="examplePool"/>
+  </region>
+  <pool name="examplePool"  subscription-enabled="true" >
+    <server host="localhost" port="40404" />    
+  </pool>  																
+</client-cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/XMLs/clientSecurity.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/XMLs/clientSecurity.xml b/geode-client-native/quickstart/XMLs/clientSecurity.xml
new file mode 100644
index 0000000..95950bf
--- /dev/null
+++ b/geode-client-native/quickstart/XMLs/clientSecurity.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Well-formed and valid xml file -->
+<client-cache>
+
+  <region name = "exampleRegion" >
+     <region-attributes refid="PROXY" pool-name="examplePool" />
+  </region>	
+  <pool name="examplePool"  subscription-enabled="true" >
+    <server host="localhost" port="40404" />    
+  </pool> 										
+</client-cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/XMLs/serverBasicOperations.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/XMLs/serverBasicOperations.xml b/geode-client-native/quickstart/XMLs/serverBasicOperations.xml
new file mode 100644
index 0000000..2a38c98
--- /dev/null
+++ b/geode-client-native/quickstart/XMLs/serverBasicOperations.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+
+<!-- serverBasicOperations.xml
+     Configures a server to for clients at port 40404.
+-->
+
+<!DOCTYPE cache PUBLIC
+  "-//GemStone Systems, Inc.//GemFire Declarative Caching 6.5//EN"
+  "http://www.gemstone.com/dtd/cache6_5.dtd">
+<cache>
+  <cache-server port="40404"/>
+  <region name="exampleRegion">
+    <region-attributes scope="distributed-no-ack" data-policy="replicate"/>
+  </region>
+</cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/XMLs/serverCqQuery.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/XMLs/serverCqQuery.xml b/geode-client-native/quickstart/XMLs/serverCqQuery.xml
new file mode 100644
index 0000000..11aa89a
--- /dev/null
+++ b/geode-client-native/quickstart/XMLs/serverCqQuery.xml
@@ -0,0 +1,159 @@
+<?xml version="1.0"?>
+<!DOCTYPE cache PUBLIC
+  "-//GemStone Systems, Inc.//GemFire Declarative Caching 6.5//EN"
+  "http://www.gemstone.com/dtd/cache6_5.dtd">
+<cache>
+
+  <cache-server port="50505" />
+    
+    <region name="exampleRegion">
+      <region-attributes scope="distributed-ack" mirror-type="keys-values"/>
+    </region>
+    
+    <region name="Portfolios">
+    
+      <region-attributes scope="distributed-ack" mirror-type="keys-values">
+      </region-attributes>
+      
+      <entry>
+      <key><string>Key1</string></key>
+      <value>
+        <declarable>
+          <class-name>javaobject.Portfolio</class-name>
+          <parameter name="ID">
+            <string>1</string>
+          </parameter>
+          <parameter name="pkid">
+            <string>1</string>
+          </parameter>
+          <parameter name="type">
+            <string>type1</string>
+          </parameter>
+          <parameter name="status">
+            <string>active</string>
+          </parameter>
+          <parameter name="newVal">
+            <string>CCCCC</string>
+          </parameter>
+          <parameter name="position1">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>SUN</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>3900</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>3400.893475</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>3400</string>
+                </parameter>
+                <parameter name="secType">
+                    <string>r</string>
+                </parameter>
+                <parameter name="pid">
+                    <string>345</string>
+                </parameter>
+            </declarable>
+          </parameter>
+          <parameter name="position2">
+            <declarable>
+                <class-name>javaobject.Position</class-name>
+                <parameter name="secId">
+                    <string>IBM</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>4600</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>9900.884732</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>8765</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>p</string>
+                </parameter>
+                <parameter name="pid">
+                   <string>123</string>
+                </parameter>
+            </declarable>
+          </parameter>
+        </declarable>
+      </value>
+     </entry>
+     
+	 <entry>
+      <key><string>Key1</string></key>
+      <value>
+        <declarable>
+          <class-name>javaobject.newapi.Portfolio</class-name>
+          <parameter name="ID">
+            <string>1</string>
+          </parameter>
+          <parameter name="pkid">
+            <string>1</string>
+          </parameter>
+          <parameter name="type">
+            <string>type1</string>
+          </parameter>
+          <parameter name="status">
+            <string>active</string>
+          </parameter>
+          <parameter name="newVal">
+            <string>CCCCC</string>
+          </parameter>
+          <parameter name="position1">
+            <declarable>
+                <class-name>javaobject.newapi.Position</class-name>
+                <parameter name="secId">
+                    <string>SUN</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>3900</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>3400.893475</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>3400</string>
+                </parameter>
+                <parameter name="secType">
+                    <string>r</string>
+                </parameter>
+                <parameter name="pid">
+                    <string>345</string>
+                </parameter>
+            </declarable>
+          </parameter>
+          <parameter name="position2">
+            <declarable>
+                <class-name>javaobject.newapi.Position</class-name>
+                <parameter name="secId">
+                    <string>IBM</string>
+                </parameter>
+                <parameter name="qty">
+                    <string>4600</string>
+                </parameter>
+                <parameter name="mktValue">
+                    <string>9900.884732</string>
+                </parameter>
+                <parameter name="sharesOutstanding">
+                    <string>8765</string>
+                </parameter>
+                <parameter name="secType">
+                   <string>p</string>
+                </parameter>
+                <parameter name="pid">
+                   <string>123</string>
+                </parameter>
+            </declarable>
+          </parameter>
+        </declarable>
+      </value>
+     </entry>
+    </region>
+  
+</cache> 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/XMLs/serverDataExpiration.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/XMLs/serverDataExpiration.xml b/geode-client-native/quickstart/XMLs/serverDataExpiration.xml
new file mode 100644
index 0000000..4916202
--- /dev/null
+++ b/geode-client-native/quickstart/XMLs/serverDataExpiration.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+
+<!-- serverDataExpiration.xml
+     Configures a server to for clients at port 40404.
+     The example region also is configured with a listener. 
+-->
+
+<!DOCTYPE cache PUBLIC
+  "-//GemStone Systems, Inc.//GemFire Declarative Caching 6.5//EN"
+  "http://www.gemstone.com/dtd/cache6_5.dtd">
+<cache>
+  <cache-server port="40404"/>
+    <region name="exampleRegion">
+      <region-attributes scope="distributed-no-ack" data-policy="replicate"/>
+    </region>
+</cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/XMLs/serverDelta.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/XMLs/serverDelta.xml b/geode-client-native/quickstart/XMLs/serverDelta.xml
new file mode 100644
index 0000000..319985d
--- /dev/null
+++ b/geode-client-native/quickstart/XMLs/serverDelta.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!DOCTYPE cache PUBLIC
+  "-//GemStone Systems, Inc.//GemFire Declarative Caching 6.5//EN"
+  "http://www.gemstone.com/dtd/cache6_5.dtd">
+<cache>
+  <cache-server port="40404">
+    <group>ServerGroup1</group>
+  </cache-server>
+
+    <region name="exampleRegion">
+      <entry>
+        <key>
+          <string>delta1-2</string>
+        </key>
+        <value>
+          <declarable>
+            <class-name>javaobject.DeltaExample</class-name>
+          </declarable>
+        </value>
+      </entry>
+    </region>
+
+</cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/XMLs/serverDistributedSystem.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/XMLs/serverDistributedSystem.xml b/geode-client-native/quickstart/XMLs/serverDistributedSystem.xml
new file mode 100755
index 0000000..f50cae1
--- /dev/null
+++ b/geode-client-native/quickstart/XMLs/serverDistributedSystem.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+
+<!-- serverBasicOperations.xml
+     Configures a server to for clients at port 40404.
+-->
+
+<!DOCTYPE cache PUBLIC
+  "-//GemStone Systems, Inc.//GemFire Declarative Caching 6.5//EN"
+  "http://www.gemstone.com/dtd/cache6_5.dtd">
+<cache>
+  <cache-server port="40404"/>
+  <region name="exampleRegion1">
+    <region-attributes scope="distributed-no-ack" data-policy="replicate"/>
+  </region>
+</cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/XMLs/serverDistributedSystem2.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/XMLs/serverDistributedSystem2.xml b/geode-client-native/quickstart/XMLs/serverDistributedSystem2.xml
new file mode 100755
index 0000000..b6d9751
--- /dev/null
+++ b/geode-client-native/quickstart/XMLs/serverDistributedSystem2.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+
+<!-- serverBasicOperations.xml
+     Configures a server to for clients at port 40404.
+-->
+
+<!DOCTYPE cache PUBLIC
+  "-//GemStone Systems, Inc.//GemFire Declarative Caching 6.5//EN"
+  "http://www.gemstone.com/dtd/cache6_5.dtd">
+<cache>
+  <cache-server port="40405"/>
+  <region name="exampleRegion2">
+    <region-attributes scope="distributed-no-ack" data-policy="replicate"/>
+  </region>
+</cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/XMLs/serverDurableClient.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/XMLs/serverDurableClient.xml b/geode-client-native/quickstart/XMLs/serverDurableClient.xml
new file mode 100644
index 0000000..1d8bd4a
--- /dev/null
+++ b/geode-client-native/quickstart/XMLs/serverDurableClient.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+
+<!-- serverDurableClient.xml
+     Configures a server to for clients at port 40404.
+-->
+
+<!DOCTYPE cache PUBLIC
+  "-//GemStone Systems, Inc.//GemFire Declarative Caching 6.5//EN"
+  "http://www.gemstone.com/dtd/cache6_5.dtd">
+<cache>
+  <cache-server port="40404"/>
+    <region name="exampleRegion">
+      <region-attributes scope="distributed-no-ack" data-policy="replicate"/>
+    </region>
+</cache>



[30/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/vsprojects/DistributedSystemC++/DistributedSystemC++.vcxproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/vsprojects/DistributedSystemC++/DistributedSystemC++.vcxproj b/geode-client-native/quickstart/cpp/vsprojects/DistributedSystemC++/DistributedSystemC++.vcxproj
new file mode 100755
index 0000000..7138a92
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/vsprojects/DistributedSystemC++/DistributedSystemC++.vcxproj
@@ -0,0 +1,186 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{86B09B72-94D1-479B-B38A-E523FA229AC9}</ProjectGuid>
+    <RootNamespace>DistributedSystemC</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">DistributedSystem</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">DistributedSystem</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">DistributedSystem</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">DistributedSystem</TargetName>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/debug/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\DistributedSystem.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\DistributedSystem.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\DistributedSystem.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\DistributedSystem.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\DistributedSystem.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/vsprojects/DurableClientC++/DurableClientC++.vcxproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/vsprojects/DurableClientC++/DurableClientC++.vcxproj b/geode-client-native/quickstart/cpp/vsprojects/DurableClientC++/DurableClientC++.vcxproj
new file mode 100755
index 0000000..1cb84e3
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/vsprojects/DurableClientC++/DurableClientC++.vcxproj
@@ -0,0 +1,143 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectName>DurableClient C++</ProjectName>
+    <ProjectGuid>{9D9F7476-5C17-4f71-8428-ADE6F782612D}</ProjectGuid>
+    <RootNamespace>DurableClient C++</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Configuration)\</IntDir>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">DurableClient</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">DurableClient</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">DurableClient</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">DurableClient</TargetName>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <Optimization>Disabled</Optimization>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/debug/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\DurableClient.exe</OutputFile>
+      <TargetMachine>MachineX86</TargetMachine>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <Optimization>Disabled</Optimization>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\DurableClient.exe</OutputFile>
+      <TargetMachine>MachineX64</TargetMachine>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\DurableClient.exe</OutputFile>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\DurableClient.exe</OutputFile>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\plugins\DurableCacheListener.cpp" />
+    <ClCompile Include="..\..\DurableClient.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/vsprojects/ExceptionsC++/ExceptionsC++.vcxproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/vsprojects/ExceptionsC++/ExceptionsC++.vcxproj b/geode-client-native/quickstart/cpp/vsprojects/ExceptionsC++/ExceptionsC++.vcxproj
new file mode 100755
index 0000000..2df988c
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/vsprojects/ExceptionsC++/ExceptionsC++.vcxproj
@@ -0,0 +1,166 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectName>Exceptions C++</ProjectName>
+    <ProjectGuid>{A004458B-A3BD-4395-A97E-A80429CA8EBC}</ProjectGuid>
+    <RootNamespace>ExceptionsC</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Configuration)\</IntDir>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Exceptions</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Exceptions</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Exceptions</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Exceptions</TargetName>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/debug/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\Exceptions.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\Exceptions.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\Exceptions.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\Exceptions.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\Exceptions.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/vsprojects/ExecuteFunctionsC++/ExecuteFunctionsC++.vcxproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/vsprojects/ExecuteFunctionsC++/ExecuteFunctionsC++.vcxproj b/geode-client-native/quickstart/cpp/vsprojects/ExecuteFunctionsC++/ExecuteFunctionsC++.vcxproj
new file mode 100755
index 0000000..01c6f87
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/vsprojects/ExecuteFunctionsC++/ExecuteFunctionsC++.vcxproj
@@ -0,0 +1,166 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectName>ExecuteFunctions C++</ProjectName>
+    <ProjectGuid>{4DCC2C45-74E0-4C99-B99D-271EAC2A2028}</ProjectGuid>
+    <RootNamespace>ExecuteFunctions C++</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Configuration)\</IntDir>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">ExecuteFunctions</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">ExecuteFunctions</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">ExecuteFunctions</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">ExecuteFunctions</TargetName>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>BUILD_TESTOBJECT;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <Optimization>Disabled</Optimization>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/debug/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\ExecuteFunctions.exe</OutputFile>
+      <TargetMachine>MachineX86</TargetMachine>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+    <PostBuildEvent>
+      <Command>del /q "$(SolutionDir)\cpp\*.exp"
+del /q "$(SolutionDir)\cpp\*.lib"
+</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>BUILD_TESTOBJECT;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <Optimization>Disabled</Optimization>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\ExecuteFunctions.exe</OutputFile>
+      <TargetMachine>MachineX64</TargetMachine>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+    <PostBuildEvent>
+      <Command>del /q "$(SolutionDir)\cpp\*.exp"
+del /q "$(SolutionDir)\cpp\*.lib"
+</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>BUILD_TESTOBJECT;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\ExecuteFunctions.exe</OutputFile>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+    <PostBuildEvent>
+      <Command>del /q "$(SolutionDir)\cpp\*.exp"
+del /q "$(SolutionDir)\cpp\*.lib"
+</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>BUILD_TESTOBJECT;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\ExecuteFunctions.exe</OutputFile>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+    <PostBuildEvent>
+      <Command>del /q "$(SolutionDir)\cpp\*.exp"
+del /q "$(SolutionDir)\cpp\*.lib"
+</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\ExecuteFunctions.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/vsprojects/HACacheC++/HACacheC++.vcxproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/vsprojects/HACacheC++/HACacheC++.vcxproj b/geode-client-native/quickstart/cpp/vsprojects/HACacheC++/HACacheC++.vcxproj
new file mode 100755
index 0000000..1963a10
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/vsprojects/HACacheC++/HACacheC++.vcxproj
@@ -0,0 +1,166 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectName>HA Cache C++</ProjectName>
+    <ProjectGuid>{A76B9C6D-8B1A-4603-A1A6-A00146FCD42B}</ProjectGuid>
+    <RootNamespace>HACacheC</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Configuration)\</IntDir>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">HACache</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">HACache</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">HACache</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">HACache</TargetName>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/debug/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\HACache.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\HACache.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\HACache.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\HACache.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\HACache.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/vsprojects/InteropC++/InteropC++.vcxproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/vsprojects/InteropC++/InteropC++.vcxproj b/geode-client-native/quickstart/cpp/vsprojects/InteropC++/InteropC++.vcxproj
new file mode 100755
index 0000000..8eccf62
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/vsprojects/InteropC++/InteropC++.vcxproj
@@ -0,0 +1,140 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectName>Interop C++</ProjectName>
+    <ProjectGuid>{6866857A-826B-4732-8B0C-368ABADE1BE3}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Configuration)\</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Configuration)\</IntDir>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">InteropCPP</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">InteropCPP</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">InteropCPP</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">InteropCPP</TargetName>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <Optimization>Disabled</Optimization>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/debug/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\InteropCPP.exe</OutputFile>
+      <TargetMachine>MachineX86</TargetMachine>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <Optimization>Disabled</Optimization>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\InteropCPP.exe</OutputFile>
+      <TargetMachine>MachineX64</TargetMachine>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\interop\InteropCPP.exe</OutputFile>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\interop\InteropCPP.exe</OutputFile>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\..\interop\InteropCPP.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/vsprojects/LoaderListenerWriterC++/LoaderListenerWriterC++.vcxproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/vsprojects/LoaderListenerWriterC++/LoaderListenerWriterC++.vcxproj b/geode-client-native/quickstart/cpp/vsprojects/LoaderListenerWriterC++/LoaderListenerWriterC++.vcxproj
new file mode 100755
index 0000000..5dd8709
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/vsprojects/LoaderListenerWriterC++/LoaderListenerWriterC++.vcxproj
@@ -0,0 +1,144 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectName>LoaderListenerWriter C++</ProjectName>
+    <ProjectGuid>{CCD86CC4-DEFF-4AEB-A5CA-5A3E30AA42A3}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Configuration)\</IntDir>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">LoaderListenerWriter</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">LoaderListenerWriter</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">LoaderListenerWriter</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">LoaderListenerWriter</TargetName>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <Optimization>Disabled</Optimization>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/debug/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\LoaderListenerWriter.exe</OutputFile>
+      <TargetMachine>MachineX86</TargetMachine>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <Optimization>Disabled</Optimization>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\LoaderListenerWriter.exe</OutputFile>
+      <TargetMachine>MachineX64</TargetMachine>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\LoaderListenerWriter.exe</OutputFile>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\LoaderListenerWriter.exe</OutputFile>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\LoaderListenerWriter.cpp" />
+    <ClCompile Include="..\..\plugins\SimpleCacheListener.cpp" />
+    <ClCompile Include="..\..\plugins\SimpleCacheLoader.cpp" />
+    <ClCompile Include="..\..\plugins\SimpleCacheWriter.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/vsprojects/MultiuserSecurityC++/MultiuserSecurityC++.vcxproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/vsprojects/MultiuserSecurityC++/MultiuserSecurityC++.vcxproj b/geode-client-native/quickstart/cpp/vsprojects/MultiuserSecurityC++/MultiuserSecurityC++.vcxproj
new file mode 100755
index 0000000..708dad4
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/vsprojects/MultiuserSecurityC++/MultiuserSecurityC++.vcxproj
@@ -0,0 +1,142 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectName>MultiuserSecurity C++</ProjectName>
+    <ProjectGuid>{8FB665CB-83AD-4605-A7DE-D77499DDBD39}</ProjectGuid>
+    <RootNamespace>MultiuserSecurity C++</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Configuration)\</IntDir>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">MultiuserSecurity</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MultiuserSecurity</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">MultiuserSecurity</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MultiuserSecurity</TargetName>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <Optimization>Disabled</Optimization>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/debug/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\MultiuserSecurity.exe</OutputFile>
+      <TargetMachine>MachineX86</TargetMachine>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <Optimization>Disabled</Optimization>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\MultiuserSecurity.exe</OutputFile>
+      <TargetMachine>MachineX64</TargetMachine>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\MultiuserSecurity.exe</OutputFile>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\MultiuserSecurity.exe</OutputFile>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\MultiuserSecurity.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file


[25/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/HACache/HACache.csproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/HACache/HACache.csproj b/geode-client-native/quickstart/csharp/vsprojects/HACache/HACache.csproj
new file mode 100644
index 0000000..eede275
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/HACache/HACache.csproj
@@ -0,0 +1,119 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{3AFF5409-510E-4DDE-BBD6-96F2C858AA53}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HACache</RootNamespace>
+    <AssemblyName>HACache</AssemblyName>
+    <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>2.0</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="GemStone.GemFire.Cache, Version=9.0.0.0, Culture=neutral, PublicKeyToken=126e6338d9f55e0c, processorArchitecture=x64">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>$(GFCPP)\bin\GemStone.GemFire.Cache.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\..\HACache.cs">
+      <Link>HACache.cs</Link>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PostBuildEvent>copy "$(TargetPath)" "$(SolutionDir)csharp"</PostBuildEvent>
+  </PropertyGroup>
+</Project>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/HACache/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/HACache/Properties/AssemblyInfo.cs b/geode-client-native/quickstart/csharp/vsprojects/HACache/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..4fa807c
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/HACache/Properties/AssemblyInfo.cs
@@ -0,0 +1,33 @@
+\ufeffusing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("HACache")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Gemstone Systems Pvt. Ltd")]
+[assembly: AssemblyProduct("HACache")]
+[assembly: AssemblyCopyright("Copyright � Gemstone Systems Pvt. Ltd 2007")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("a1c6cefa-dee6-471d-a781-6382509db9e6")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/Interop/Interop.csproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/Interop/Interop.csproj b/geode-client-native/quickstart/csharp/vsprojects/Interop/Interop.csproj
new file mode 100644
index 0000000..30e5c06
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/Interop/Interop.csproj
@@ -0,0 +1,121 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{38DD7F7C-9460-4BC6-A58F-A9D457FC42F4}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Interop</RootNamespace>
+    <AssemblyName>Interop</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>2.0</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <NoWarn>618</NoWarn>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <NoWarn>618</NoWarn>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <NoWarn>618</NoWarn>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <NoWarn>618</NoWarn>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="GemStone.GemFire.Cache, Version=9.0.0.0, Culture=neutral, PublicKeyToken=126e6338d9f55e0c, processorArchitecture=x64">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>$(GFCPP)\bin\GemStone.GemFire.Cache.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\..\..\interop\InteropCSHARP.cs">
+      <Link>InteropCSHARP.cs</Link>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PostBuildEvent>copy "$(TargetPath)" "$(SolutionDir)interop\InteropCSHARP.exe"</PostBuildEvent>
+  </PropertyGroup>
+</Project>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/Interop/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/Interop/Properties/AssemblyInfo.cs b/geode-client-native/quickstart/csharp/vsprojects/Interop/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..daa5f5d
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/Interop/Properties/AssemblyInfo.cs
@@ -0,0 +1,33 @@
+\ufeffusing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Interop")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Interop")]
+[assembly: AssemblyCopyright("Copyright �  2007")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("dd55dac7-c26d-4242-8b29-d4b7bc303e91")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/LoaderListenerWriter/LoaderListenerWriter.csproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/LoaderListenerWriter/LoaderListenerWriter.csproj b/geode-client-native/quickstart/csharp/vsprojects/LoaderListenerWriter/LoaderListenerWriter.csproj
new file mode 100644
index 0000000..2c24859
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/LoaderListenerWriter/LoaderListenerWriter.csproj
@@ -0,0 +1,126 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{45F78C44-0D03-4CF9-82C9-8BC486F02FF7}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>LoaderListenerWriter</RootNamespace>
+    <AssemblyName>LoaderListenerWriter</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>2.0</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+    <PlatformTarget>x64</PlatformTarget>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="GemStone.GemFire.Cache, Version=9.0.0.0, Culture=neutral, PublicKeyToken=126e6338d9f55e0c, processorArchitecture=x64">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>$(GFCPP)\bin\GemStone.GemFire.Cache.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\..\LoaderListenerWriter.cs">
+      <Link>LoaderListenerWriter.cs</Link>
+    </Compile>
+    <Compile Include="..\..\plugins\SimpleCacheListener.cs">
+      <Link>SimpleCacheListener.cs</Link>
+    </Compile>
+    <Compile Include="..\..\plugins\SimpleCacheLoader.cs">
+      <Link>SimpleCacheLoader.cs</Link>
+    </Compile>
+    <Compile Include="..\..\plugins\SimpleCacheWriter.cs">
+      <Link>SimpleCacheWriter.cs</Link>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PostBuildEvent>copy "$(TargetPath)" "$(SolutionDir)csharp"</PostBuildEvent>
+  </PropertyGroup>
+</Project>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/LoaderListenerWriter/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/LoaderListenerWriter/Properties/AssemblyInfo.cs b/geode-client-native/quickstart/csharp/vsprojects/LoaderListenerWriter/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..bcb8768
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/LoaderListenerWriter/Properties/AssemblyInfo.cs
@@ -0,0 +1,33 @@
+\ufeffusing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("LoaderListenerWriter")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("LoaderListenerWriter")]
+[assembly: AssemblyCopyright("Copyright �  2007")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("7fc44d4a-977d-47ce-977f-f692c666a53a")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/MultiuserSecurity/MultiuserSecurity.csproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/MultiuserSecurity/MultiuserSecurity.csproj b/geode-client-native/quickstart/csharp/vsprojects/MultiuserSecurity/MultiuserSecurity.csproj
new file mode 100755
index 0000000..f5653b9
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/MultiuserSecurity/MultiuserSecurity.csproj
@@ -0,0 +1,118 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{7A99B197-118D-4B03-8B87-94F0322C255B}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>MultiuserSecurity</RootNamespace>
+    <AssemblyName>MultiuserSecurity</AssemblyName>
+    <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>2.0</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="GemStone.GemFire.Cache, Version=9.0.0.0, Culture=neutral, PublicKeyToken=126e6338d9f55e0c, processorArchitecture=x64">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>$(GFCPP)\bin\GemStone.GemFire.Cache.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\..\MultiuserSecurity.cs">
+      <Link>MultiuserSecurity.cs</Link>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PostBuildEvent>copy "$(TargetPath)" "$(SolutionDir)csharp"</PostBuildEvent>
+  </PropertyGroup>
+</Project>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/MultiuserSecurity/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/MultiuserSecurity/Properties/AssemblyInfo.cs b/geode-client-native/quickstart/csharp/vsprojects/MultiuserSecurity/Properties/AssemblyInfo.cs
new file mode 100755
index 0000000..04102f2
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/MultiuserSecurity/Properties/AssemblyInfo.cs
@@ -0,0 +1,33 @@
+\ufeffusing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("MultiuserSecurity")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Security")]
+[assembly: AssemblyCopyright("Copyright �  2007")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("37ace014-ca4d-4011-9245-6cf3e000bcf0")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/PdxInstance/PdxInstance.csproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/PdxInstance/PdxInstance.csproj b/geode-client-native/quickstart/csharp/vsprojects/PdxInstance/PdxInstance.csproj
new file mode 100755
index 0000000..c596193
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/PdxInstance/PdxInstance.csproj
@@ -0,0 +1,117 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{CC136286-D242-49FF-95F2-5DB405364032}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>PdxInstance</RootNamespace>
+    <AssemblyName>PdxInstance</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>2.0</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="GemStone.GemFire.Cache, Version=9.0.0.0, Culture=neutral, PublicKeyToken=126e6338d9f55e0c, processorArchitecture=x64">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>$(GFCPP)\bin\GemStone.GemFire.Cache.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\..\PdxInstance.cs">
+      <Link>PdxInstance.cs</Link>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PostBuildEvent>copy "$(TargetPath)" "$(SolutionDir)csharp"</PostBuildEvent>
+  </PropertyGroup>
+</Project>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/PdxInstance/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/PdxInstance/Properties/AssemblyInfo.cs b/geode-client-native/quickstart/csharp/vsprojects/PdxInstance/Properties/AssemblyInfo.cs
new file mode 100755
index 0000000..b8b42b8
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/PdxInstance/Properties/AssemblyInfo.cs
@@ -0,0 +1,33 @@
+\ufeffusing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("PdxInstance")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("PdxInstance")]
+[assembly: AssemblyCopyright("Copyright �  2009")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("CC136286-D242-49ff-95F2-5DB405364032")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/PdxRemoteQuery/PdxRemoteQuery.csproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/PdxRemoteQuery/PdxRemoteQuery.csproj b/geode-client-native/quickstart/csharp/vsprojects/PdxRemoteQuery/PdxRemoteQuery.csproj
new file mode 100644
index 0000000..08e9fbb
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/PdxRemoteQuery/PdxRemoteQuery.csproj
@@ -0,0 +1,123 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{7F99AA48-8931-4D92-9F1F-01F7AF8123FC}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>PdxRemoteQuery</RootNamespace>
+    <AssemblyName>PdxRemoteQuery</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>2.0</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="GemStone.GemFire.Cache, Version=9.0.0.0, Culture=neutral, PublicKeyToken=126e6338d9f55e0c, processorArchitecture=x64">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>$(GFCPP)\bin\GemStone.GemFire.Cache.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\..\PortfolioPdx.cs">
+      <Link>PortfolioPdx.cs</Link>
+    </Compile>
+    <Compile Include="..\..\PositionPdx.cs">
+      <Link>PositionPdx.cs</Link>
+    </Compile>
+    <Compile Include="..\..\PdxRemoteQuery.cs">
+      <Link>PdxRemoteQuery.cs</Link>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PostBuildEvent>copy "$(TargetPath)" "$(SolutionDir)csharp"</PostBuildEvent>
+  </PropertyGroup>
+</Project>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/PdxRemoteQuery/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/PdxRemoteQuery/Properties/AssemblyInfo.cs b/geode-client-native/quickstart/csharp/vsprojects/PdxRemoteQuery/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..d5af00e
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/PdxRemoteQuery/Properties/AssemblyInfo.cs
@@ -0,0 +1,33 @@
+\ufeffusing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("PdxRemoteQuery")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("PdxRemoteQuery")]
+[assembly: AssemblyCopyright("Copyright �  2009")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("8d5fd7fe-7758-4fca-9117-ff2d0636fccc")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/PdxSerializer/PdxSerializer.csproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/PdxSerializer/PdxSerializer.csproj b/geode-client-native/quickstart/csharp/vsprojects/PdxSerializer/PdxSerializer.csproj
new file mode 100755
index 0000000..b8dd59a
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/PdxSerializer/PdxSerializer.csproj
@@ -0,0 +1,117 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{4D9FE6D0-8528-424B-97E9-AD69C23F1D3F}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>PdxSerializer</RootNamespace>
+    <AssemblyName>PdxSerializer</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>2.0</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="GemStone.GemFire.Cache, Version=9.0.0.0, Culture=neutral, PublicKeyToken=126e6338d9f55e0c, processorArchitecture=x64">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>$(GFCPP)\bin\GemStone.GemFire.Cache.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\..\PdxSerializer.cs">
+      <Link>PdxSerializer.cs</Link>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PostBuildEvent>copy "$(TargetPath)" "$(SolutionDir)csharp"</PostBuildEvent>
+  </PropertyGroup>
+</Project>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/PdxSerializer/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/PdxSerializer/Properties/AssemblyInfo.cs b/geode-client-native/quickstart/csharp/vsprojects/PdxSerializer/Properties/AssemblyInfo.cs
new file mode 100755
index 0000000..3e5c651
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/PdxSerializer/Properties/AssemblyInfo.cs
@@ -0,0 +1,33 @@
+\ufeffusing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("PdxSerializer")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("PdxSerializer")]
+[assembly: AssemblyCopyright("Copyright �  2009")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("4D9FE6D0-8528-424b-97E9-AD69C23F1D3F")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/PoolCqQuery/PoolCqQuery.csproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/PoolCqQuery/PoolCqQuery.csproj b/geode-client-native/quickstart/csharp/vsprojects/PoolCqQuery/PoolCqQuery.csproj
new file mode 100755
index 0000000..a3fb57c
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/PoolCqQuery/PoolCqQuery.csproj
@@ -0,0 +1,123 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{F6229FB4-8E5B-456D-80FC-6E86182D7284}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>PoolCqQuery</RootNamespace>
+    <AssemblyName>PoolCqQuery</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>2.0</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="GemStone.GemFire.Cache, Version=9.0.0.0, Culture=neutral, PublicKeyToken=126e6338d9f55e0c, processorArchitecture=x64">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>$(GFCPP)\bin\GemStone.GemFire.Cache.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\..\PortfolioN.cs">
+      <Link>PortfolioN.cs</Link>
+    </Compile>
+    <Compile Include="..\..\PositionN.cs">
+      <Link>PositionN.cs</Link>
+    </Compile>
+    <Compile Include="..\..\PoolCqQuery.cs">
+      <Link>PoolCqQuery.cs</Link>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PostBuildEvent>copy "$(TargetPath)" "$(SolutionDir)csharp"</PostBuildEvent>
+  </PropertyGroup>
+</Project>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/PoolCqQuery/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/PoolCqQuery/Properties/AssemblyInfo.cs b/geode-client-native/quickstart/csharp/vsprojects/PoolCqQuery/Properties/AssemblyInfo.cs
new file mode 100755
index 0000000..517f487
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/PoolCqQuery/Properties/AssemblyInfo.cs
@@ -0,0 +1,33 @@
+\ufeffusing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("PoolCqQuery")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("PoolCqQuery")]
+[assembly: AssemblyCopyright("Copyright �  2009")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("ca5716e4-3588-4704-bf81-a470a1294309")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/PoolRemoteQuery/PoolRemoteQuery.csproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/PoolRemoteQuery/PoolRemoteQuery.csproj b/geode-client-native/quickstart/csharp/vsprojects/PoolRemoteQuery/PoolRemoteQuery.csproj
new file mode 100755
index 0000000..2ba0907
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/PoolRemoteQuery/PoolRemoteQuery.csproj
@@ -0,0 +1,123 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{B0A9BC2F-26F2-4BDD-BF02-73C097F926FE}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>PoolRemoteQuery</RootNamespace>
+    <AssemblyName>PoolRemoteQuery</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>2.0</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="GemStone.GemFire.Cache, Version=9.0.0.0, Culture=neutral, PublicKeyToken=126e6338d9f55e0c, processorArchitecture=x64">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>$(GFCPP)\bin\GemStone.GemFire.Cache.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\..\PortfolioN.cs">
+      <Link>PortfolioN.cs</Link>
+    </Compile>
+    <Compile Include="..\..\PositionN.cs">
+      <Link>PositionN.cs</Link>
+    </Compile>
+    <Compile Include="..\..\PoolRemoteQuery.cs">
+      <Link>PoolRemoteQuery.cs</Link>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PostBuildEvent>copy "$(TargetPath)" "$(SolutionDir)csharp"</PostBuildEvent>
+  </PropertyGroup>
+</Project>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/PoolRemoteQuery/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/PoolRemoteQuery/Properties/AssemblyInfo.cs b/geode-client-native/quickstart/csharp/vsprojects/PoolRemoteQuery/Properties/AssemblyInfo.cs
new file mode 100755
index 0000000..75504d4
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/PoolRemoteQuery/Properties/AssemblyInfo.cs
@@ -0,0 +1,33 @@
+\ufeffusing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("PoolRemoteQuery")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("PoolRemoteQuery")]
+[assembly: AssemblyCopyright("Copyright �  2009")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("8d5fd7fe-7758-4fca-9117-ff2d0636fccc")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/PoolWithEndpoints/PoolWithEndpoints.csproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/PoolWithEndpoints/PoolWithEndpoints.csproj b/geode-client-native/quickstart/csharp/vsprojects/PoolWithEndpoints/PoolWithEndpoints.csproj
new file mode 100755
index 0000000..54c70d1
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/PoolWithEndpoints/PoolWithEndpoints.csproj
@@ -0,0 +1,117 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{E7A1C0BC-B488-4F38-A1D4-108EDC47E38F}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>PoolWithEndpoints</RootNamespace>
+    <AssemblyName>PoolWithEndpoints</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>2.0</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="GemStone.GemFire.Cache, Version=9.0.0.0, Culture=neutral, PublicKeyToken=126e6338d9f55e0c, processorArchitecture=x64">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>$(GFCPP)\bin\GemStone.GemFire.Cache.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\..\PoolWithEndpoints.cs">
+      <Link>PoolWithEndpoints.cs</Link>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PostBuildEvent>copy "$(TargetPath)" "$(SolutionDir)csharp"</PostBuildEvent>
+  </PropertyGroup>
+</Project>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/PoolWithEndpoints/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/PoolWithEndpoints/Properties/AssemblyInfo.cs b/geode-client-native/quickstart/csharp/vsprojects/PoolWithEndpoints/Properties/AssemblyInfo.cs
new file mode 100755
index 0000000..c1f7664
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/PoolWithEndpoints/Properties/AssemblyInfo.cs
@@ -0,0 +1,33 @@
+\ufeffusing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("PoolWithEndpoints")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("PoolWithEndpoints")]
+[assembly: AssemblyCopyright("Copyright �  2009")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("c57197f3-91da-4f5d-86ee-e32d704868dc")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/PutAllGetAllOperations/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/PutAllGetAllOperations/Properties/AssemblyInfo.cs b/geode-client-native/quickstart/csharp/vsprojects/PutAllGetAllOperations/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..3082c88
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/PutAllGetAllOperations/Properties/AssemblyInfo.cs
@@ -0,0 +1,33 @@
+\ufeffusing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("PutAllGetAllOperations")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("PutAllGetAllOperations")]
+[assembly: AssemblyCopyright("Copyright �  2007")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("F55DD050-D459-404a-9D54-5FE32DBFCEAD")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/PutAllGetAllOperations/PutAllGetAllOperations.csproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/PutAllGetAllOperations/PutAllGetAllOperations.csproj b/geode-client-native/quickstart/csharp/vsprojects/PutAllGetAllOperations/PutAllGetAllOperations.csproj
new file mode 100644
index 0000000..e7733d7
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/PutAllGetAllOperations/PutAllGetAllOperations.csproj
@@ -0,0 +1,118 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{3CB335BA-E09F-4677-BCAD-A0ECF3218641}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>PutAllGetAllOperations</RootNamespace>
+    <AssemblyName>PutAllGetAllOperations</AssemblyName>
+    <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>2.0</OldToolsVersion>
+    <UpgradeBackupLocation />
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x64</PlatformTarget>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="GemStone.GemFire.Cache, Version=9.0.0.0, Culture=neutral, PublicKeyToken=126e6338d9f55e0c, processorArchitecture=x64">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>$(GFCPP)\bin\GemStone.GemFire.Cache.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\..\PutAllGetAllOperations.cs">
+      <Link>PutAllGetAllOperations.cs</Link>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PostBuildEvent>copy "$(TargetPath)" "$(SolutionDir)csharp"</PostBuildEvent>
+  </PropertyGroup>
+</Project>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/csharp/vsprojects/RefIDExample/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/csharp/vsprojects/RefIDExample/Properties/AssemblyInfo.cs b/geode-client-native/quickstart/csharp/vsprojects/RefIDExample/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..1e6843c
--- /dev/null
+++ b/geode-client-native/quickstart/csharp/vsprojects/RefIDExample/Properties/AssemblyInfo.cs
@@ -0,0 +1,33 @@
+\ufeffusing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("RefIDExample")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Gemstone Systems Pvt. Ltd.")]
+[assembly: AssemblyProduct("RefIDExample")]
+[assembly: AssemblyCopyright("Copyright � Gemstone Systems Pvt. Ltd. 2010")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("e9398b6a-7adf-4497-8b72-f64cacac19f7")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]


[16/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/DataOutputM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/DataOutputM.cpp b/geode-client-native/src/clicache/DataOutputM.cpp
new file mode 100644
index 0000000..383ee30
--- /dev/null
+++ b/geode-client-native/src/clicache/DataOutputM.cpp
@@ -0,0 +1,586 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "DataOutputM.hpp"
+#include <cppcache/impl/GemfireTypeIdsImpl.hpp>
+#include <vcclr.h>
+
+#include "IGFSerializable.hpp"
+
+using namespace System;
+using namespace System::Runtime::InteropServices;
+using namespace gemfire;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      void DataOutput::WriteByte( Byte value )
+      {
+        EnsureCapacity(1);
+        m_bytes[m_cursor++] = value;
+      }
+
+      void DataOutput::WriteSByte( SByte value )
+      {
+        EnsureCapacity(1);
+        m_bytes[m_cursor++] = value;
+      }
+
+      void DataOutput::WriteBoolean( bool value )
+      {
+        EnsureCapacity(1);
+        if (value)
+          m_bytes[m_cursor++] = 0x01;
+        else
+          m_bytes[m_cursor++] = 0x00;
+      }
+
+      void DataOutput::WriteBytes( array<Byte>^ bytes, int32_t len )
+      {
+        //TODO::hitesh
+        if (bytes != nullptr && bytes->Length >= 0)
+        {
+          if ( len >= 0 && len <= bytes->Length )
+          {
+            WriteArrayLen(len);
+            EnsureCapacity(len);
+            for( int i = 0; i < len; i++ )
+              m_bytes[m_cursor++] = bytes[i];
+          }
+          else
+          {
+            throw gcnew GemFire::Cache::IllegalArgumentException("DataOutput::WriteBytes argument len is not in byte array range." );
+          }
+        }
+        else
+        {
+          WriteByte(0xFF);
+        }
+      }
+
+     /* void DataOutput::WriteArrayLen( int32_t len )
+      {
+        if (len == -1) {
+          WriteByte(0xFF);
+        } else if (len <= 252) { // 252 is java's ((byte)-4 && 0xFF)
+          WriteByte(Convert::ToByte(len));
+        } else if (len <= 0xFFFF) {
+          WriteByte(0xFE);
+          WriteInt16(Convert::ToInt16(len));
+        } else {
+          WriteByte(Convert::ToByte(-0xFD));
+          WriteInt32(len);
+        }
+      }*/
+
+			void DataOutput::WriteArrayLen( int32_t len )
+			{
+				if (len == -1) {//0xff
+					WriteByte(0xFF);
+				} else if (len <= 252) { // 252 is java's ((byte)-4 && 0xFF) or 0xfc
+					WriteByte(Convert::ToByte(len));
+				} else if (len <= 0xFFFF) {
+					WriteByte(0xFE);//0xfe
+					WriteUInt16((len));
+				} else {
+					WriteByte((0xFD));//0xfd
+					WriteUInt32(len);
+				}
+			}
+
+      void DataOutput::WriteSBytes( array<SByte>^ bytes, int32_t len )
+      {
+        //TODO::hitesh
+        if (bytes != nullptr && bytes->Length >= 0)
+        {
+          if ( len >= 0 && len <= bytes->Length )
+          {
+            WriteArrayLen(len);
+            EnsureCapacity(len);
+            for( int i = 0; i < len; i++ )
+              m_bytes[m_cursor++] = bytes[i];
+          }
+          else
+          {
+            throw gcnew GemFire::Cache::IllegalArgumentException("DataOutput::WriteSBytes argument len is not in SByte array range." );
+          }
+        }
+        else
+        {
+          WriteByte(0xFF);
+        }
+      }
+
+      void DataOutput::WriteBytesOnly( array<Byte>^ bytes, uint32_t len )
+      {
+        WriteBytesOnly(bytes, len, 0);
+      }
+
+      void DataOutput::WriteBytesOnly( array<Byte>^ bytes, uint32_t len, uint32_t offset )
+      {
+        //TODO::hitesh
+        if (bytes != nullptr)
+        {
+          if ( len >= 0 && len <= ((uint32_t)bytes->Length - offset) )
+          {
+            EnsureCapacity(len);            
+            for( uint32_t i = 0; i < len; i++ )
+              m_bytes[m_cursor++] = bytes[offset + i];
+          }
+          else
+          {
+            throw gcnew GemFire::Cache::IllegalArgumentException("DataOutput::WriteBytesOnly argument len is not in Byte array range." );
+          }
+        }
+      }
+
+      void DataOutput::WriteSBytesOnly( array<SByte>^ bytes, uint32_t len )
+      {
+        //TODO::hitesh
+        if (bytes != nullptr)
+        {
+          if ( len >= 0 && len <= (uint32_t)bytes->Length )
+          {
+            EnsureCapacity(len);
+            for( uint32_t i = 0; i < len; i++ )
+              m_bytes[m_cursor++] = bytes[i];
+          }
+          else
+          {
+            throw gcnew GemFire::Cache::IllegalArgumentException("DataOutput::WriteSBytesOnly argument len is not in SByte array range." );
+          }
+        }
+      }
+
+      void DataOutput::WriteUInt16( uint16_t value )
+      {
+        EnsureCapacity(2);
+        m_bytes[m_cursor++] = (uint8_t)(value >> 8);
+        m_bytes[m_cursor++] = (uint8_t)value;
+      }
+
+      void DataOutput::WriteUInt32( uint32_t value )
+      {
+        EnsureCapacity(4);
+        m_bytes[m_cursor++] = (uint8_t)(value >> 24);
+        m_bytes[m_cursor++] = (uint8_t)(value >> 16);
+        m_bytes[m_cursor++] = (uint8_t)(value >> 8);
+        m_bytes[m_cursor++] = (uint8_t)value;
+      }
+
+      void DataOutput::WriteUInt64( uint64_t value )
+      {
+        EnsureCapacity(8);
+        m_bytes[m_cursor++] = (uint8_t)(value >> 56);
+        m_bytes[m_cursor++] = (uint8_t)(value >> 48);
+        m_bytes[m_cursor++] = (uint8_t)(value >> 40);
+        m_bytes[m_cursor++] = (uint8_t)(value >> 32);
+        m_bytes[m_cursor++] = (uint8_t)(value >> 24);
+        m_bytes[m_cursor++] = (uint8_t)(value >> 16);
+        m_bytes[m_cursor++] = (uint8_t)(value >> 8);
+        m_bytes[m_cursor++] = (uint8_t)value;
+      }
+
+      void DataOutput::WriteInt16( int16_t value )
+      {
+        WriteUInt16(value);
+      }
+
+      void DataOutput::WriteInt32( int32_t value )
+      {
+        WriteUInt32(value);
+      }
+
+      void DataOutput::WriteInt64( int64_t value )
+      {
+        WriteUInt64(value);
+      }
+
+      void DataOutput::WriteFloat( float value )
+      {
+        array<Byte>^ bytes = BitConverter::GetBytes(value);
+        EnsureCapacity(4);
+        for(int i = bytes->Length - 1; i >=0 ; i--)
+          m_bytes[m_cursor++] = bytes[i];
+      }
+
+      void DataOutput::WriteDouble( double value )
+      {
+        array<Byte>^ bytes = BitConverter::GetBytes(value);
+        EnsureCapacity(8);
+        for(int i = bytes->Length - 1; i >=0 ; i--)
+          m_bytes[m_cursor++] = bytes[i];
+      }
+
+       void DataOutput::WriteUTF( String^ value )
+      {
+        if (value != nullptr) {
+          int len = value->Length*3;
+          
+          if (len > 8192) //approx check
+            len = getEncodedLength(value);
+          
+          if (len > 0xffff)
+            len = 0xffff;
+
+          EnsureCapacity(len);
+
+          m_cursor += 2;          
+          int strLen = EncodeString(value, len);
+          m_cursor -= (strLen + 2);
+          WriteUInt16(strLen);
+          m_cursor += strLen;
+        }
+        else {
+          WriteUInt16(0);
+        }
+      }
+
+      void DataOutput::WriteASCIIHuge( String^ value )
+      {
+        //TODO::hitesh
+        if (value != nullptr) {
+          EnsureCapacity(value->Length);
+          m_cursor += 4;          
+          int strLen = EncodeString(value, value->Length);
+          m_cursor -= (strLen + 4);
+          WriteUInt32(strLen);
+          m_cursor += strLen;
+        }
+        else {
+          WriteUInt32(0);
+        }
+      }
+
+      void DataOutput::WriteUTFHuge( String^ value )
+      {
+        if (value != nullptr) {
+          WriteUInt32(value->Length);
+          EnsureCapacity(value->Length * 2);
+          for( int i = 0; i < value->Length; i++)
+          {
+            Char ch = value[i];
+            m_bytes[m_cursor++] = (Byte)((ch & 0xff00) >> 8);
+            m_bytes[m_cursor++] = (Byte)(ch & 0xff);
+          }
+        }
+        else {
+          WriteUInt32(0);
+        }
+      }
+
+      void DataOutput::WriteObject( IGFSerializable^ obj )
+      {
+         WriteObjectInternal(obj);
+      }
+
+      void DataOutput::WriteObject( Serializable^ obj )
+      {
+        WriteObject( (IGFSerializable^)obj );
+      }
+
+      int8_t DataOutput::GetTypeId(uint32_t classId )
+      {
+          if (classId >= 0x80000000) {
+            return (int8_t)((classId - 0x80000000) % 0x20000000);
+          }
+          else if (classId <= 0x7F) {
+            return (int8_t)GemfireTypeIdsImpl::CacheableUserData;
+          }
+          else if (classId <= 0x7FFF) {
+            return (int8_t)GemfireTypeIdsImpl::CacheableUserData2;
+          }
+          else {
+            return (int8_t)GemfireTypeIdsImpl::CacheableUserData4;
+          }
+      }
+
+      int8_t DataOutput::DSFID(uint32_t classId)
+      {
+        // convention that [0x8000000, 0xa0000000) is for FixedIDDefault,
+        // [0xa000000, 0xc0000000) is for FixedIDByte,
+        // [0xc0000000, 0xe0000000) is for FixedIDShort
+        // and [0xe0000000, 0xffffffff] is for FixedIDInt
+        // Note: depends on fact that FixedIDByte is 1, FixedIDShort is 2
+        // and FixedIDInt is 3; if this changes then correct this accordingly
+        if (classId >= 0x80000000) {
+          return (int8_t)((classId - 0x80000000) / 0x20000000);
+        }
+        return 0;
+      }
+
+      /*
+      void DataOutput::WriteGenericObject(Object^ obj)
+      {
+        if ( obj == nullptr ) 
+        {
+          WriteByte( (int8_t) GemfireTypeIds::NullObj );
+          return;
+        } 
+
+        Byte typeId = GemStone::GemFire::Cache::Generic::Serializable::GetManagedTypeMappingGeneric(obj->GetType());
+
+        switch(typeId)
+        {
+        case gemfire::GemfireTypeIds::CacheableByte:
+          {
+            WriteByte(typeId);
+            WriteByte((Byte)obj);
+            return;
+          }
+        case gemfire::GemfireTypeIds::CacheableBoolean:
+          {
+            WriteByte(typeId);
+            WriteBoolean((bool)obj);
+            return;
+          }
+        case gemfire::GemfireTypeIds::CacheableWideChar:
+          {
+            WriteByte(typeId);
+            WriteObject((Char)obj);
+            return;
+          }
+        case gemfire::GemfireTypeIds::CacheableDouble:
+          {
+            WriteByte(typeId);
+            WriteDouble((Double)obj);
+            return;
+          }
+        case gemfire::GemfireTypeIds::CacheableASCIIString:
+          {
+            GemStone::GemFire::Cache::CacheableString^ cStr = GemStone::GemFire::Cache::CacheableString::Create((String^)obj);
+            WriteObjectInternal(cStr);
+            return;
+          }
+        case gemfire::GemfireTypeIds::CacheableFloat:
+          {
+            WriteByte(typeId);
+            WriteFloat((float)obj);
+            return;
+          }
+        case gemfire::GemfireTypeIds::CacheableInt16:
+          {
+            WriteByte(typeId);
+            WriteInt16((Int16)obj);
+            return;
+          }
+        case gemfire::GemfireTypeIds::CacheableInt32:
+          {
+            WriteByte(typeId);
+            WriteInt32((Int32)obj);
+            return;
+          }
+        case gemfire::GemfireTypeIds::CacheableInt64:
+          {
+            WriteByte(typeId);
+            WriteInt64((Int64)obj);
+            return;
+          }
+        case gemfire::GemfireTypeIds::CacheableDate:
+          {
+            GemStone::GemFire::Cache::CacheableDate^ cd = gcnew GemStone::GemFire::Cache::CacheableDate((DateTime)obj);
+            WriteObjectInternal(cd);
+            return;
+          }
+        case gemfire::GemfireTypeIds::CacheableBytes:
+          {
+            WriteByte(typeId);
+            WriteBytes((array<Byte>^)obj);
+            return;
+          }
+        case gemfire::GemfireTypeIds::CacheableDoubleArray:
+          {
+            WriteByte(typeId);
+            WriteObject((array<Double>^)obj);
+            return;
+          }
+        case gemfire::GemfireTypeIds::CacheableFloatArray:
+        {
+            WriteByte(typeId);
+            WriteObject((array<float>^)obj);
+            return;
+          }
+        case gemfire::GemfireTypeIds::CacheableInt16Array:
+        {
+            WriteByte(typeId);
+            WriteObject((array<Int16>^)obj);
+            return;
+        }
+        case gemfire::GemfireTypeIds::CacheableInt32Array:
+        {
+            WriteByte(typeId);
+            WriteObject((array<Int32>^)obj);
+            return;
+        }
+        case gemfire::GemfireTypeIds::CacheableInt64Array:
+        {
+            WriteByte(typeId);
+            WriteObject((array<Int64>^)obj);
+            return;
+        }
+        case gemfire::GemfireTypeIds::BooleanArray:
+        {
+            WriteByte(typeId);
+            WriteObject((array<bool>^)obj);
+            return;
+        }
+        case gemfire::GemfireTypeIds::CharArray:
+        {
+            WriteByte(typeId);
+            WriteObject((array<char>^)obj);
+            return;
+        }
+        case gemfire::GemfireTypeIds::CacheableStringArray:
+        {
+            WriteByte(typeId);
+            WriteObject((array<String^>^)obj);
+            return;
+        }
+        case gemfire::GemfireTypeIds::CacheableHashTable:
+        case gemfire::GemfireTypeIds::CacheableHashMap:
+        case gemfire::GemfireTypeIds::CacheableIdentityHashMap:
+        {
+            WriteByte(typeId);
+            WriteDictionary((System::Collections::IDictionary^)obj);
+            return;
+        }
+        case gemfire::GemfireTypeIds::CacheableVector:
+        {
+          GemStone::GemFire::Cache::CacheableVector^ cv = gcnew GemStone::GemFire::Cache::CacheableVector((System::Collections::IList^)obj);
+          WriteObjectInternal(cv);
+          return;
+        }
+        case gemfire::GemfireTypeIds::CacheableArrayList:
+        {
+          GemStone::GemFire::Cache::CacheableArrayList^ cal = gcnew GemStone::GemFire::Cache::CacheableArrayList((System::Collections::IList^)obj);
+          WriteObjectInternal(cal);
+          return;
+        }
+        case gemfire::GemfireTypeIds::CacheableStack:
+        {
+          GemStone::GemFire::Cache::CacheableStack^ cs = gcnew GemStone::GemFire::Cache::CacheableStack((System::Collections::ICollection^)obj);
+          WriteObjectInternal(cs);
+          return;
+        }
+        default:
+          {
+            IGFSerializable^ ct = safe_cast<IGFSerializable^>(obj);
+            if(ct != nullptr) {
+              WriteObjectInternal(ct);
+              return ;
+            }
+            throw gcnew System::Exception("DataOutput not found appropriate type to write it.");
+          }
+        }
+      }
+      */
+
+      /*
+      void DataOutput::WriteStringArray(array<String^>^ strArray)
+      {
+        this->WriteArrayLen(strArray->Length);
+        for(int i = 0; i < strArray->Length; i++)
+        {
+          this->WriteUTF(strArray[i]);
+        }
+      }
+      */
+
+      void DataOutput::WriteObjectInternal( IGFSerializable^ obj )
+      {
+        //CacheableKey^ key = gcnew CacheableKey();
+        if ( obj == nullptr ) {
+          WriteByte( (int8_t) GemfireTypeIds::NullObj );
+        } else {
+          int8_t typeId = DataOutput::GetTypeId( obj->ClassId);
+          switch (DataOutput::DSFID(obj->ClassId)) {
+            case GemfireTypeIdsImpl::FixedIDByte:
+              WriteByte((int8_t)GemfireTypeIdsImpl::FixedIDByte);
+              WriteByte( typeId ); // write the type ID.
+              break;
+            case GemfireTypeIdsImpl::FixedIDShort:
+              WriteByte((int8_t)GemfireTypeIdsImpl::FixedIDShort);
+              WriteInt16( (int16_t)typeId ); // write the type ID.
+              break;
+            case GemfireTypeIdsImpl::FixedIDInt:
+              WriteByte((int8_t)GemfireTypeIdsImpl::FixedIDInt);
+              WriteInt32( (int32_t)typeId ); // write the type ID.
+              break;
+            default:
+              WriteByte( typeId ); // write the type ID.
+              break;
+          }
+          
+          if ( (int32_t)typeId == GemfireTypeIdsImpl::CacheableUserData ) {
+            WriteByte( (int8_t) obj->ClassId );
+          } else if ( (int32_t)typeId == GemfireTypeIdsImpl::CacheableUserData2 ) {
+            WriteInt16( (int16_t) obj->ClassId );
+          } else if ( (int32_t)typeId == GemfireTypeIdsImpl::CacheableUserData4 ) {
+            WriteInt32( (int32_t) obj->ClassId );
+          }
+          obj->ToData( this ); // let the obj serialize itself.
+        }
+      }
+
+      void DataOutput::AdvanceCursor( uint32_t offset )
+      {
+        m_cursor += offset;
+      }
+
+      void DataOutput::RewindCursor( uint32_t offset )
+      {
+        //first set native one
+        WriteBytesToUMDataOutput();
+        NativePtr->rewindCursor(offset);
+        SetBuffer();
+        //m_cursor -= offset;
+      }
+
+      array<Byte>^ DataOutput::GetBuffer( )
+      {
+        //TODO::hitesh
+       // return m_bytes;
+        //first set native one
+        WriteBytesToUMDataOutput();
+        SetBuffer();
+        
+        int buffLen = NativePtr->getBufferLength();
+        array<Byte>^ buffer = gcnew array<Byte>( buffLen );
+
+        if ( buffLen > 0 ) {
+          pin_ptr<Byte> pin_buffer = &buffer[ 0 ];
+          memcpy( (void*)pin_buffer, NativePtr->getBuffer( ), buffLen );
+        }
+        return buffer;
+      }
+
+      uint32_t DataOutput::BufferLength::get( )
+      {
+        //first set native one
+        WriteBytesToUMDataOutput();
+        SetBuffer();
+
+        return NativePtr->getBufferLength();
+      }
+
+      void DataOutput::Reset( )
+      {
+        //first set native one
+        WriteBytesToUMDataOutput();
+        NativePtr->reset();
+        SetBuffer();
+      }
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/DataOutputM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/DataOutputM.hpp b/geode-client-native/src/clicache/DataOutputM.hpp
new file mode 100644
index 0000000..7bca848
--- /dev/null
+++ b/geode-client-native/src/clicache/DataOutputM.hpp
@@ -0,0 +1,531 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/DataOutput.hpp"
+#include "impl/NativeWrapper.hpp"
+#include "LogM.hpp"
+#include "ExceptionTypesM.hpp"
+#include "SerializableM.hpp"
+#include "SerializableM.hpp"
+
+#include "CacheableStringM.hpp"
+#include "CacheableDateM.hpp"
+#include "CacheableVectorM.hpp"
+#include "CacheableArrayListM.hpp"
+#include "CacheableStackM.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      interface class IGFSerializable;
+
+      /// <summary>
+      /// Provides operations for writing primitive data values, and
+      /// user-defined objects implementing IGFSerializable, to a byte stream.
+      /// This class is intentionally not thread safe.
+      /// </summary>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class DataOutput sealed
+        : public Internal::UMWrap<gemfire::DataOutput>
+      {
+      private:
+        int m_cursor;
+        bool m_isManagedObject;
+        uint8_t * m_bytes;
+        uint32_t m_remainingBufferLength;
+      public:
+
+        /// <summary>
+        /// Default constructor.
+        /// </summary>
+        inline DataOutput( )
+          : UMWrap( new gemfire::DataOutput( ), true )
+        { 
+          m_isManagedObject = true;
+          m_cursor = 0;
+          m_bytes = const_cast<uint8_t *>(NativePtr->getCursor());
+          m_remainingBufferLength = NativePtr->getRemainingBufferLength();
+        }
+
+        /// <summary>
+        /// Write length of the array to the <c>DataOutput</c>.
+        /// </summary>
+        /// <param name="len">Array len to write.</param>
+        void WriteArrayLen( int32_t len );
+
+        /// <summary>
+        /// Write a byte to the <c>DataOutput</c>.
+        /// </summary>
+        /// <param name="value">The byte to write.</param>
+        void WriteByte( Byte value );
+
+        /// <summary>
+        /// Write a signed byte to the <c>DataOutput</c>.
+        /// </summary>
+        /// <param name="value">The signed byte to write.</param>
+        void WriteSByte( SByte value );
+
+        /// <summary>
+        /// Write a boolean value to the <c>DataOutput</c>.
+        /// </summary>
+        /// <param name="value">The boolean value to write.</param>
+        void WriteBoolean( bool value );
+
+        /// <summary>
+        /// Write a given length of bytes to the <c>DataOutput</c>.
+        /// </summary>
+        /// <param name="bytes">The array of bytes to write.</param>
+        /// <param name="len">
+        /// The number of bytes from the start of array to write.
+        /// </param>
+        void WriteBytes( array<Byte>^ bytes, int32_t len );
+
+        /// <summary>
+        /// Write an array of bytes to the <c>DataOutput</c>.
+        /// </summary>
+        /// <param name="bytes">The array of bytes to write.</param>
+        inline void WriteBytes( array<Byte>^ bytes )
+        {
+          WriteBytes( bytes, ( bytes == nullptr ? -1 : bytes->Length ) );
+        }
+
+        /// <summary>
+        /// Write a given length of signed bytes to the <c>DataOutput</c>.
+        /// </summary>
+        /// <param name="bytes">The array of signed bytes to write.</param>
+        /// <param name="len">
+        /// The number of bytes from the start of array to write.
+        /// </param>
+        void WriteSBytes( array<SByte>^ bytes, int32_t len );
+
+        /// <summary>
+        /// Write an array of signed bytes to the <c>DataOutput</c>.
+        /// </summary>
+        /// <param name="bytes">The array of signed bytes to write.</param>
+        inline void WriteSBytes( array<SByte>^ bytes )
+        {
+          WriteSBytes( bytes, ( bytes == nullptr ? -1 : bytes->Length )  );
+        }
+
+        /// <summary>
+        /// Write a given length of bytes without its length to the
+        /// <c>DataOutput</c>.
+        /// </summary>
+        /// <param name="bytes">The array of bytes to write.</param>
+        /// <param name="len">
+        /// The number of bytes from the start of array to write.
+        /// </param>
+        void WriteBytesOnly( array<Byte>^ bytes, uint32_t len );
+
+        void WriteBytesOnly( array<Byte>^ bytes, uint32_t len, uint32_t offset );
+
+        /// <summary>
+        /// Write an array of bytes without its length to the
+        /// <c>DataOutput</c>.
+        /// </summary>
+        /// <param name="bytes">The array of bytes to write.</param>
+        inline void WriteBytesOnly( array<Byte>^ bytes )
+        {
+          WriteBytesOnly( bytes, ( bytes == nullptr ? 0 : bytes->Length )  );
+        }
+
+        /// <summary>
+        /// Write a given length of signed bytes without its length
+        /// to the <c>DataOutput</c>.
+        /// </summary>
+        /// <param name="bytes">The array of signed bytes to write.</param>
+        /// <param name="len">
+        /// The number of bytes from the start of array to write.
+        /// </param>
+        void WriteSBytesOnly( array<SByte>^ bytes, uint32_t len );
+
+        /// <summary>
+        /// Write an array of signed bytes without its length
+        /// to the <c>DataOutput</c>.
+        /// </summary>
+        /// <param name="bytes">The array of signed bytes to write.</param>
+        inline void WriteSBytesOnly( array<SByte>^ bytes )
+        {
+          WriteSBytesOnly( bytes, ( bytes == nullptr ? 0 : bytes->Length )  );
+        }
+
+        /// <summary>
+        /// Write an unsigned short integer (int16_t) to the <c>DataOutput</c>.
+        /// </summary>
+        /// <param name="value">The unsigned 16-bit integer to write.</param>
+        void WriteUInt16( uint16_t value );
+
+        /// <summary>
+        /// Write an unsigned 32-bit integer to the <c>DataOutput</c>.
+        /// </summary>
+        /// <param name="value">The unsigned 32-bit integer to write.</param>
+        void WriteUInt32( uint32_t value );
+
+        /// <summary>
+        /// Write an unsigned 64-bit integer to the <c>DataOutput</c>.
+        /// </summary>
+        /// <param name="value">The unsigned 64-bit integer to write.</param>
+        void WriteUInt64( uint64_t value );
+
+        /// <summary>
+        /// Write a 16-bit integer to the <c>DataOutput</c>.
+        /// </summary>
+        /// <param name="value">The 16-bit integer to write.</param>
+        void WriteInt16( int16_t value );
+
+        /// <summary>
+        /// Write a 32-bit integer to the <c>DataOutput</c>.
+        /// </summary>
+        /// <param name="value">The 32-bit integer to write.</param>
+        void WriteInt32( int32_t value );
+
+        /// <summary>
+        /// Write a 64-bit integer to the <c>DataOutput</c>.
+        /// </summary>
+        /// <param name="value">The 64-bit integer to write.</param>
+        void WriteInt64( int64_t value );
+
+        /// <summary>
+        /// Write a float to the DataOutput.
+        /// </summary>
+        /// <param name="value">The float value to write.</param>
+        void WriteFloat( float value );
+
+        /// <summary>
+        /// Write a double precision real number to the <c>DataOutput</c>.
+        /// </summary>
+        /// <param name="value">
+        /// The double precision real number to write.
+        /// </param>
+        void WriteDouble( double value );
+
+        /// <summary>
+        /// Write a string using java-modified UTF-8 encoding to
+        /// <c>DataOutput</c>.
+        /// The maximum length supported is 2^16-1 beyond which the string
+        /// shall be truncated.
+        /// </summary>
+        /// <param name="value">The UTF encoded string to write.</param>
+        void WriteUTF( String^ value );
+
+        /// <summary>
+        /// Write a string using java-modified UTF-8 encoding to
+        /// <c>DataOutput</c>.
+        /// Length should be more than 2^16 -1. 
+        /// </summary>
+        /// <param name="value">The UTF encoded string to write.</param>
+        void WriteUTFHuge( String^ value );
+
+        /// <summary>
+        /// Write a string(only ASCII char) to
+        /// <c>DataOutput</c>.
+        /// Length should be more than 2^16 -1.
+        /// </summary>
+        /// <param name="value">The UTF encoded string to write.</param>
+        void WriteASCIIHuge( String^ value );
+
+        /// <summary>
+        /// Write an <c>IGFSerializable</c> object to the <c>DataOutput</c>.
+        /// </summary>
+        /// <param name="obj">The object to write.</param>
+        void WriteObject( IGFSerializable^ obj );
+
+        /// <summary>
+        /// Write a <c>Serializable</c> object to the <c>DataOutput</c>.
+        /// This is provided to conveniently pass primitive types (like string)
+        /// that shall be implicitly converted to corresponding
+        /// <c>IGFSerializable</c> wrapper types.
+        /// </summary>
+        /// <param name="obj">The object to write.</param>
+        void WriteObject( GemStone::GemFire::Cache::Serializable^ obj );
+
+        /// <summary>
+        /// Advance the buffer cursor by the given offset.
+        /// </summary>
+        /// <param name="offset">
+        /// The offset by which to advance the cursor.
+        /// </param>
+        void AdvanceCursor( uint32_t offset );
+
+        /// <summary>
+        /// Rewind the buffer cursor by the given offset.
+        /// </summary>
+        /// <param name="offset">
+        /// The offset by which to rewind the cursor.
+        /// </param>
+        void RewindCursor( uint32_t offset );
+
+        /// <summary>
+        /// Get a copy of the current buffer.
+        /// </summary>
+        array<Byte>^ GetBuffer( );
+
+        /// <summary>
+        /// Get the length of current data in the buffer.
+        /// </summary>
+        property uint32_t BufferLength
+        {
+          uint32_t get( );
+        }
+
+        /// <summary>
+        /// Reset the cursor to the start of the buffer.
+        /// </summary>
+        void Reset( );
+
+        /// <summary>
+        /// Get the underlying native unmanaged pointer.
+        /// </summary>
+        property IntPtr NativeIntPtr
+        {
+          inline IntPtr get()
+          {
+            return IntPtr(_NativePtr);
+          }
+        }
+
+       // void WriteGenericObject(Object^ obj);
+
+        void WriteDictionary(System::Collections::IDictionary^ dict)
+        {
+          if(dict != nullptr)
+          {
+            this->WriteArrayLen(dict->Count);
+            for each( System::Collections::DictionaryEntry^ entry in dict) 
+            {
+							//TODO::splir
+              //this->WriteGenericObject(entry->Key);
+              //this->WriteGenericObject(entry->Value);
+            }
+          }
+          else
+          {
+            WriteByte( (int8_t) -1);
+          }
+        }
+        
+        void WriteDate(System::DateTime dt)
+        {
+          if(dt.Ticks != 0L)
+          {
+            CacheableDate^ cd = CacheableDate::Create(dt);
+            cd->ToData(this);
+          }else
+            this->WriteInt64(-1L);
+        }
+
+      internal:
+
+        int EncodeString( String^ input, int length )
+        {
+          int j = m_cursor;
+
+          for ( int i = 0; i < input->Length; i++ )
+          {
+            //EnsureCapacity(3);
+            unsigned short c = (unsigned short)input[i];
+
+            if( c == 0 )
+            {
+                m_bytes[m_cursor++] = 0xc0;
+                m_bytes[m_cursor++] = 0x80;
+            }
+            else if ( c < 0x80 )//ASCII character
+            {
+              // 7-bits done in one byte.
+              m_bytes[m_cursor++] = (uint8_t)c;
+            }
+            else if ( c < 0x800 )
+            {
+              // 8-11 bits done in 2 bytes
+              m_bytes[m_cursor++] = ( 0xC0 | c >> 6 );
+              m_bytes[m_cursor++] = ( 0x80 | c & 0x3F );
+            }
+            else 
+            {
+              // 12-16 bits done in 3 bytes
+              m_bytes[m_cursor++] = ( 0xE0 | c >> 12 );
+              m_bytes[m_cursor++] = ( 0x80 | c >> 6 & 0x3F );
+              m_bytes[m_cursor++] = ( 0x80 | c & 0x3F );
+            }            
+          }
+
+          if(length < (m_cursor - j))//extra byte after 0xffff
+            return length;
+          return m_cursor - j; //number of bytes
+        }
+       
+        static int getEncodedLength(String^ input)
+        {
+          int count = 0;
+          for ( int i = 0; i < input->Length; i++ )
+          {
+            unsigned short c = (unsigned short)input[i];
+
+            if( c == 0)
+            {
+              count += 2;
+            }
+            else if ( c < 0x80 )//ASCII character
+            {
+              count++;
+            }
+            else if ( c < 0x800 )
+            {
+              count += 2;
+            }
+            else
+            {
+               count += 3;
+            }
+          }// end for
+
+          return count;
+        }
+
+        static int8_t GetTypeId(uint32_t classId );
+        
+        static int8_t DSFID(uint32_t classId);        
+  
+        void WriteObjectInternal( IGFSerializable^ obj );     
+
+        void WriteBytesToUMDataOutput()
+        {
+          NativePtr->advanceCursor(m_cursor);
+          m_cursor = 0;
+          m_remainingBufferLength = 0;
+          m_bytes = nullptr;
+        }
+
+        void WriteObject(bool% obj)
+        {
+          WriteBoolean(obj);
+        }
+
+        void WriteObject(Byte% obj)
+        {
+          WriteByte(obj);
+        }
+
+        void WriteObject(Char% obj)
+        {
+          unsigned short us = (unsigned short)obj;
+          m_bytes[m_cursor++] = us >> 8;
+          m_bytes[m_cursor++] = (Byte)us; 
+        }
+
+        void WriteObject(Double% obj)
+        {
+          WriteDouble(obj);
+        }
+
+        void WriteObject(Single% obj)
+        {
+          WriteFloat(obj);
+        }
+
+        void WriteObject(int16_t% obj)
+        {
+          WriteInt16(obj);
+        }
+
+        void WriteObject(int32_t% obj)
+        {
+          WriteInt32(obj);
+        }
+
+        void WriteObject(int64_t% obj)
+        {
+          WriteInt64(obj);
+        }
+
+        
+        template <typename mType>
+        void WriteObject(array<mType>^ %objArray)
+        {
+          if(objArray != nullptr) {
+            int arrayLen = objArray->Length;
+            WriteArrayLen(arrayLen);
+            if(arrayLen > 0) {
+              int i = 0;
+              for( i = 0; i < arrayLen; i++ ){
+                WriteObject(objArray[i]);
+              }
+            }
+          }
+          else {
+            WriteByte(0xff);
+          }
+        }
+
+        bool IsManagedObject()
+        {
+          //TODO::HItesh
+          return m_isManagedObject;
+        }
+
+        void SetBuffer()
+        {
+          m_cursor = 0;
+          m_bytes = const_cast<uint8_t *>(NativePtr->getCursor());
+          m_remainingBufferLength = NativePtr->getRemainingBufferLength();
+        }
+
+        inline void EnsureCapacity( int32_t size )
+        {
+          int32_t bytesLeft = m_remainingBufferLength - m_cursor;
+          if ( bytesLeft < size ) {
+            try
+            {
+              NativePtr->ensureCapacity(m_cursor + size);
+              m_bytes = const_cast<uint8_t *>( NativePtr->getCursor());
+              m_remainingBufferLength = NativePtr->getRemainingBufferLength();
+            }
+            catch(gemfire::OutOfMemoryException ex )
+            {
+              throw gcnew GemStone::GemFire::Cache::OutOfMemoryException(ex);
+            }            
+          }
+        }
+
+ 
+        /// <summary>
+        /// Internal constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline DataOutput( gemfire::DataOutput* nativeptr, bool managedObject )
+          : UMWrap( nativeptr, false )
+        {
+          m_isManagedObject = managedObject;
+          m_cursor = 0;
+          m_bytes = const_cast<uint8_t *>(nativeptr->getCursor());
+          m_remainingBufferLength = nativeptr->getRemainingBufferLength();
+        }
+
+        /*inline DataOutput( gemfire::DataOutput* nativeptr )
+          : UMWrap( nativeptr, false )
+        {
+          m_isManagedObject = false;
+          m_cursor = 0;
+          m_bytes = const_cast<uint8_t *>(nativeptr->getCursor());
+          m_remainingBufferLength = nativeptr->getRemainingBufferLength();
+        }*/
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/DiskPolicyTypeM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/DiskPolicyTypeM.hpp b/geode-client-native/src/clicache/DiskPolicyTypeM.hpp
new file mode 100644
index 0000000..a0f82dd
--- /dev/null
+++ b/geode-client-native/src/clicache/DiskPolicyTypeM.hpp
@@ -0,0 +1,76 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/DiskPolicyType.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      /// <summary>
+      /// Enumerated type for disk policy.
+      /// Contains values for setting the disk policy type.
+      /// </summary>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public enum class DiskPolicyType
+      {
+        /// <summary>No policy.</summary>
+        None = 0,
+
+        /// <summary>Overflow to disk.</summary>
+        Overflows
+      };
+
+
+      /// <summary>
+      /// Static class containing convenience methods for <c>DiskPolicyType</c>.
+      /// </summary>
+      /// <seealso cref="RegionAttributes.DiskPolicy" />
+      /// <seealso cref="AttributesFactory.SetDiskPolicy" />
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class DiskPolicy STATICCLASS
+      {
+      public:
+
+        /// <summary>
+        /// True if the current policy is <c>Overflows</c>.
+        /// </summary>
+        inline static bool IsOverflow( DiskPolicyType type )
+        {
+          return (type == DiskPolicyType::Overflows);
+        }
+
+        /// <summary>
+        /// True if the current policy is <c>None</c>.
+        /// </summary>
+        inline static bool IsNone( DiskPolicyType type )
+        {
+          return (type == DiskPolicyType::None);
+        }
+
+        ///// <summary>
+        ///// True if the current policy is <c>Persist</c>.
+        ///// </summary> -- Persist is NOT YET IMPLEMENTED IN C++
+        //inline static bool IsPersist( DiskPolicyType type )
+        //{
+        //  return (type == DiskPolicyType::Persist);
+        //}
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/DistributedSystemM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/DistributedSystemM.cpp b/geode-client-native/src/clicache/DistributedSystemM.cpp
new file mode 100644
index 0000000..68395e6
--- /dev/null
+++ b/geode-client-native/src/clicache/DistributedSystemM.cpp
@@ -0,0 +1,586 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "version.h"
+#include "DistributedSystemM.hpp"
+#include "SystemPropertiesM.hpp"
+#include "PropertiesM.hpp"
+#include "CacheFactoryM.hpp"
+#include "CacheableDateM.hpp"
+#include "CacheableFileNameM.hpp"
+#include "CacheableHashMapM.hpp"
+#include "CacheableHashSetM.hpp"
+#include "CacheableHashTableM.hpp"
+#include "CacheableIdentityHashMapM.hpp"
+#include "CacheableObjectArrayM.hpp"
+#include "CacheableStringM.hpp"
+#include "CacheableStringArrayM.hpp"
+#include "CacheableUndefinedM.hpp"
+#include "CacheableVectorM.hpp"
+#include "CacheableArrayListM.hpp"
+#include "CacheableStackM.hpp"
+#include "CacheableObject.hpp"
+#include "CacheableObjectXml.hpp"
+#include "LogM.hpp"
+#include "StructM.hpp"
+#include "impl/MemoryPressureHandler.hpp"
+#include "cppcache/CacheLoader.hpp"
+#include "cppcache/CacheListener.hpp"
+#include "cppcache/PartitionResolver.hpp"
+#include "cppcache/CacheWriter.hpp"
+#include "cppcache/GemfireTypeIds.hpp"
+#include "cppcache/impl/CacheImpl.hpp"
+#include "cppcache/impl/PooledBasePool.hpp"
+#include "cppcache/impl/CacheXmlParser.hpp"
+#include "impl/SafeConvert.hpp"
+#include "cppcache/impl/DistributedSystemImpl.hpp"
+#include "CacheableBuiltinsM.hpp"
+// disable spurious warning
+#pragma warning(disable:4091)
+#include <msclr/lock.h>
+#pragma warning(default:4091)
+#include <ace/Process.h> // Added to get rid of unresolved token warning
+
+
+using namespace System;
+
+namespace gemfire
+{
+
+  class ManagedCacheLoader
+    : public CacheLoader
+  {
+  public:
+
+    static CacheLoader* create(const char* assemblyPath,
+      const char* factoryFunctionName);
+  };
+
+  class ManagedCacheListener
+    : public CacheListener
+  {
+  public:
+
+    static CacheListener* create(const char* assemblyPath,
+      const char* factoryFunctionName);
+  };
+
+  class ManagedPartitionResolver
+    : public PartitionResolver
+  {
+  public:
+
+    static PartitionResolver* create(const char* assemblyPath,
+      const char* factoryFunctionName);
+  };
+
+  class ManagedCacheWriter
+    : public CacheWriter
+  {
+  public:
+
+    static CacheWriter* create(const char* assemblyPath,
+      const char* factoryFunctionName);
+  };
+
+  class ManagedAuthInitialize
+    : public AuthInitialize
+  {
+  public:
+
+    static AuthInitialize* create(const char* assemblyPath,
+      const char* factoryFunctionName);
+  };
+}
+
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      DistributedSystem^ DistributedSystem::Connect(String^ name)
+      {
+        return DistributedSystem::Connect(name, nullptr);
+      }
+
+      DistributedSystem^ DistributedSystem::Connect(String^ name,
+          Properties^ config)
+      {
+        gemfire::DistributedSystemImpl::acquireDisconnectLock();
+
+        _GF_MG_EXCEPTION_TRY
+
+          ManagedString mg_name(name);
+          gemfire::PropertiesPtr nativepropsptr(
+            GetNativePtr<gemfire::Properties>(config));
+          DistributedSystem::AppDomainInstanceInitialization(nativepropsptr);
+
+          // this we are calling after all .NET initialization required in
+          // each AppDomain
+          gemfire::DistributedSystemPtr& nativeptr(
+            gemfire::DistributedSystem::connect(mg_name.CharPtr,
+            nativepropsptr));
+
+          ManagedPostConnect();
+
+//          DistributedSystem::AppDomainInstancePostInitialization();
+
+          return Create(nativeptr.ptr());
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+
+        finally {
+          gemfire::DistributedSystemImpl::releaseDisconnectLock();
+        }
+      }
+
+      void DistributedSystem::Disconnect()
+      {
+        gemfire::DistributedSystemImpl::acquireDisconnectLock();
+
+        _GF_MG_EXCEPTION_TRY
+
+          if (gemfire::DistributedSystem::isConnected()) {
+           // gemfire::CacheImpl::expiryTaskManager->cancelTask(
+             // s_memoryPressureTaskID);
+            Serializable::UnregisterNatives();
+            DistributedSystem::UnregisterBuiltinManagedTypes();
+          }
+          gemfire::DistributedSystem::disconnect();
+      
+        _GF_MG_EXCEPTION_CATCH_ALL
+
+        finally {
+          gemfire::DistributedSystemImpl::releaseDisconnectLock();
+        }
+      }
+
+
+    /*  DistributedSystem^ DistributedSystem::ConnectOrGetInstance(String^ name)
+      {
+        return DistributedSystem::ConnectOrGetInstance(name, nullptr);
+      }
+
+      DistributedSystem^ DistributedSystem::ConnectOrGetInstance(String^ name,
+          Properties^ config)
+      {
+        gemfire::DistributedSystemImpl::acquireDisconnectLock();
+
+        _GF_MG_EXCEPTION_TRY
+
+          ManagedString mg_name(name);
+          gemfire::PropertiesPtr nativepropsptr(
+            GetNativePtr<gemfire::Properties>(config));
+          DistributedSystem::AppDomainInstanceInitialization(nativepropsptr);
+
+          // this we are calling after all .NET initialization required in
+          // each AppDomain
+          gemfire::DistributedSystemPtr& nativeptr(
+            gemfire::DistributedSystem::connectOrGetInstance(mg_name.CharPtr,
+            nativepropsptr));
+
+          if (gemfire::DistributedSystem::currentInstances() == 1) {
+            // stuff to be done only for the first connect
+            ManagedPostConnect();
+          }
+
+          DistributedSystem::AppDomainInstancePostInitialization();
+
+          return Create(nativeptr.ptr());
+          
+        _GF_MG_EXCEPTION_CATCH_ALL
+
+        finally {
+          gemfire::DistributedSystemImpl::releaseDisconnectLock();
+        }
+      }
+*/
+   /*   int DistributedSystem::DisconnectInstance()
+      {
+        gemfire::DistributedSystemImpl::acquireDisconnectLock();
+
+        _GF_MG_EXCEPTION_TRY
+
+          int remainingInstances =
+            gemfire::DistributedSystem::currentInstances();
+          if (remainingInstances <= 0) {
+            throw gcnew NotConnectedException("DistributedSystem."
+              "DisconnectInstance: no remaining instance connections");
+          }
+
+          //gemfire::CacheImpl::expiryTaskManager->cancelTask(
+            //s_memoryPressureTaskID);
+          Serializable::UnregisterNatives();
+
+          if (remainingInstances == 1) { // last instance
+            DistributedSystem::UnregisterBuiltinManagedTypes();
+          }
+          return gemfire::DistributedSystem::disconnectInstance();
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+
+        finally {
+          gemfire::DistributedSystemImpl::releaseDisconnectLock();
+        }
+      }
+*/
+
+      void DistributedSystem::AppDomainInstanceInitialization(
+        const gemfire::PropertiesPtr& nativepropsptr)
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          // Register wrapper types for built-in types, this are still cpp wrapper
+           
+            Serializable::RegisterWrapper(
+              gcnew WrapperDelegate(GemStone::GemFire::Cache::CacheableHashSet::Create),
+              gemfire::GemfireTypeIds::CacheableHashSet);
+            
+             Serializable::RegisterWrapper(
+              gcnew WrapperDelegate(GemStone::GemFire::Cache::CacheableLinkedHashSet::Create),
+              gemfire::GemfireTypeIds::CacheableLinkedHashSet);
+
+             Serializable::RegisterWrapper(
+              gcnew WrapperDelegate(GemStone::GemFire::Cache::Struct::Create),
+              gemfire::GemfireTypeIds::Struct);
+            
+             Serializable::RegisterWrapper(
+              gcnew WrapperDelegate(GemStone::GemFire::Cache::Properties::CreateDeserializable),
+              gemfire::GemfireTypeIds::Properties);
+
+          // End register wrapper types for built-in types
+
+  // Register with cpp using unmanaged Cacheablekey wrapper
+            Serializable::RegisterType(
+              gemfire::GemfireTypeIds::CacheableByte,
+              gcnew TypeFactoryMethod(GemStone::GemFire::Cache::CacheableByte::CreateDeserializable));
+
+            Serializable::RegisterType(
+              gemfire::GemfireTypeIds::CacheableBoolean,
+              gcnew TypeFactoryMethod(GemStone::GemFire::Cache::CacheableBoolean::CreateDeserializable));
+
+            Serializable::RegisterType(
+              gemfire::GemfireTypeIds::CacheableBytes,
+              gcnew TypeFactoryMethod(GemStone::GemFire::Cache::CacheableBytes::CreateDeserializable));
+
+            Serializable::RegisterType(
+              gemfire::GemfireTypeIds::BooleanArray, 
+              gcnew TypeFactoryMethod(GemStone::GemFire::Cache::BooleanArray::CreateDeserializable));
+
+            Serializable::RegisterType(
+              gemfire::GemfireTypeIds::CacheableWideChar,
+              gcnew TypeFactoryMethod(GemStone::GemFire::Cache::CacheableCharacter::CreateDeserializable));
+
+            Serializable::RegisterType(
+              gemfire::GemfireTypeIds::CharArray,
+              gcnew TypeFactoryMethod(GemStone::GemFire::Cache::CharArray::CreateDeserializable));
+
+            Serializable::RegisterType(
+              gemfire::GemfireTypeIds::CacheableDouble,
+              gcnew TypeFactoryMethod(GemStone::GemFire::Cache::CacheableDouble::CreateDeserializable));
+
+            Serializable::RegisterType(
+              gemfire::GemfireTypeIds::CacheableDoubleArray,
+              gcnew TypeFactoryMethod(GemStone::GemFire::Cache::CacheableDoubleArray::CreateDeserializable));
+
+            Serializable::RegisterType(
+              gemfire::GemfireTypeIds::CacheableFloat,
+              gcnew TypeFactoryMethod(GemStone::GemFire::Cache::CacheableFloat::CreateDeserializable));
+
+            Serializable::RegisterType(
+              gemfire::GemfireTypeIds::CacheableFloatArray,
+              gcnew TypeFactoryMethod(GemStone::GemFire::Cache::CacheableFloatArray::CreateDeserializable));
+
+           
+            Serializable::RegisterType(
+              gemfire::GemfireTypeIds::CacheableHashSet,
+              gcnew TypeFactoryMethod(GemStone::GemFire::Cache::CacheableHashSet::CreateDeserializable));
+
+           Serializable::RegisterType(
+              gemfire::GemfireTypeIds::CacheableLinkedHashSet,
+              gcnew TypeFactoryMethod(GemStone::GemFire::Cache::CacheableLinkedHashSet::CreateDeserializable));
+
+            Serializable::RegisterType(
+              gemfire::GemfireTypeIds::CacheableInt16,
+              gcnew TypeFactoryMethod(GemStone::GemFire::Cache::CacheableInt16::CreateDeserializable));
+
+            Serializable::RegisterType(
+              gemfire::GemfireTypeIds::CacheableInt16Array,
+              gcnew TypeFactoryMethod(GemStone::GemFire::Cache::CacheableInt16Array::CreateDeserializable));
+
+            Serializable::RegisterType(
+              gemfire::GemfireTypeIds::CacheableInt32,
+              gcnew TypeFactoryMethod(GemStone::GemFire::Cache::CacheableInt32::CreateDeserializable));
+
+            Serializable::RegisterType(
+              gemfire::GemfireTypeIds::CacheableInt32Array,
+              gcnew TypeFactoryMethod(GemStone::GemFire::Cache::CacheableInt32Array::CreateDeserializable));
+
+            Serializable::RegisterType(
+              gemfire::GemfireTypeIds::CacheableInt64,
+              gcnew TypeFactoryMethod(GemStone::GemFire::Cache::CacheableInt64::CreateDeserializable));
+
+            Serializable::RegisterType(
+              gemfire::GemfireTypeIds::CacheableInt64Array,
+              gcnew TypeFactoryMethod(GemStone::GemFire::Cache::CacheableInt64Array::CreateDeserializable));
+
+            Serializable::RegisterType(
+              gemfire::GemfireTypeIds::CacheableASCIIString,
+              gcnew TypeFactoryMethod(GemStone::GemFire::Cache::CacheableString::CreateDeserializable));
+
+            Serializable::RegisterType(
+              gemfire::GemfireTypeIds::CacheableASCIIStringHuge,
+              gcnew TypeFactoryMethod(GemStone::GemFire::Cache::CacheableString::createDeserializableHuge));
+
+            Serializable::RegisterType(
+              gemfire::GemfireTypeIds::CacheableString,
+              gcnew TypeFactoryMethod(GemStone::GemFire::Cache::CacheableString::createUTFDeserializable));
+
+            Serializable::RegisterType(
+              gemfire::GemfireTypeIds::CacheableStringHuge,
+              gcnew TypeFactoryMethod(GemStone::GemFire::Cache::CacheableString::createUTFDeserializableHuge));
+
+            Serializable::RegisterType(
+              gemfire::GemfireTypeIds::CacheableNullString,
+              gcnew TypeFactoryMethod(GemStone::GemFire::Cache::CacheableString::CreateDeserializable));
+
+            Serializable::RegisterType(
+              gemfire::GemfireTypeIds::CacheableStringArray,
+              gcnew TypeFactoryMethod(GemStone::GemFire::Cache::CacheableStringArray::CreateDeserializable));
+
+            Serializable::RegisterType(
+              gemfire::GemfireTypeIds::Struct,
+              gcnew TypeFactoryMethod(GemStone::GemFire::Cache::Struct::CreateDeserializable));
+
+            Serializable::RegisterType(
+              gemfire::GemfireTypeIds::Properties,
+              gcnew TypeFactoryMethod(GemStone::GemFire::Cache::Properties::CreateDeserializable));
+            
+            
+            // End register other built-in types
+
+          if (!gemfire::DistributedSystem::isConnected()) 
+          {
+            // Set the ManagedAuthInitialize factory function
+            gemfire::SystemProperties::managedAuthInitializeFn =
+              gemfire::ManagedAuthInitialize::create;
+
+            // Set the ManagedCacheLoader/Listener/Writer factory functions.
+            gemfire::CacheXmlParser::managedCacheLoaderFn =
+              gemfire::ManagedCacheLoader::create;
+            gemfire::CacheXmlParser::managedCacheListenerFn =
+              gemfire::ManagedCacheListener::create;
+            gemfire::CacheXmlParser::managedCacheWriterFn =
+              gemfire::ManagedCacheWriter::create;
+
+            // Set the ManagedPartitionResolver factory function
+            gemfire::CacheXmlParser::managedPartitionResolverFn =
+              gemfire::ManagedPartitionResolver::create;
+          }
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void DistributedSystem::ManagedPostConnect()
+      {
+        // [sumedh] The registration into the native map should be after
+        // native connect since it can be invoked only once
+
+        // Register other built-in types
+        Serializable::RegisterType(
+          gemfire::GemfireTypeIds::CacheableDate,
+          gcnew TypeFactoryMethod(GemStone::GemFire::Cache::CacheableDate::CreateDeserializable));
+        Serializable::RegisterType(
+          gemfire::GemfireTypeIds::CacheableFileName,
+          gcnew TypeFactoryMethod(GemStone::GemFire::Cache::CacheableFileName::CreateDeserializable));
+        Serializable::RegisterType(
+          gemfire::GemfireTypeIds::CacheableHashMap,
+          gcnew TypeFactoryMethod(GemStone::GemFire::Cache::CacheableHashMap::CreateDeserializable));
+        Serializable::RegisterType(
+          gemfire::GemfireTypeIds::CacheableHashTable,
+          gcnew TypeFactoryMethod(GemStone::GemFire::Cache::CacheableHashTable::CreateDeserializable));
+        Serializable::RegisterType(
+          gemfire::GemfireTypeIds::CacheableIdentityHashMap,
+          gcnew TypeFactoryMethod(
+          GemStone::GemFire::Cache::CacheableIdentityHashMap::CreateDeserializable));
+        Serializable::RegisterType(
+          gemfire::GemfireTypeIds::CacheableUndefined,
+          gcnew TypeFactoryMethod(GemStone::GemFire::Cache::CacheableUndefined::CreateDeserializable));
+        Serializable::RegisterType(
+          gemfire::GemfireTypeIds::CacheableVector,
+          gcnew TypeFactoryMethod(GemStone::GemFire::Cache::CacheableVector::CreateDeserializable));
+        Serializable::RegisterType(
+          gemfire::GemfireTypeIds::CacheableObjectArray,
+          gcnew TypeFactoryMethod(
+          GemStone::GemFire::Cache::CacheableObjectArray::CreateDeserializable));
+        Serializable::RegisterType(
+          gemfire::GemfireTypeIds::CacheableArrayList,
+          gcnew TypeFactoryMethod(GemStone::GemFire::Cache::CacheableArrayList::CreateDeserializable));
+        Serializable::RegisterType(
+          gemfire::GemfireTypeIds::CacheableStack,
+          gcnew TypeFactoryMethod(GemStone::GemFire::Cache::CacheableStack::CreateDeserializable));
+        Serializable::RegisterType(
+          GemFireClassIds::CacheableManagedObject - 0x80000000,
+          gcnew TypeFactoryMethod(GemStone::GemFire::Cache::CacheableObject::CreateDeserializable));
+        Serializable::RegisterType(
+          GemFireClassIds::CacheableManagedObjectXml - 0x80000000,
+          gcnew TypeFactoryMethod(GemStone::GemFire::Cache::CacheableObjectXml::CreateDeserializable));
+        // End register other built-in types
+
+        // TODO: what will happen for following if first appDomain unload ??
+        // Testing shows that there are problems; need to discuss -- maybe
+        // maintain per AppDomainID functions in C++ layer.
+
+        // Log the version of the C# layer being used
+        Log::Config(".NET layer assembly version: {0}({1})", System::Reflection::
+          Assembly::GetExecutingAssembly()->GetName()->Version->ToString(), 
+          System::Reflection::Assembly::GetExecutingAssembly()->ImageRuntimeVersion);
+        
+        Log::Config(".NET runtime version: {0} ",System::Environment::Version);
+        
+        Log::Config(".NET layer source repository (revision): {0} ({1})",
+          GEMFIRE_SOURCE_REPOSITORY, GEMFIRE_SOURCE_REVISION);
+      }
+
+      void DistributedSystem::AppDomainInstancePostInitialization()
+      {
+        //to create .net memory pressure handler 
+        Create(gemfire::DistributedSystem::getInstance().ptr());
+      }
+
+      void DistributedSystem::UnregisterBuiltinManagedTypes()
+      {
+         _GF_MG_EXCEPTION_TRY
+
+         gemfire::DistributedSystemImpl::acquireDisconnectLock();
+
+         Serializable::UnregisterNatives();
+         
+         int remainingInstances =
+           gemfire::DistributedSystemImpl::currentInstances();
+
+          if (remainingInstances == 0) { // last instance
+           
+            Serializable::UnregisterType(
+              gemfire::GemfireTypeIds::CacheableDate);
+            Serializable::UnregisterType(
+              gemfire::GemfireTypeIds::CacheableFileName);
+            Serializable::UnregisterType(
+              gemfire::GemfireTypeIds::CacheableHashMap);
+            Serializable::UnregisterType(
+              gemfire::GemfireTypeIds::CacheableHashTable);
+            Serializable::UnregisterType(
+              gemfire::GemfireTypeIds::CacheableIdentityHashMap);
+            Serializable::UnregisterType(
+              gemfire::GemfireTypeIds::CacheableVector);
+            Serializable::UnregisterType(
+              gemfire::GemfireTypeIds::CacheableObjectArray);
+            Serializable::UnregisterType(
+              gemfire::GemfireTypeIds::CacheableArrayList);
+            Serializable::UnregisterType(
+              gemfire::GemfireTypeIds::CacheableStack);
+            Serializable::UnregisterType(
+              GemFireClassIds::CacheableManagedObject - 0x80000000);
+            Serializable::UnregisterType(
+              GemFireClassIds::CacheableManagedObjectXml - 0x80000000);            
+          }
+
+           _GF_MG_EXCEPTION_CATCH_ALL
+
+        finally {
+          gemfire::DistributedSystemImpl::releaseDisconnectLock();
+        }
+      }
+
+      SystemProperties^ DistributedSystem::SystemProperties::get()
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          return GemStone::GemFire::Cache::SystemProperties::Create(
+            gemfire::DistributedSystem::getSystemProperties());
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      String^ DistributedSystem::Name::get()
+      {
+        return ManagedString::Get(NativePtr->getName());
+      }
+
+      bool DistributedSystem::IsConnected::get()
+      {
+        return gemfire::DistributedSystem::isConnected();
+      }
+
+      DistributedSystem^ DistributedSystem::GetInstance()
+      {
+        gemfire::DistributedSystemPtr& nativeptr(
+          gemfire::DistributedSystem::getInstance());
+        return Create(nativeptr.ptr());
+      }
+
+      void DistributedSystem::HandleMemoryPressure(System::Object^ state)
+      {
+        ACE_Time_Value dummy(1);
+        MemoryPressureHandler handler;
+        handler.handle_timeout(dummy, nullptr);
+      }
+
+      DistributedSystem^ DistributedSystem::Create(
+        gemfire::DistributedSystem* nativeptr)
+      {
+        if (m_instance == nullptr) {
+          msclr::lock lockInstance(m_singletonSync);
+          if (m_instance == nullptr) {
+            m_instance = (nativeptr != nullptr
+                ? gcnew DistributedSystem(nativeptr) : nullptr);
+          }
+        }
+        DistributedSystem^ instance = (DistributedSystem^)m_instance;
+        return instance;
+      }
+
+      DistributedSystem::DistributedSystem(gemfire::DistributedSystem* nativeptr)
+        : SBWrap(nativeptr) 
+      {
+        System::Threading::TimerCallback^ timerCallback = gcnew System::
+          Threading::TimerCallback(&DistributedSystem::HandleMemoryPressure);
+        m_memoryPressureHandler = gcnew System::Threading::Timer(
+          timerCallback, "MemoryPressureHandler", 3*60000, 3*60000);
+      }
+
+      DistributedSystem::~DistributedSystem()
+      {
+        m_memoryPressureHandler->Dispose(nullptr);
+      }
+
+      void DistributedSystem::acquireDisconnectLock()
+      {
+        gemfire::DistributedSystemImpl::acquireDisconnectLock();
+      }
+
+      void DistributedSystem::disconnectInstance()
+      {
+        gemfire::DistributedSystemImpl::disconnectInstance();
+      }
+
+      void DistributedSystem::releaseDisconnectLock()
+      {
+        gemfire::DistributedSystemImpl::releaseDisconnectLock();
+      }
+
+      void DistributedSystem::connectInstance()
+      {
+        gemfire::DistributedSystemImpl::connectInstance();
+      }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/DistributedSystemM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/DistributedSystemM.hpp b/geode-client-native/src/clicache/DistributedSystemM.hpp
new file mode 100644
index 0000000..8855c50
--- /dev/null
+++ b/geode-client-native/src/clicache/DistributedSystemM.hpp
@@ -0,0 +1,203 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/DistributedSystem.hpp"
+#include "impl/NativeWrapper.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      ref class Properties;
+      ref class SystemProperties;
+
+      /// <summary>
+      /// DistributedSystem encapsulates this applications "connection" into the
+      /// GemFire Java servers.
+      /// </summary>
+      /// <remarks>
+      /// In order to participate as a client in the GemFire Java servers
+      /// distributed system, each application needs to connect to the
+      /// DistributedSystem.
+      /// </remarks>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class DistributedSystem sealed
+        : public Internal::SBWrap<gemfire::DistributedSystem>
+      {
+      public:
+
+        /// <summary>
+        /// Initializes the Native Client system to be able to connect to the GemFire Java servers.
+        /// </summary>
+        /// <param name="name">the name of the system to connect to</param>
+        /// <exception cref="IllegalArgumentException">if name is null</exception>
+        /// <exception cref="NoSystemException">
+        /// if the connecting target is not running
+        /// </exception>
+        /// <exception cref="AlreadyConnectedException">
+        /// if trying a second connect.
+        /// An application can have one only one connection to a DistributedSystem.
+        /// </exception>
+        /// <exception cref="UnknownException">otherwise</exception>
+        static DistributedSystem^ Connect( String^ name );
+
+        /// <summary>
+        /// Initializes the Native Client system to be able to connect to the
+        /// GemFire Java servers.
+        /// </summary>
+        /// <param name="name">the name of the system to connect to</param>
+        /// <param name="config">the set of properties</param>
+        /// <exception cref="IllegalArgumentException">if name is null</exception>
+        /// <exception cref="NoSystemException">
+        /// if the connecting target is not running
+        /// </exception>
+        /// <exception cref="AlreadyConnectedException">
+        /// if trying a second connect.
+        /// An application can have one only one connection to a DistributedSystem.
+        /// </exception>
+        /// <exception cref="UnknownException">otherwise</exception>
+        static DistributedSystem^ Connect( String^ name, Properties^ config );
+        
+        /// <summary>
+        /// Disconnect from the distributed system.
+        /// </summary>
+        /// <exception cref="IllegalStateException">if not connected</exception>
+        static void Disconnect();
+
+        /// <summary>
+        /// Returns the SystemProperties used to create this instance of a
+        /// <c>DistributedSystem</c>.
+        /// </summary>
+        /// <returns>the SystemProperties</returns>
+        static property GemStone::GemFire::Cache::SystemProperties^ SystemProperties
+        {
+          static GemStone::GemFire::Cache::SystemProperties^ get( );
+        }
+
+        /// <summary>
+        /// Get the name that identifies this DistributedSystem instance.
+        /// </summary>
+        /// <returns>the name of the DistributedSystem instance.</returns>
+        property String^ Name
+        {
+          String^ get( );
+        }
+
+        /// <summary>
+        /// The current connection status of this client to the <c>DistributedSystem</c>.
+        /// </summary>
+        /// <returns>true if connected, false otherwise</returns>
+        static property bool IsConnected
+        {
+          static bool get( );
+        }
+
+        /// <summary>
+        /// Returns a reference to this DistributedSystem instance.
+        /// </summary>
+        /// <returns>the DistributedSystem instance</returns>
+        static DistributedSystem^ GetInstance( );
+
+
+      internal:
+
+        /// <summary>
+        /// Internal factory function to wrap a native object pointer inside
+        /// this managed class with null pointer check.
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        /// <returns>
+        /// The managed wrapper object; null if the native pointer is null.
+        /// </returns>
+        static DistributedSystem^ Create(gemfire::DistributedSystem* nativeptr);
+
+        static void acquireDisconnectLock();
+
+        static void disconnectInstance();
+
+        static void releaseDisconnectLock();
+
+        static void connectInstance();
+
+         /// <summary>
+        /// Stuff that needs to be done for Connect in each AppDomain.
+        /// </summary>
+        static void AppDomainInstanceInitialization(
+          const gemfire::PropertiesPtr& nativepropsptr);
+
+        /// <summary>
+        /// Managed registrations and other stuff to be done for the manage
+        /// layer after the first connect.
+        /// </summary>
+        static void ManagedPostConnect();
+
+        /// <summary>
+        /// Stuff that needs to be done for Connect in each AppDomain but
+        /// only after the first Connect has completed.
+        /// </summary>
+        static void AppDomainInstancePostInitialization();
+
+        /// <summary>
+        /// Unregister the builtin managed types like CacheableObject.
+        /// </summary>
+        static void UnregisterBuiltinManagedTypes();
+
+      private:
+
+        ///// <summary>
+        ///// Stores the task ID of the task that adjusts unmanaged memory
+        ///// pressure in managed GC.
+        ///// </summary>
+        //static long s_memoryPressureTaskID = -1;
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        DistributedSystem(gemfire::DistributedSystem* nativeptr);
+
+        /// <summary>
+        /// Finalizer for the singleton instance of this class.
+        /// </summary>
+        ~DistributedSystem();
+
+       
+
+        /// <summary>
+        /// Periodically adjust memory pressure of unmanaged heap for GC.
+        /// </summary>
+        static void HandleMemoryPressure(System::Object^ state);
+
+        /// <summary>
+        /// Timer task to periodically invoke <c>HandleMemoryPressure</c>.
+        /// </summary>
+        System::Threading::Timer^ m_memoryPressureHandler;
+
+        /// <summary>
+        /// Singleton instance of this class.
+        /// </summary>
+        static volatile DistributedSystem^ m_instance;
+
+        /// <summary>
+        /// Static lock object to protect the singleton instance of this class.
+        /// </summary>
+        static System::Object^ m_singletonSync = gcnew System::Object();
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/EntryEventM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/EntryEventM.cpp b/geode-client-native/src/clicache/EntryEventM.cpp
new file mode 100644
index 0000000..890ae4f
--- /dev/null
+++ b/geode-client-native/src/clicache/EntryEventM.cpp
@@ -0,0 +1,78 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "EntryEventM.hpp"
+#include "RegionM.hpp"
+#include "impl/SafeConvert.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      EntryEvent::EntryEvent(GemStone::GemFire::Cache::Region^ region,
+        GemStone::GemFire::Cache::ICacheableKey^ key, IGFSerializable^ oldValue,
+        IGFSerializable^ newValue, IGFSerializable^ aCallbackArgument,
+        bool remoteOrigin)
+        : UMWrap( )
+      {
+        gemfire::RegionPtr regionptr( GetNativePtr<gemfire::Region>( region ) );
+        gemfire::CacheableKeyPtr keyptr( SafeMKeyConvert( key ) );
+        gemfire::CacheablePtr oldptr( SafeMSerializableConvert( oldValue ) );
+        gemfire::CacheablePtr newptr( SafeMSerializableConvert( newValue ) );
+        gemfire::UserDataPtr callbackptr(SafeMSerializableConvert(
+            aCallbackArgument));
+
+        SetPtr(new gemfire::EntryEvent(regionptr, keyptr,
+          oldptr, newptr, callbackptr, remoteOrigin), true);
+      }
+
+      GemStone::GemFire::Cache::Region^ EntryEvent::Region::get( )
+      {
+        gemfire::RegionPtr& regionptr( NativePtr->getRegion( ) );
+        return GemStone::GemFire::Cache::Region::Create( regionptr.ptr( ) );
+      }
+
+      GemStone::GemFire::Cache::ICacheableKey^ EntryEvent::Key::get( )
+      {
+        gemfire::CacheableKeyPtr& keyptr( NativePtr->getKey( ) );
+        return SafeUMKeyConvert( keyptr.ptr( ) );
+      }
+
+      IGFSerializable^ EntryEvent::OldValue::get( )
+      {
+        gemfire::CacheablePtr& valptr( NativePtr->getOldValue( ) );
+        return SafeUMSerializableConvert( valptr.ptr( ) );
+      }
+
+      IGFSerializable^ EntryEvent::NewValue::get( )
+      {
+        gemfire::CacheablePtr& valptr( NativePtr->getNewValue( ) );
+        return SafeUMSerializableConvert( valptr.ptr( ) );
+      }
+
+      IGFSerializable^ EntryEvent::CallbackArgument::get()
+      {
+        gemfire::UserDataPtr& valptr(NativePtr->getCallbackArgument());
+        return SafeUMSerializableConvert(valptr.ptr());
+      }
+
+      bool EntryEvent::RemoteOrigin::get( )
+      {
+        return NativePtr->remoteOrigin( );
+      }
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/EntryEventM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/EntryEventM.hpp b/geode-client-native/src/clicache/EntryEventM.hpp
new file mode 100644
index 0000000..9455297
--- /dev/null
+++ b/geode-client-native/src/clicache/EntryEventM.hpp
@@ -0,0 +1,112 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/EntryEvent.hpp"
+#include "impl/NativeWrapper.hpp"
+
+#include "ICacheableKey.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      ref class Region;
+      interface class IGFSerializable;
+      //interface class ICacheableKey;
+
+      /// <summary>
+      /// This class encapsulates events that occur for an entry in a region.
+      /// </summary>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class EntryEvent sealed
+        : public Internal::UMWrap<gemfire::EntryEvent>
+      {
+      public:
+
+        /// <summary>
+        /// Constructor to create an <c>EntryEvent</c> for the given region.
+        /// </summary>
+        EntryEvent( Region^ region, ICacheableKey^ key, IGFSerializable^ oldValue,
+          IGFSerializable^ newValue, IGFSerializable^ aCallbackArgument,
+          bool remoteOrigin );
+
+        /// <summary>
+        /// Return the region this event occurred in.
+        /// </summary>
+        property Region^ Region
+        {
+          GemStone::GemFire::Cache::Region^ get( );
+        }
+
+        /// <summary>
+        /// Returns the key this event describes.
+        /// </summary>
+        property ICacheableKey^ Key
+        {
+          ICacheableKey^ get( );
+        }
+
+        /// <summary>
+        /// Returns 'null' if there was no value in the cache. If the prior state
+        ///  of the entry was invalid, or non-existent/destroyed, then the old
+        /// value will be 'null'.
+        /// </summary>
+        property IGFSerializable^ OldValue
+        {
+          IGFSerializable^ get( );
+        }
+
+        /// <summary>
+        /// Return the updated value from this event. If the event is a destroy
+        /// or invalidate operation, then the new value will be NULL.
+        /// </summary>
+        property IGFSerializable^ NewValue
+        {
+          IGFSerializable^ get( );
+        }
+
+        /// <summary>
+        /// Returns the callbackArgument passed to the method that generated
+        /// this event. See the <see cref="Region" /> interface methods
+        /// that take a callbackArgument parameter.
+        /// </summary>
+        property IGFSerializable^ CallbackArgument
+        {
+          IGFSerializable^ get();
+        }
+
+        /// <summary>
+        /// If the event originated in a remote process, returns true.
+        /// </summary>
+        property bool RemoteOrigin
+        {
+          bool get( );
+        }
+
+
+      internal:
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline EntryEvent( const gemfire::EntryEvent* nativeptr )
+          : UMWrap( const_cast<gemfire::EntryEvent*>( nativeptr ), false ) { }
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/ExceptionTypesM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/ExceptionTypesM.cpp b/geode-client-native/src/clicache/ExceptionTypesM.cpp
new file mode 100644
index 0000000..6239918
--- /dev/null
+++ b/geode-client-native/src/clicache/ExceptionTypesM.cpp
@@ -0,0 +1,173 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include <cppcache/SignalHandler.hpp>
+#include "ExceptionTypesM.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+#define _GF_MG_EXCEPTION_ADD(x) { "gemfire::" #x, gcnew CreateException( x::Create ) }
+#define _GF_MG_EXCEPTION_ADD2(x,y) { "gemfire::" #y, gcnew CreateException( x::Create ) }
+
+      Dictionary<String^, CreateException^>^ GemFireException::Init( )
+      {
+        if (Native2ManagedExMap != nullptr)
+        {
+          return Native2ManagedExMap;
+        }
+        array<NameDelegatePair>^ exNamesDelegates = gcnew array<NameDelegatePair> {
+          _GF_MG_EXCEPTION_ADD( AssertionException ),
+          _GF_MG_EXCEPTION_ADD( IllegalArgumentException ),
+          _GF_MG_EXCEPTION_ADD( IllegalStateException ),
+          _GF_MG_EXCEPTION_ADD( CacheExistsException ),
+          _GF_MG_EXCEPTION_ADD( CacheXmlException ),
+          _GF_MG_EXCEPTION_ADD( TimeoutException ),
+          _GF_MG_EXCEPTION_ADD( CacheWriterException ),
+          _GF_MG_EXCEPTION_ADD( CacheListenerException ),
+          _GF_MG_EXCEPTION_ADD( RegionExistsException ),
+          _GF_MG_EXCEPTION_ADD( CacheClosedException ),
+          _GF_MG_EXCEPTION_ADD( LeaseExpiredException ),
+          _GF_MG_EXCEPTION_ADD( CacheLoaderException ),
+          _GF_MG_EXCEPTION_ADD( RegionDestroyedException ),
+          _GF_MG_EXCEPTION_ADD( EntryDestroyedException ),
+          _GF_MG_EXCEPTION_ADD( NoSystemException ),
+          _GF_MG_EXCEPTION_ADD( AlreadyConnectedException ),
+          _GF_MG_EXCEPTION_ADD( FileNotFoundException ),          
+          _GF_MG_EXCEPTION_ADD( InterruptedException ),
+          _GF_MG_EXCEPTION_ADD( UnsupportedOperationException ),
+          _GF_MG_EXCEPTION_ADD( StatisticsDisabledException ),
+          _GF_MG_EXCEPTION_ADD( ConcurrentModificationException ),
+          _GF_MG_EXCEPTION_ADD( UnknownException ),
+          _GF_MG_EXCEPTION_ADD( ClassCastException ),
+          _GF_MG_EXCEPTION_ADD( EntryNotFoundException ),
+          _GF_MG_EXCEPTION_ADD2( GemFireIOException, GemfireIOException ),
+          _GF_MG_EXCEPTION_ADD2( GemFireConfigException, GemfireConfigException ),
+          _GF_MG_EXCEPTION_ADD( NullPointerException ),
+          _GF_MG_EXCEPTION_ADD( EntryExistsException ),
+          _GF_MG_EXCEPTION_ADD( NotConnectedException ),
+          _GF_MG_EXCEPTION_ADD( CacheProxyException ),
+          _GF_MG_EXCEPTION_ADD( OutOfMemoryException ),
+          _GF_MG_EXCEPTION_ADD( NotOwnerException ),
+          _GF_MG_EXCEPTION_ADD( WrongRegionScopeException ),
+          _GF_MG_EXCEPTION_ADD( BufferSizeExceededException ),
+          _GF_MG_EXCEPTION_ADD( RegionCreationFailedException ),
+          _GF_MG_EXCEPTION_ADD( FatalInternalException ),
+          _GF_MG_EXCEPTION_ADD( DiskFailureException ),
+          _GF_MG_EXCEPTION_ADD( DiskCorruptException ),
+          _GF_MG_EXCEPTION_ADD( InitFailedException ),
+          _GF_MG_EXCEPTION_ADD( ShutdownFailedException ),
+          _GF_MG_EXCEPTION_ADD( CacheServerException ),
+          _GF_MG_EXCEPTION_ADD( OutOfRangeException ),
+          _GF_MG_EXCEPTION_ADD( QueryException ),
+          _GF_MG_EXCEPTION_ADD( MessageException ),
+          _GF_MG_EXCEPTION_ADD( NotAuthorizedException ),
+          _GF_MG_EXCEPTION_ADD( AuthenticationFailedException ),
+          _GF_MG_EXCEPTION_ADD( AuthenticationRequiredException ),
+          _GF_MG_EXCEPTION_ADD( DuplicateDurableClientException ),
+          _GF_MG_EXCEPTION_ADD( NoAvailableLocatorsException ),
+          _GF_MG_EXCEPTION_ADD( FunctionExecutionException ),
+          _GF_MG_EXCEPTION_ADD( CqInvalidException ),
+          _GF_MG_EXCEPTION_ADD( CqExistsException ),
+          _GF_MG_EXCEPTION_ADD( CqQueryException ),
+          _GF_MG_EXCEPTION_ADD( CqClosedException ),
+          _GF_MG_EXCEPTION_ADD( CqException ),
+          _GF_MG_EXCEPTION_ADD( AllConnectionsInUseException ),
+          _GF_MG_EXCEPTION_ADD( InvalidDeltaException ),
+          _GF_MG_EXCEPTION_ADD( KeyNotFoundException ),
+          _GF_MG_EXCEPTION_ADD( CommitConflictException ),
+		  _GF_MG_EXCEPTION_ADD( TransactionDataNodeHasDepartedException ),
+		  _GF_MG_EXCEPTION_ADD( TransactionDataRebalancedException )
+
+          #ifdef CSTX_COMMENTED
+          ,_GF_MG_EXCEPTION_ADD( TransactionWriterException )
+          #endif
+        };
+
+        Native2ManagedExMap = gcnew Dictionary<String^, CreateException^>( );
+        for (int32_t index = 0; index < exNamesDelegates->Length; index++)
+        {
+          Native2ManagedExMap[ exNamesDelegates[ index ].m_name ] =
+            exNamesDelegates[ index ].m_delegate;
+        }
+        return Native2ManagedExMap;
+      }
+
+      System::Exception^ GemFireException::Get(const gemfire::Exception& nativeEx)
+      {
+        Exception^ innerException = nullptr;
+        const gemfire::ExceptionPtr& cause = nativeEx.getCause();
+        if (cause != NULLPTR) {
+          innerException = GemFireException::Get(*cause);
+        }
+        String^ exName = gcnew String( nativeEx.getName( ) );
+        CreateException^ exDelegate;
+        if (Native2ManagedExMap->TryGetValue(exName, exDelegate)) {
+          return exDelegate(nativeEx, innerException);
+        }
+        String^ exMsg = ManagedString::Get( nativeEx.getMessage( ) );
+        if ( exMsg->StartsWith( GemFireException::MgSysExPrefix ) ) {
+          // Get the exception type
+          String^ mgExStr = exMsg->Substring(
+            GemFireException::MgSysExPrefix->Length );
+          int32_t colonIndex = mgExStr->IndexOf( ':' );
+          if ( colonIndex > 0 ) {
+            String^ mgExName = mgExStr->Substring( 0, colonIndex )->Trim( );
+            // Try to load this class by reflection
+            Type^ mgExType = Type::GetType( mgExName, false, true );
+            if ( mgExType != nullptr ) {
+              System::Reflection::ConstructorInfo^ cInfo = mgExType->
+                GetConstructor(gcnew array<Type^>{ String::typeid, Exception::typeid });
+              if ( cInfo != nullptr ) {
+                String^ mgMsg = mgExStr->Substring( colonIndex + 1 );
+                Exception^ mgEx = dynamic_cast<Exception^>(cInfo->Invoke(
+                      gcnew array<Object^>{ mgMsg, innerException }));
+                if ( mgEx != nullptr ) {
+                  return mgEx;
+                }
+              }
+            }
+          }
+        }
+        if (innerException == nullptr) {
+          return gcnew GemFireException(exName + ": " + exMsg,
+              gcnew GemFireException(GetStackTrace(nativeEx)));
+        }
+        else {
+          return gcnew GemFireException(exName + ": " + exMsg, innerException);
+        }
+      }
+
+      String^ GemFireException::GenerateMiniDump()
+      {
+        char dumpFile[_MAX_PATH];
+        gemfire::SignalHandler::dumpStack(dumpFile, _MAX_PATH - 1);
+        return ManagedString::Get(dumpFile);
+      }
+
+      String^ GemFireException::GenerateMiniDump(int32_t exceptionCode,
+        IntPtr exceptionPointers)
+      {
+        char dumpFile[_MAX_PATH];
+        gemfire::SignalHandler::dumpStack((unsigned int)exceptionCode,
+          (EXCEPTION_POINTERS*)(void*)exceptionPointers, dumpFile,
+          _MAX_PATH - 1);
+        return ManagedString::Get(dumpFile);
+      }
+
+    }
+  }
+}


[46/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/build64.sh
----------------------------------------------------------------------
diff --git a/geode-client-native/build64.sh b/geode-client-native/build64.sh
new file mode 100755
index 0000000..836476c
--- /dev/null
+++ b/geode-client-native/build64.sh
@@ -0,0 +1,191 @@
+#!/bin/bash
+# Set BASEDIR to be the toplevel checkout directory.
+# We do this so that BASEDIR can be used elsewhere if needed
+#set -xv
+BASEDIR=`/usr/bin/dirname $0`
+OLDPWD=$PWD
+cd $BASEDIR
+#export BASEDIR=`/usr/bin/dirname $PWD`
+export BASEDIR=$PWD
+cd $OLDPWD
+
+ulimit -c 500000
+
+unset GEMFIRE
+export GEMFIRE
+
+GCMDIR="${GCMDIR:-/export/gcm}"
+THIRDPARTY_BASE="${THIRDPARTY_BASE:-${GCMDIR}/where/cplusplus/thirdparty}"
+THIRDPARTY_JAVA_BASE="${GCMDIR}/where/jdk/1.8.0_66"
+CYGWIN=""
+
+  echo "********************************"
+  echo $THIRDPARTY
+  echo  uname
+  echo "********************************"
+if [ -f $BASEDIR/myBuild.sh ]
+then 
+  . $BASEDIR/myBuild.sh
+fi
+
+if [ -x $BASEDIR/buildfiles/nprocs ]; then
+  nprocs=`$BASEDIR/buildfiles/nprocs`
+  # FIXME: http://stackoverflow.com/questions/20702626/javac1-8-class-not-found
+  ANT_ARGS="${ANT_ARGS} -Dbuild.compiler=javac1.7"
+fi
+
+if [ `uname` = "SunOS" ]; then
+  _PLAT="solaris"
+  PING="/usr/sbin/ping -s ldap.pune.gemstone.com 56 1"
+  if [ `uname -p` = "sparc" ]; then
+    _ARCH="sparc"
+    export THIRDPARTY=${CPP_THIRDPARTY:-${THIRDPARTY_BASE}/solaris}
+    logfile=buildSol.log
+  else
+    _ARCH="x86"
+    export THIRDPARTY=${CPP_THIRDPARTY:-${THIRDPARTY_BASE}/solx86}
+    logfile=buildsolx86.log
+  fi
+
+  echo "Building for ${_PLAT} on ${_ARCH}"
+
+  
+  export CC_HOME=${ALT_CC_HOME:-/export/gcm/where/cplusplus/compiler/solaris/${_ARCH}/solarisstudio12.4}
+  if [ -x "${CC_HOME}/bin/CC" ]; then
+    export SunCompilerDir=${CC_HOME}/bin
+  else
+    echo "Sun C++ compiler not found at ${CC_HOME}";
+    exit 1
+  fi
+
+  export PATH=$SunCompilerDir:$PATH
+
+#  RequiredVer2="CC: Sun C++ 5.10 SunOS_i386 128229-09 2010/06/24"
+  SunCompilerVer=`$SunCompilerDir/CC -V 2>&1 `
+  echo "Using Sun C++ from $SunCompilerDir "
+  echo "    version   $SunCompilerVer "
+
+elif [ `uname` = "Linux" ]; then
+
+  PING=`ping -c 1 ldap.pune.gemstone.com`
+
+  export THIRDPARTY=${CPP_THIRDPARTY:-${THIRDPARTY_BASE}/linux}
+
+  export GCCBIN=/usr/bin
+  export PATH=${GCCBIN}:$PATH
+  export GccCCompiler=${GCCBIN}/gcc
+  export GccCplusplusCompiler=${GCCBIN}/g++
+
+  GccCompilerVer=`$GccCCompiler --version | head -1  2>&1 `
+
+  echo "Using gcc version: $GccCompilerVer"
+  logfile=buildLinux.log
+  export PATH=`dirname $GccCplusplusCompiler`:$PATH
+
+elif [ `uname` = "Darwin" ]; then
+
+  PING=`ping -c 1 ldap.pune.gemstone.com`
+
+  export THIRDPARTY_BASE=/Library/thirdparty
+  export THIRDPARTY=$THIRDPARTY_BASE
+
+  export GCCBIN=/usr/bin
+  export PATH=${GCCBIN}:$PATH
+  export GccCCompiler=${GCCBIN}/gcc
+  export GccCplusplusCompiler=${GCCBIN}/g++
+
+  GccCompilerVer=`$GccCCompiler --version | head -1  2>&1 `
+
+  echo "Using gcc version: $GccCompilerVer"
+  logfile=buildLinux.log
+  export PATH=`dirname $GccCplusplusCompiler`:$PATH
+
+else
+  echo "Defaulting to Windows build"
+  PING=`$SYSTEMROOT/system32/ping -n 1 ldap.pune.gemstone.com`
+  THIRDPARTY_BASE=${THIRDPARTY_BASE:-${GCMDIR}/where/cplusplus/thirdparty}
+  export THIRDPARTY=${CPP_THIRDPARTY:-${THIRDPARTY_BASE}/windows}
+  echo "********************************"
+  echo $THIRDPARTY
+  echo $THIRDPARTY_BASE
+  echo "********************************"
+
+  export DXROOT=${THIRDPARTY}/sandcastle_2.7.1.0
+  export SHFBROOT=${THIRDPARTY}/SandcastleBuilder_1.9.5.0
+  
+  logfile=buildWin.log
+  NO_BUILD_LOG=1
+  # detect compiler version
+  CYGWIN=true
+fi
+
+export ANT_HOME=${ALT_ANT_HOME:-${THIRDPARTY_BASE}/common/ant/apache-ant-1.8.4}
+#export ANT_HOME=${ALT_ANT_HOME:-/solaris1/NativeClientThirdParty/common/ant/apache-ant-1.8.4}
+if [ -z "${CYGWIN}" ]; then
+  export PATH="${ANT_HOME}/bin:${JAVA_HOME}/bin:${PATH}"
+else
+  export PATH="`cygpath "${ANT_HOME}/bin"`:`cygpath "${JAVA_HOME}/bin"`:${PATH}"
+fi
+unset CLASSPATH
+
+export ANT_OPTS=-Xmx200M
+
+function logant {
+  if [[ `uname` == "SunOS" || `uname` == "Linux" || `uname` = "Darwin" ]]; then
+    rm -f .xbuildfailure
+    ( $ANT_HOME/bin/ant --noconfig -DcPointerModel=64bit -Dplatforms=x64 -Dthirdparty.dir=${THIRDPARTY} -Dthirdparty_base.dir=${THIRDPARTY_BASE} -Dgcm.dir=${GCMDIR} ${ANT_ARGS:-""} "$@" || echo "$?" > .xbuildfailure ) 2>&1 | tee $logfile
+    if [ -r .xbuildfailure ]; then
+      read stat <.xbuildfailure
+      rm -f .xbuildfailure
+      exit $stat
+    fi
+  else
+    # cygwin tee causes hang on windows
+    $ANT_HOME/bin/ant --noconfig -DcPointerModel=64bit -Dplatforms=x64 -DVCVER=10 -Dthirdparty.dir=${THIRDPARTY} -Dthirdparty_base.dir=${THIRDPARTY_BASE} -Dgcm.dir=${GCMDIR} ${ANT_ARGS} "$@"
+  fi
+}
+
+echo "JAVA_HOME = $JAVA_HOME"
+echo "ANT_HOME = $ANT_HOME"
+date "+%a %D %H.%M.%S"
+
+# setup the LDAP server for Pune/Beaverton networks;
+
+if [ -z "${LDAP_SERVER}" ]; then
+  # Solaris ping returns extra character so trim this off for that platform only
+  if [ `uname` = "SunOS" ]; then
+    PINGTEMP=`echo $PING | sed -n 's/^.* time[^ ]\([0-9\.]*\).*$/\1/p'`
+    echo PINGTEMP | grep \. >/dev/null 
+    if [ $? -eq 0 ]; then  
+      PING=`echo $PINGTEMP | sed s'/.$//'`
+    else
+      PING=$PINGTEMP 
+    fi
+    if expr `echo $PING '<' 50` >/dev/null 2>/dev/null; then
+      LDAP_SERVER="ldap.pune.gemstone.com"
+    else
+      LDAP_SERVER="ldap.gemstone.com"
+    fi
+  else
+    if expr `echo $PING | sed -n 's/^.* time[^ ]\([0-9\.]*\).*$/\1/p'` '<' 50 >/dev/null 2>/dev/null; then
+      LDAP_SERVER="ldap.pune.gemstone.com"
+    else
+      LDAP_SERVER="ldap.gemstone.com"
+    fi
+  fi
+fi
+
+export LDAP_SERVER
+echo "Using LDAP server: $LDAP_SERVER"
+
+# ant likes to be in the directory that build.xml is in
+{ cd "${BASEDIR}" &&
+if [[ "x$NO_BUILD_LOG" = "x" ]]; then
+  logant "$@"
+else
+  echo "running $ANT_HOME/bin/ant "
+  $ANT_HOME/bin/ant --noconfig -DcPointerModel=64bit -Dplatforms=x64 -DVCVER=10 -Dthirdparty.dir=${THIRDPARTY} -v -Dthirdparty_base.dir=${THIRDPARTY_BASE} -Dgcm.dir=${GCMDIR} ${ANT_ARGS} "$@"
+fi; }
+result=$?
+date "+%a %D %H.%M.%S"
+exit $result

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/build64_vc8.sh
----------------------------------------------------------------------
diff --git a/geode-client-native/build64_vc8.sh b/geode-client-native/build64_vc8.sh
new file mode 100755
index 0000000..eea5b60
--- /dev/null
+++ b/geode-client-native/build64_vc8.sh
@@ -0,0 +1,90 @@
+#!/bin/bash
+# Set BASEDIR to be the toplevel checkout directory.
+# We do this so that BASEDIR can be used elsewhere if needed
+#set -xv
+BASEDIR=`/usr/bin/dirname $0`
+OLDPWD=$PWD
+cd $BASEDIR
+#export BASEDIR=`/usr/bin/dirname $PWD`
+export BASEDIR=$PWD
+cd $OLDPWD
+
+ulimit -c 500000
+
+unset GEMFIRE
+export GEMFIRE
+
+GCMDIR="${GCMDIR:-/export/gcm}"
+THIRDPARTY_BASE="${THIRDPARTY_BASE:-${GCMDIR}/where/cplusplus/thirdparty}"
+CYGWIN=""
+
+if [ -f $BASEDIR/myBuild.sh ]
+then 
+  . $BASEDIR/myBuild.sh
+fi
+
+PING="$SYSTEMROOT/system32/ping -n 1 ldap.pune.gemstone.com"
+
+if [ `uname` = "SunOS" ]; then
+  echo "This script should be executed only for windows platform.";
+  exit 1
+elif [ `uname` = "Linux" ]; then
+  echo "This script should be executed only for windows platform.";
+  exit 1
+else
+  echo "Defaulting to Windows build"
+  THIRDPARTY_BASE=${THIRDPARTY_BASE:-//n080-fil01/cplusplus2/users/gcmlinkdir/thirdparty}
+  export THIRDPARTY=${CPP_THIRDPARTY:-${THIRDPARTY_BASE}/windows}
+  
+  . ./buildfiles/vcvars64_8.sh
+ 
+  logfile=buildWin.log
+  NO_BUILD_LOG=1
+  # detect compiler version
+  CYGWIN=true
+fi
+
+export JAVA_HOME=${ALT_JAVA_HOME:-${THIRDPARTY_BASE}/common/jdk1.7.0_72/x86_64.Windows_NT}
+export ANT_HOME=${ALT_ANT_HOME:-${THIRDPARTY_BASE}/common/ant/apache-ant-1.8.4}
+if [ -z "${CYGWIN}" ]; then
+  export PATH="${ANT_HOME}/bin:${JAVA_HOME}/bin:${PATH}"
+else
+  export PATH="`cygpath "${ANT_HOME}/bin"`:`cygpath "${JAVA_HOME}/bin"`:${PATH}"
+fi
+unset CLASSPATH
+
+export ANT_OPTS=-Xmx200M
+
+function logant {
+  # cygwin tee causes hang on windows
+  $ANT_HOME/bin/ant --noconfig -DcPointerModel=64bit -Dplatforms=x64 -DVCVER=8 -DBUG481=1 -Dthirdparty.dir=${THIRDPARTY} -Dthirdparty_base.dir=${THIRDPARTY_BASE} -Dgcm.dir=${GCMDIR} ${ANT_ARGS:-""} "$@"
+ }
+
+echo "JAVA_HOME = $JAVA_HOME"
+echo "ANT_HOME = $ANT_HOME"
+date "+%a %D %H.%M.%S"
+
+# setup the LDAP server for Pune/Beaverton networks;
+
+if [ -z "${LDAP_SERVER}" ]; then
+  if expr `$PING | sed -n 's/^.* time[^ ]\([0-9\.]*\).*$/\1/p'` '<' 50 >/dev/null 2>/dev/null; then
+    LDAP_SERVER="ldap.pune.gemstone.com"
+  else
+    LDAP_SERVER="ldap.gemstone.com"
+  fi
+fi
+
+export LDAP_SERVER
+echo "Using LDAP server: $LDAP_SERVER"
+
+# ant likes to be in the directory that build.xml is in
+{ cd "${BASEDIR}" &&
+if [[ "x$NO_BUILD_LOG" = "x" ]]; then
+  logant "$@"
+else
+  echo "running $ANT_HOME/bin/ant "
+  $ANT_HOME/bin/ant --noconfig -DcPointerModel=64bit -Dplatforms=x64 -DVCVER=8 -DBUG481=1 -Dthirdparty.dir=${THIRDPARTY} -Dthirdparty_base.dir=${THIRDPARTY_BASE} -Dgcm.dir=${GCMDIR} "$@"
+fi; }
+result=$?
+date "+%a %D %H.%M.%S"
+exit $result

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/build_vc8.sh
----------------------------------------------------------------------
diff --git a/geode-client-native/build_vc8.sh b/geode-client-native/build_vc8.sh
new file mode 100755
index 0000000..c3bedd6
--- /dev/null
+++ b/geode-client-native/build_vc8.sh
@@ -0,0 +1,99 @@
+#!/bin/bash
+# Set BASEDIR to be the toplevel checkout directory.
+# We do this so that BASEDIR can be used elsewhere if needed
+#set -xv
+BASEDIR=`/usr/bin/dirname $0`
+OLDPWD=$PWD
+cd $BASEDIR
+#export BASEDIR=`/usr/bin/dirname $PWD`
+export BASEDIR=$PWD
+cd $OLDPWD
+
+ulimit -c 500000
+
+unset GEMFIRE
+export GEMFIRE
+
+GCMDIR="${GCMDIR:-/export/gcm}"
+THIRDPARTY_BASE=${THIRDPARTY_BASE:-//n080-fil01/cplusplus2/users/gcmlinkdir/thirdparty}
+CYGWIN=""
+
+if [ -f $BASEDIR/myBuild.sh ]
+then 
+  . $BASEDIR/myBuild.sh
+fi
+
+PING="$SYSTEMROOT/system32/ping -n 1 ldap.pune.gemstone.com"
+
+if [ `uname` = "SunOS" ]; then
+  echo "This script should be executed only for windows platform.";
+  exit 1
+elif [ `uname` = "Linux" ]; then
+  echo "This script should be executed only for windows platform.";
+  exit 1
+else
+  echo "Defaulting to Windows build"
+  # suppress DOS path warnings
+  if [ -z "${CYGWIN}" ]; then
+    export CYGWIN="nodosfilewarning"
+  else
+    export CYGWIN="${CYGWIN} nodosfilewarning"
+  fi
+  THIRDPARTY_BASE=${THIRDPARTY_BASE:-//n080-fil01/cplusplus2/users/gcmlinkdir/thirdparty}
+  export THIRDPARTY=${CPP_THIRDPARTY:-${THIRDPARTY_BASE}/windows}
+  
+  . ./buildfiles/vcvars32_8.sh
+  
+  
+  logfile=buildWin.log
+  NO_BUILD_LOG=1
+  # detect compiler version
+  CYGWIN=true
+fi
+
+export JAVA_HOME=${ALT_JAVA_HOME:-${THIRDPARTY_BASE}/common/jdk1.7.0_72/x86.Windows_NT}
+export ANT_HOME=${ALT_ANT_HOME:-${THIRDPARTY_BASE}/common/ant/apache-ant-1.8.4}
+if [ -z "${CYGWIN}" ]; then
+  export PATH="${ANT_HOME}/bin:${JAVA_HOME}/bin:${PATH}"
+else
+  export PATH="`cygpath "${ANT_HOME}/bin"`:`cygpath "${JAVA_HOME}/bin"`:${PATH}"
+fi
+unset CLASSPATH
+
+export ANT_OPTS=-Xmx200M
+
+function logant {
+  # cygwin tee causes hang on windows
+  $ANT_HOME/bin/ant --noconfig -Dplatforms="Win32" -DVCVER=8 -DBUG481=1 -Dthirdparty.dir=${THIRDPARTY} -Dthirdparty_base.dir=${THIRDPARTY_BASE} -Dgcm.dir=${GCMDIR} ${ANT_ARGS:-""} "$@"
+  
+}
+
+echo "JAVA_HOME = $JAVA_HOME"
+echo "ANT_HOME = $ANT_HOME"
+date "+%a %D %H.%M.%S"
+
+# setup the LDAP server for Pune/Beaverton networks;
+
+if [ -z "${LDAP_SERVER}" ]; then
+  if expr `$PING | sed -n 's/^.* time[^ ]\([0-9\.]*\).*$/\1/p'` '<' 50 >/dev/null 2>/dev/null; then
+    LDAP_SERVER="ldap.pune.gemstone.com"
+  else
+    LDAP_SERVER="ldap.gemstone.com"
+  fi
+fi
+
+export LDAP_SERVER
+echo "Using LDAP server: $LDAP_SERVER"
+
+# ant likes to be in the directory that build.xml is in
+{ cd "${BASEDIR}" &&
+if [[ "x$NO_BUILD_LOG" = "x" ]]; then
+  logant "$@"
+else
+  echo "running $ANT_HOME/bin/ant "
+  $ANT_HOME/bin/ant --noconfig -Dplatforms="Win32" -DVCVER=8 -DBUG481=1 -Dthirdparty.dir=${THIRDPARTY} -Dthirdparty_base.dir=${THIRDPARTY_BASE} -Dgcm.dir=${GCMDIR} "$@" 
+   
+fi; }
+result=$?
+date "+%a %D %H.%M.%S"
+exit $result

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/buildfiles/build_from_eclipse.bat
----------------------------------------------------------------------
diff --git a/geode-client-native/buildfiles/build_from_eclipse.bat b/geode-client-native/buildfiles/build_from_eclipse.bat
new file mode 100644
index 0000000..6a8f59b
--- /dev/null
+++ b/geode-client-native/buildfiles/build_from_eclipse.bat
@@ -0,0 +1,10 @@
+@setlocal enableextensions
+@set scriptdir=%~dp0
+@set bd=%scriptdir:\buildfiles\=%
+
+rem set THIRDPARTY in your eclipse project environment.
+rem set THIRDPARTY=C:/gemstone/altcplusplus
+
+c:/cygwin/bin/bash --login -c "cd '%bd%'; ./build.sh -emacs %* | ./buildfiles/winlog.sh"
+
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/buildfiles/composit-ar.sh
----------------------------------------------------------------------
diff --git a/geode-client-native/buildfiles/composit-ar.sh b/geode-client-native/buildfiles/composit-ar.sh
new file mode 100755
index 0000000..99dc38e
--- /dev/null
+++ b/geode-client-native/buildfiles/composit-ar.sh
@@ -0,0 +1,81 @@
+#!/bin/bash
+
+# This script processes a set of archives to produce one inclusive archive.
+
+# options to 'ar' exe.
+AR_ARGS=$1
+shift
+
+# name of ar (.a) to build
+AR_TARGET=$1
+shift
+
+OBJECTS=./.composit-aros.list
+ARDIRS=./.composit-ardirs.list
+
+TMPDIR=./.tmp
+
+function isDotA
+{
+  bname=`basename $1`
+  aname=`basename $1 .a`
+  if [ "$bname" == "$aname" ]
+  then
+    false
+  else
+    true
+  fi
+}
+
+function isDotO
+{
+  bname=`basename $1`
+  oname=`basename $1 .o`
+  if [ "$bname" == "$oname" ]
+  then
+    false
+  else
+    true
+  fi
+}
+
+function handleArchive
+{
+  tmp="${TMPDIR}_`basename $1`"
+  mkdir -p $tmp
+  echo $tmp >>$ARDIRS
+  cd $tmp
+  ar x $1
+  cd -
+  find $tmp -name "*.o" -print >>$OBJECTS
+}
+
+function handleObject
+{
+  echo "$1" >>$OBJECTS
+}
+
+echo "" >$OBJECTS
+
+while [ ! -z ${1:-} ]
+do
+  file=$1
+  shift
+  isDotA $file && handleArchive $file
+  isDotO $file && handleObject $file
+done
+
+if [ -f "$AR_TARGET" ]; then
+  rm $AR_TARGET
+fi
+
+ar $AR_ARGS $AR_TARGET `cat $OBJECTS`
+
+# cleanup
+rm $OBJECTS
+if [ -f "$ARDIRS" ]; then
+  for i in `cat $ARDIRS`; do
+    rm -r $i
+  done
+  rm $ARDIRS
+fi

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/buildfiles/dependencies.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/buildfiles/dependencies.xml b/geode-client-native/buildfiles/dependencies.xml
new file mode 100755
index 0000000..51002e2
--- /dev/null
+++ b/geode-client-native/buildfiles/dependencies.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project name="dependencies">
+  <property name="svnant.dir" value="${thirdparty_base.dir}/common/ant/svnant/svnant-1.4.dev"/>
+  <property name="ant-contrib.jar" value="${thirdparty_base.dir}/common/ant/ant-contrib/ant-contrib-1.0b3/ant-contrib-1.0b3.jar"/>
+  <property name="ant-dotnet.jar" value="${thirdparty_base.dir}/common/ant/ant-dotnet/apache-ant-dotnet-1.1/ant-dotnet-1.1.jar"/>
+  <property name="sonar-ant-task.jar" value="${thirdparty_base.dir}/common/ant/sonar-ant-task/2.0/sonar-ant-task-2.0.jar"/>
+</project>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/buildfiles/nprocs
----------------------------------------------------------------------
diff --git a/geode-client-native/buildfiles/nprocs b/geode-client-native/buildfiles/nprocs
new file mode 100755
index 0000000..78def54
--- /dev/null
+++ b/geode-client-native/buildfiles/nprocs
@@ -0,0 +1,21 @@
+#/bin/bash
+
+set -e
+
+system=`uname -s`
+
+case ${system} in
+  Linux)
+    nprocs=`grep processor /proc/cpuinfo | wc -l | tr -d ' '`
+    ;;
+  SunOS)
+    nprocs=`/usr/sbin/psrinfo 2>/dev/null | wc -l | tr -d ' '`
+    ;;
+  *)
+    echo 'not implemented for ${system}'
+    exit 1
+    ;;
+esac
+
+echo $nprocs
+exit 0

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/buildfiles/osplatform.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/buildfiles/osplatform.xml b/geode-client-native/buildfiles/osplatform.xml
new file mode 100755
index 0000000..cc63ddf
--- /dev/null
+++ b/geode-client-native/buildfiles/osplatform.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project name="osplatform">
+  <!-- determine machine and os, and if this is a 32 bit only or 64 bit only platform -->
+  <condition property="gf.os" value="sol">
+    <os name="SunOs"/>
+  </condition>
+  <condition property="gf.os" value="linux">
+    <os name="Linux"/>
+  </condition>
+  <conditional unless="only64">
+    <condition property="only32" value="true">
+      <os name="Linux"/>
+    </condition>
+  </conditional>
+  <condition property="gf.os" value="mac">
+    <os family="mac"/>
+  </condition>
+  <condition property="only32" value="true">
+    <os family="mac"/>
+  </condition>
+  <condition property="gf.os" value="win">
+    <os family="windows"/>
+  </condition>
+  <conditional unless="only64">
+    <condition property="only32" value="true">
+      <os family="windows"/>
+    </condition>
+  </conditional>
+  <condition property="gf.os" value="aix">
+    <os name="AIX"/>
+  </condition>
+  <conditional unless="only64">
+    <condition property="only32" value="true">
+      <os name="AIX"/>
+    </condition>
+  </conditional>
+
+  <condition property="isSolaris">
+    <os name="SunOs"/>
+  </condition>
+  <condition property="isMac">
+    <os family="mac"/>
+  </condition>
+  <condition property="isAIX">
+    <os name="AIX"/>
+  </condition>
+  <condition property="isLinux">
+    <os name="Linux"/>
+  </condition>
+  <condition property="isWindows">
+    <os family="windows"/>
+  </condition>
+
+  <conditional if="only32">
+    <property name="singleModel" value="true"/>
+    <property name="do32bit" value="true"/>
+  </conditional>
+
+  <conditional if="only64">
+    <property name="singleModel" value="true"/>
+    <property name="do64bit" value="true"/>
+  </conditional>
+
+  <conditional unless="singleModel">
+    <property name="do32bit" value="true"/>
+    <property name="do64bit" value="true"/>
+  </conditional>
+</project>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/buildfiles/prettycode.sh
----------------------------------------------------------------------
diff --git a/geode-client-native/buildfiles/prettycode.sh b/geode-client-native/buildfiles/prettycode.sh
new file mode 100755
index 0000000..d983d8e
--- /dev/null
+++ b/geode-client-native/buildfiles/prettycode.sh
@@ -0,0 +1,192 @@
+#!/bin/bash
+
+#astyle \
+
+/c/gemstone/altcplusplus/astyle/astyle.exe \
+  --mode=c \
+  --convert-tabs \
+  -s2 \
+  --break-blocks \
+  --pad=all \
+  --indent-preprocessor \
+  --brackets=linux \
+  $*
+
+#  
+#  
+#  Artistic Style 1.13.8   (http://www.bigfoot.com/~davidsont/astyle)
+#                         (created by Tal Davidson, davidsont@bigfoot.com)
+#  
+#  Usage  :  astyle [options] < Original > Beautified
+#            astyle [options] Foo.cpp Bar.cpp  [...]
+#  
+#  When indenting a specific file, the resulting indented file RETAINS the
+#  original file-name. The original pre-indented file is renamed, with a
+#  suffix of ".orig" added to the original filename.
+#  
+#  By default, astyle is set up to indent C/C++  files, with 4 spaces per
+#  indent, a maximal indentation of 40 spaces inside continuous statements,
+#  and NO formatting.
+#  
+#  Option's Format:
+#  ----------------
+#      Long options (starting with '--') must be written one at a time.
+#      Short options (starting with '-') may be appended together.
+#      Thus, -bps4 is the same as -b -p -s4.
+#  
+#  Predefined Styling options:
+#  --------------------
+#      --style=ansi
+#      ANSI style formatting/indenting.
+#  
+#      --style=kr
+#      Kernighan&Ritchie style formatting/indenting.
+#  
+#      --style=gnu
+#      GNU style formatting/indenting.
+#  
+#      --style=java
+#      Java mode, with standard java style formatting/indenting.
+#  
+#      --style=linux
+#      Linux mode (i.e. 8 spaces per indent, break definition-block
+#      brackets but attach command-block brackets.
+#  
+#  Indentation options:
+#  --------------------
+#      -c   OR   --mode=c
+#      Indent a C or C++ source file (default)
+#  
+#      -j   OR   --mode=java
+#      Indent a Java(TM) source file
+#  
+#      -s   OR   -s#   OR   --indent=spaces=#
+#      Indent using # spaces per indent. Not specifying #
+#      will result in a default of 4 spacec per indent.
+#  
+#      -t   OR   -t#   OR   --indent=tab=#
+#      Indent using tab characters, assuming that each
+#      tab is # spaces long. Not specifying # will result
+#      in a default assumption of 4 spaces per tab.
+#  
+#      -T#   OR   --force-indent=tab=#    Indent using tab characters, assuming that each
+#      tab is # spaces long. Force tabs to be used in areas
+#      Astyle would prefer to use spaces.
+#  
+#      -C   OR   --indent-classes
+#      Indent 'class' blocks, so that the inner 'public:',
+#      'protected:' and 'private: headers are indented in
+#      relation to the class block.
+#  
+#      -S   OR   --indent-switches
+#      Indent 'switch' blocks, so that the inner 'case XXX:'
+#      headers are indented in relation to the switch block.
+#  
+#      -K   OR   --indent-cases
+#      Indent 'case XXX:' lines, so that they are flush with
+#      their bodies..
+#  
+#      -N   OR   --indent-namespaces
+#      Indent the contents of namespace blocks.
+#  
+#      -B   OR   --indent-brackets
+#      Add extra indentation to '{' and '}' block brackets.
+#  
+#      -G   OR   --indent-blocks
+#      Add extra indentation entire blocks (including brackets).
+#  
+#      -L   OR   --indent-labels
+#      Indent labels so that they appear one indent less than
+#      the current indentation level, rather than being
+#      flushed completely to the left (which is the default).
+#  
+#      -m#  OR  --min-conditional-indent=#
+#      Indent a minimal # spaces in a continuous conditional
+#      belonging to a conditional header.
+#  
+#      -M#  OR  --max-instatement-indent=#
+#      Indent a maximal # spaces in a continuous statement,
+#      relatively to the previous line.
+#  
+#      -E  OR  --fill-empty-lines
+#      Fill empty lines with the white space of their
+#      previous lines.
+#  
+#      --indent-preprocessor
+#      Indent multi-line #define statements
+#  
+#  Formatting options:
+#  -------------------
+#      -b  OR  --brackets=break
+#      Break brackets from pre-block code (i.e. ANSI C/C++ style).
+#  
+#      -a  OR  --brackets=attach
+#      Attach brackets to pre-block code (i.e. Java/K&R style).
+#  
+#      -l  OR  --brackets=linux
+#      Break definition-block brackets and attach command-block
+#      brackets.
+#  
+#      --brackets=break-closing-headers
+#      Break brackets before closing headers (e.g. 'else', 'catch', ..).
+#      Should be appended to --brackets=attach or --brackets=linux.
+#  
+#      -o   OR  --one-line=keep-statements
+#      Don't break lines containing multiple statements into
+#      multiple single-statement lines.
+#  
+#      -O   OR  --one-line=keep-blocks
+#      Don't break blocks residing completely on one line
+#  
+#      -p   OR  --pad=oper
+#      Insert space paddings around operators only.
+#  
+#      --pad=paren
+#      Insert space paddings around parenthesies only.
+#  
+#      -P   OR  --pad=all
+#      Insert space paddings around operators AND parenthesies.
+#  
+#      --convert-tabs
+#      Convert tabs to spaces.
+#  
+#      --break-blocks
+#      Insert empty lines around unrelated blocks, labels, classes, ...
+#  
+#      --break-blocks=all
+#      Like --break-blocks, except also insert empty lines 
+#      around closing headers (e.g. 'else', 'catch', ...).
+#  
+#      --break-elseifs
+#      Break 'else if()' statements into two different lines.
+#  
+#  Other options:
+#  -------------
+#      --suffix=####
+#      Append the suffix #### instead of '.orig' to original filename.
+#  
+#      -X   OR  --errors-to-standard-output
+#      Print errors and help information to standard-output rather than
+#      to standard-error.
+#  
+#      -v   OR   --version
+#      Print version number
+#  
+#      -h   OR   -?   OR   --help
+#      Print this help message
+#  
+#  Default options file:
+#  ---------------------
+#      Artistic Style looks for a default options file in the
+#      following order:
+#      1. The contents of the ARTISTIC_STYLE_OPTIONS environment
+#         variable if it exists.
+#      2. The file called .astylerc in the directory pointed to by the
+#         HOME environment variable ( i.e. $HOME/.astylerc ).
+#      3. The file called .astylerc in the directory pointed to by the
+#         HOMEPATH environment variable ( i.e. %HOMEPATH%\.astylerc ).
+#      If a default options file is found, the options in this file
+#      will be parsed BEFORE the command-line options.
+#      Options within the default option file may be written without
+#      the preliminary '-' or '--'.
+#  

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/buildfiles/sonar.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/buildfiles/sonar.xml b/geode-client-native/buildfiles/sonar.xml
new file mode 100644
index 0000000..b9d9f78
--- /dev/null
+++ b/geode-client-native/buildfiles/sonar.xml
@@ -0,0 +1,32 @@
+<project name="gemfire-sonar">
+
+  <taskdef uri="antlib:org.sonar.ant" resource="org/sonar/ant/antlib.xml" classpath="${sonar-ant-task.jar}"/>
+
+  <property name="sonar.host.url" value="http://brazil.gemstone.com:9000"/>
+  <property name="sonar.jdbc.url" value="jdbc:mysql://brazil.gemstone.com:3306/sonar?useUnicode=true&amp;characterEncoding=utf8"/>
+  <property name="sonar.jdbc.driverClassName" value="com.mysql.jdbc.Driver"/>
+  <property name="sonar.jdbc.username" value="sonar"/>
+  <property name="sonar.jdbc.password" value="sonar"/>
+
+  <target name="sonar" depends="props">
+    <!-- Get Build Number -->
+    <property file="${build.dir}/build.number"/>
+
+    <property name="sonar.projectKey" value="com.vmware:gfcpp" />
+    <property name="sonar.projectName" value="GemFireNC" />
+    <property name="sonar.projectVersion" value="${gemfire.version} b${build.number}" />
+    <property name="sonar.projectDescription" value="vFabric GemFire Native Client- Revision ${build.number}"/>
+    <property name="sonar.branch" value="${source.branch}"/>
+    <property name="sonar.language" value="c++"/>
+    <property name="sonar.sources" value="${basedir}/src/com/gemstone/gemfire/internal"/>
+    <property name="sonar.binaries" value="${osbuild.dir}/classes"/>
+    <property name="sonar.tests" value="${basedir}/tests"/>
+    <property name="sonar.dynamicAnalysis" value="reuseReports"/>
+    <property name="sonar.doxygen.customPath" value="${osbuild.dir}/javadocs/cppreference/html"/>
+    <property name="sonar.doxygen.deploymentPath" value="${osbuild.dir}/javadocs/cppreference/html"/>
+    <property name="sonar.cxx.cppcheck.reportPath" value="gfcpp_cppcheckresults.xml"/>
+    <sonar:sonar xmlns:sonar="antlib:org.sonar.ant"/>
+
+  </target>
+
+</project>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/buildfiles/source_verify.pl
----------------------------------------------------------------------
diff --git a/geode-client-native/buildfiles/source_verify.pl b/geode-client-native/buildfiles/source_verify.pl
new file mode 100644
index 0000000..2edd4ba
--- /dev/null
+++ b/geode-client-native/buildfiles/source_verify.pl
@@ -0,0 +1,139 @@
+my %opts;
+use strict;
+use Getopt::Long;
+
+my %errorMessages = (
+  "sprintf"                              => " Never use sprintf.  Use ACE_OS::snprintf",
+  "new"                                  => " Never use new. Use GF_NEW",
+  "delete"                               => " Never use delete. Use GF_SAFE_DELETE or GF_SAFE_DELETE_ARRAY",  
+  "strcpy"                               => " Almost always, snprintf is better than strcpy",
+  "strcat"                               => " Almost always, snprintf is better than strcat", 
+  "sscanf"                               => " sscanf can be ok, but is slow and can overflow buffers",
+  "asctime"                              => " Consider using asctime_r which is multithreaded safed ",
+  "ctime"                                => " Consider using ctime_r which is multithreaded safed ",
+  "getgrgid"                             => " Consider using getgrgid_r which is multithreaded safed ",
+  "getgrnam"                             => " Consider using getgrnam_r which is multithreaded safed ",
+  "getlogin"                             => " Consider using getlogin_r which is multithreaded safed ",
+  "getpwnam"                             => " Consider using getpwnam_r which is multithreaded safed ",
+  "getpwuid"                             => " Consider using getpwuid_r which is multithreaded safed ",
+  "gmtime"                               => " Consider using gmtime_r which is multithreaded safed ",
+  "localtime"                            => " Consider using localtime_r which is multithreaded safed ",
+  "rand"                                 => " Consider using rand_r which is multithreaded safed ",
+  "readdir"                              => " Consider using readdir_r which is multithreaded safed ",
+  "strtok"                               => " Consider using strtok_r which is multithreaded safed ",
+  "ttyname"                              => " Consider using ttyname_r which is multithreaded safed ",
+  "main::CheckForTabs"                   => " Tab found, use spaces ",
+  "main::CheckForWhiteSpaceInEndOfLine"  => " Line ends in whitespace.  Consider deleting these extra spaces",    
+);
+
+my @restrictedUsage = (    "sprintf", "new","delete","strcpy","strcat","scanf",
+                           "asctime", "ctime","getgrgid", "getgrnam", "getlogin", "getpwnam",
+                           "getpwuid", "gmtime", "localtime", "rand", "readdir",
+                       "strtok", "ttyname");
+
+sub usage {
+  print "\n";
+  print "$0 --file <filename>\n";
+  print "   file:   Name of a file that needs to be verify\n";
+  print "\n";
+  print "$0 --directory <dirname>\n";  
+  print "   directory:   Name of a directory whose files needs to be verify\n";
+  exit(1);
+}
+
+sub printError {
+  my ($errorCode, $fname, $line) = @_;  
+  printf ( "$fname:$line:  ".$errorMessages{$errorCode}."\n" );    
+}
+
+sub CheckForTabs {
+  my ($line, $fname, $linenum) = @_;    
+  if ( $line !=~ /\".*\t.*\"/ ) {
+    if( $line =~ /\t/ ) {
+      printError((caller(0))[3] ,$fname,$linenum);
+    }
+  }  
+}
+
+sub CheckForWhiteSpaceInEndOfLine {
+  my ($line, $fname, $linenum) = @_;  
+  if ( $line =~ /\s+$/ ) {
+    printError((caller(0))[3],$fname,$linenum);
+  }
+}
+
+sub CheckForRestrictedUsage {
+  my ($line, $fname, $linenum, $apiname) = @_;  
+  if ( $line =~ /\b$apiname\b/ ) {
+    printError($apiname,$fname,$linenum);
+  }    
+}
+
+
+
+sub parseFileForErrors {
+  my $fname = shift;
+  open( FILE, $fname ) or die "Can't open $fname: $!";
+  my @lines = <FILE>;
+  close(FILE);
+  my $linenum = 0;
+  foreach my $_(@lines) {
+    $linenum++;
+    chomp;
+    # Do not read the lines which has 
+    # C or C++ style comments.
+    next if m{^\s*//};
+    # Comment of C style
+    next if m{^\s*/\*.*\*/\s*$};
+    # Continue till the comment is not finish
+    next while ( m{^\s*/\*}..m{^\s*\*/} );
+    # Ignore blank lines
+    next if m{/^\s*$/};
+    # ignore lines with only spaces or tabs only
+    next if $_ !~ /\S/;
+    
+    CheckForTabs($_,$fname, $linenum);
+    CheckForWhiteSpaceInEndOfLine($_,$fname, $linenum);
+    foreach my $apiname ( @restrictedUsage ) {
+      CheckForRestrictedUsage($_,$fname, $linenum, $apiname);
+    }    
+  }    
+}
+
+sub parseDirForErrors {
+  
+  my $dirname = shift;
+  chomp $dirname;
+  
+  opendir(DIR,$dirname);
+  my @files = readdir(DIR);
+  closedir(DIR);  
+  
+  foreach my $fname (@files) {
+    next if $fname eq '.';
+    next if $fname eq '..';
+    next if $fname eq 'GNUmakefile';
+    next if (-d $fname);          
+    parseFileForErrors($dirname."/".$fname);    
+  }
+}
+
+
+my $fileToScan = undef;
+my $dirToScan  = undef;
+
+my $rc = GetOptions (
+  "directory=s" =>  sub { $dirToScan  = pop(@_); },
+  "file=s"      =>  sub { $fileToScan = pop(@_); },
+  "help"        =>  sub { usage(); },
+);
+
+if ( defined $fileToScan )  {
+  parseFileForErrors($fileToScan);
+} elsif ( defined $dirToScan ) {
+  parseDirForErrors($dirToScan);
+} else {
+  usage();
+}
+
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/buildfiles/thirdparty.properties
----------------------------------------------------------------------
diff --git a/geode-client-native/buildfiles/thirdparty.properties b/geode-client-native/buildfiles/thirdparty.properties
new file mode 100644
index 0000000..293a532
--- /dev/null
+++ b/geode-client-native/buildfiles/thirdparty.properties
@@ -0,0 +1,9 @@
+gfe.dir=/export/gcm/where/gemfire/820/Linux/product
+
+# Location of Eclipse VM
+eclipsevm.dir=${thirdparty.dir}/jdk1.5.0_16
+
+# make
+ant.make=make
+ant.make.threads=-j1
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/buildfiles/thirdparty_sol.properties
----------------------------------------------------------------------
diff --git a/geode-client-native/buildfiles/thirdparty_sol.properties b/geode-client-native/buildfiles/thirdparty_sol.properties
new file mode 100644
index 0000000..80d5c52
--- /dev/null
+++ b/geode-client-native/buildfiles/thirdparty_sol.properties
@@ -0,0 +1,6 @@
+# Platform specific overrides for the values contained in thirdparty.properties
+# Care should be taken only to keep the exceptions to a minimum
+gfe.jre=${thirdparty.dir}/../common/jdk1.7.0_79/sparc.Solaris/jre
+ant.make=gmake
+ant.make.threads=-j4
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/buildfiles/thirdparty_solx86.properties
----------------------------------------------------------------------
diff --git a/geode-client-native/buildfiles/thirdparty_solx86.properties b/geode-client-native/buildfiles/thirdparty_solx86.properties
new file mode 100644
index 0000000..7ad2b81
--- /dev/null
+++ b/geode-client-native/buildfiles/thirdparty_solx86.properties
@@ -0,0 +1,4 @@
+# Platform specific overrides for the values contained in thirdparty.properties
+# Care should be taken only to keep the exceptions to a minimum
+gfe.jre=${thirdparty.dir}/../common/jdk1.7.0_79/x86.Solaris/jre
+ant.make=gmake

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/buildfiles/thirdparty_solx86_cpp11.properties
----------------------------------------------------------------------
diff --git a/geode-client-native/buildfiles/thirdparty_solx86_cpp11.properties b/geode-client-native/buildfiles/thirdparty_solx86_cpp11.properties
new file mode 100644
index 0000000..31bef4c
--- /dev/null
+++ b/geode-client-native/buildfiles/thirdparty_solx86_cpp11.properties
@@ -0,0 +1,13 @@
+# Platform specific overrides for the values contained in thirdparty.properties
+# Care should be taken only to keep the exceptions to a minimum
+gfe.jre=${thirdparty.dir}/../common/jdk1.7.0_79/x86.Solaris/jre
+
+ace.version=6.3.3
+ace.dir=${thirdparty.libs.dir}/c++11/ace-${ace.version}
+ace.static.dir=${ace.dir}
+
+xerces.dir=${thirdparty.libs.dir}/c++11/xerces-c-3.1.2
+xerceLinuxsversion=3.1
+
+xml.dir=${thirdparty.libs.dir}/c++11/libxml2-2.9.3
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/buildfiles/thirdparty_win.properties
----------------------------------------------------------------------
diff --git a/geode-client-native/buildfiles/thirdparty_win.properties b/geode-client-native/buildfiles/thirdparty_win.properties
new file mode 100644
index 0000000..988e2ad
--- /dev/null
+++ b/geode-client-native/buildfiles/thirdparty_win.properties
@@ -0,0 +1,26 @@
+# Platform specific overrides for the values contained in thirdparty.properties
+# Care should be taken only to keep the exceptions to a minimum
+
+#ace.dir=${thirdparty.libs.dir}/ace.5.5.0_versioned_tss_64time_t
+
+ace.dir=${thirdparty.libs.dir}/ace.6.1.0_versioned_vc10
+#acelinkname=ACE.5.6.0
+#ace.static.dir=${thirdparty.libs.dir}/ace.5.6.0_static_versioned
+
+
+xml.dir=${thirdparty.libs.dir}/XML_static.vc8/libxml2
+fastdep.exe=${thirdparty.dir}/fastdep-0.16/bin/fastdep.exe
+zzip.dir=${thirdparty.libs.dir}/ZZIP.vc8
+
+# Windows only items
+zlib.dir=${thirdparty.libs.dir}/zlib-1.2.3
+wix.dir=${thirdparty.dir}/wix
+cdb.dir=${thirdparty.dir}/CDB
+stacktrace.dir=${thirdparty.libs.dir}/stacktrace.vc10
+sandcastle.dir=${thirdparty.dir}/sandcastle_2.7.1.0
+sandcastle.builder=${thirdparty.dir}/SandcastleBuilder_1.9.5.0
+htmlworkshop.dir=${thirdparty.dir}/HTMLHelpWorkshop
+
+ant.make=jom
+#ant.make.threads=-j16
+gfe.jre=${thirdparty.dir}/../common/jdk1.7.0_79/x86_64.Windows_NT/jre

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/buildfiles/uniqueTransportConfig.sh
----------------------------------------------------------------------
diff --git a/geode-client-native/buildfiles/uniqueTransportConfig.sh b/geode-client-native/buildfiles/uniqueTransportConfig.sh
new file mode 100755
index 0000000..f46a59f
--- /dev/null
+++ b/geode-client-native/buildfiles/uniqueTransportConfig.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+TC=$1
+PORT=`expr $UID + 2000`
+TYPE=$2
+
+echo "creating $TC for isolation: PORT=$PORT TYPE=$TYPE."
+
+echo "context resolver_multicast_port $PORT" >$TC
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/buildfiles/utilities.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/buildfiles/utilities.xml b/geode-client-native/buildfiles/utilities.xml
new file mode 100755
index 0000000..e7a37b9
--- /dev/null
+++ b/geode-client-native/buildfiles/utilities.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project name="utilities">
+  <description>
+    The Utilities Ant XML build script file defines reusable and useful utility functions/tasks for use inside other
+    GemFire build targets.
+  </description>
+
+  <path id="path.svnant">
+    <pathelement location="${svnant.dir}/lib/svnant.jar"/>
+    <pathelement location="${svnant.dir}/lib/svnClientAdapter.jar"/>
+    <pathelement location="${svnant.dir}/lib/svnkit-javahl16-1.7.5-v1.jar"/>
+    <pathelement location="${svnant.dir}/lib/svnkit-1.7.5-v1.jar"/>
+    <pathelement location="${svnant.dir}/lib/sqljet-1.1.4.jar"/>
+    <pathelement location="${svnant.dir}/lib/svnkit-cli-1.7.5-v1.jar"/>
+    <pathelement location="${svnant.dir}/lib/jna-3.4.0.jar"/>
+    <pathelement location="${svnant.dir}/lib/antlr-runtime-3.4.jar"/>
+    <pathelement location="${svnant.dir}/lib/sequence-library-1.0.2.jar"/>
+   </path>
+   
+  <typedef resource="org/tigris/subversion/svnant/svnantlib.xml" 
+           classpathref="path.svnant" />
+
+  <condition property="antcontrib.taskfile" value="net/sf/antcontrib/antlib.xml">
+    <antversion atleast="1.8"/>
+  </condition>
+  
+  <!-- If antcontrib.taskfile is not set -->
+  <property name="antcontrib.taskfile" value="net/sf/antcontrib/antcontrib.properties"/>
+  
+  <taskdef resource="${antcontrib.taskfile}" classpath="${ant-contrib.jar}"/>
+  
+  <taskdef resource="org/apache/ant/dotnet/antlib.xml" classpath="${ant-dotnet.jar}"/>
+  
+</project>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/buildfiles/vcvars32_10.sh
----------------------------------------------------------------------
diff --git a/geode-client-native/buildfiles/vcvars32_10.sh b/geode-client-native/buildfiles/vcvars32_10.sh
new file mode 100755
index 0000000..6597cb8
--- /dev/null
+++ b/geode-client-native/buildfiles/vcvars32_10.sh
@@ -0,0 +1,56 @@
+#!/bin/bash -x
+#This script is must be identical to vcvars_*_8.sh except for line below.
+#This is done because you cannot get the path of a sourced script.
+gf_arch_arg=32bit
+
+function modern_vc_setup () {
+  if [ -z "${VS10INSTALLDIR:-}" ]; then
+    if [ -d "`cygpath 'c:\Program Files (x86)\Microsoft Visual Studio 10.0'`" ]; then
+      export VS10INSTALLDIR=`cygpath -d 'c:\Program Files (x86)\Microsoft Visual Studio 10.0'`
+    else
+      echo "ERROR: Unable to determine Visual Studio version for env setup"
+      exit -1
+    fi  
+  fi
+  
+  if [ -z "${MSSDK:-}" ]; then
+    if [ -d "`cygpath 'C:\Program Files (x86)\Microsoft SDKs'`" ]; then
+      export MSSDK=`cygpath -d 'C:\Program Files (x86)\Microsoft SDKs'`
+    else
+      echo "ERROR: Unable to determine Microsoft SDK path for env setup"
+      exit -1
+    fi  
+  fi
+  
+  if [ "x$gf_arch_arg" == "x64bit" ]; then
+    arch_bin="\\x86_amd64"
+    arch_lib="\\amd64"
+  elif [ "x$gf_arch_arg" == "x32bit" ]; then
+    arch_bin=""
+    arch_lib=""
+  else
+    echo "ERROR: Unable to determine Visual Studio version for env setup"
+    exit -1
+  fi
+  # Compatible with Visual Studio 2010
+  export VCINSTALLDIR="$VS10INSTALLDIR\VC"
+  
+  if [ -d "$VCINSTALLDIR" ]; then
+    echo Setting environment for using Microsoft Visual Studio 2010 tools.
+    export VCVER=vc10  
+    export FrameworkDir="$SYSTEMROOT\\Microsoft.NET\\Framework"
+    export FrameworkVersion=v4.0.30319
+    export FrameworkSDKDir="$MSSDK\\Windows\\v7.0A"
+    export DevEnvDir="$VS10INSTALLDIR\\Common7\\IDE"
+  else
+    echo "ERROR: Unable to determine Visual Studio version for env setup"
+    exit -1
+  fi
+
+  VCPATH="$DevEnvDir;$VCINSTALLDIR\\BIN${arch_bin};$VS10INSTALLDIR\\Common7\\Tools;$VCINSTALLDIR\\Common7\\Tools\\bin;$FrameworkSDKDir\\bin;$FrameworkDir\\$FrameworkVersion"
+  export PATH="`cygpath -up "$VCPATH"`:$PATH"
+  export INCLUDE="$VCINSTALLDIR\\ATLMFC\\INCLUDE\;$VCINSTALLDIR\\INCLUDE\;$VCINSTALLDIR\\PlatformSDK\\include\;$FrameworkSDKDir\\include"
+  export LIB="$VCINSTALLDIR\\ATLMFC\\LIB${arch_lib}\;$VCINSTALLDIR\\LIB${arch_lib}\;$FrameworkSDKDir\\lib${arch_lib}"
+}
+
+modern_vc_setup

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/buildfiles/vcvars32_8.sh
----------------------------------------------------------------------
diff --git a/geode-client-native/buildfiles/vcvars32_8.sh b/geode-client-native/buildfiles/vcvars32_8.sh
new file mode 100755
index 0000000..866fe0e
--- /dev/null
+++ b/geode-client-native/buildfiles/vcvars32_8.sh
@@ -0,0 +1,47 @@
+#!/bin/bash -x
+#This script is must be identical to vcvars_*_8.sh except for line below.
+#This is done because you cannot get the path of a sourced script.
+gf_arch_arg=32bit
+
+function modern_vc_setup () {
+  if [ -z "${VSINSTALLDIR:-}" ]; then
+    if [ -d "`cygpath 'c:\Program Files\Microsoft Visual Studio 8'`" ]; then
+      export VSINSTALLDIR=`cygpath -d 'c:\Program Files\Microsoft Visual Studio 8'`
+    else
+      echo "ERROR: Unable to determine Visual Studio version for env setup"
+      exit -1
+    fi  
+  fi
+
+  if [ "x$gf_arch_arg" == "x64bit" ]; then
+    arch_bin="\\x86_amd64"
+    arch_lib="\\amd64"
+  elif [ "x$gf_arch_arg" == "x32bit" ]; then
+    arch_bin=""
+    arch_lib=""
+  else
+    echo "ERROR: Unable to determine Visual Studio version for env setup"
+    exit -1
+  fi
+  # Compatible with Visual Studio 2005
+  export VCINSTALLDIR="$VSINSTALLDIR\VC"
+
+  if [ -d "$VCINSTALLDIR" ]; then
+    echo Setting environment for using Microsoft Visual Studio 2005 tools.
+    export VCVER=vc8
+    export FrameworkDir="$SYSTEMROOT\\Microsoft.NET\\Framework"
+    export FrameworkVersion=v2.0.50727
+    export FrameworkSDKDir="$VSINSTALLDIR\\SDK\\v2.0"
+    export DevEnvDir="$VSINSTALLDIR\\Common7\\IDE"
+  else
+    echo "ERROR: Unable to determine Visual Studio version for env setup"
+    exit -1
+  fi
+
+  VCPATH="$DevEnvDir;$VCINSTALLDIR\\BIN${arch_bin};$VSINSTALLDIR\\Common7\\Tools;$VCINSTALLDIR\\Common7\\Tools\\bin;$FrameworkSDKDir\\bin;$FrameworkDir\\$FrameworkVersion"
+  export PATH="`cygpath -up "$VCPATH"`:$PATH"
+  export INCLUDE="$VCINSTALLDIR\\ATLMFC\\INCLUDE\;$VCINSTALLDIR\\INCLUDE\;$VCINSTALLDIR\\PlatformSDK\\include\;$FrameworkSDKDir\\include"
+  export LIB="$VCINSTALLDIR\\ATLMFC\\LIB${arch_lib}\;$VCINSTALLDIR\\LIB${arch_lib}\;$VCINSTALLDIR\\PlatformSDK\\lib${arch_lib}\;$FrameworkSDKDir\\lib${arch_lib}"
+}
+
+modern_vc_setup

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/buildfiles/vcvars32_9.sh
----------------------------------------------------------------------
diff --git a/geode-client-native/buildfiles/vcvars32_9.sh b/geode-client-native/buildfiles/vcvars32_9.sh
new file mode 100755
index 0000000..0e8c68f
--- /dev/null
+++ b/geode-client-native/buildfiles/vcvars32_9.sh
@@ -0,0 +1,48 @@
+#!/bin/bash -x
+#This script is must be identical to vcvars_*_8.sh except for line below.
+#This is done because you cannot get the path of a sourced script.
+gf_arch_arg=32bit
+
+function modern_vc_setup () {
+  if [ -z "${VSINSTALLDIR:-}" ]; then
+    if [ -d "`cygpath 'c:\Program Files\Microsoft Visual Studio 8'`" ]; then
+      export VSINSTALLDIR=`cygpath -d 'c:\Program Files\Microsoft Visual Studio 8'`
+    else
+      echo "ERROR: Unable to determine Visual Studio version for env setup"
+      exit -1
+    fi  
+  fi
+
+  if [ "x$gf_arch_arg" == "x64bit" ]; then
+    arch_bin="\\x86_amd64"
+    arch_lib="\\amd64"
+  elif [ "x$gf_arch_arg" == "x32bit" ]; then
+    arch_bin=""
+    arch_lib=""
+  else
+    echo "ERROR: Unable to determine Visual Studio version for env setup"
+    exit -1
+  fi
+  # Compatible with Visual Studio 2008
+  export VCINSTALLDIR="$VSINSTALLDIR\VC"
+  export MSSDK=`cygpath -d 'c:\Program Files\Microsoft SDKs\Windows\v6.1'`
+
+  if [ -d "$VCINSTALLDIR" ]; then
+    echo Setting environment for using Microsoft Visual Studio 2008 tools.
+    export VCVER=vc8 # intentionally left it as vc8
+    export FrameworkDir="$SYSTEMROOT\\Microsoft.NET\\Framework"
+    export FrameworkVersion=v3.5
+    export FrameworkSDKDir="$VSINSTALLDIR\\SDK\\v3.5"
+    export DevEnvDir="$VSINSTALLDIR\\Common7\\IDE"
+  else
+    echo "ERROR: Unable to determine Visual Studio version for env setup"
+    exit -1
+  fi
+
+  VCPATH="$DevEnvDir;$VCINSTALLDIR\\BIN${arch_bin};$VSINSTALLDIR\\Common7\\Tools;$VCINSTALLDIR\\Common7\\Tools\\bin;$FrameworkSDKDir\\bin;$FrameworkDir\\$FrameworkVersion;$MSSDK\\Bin"
+  export PATH="`cygpath -up "$VCPATH"`:$PATH"
+  export INCLUDE="$VCINSTALLDIR\\ATLMFC\\INCLUDE\;$VCINSTALLDIR\\INCLUDE\;$VCINSTALLDIR\\PlatformSDK\\include\;$FrameworkSDKDir\\include;$MSSDK\\Include"
+  export LIB="$VCINSTALLDIR\\ATLMFC\\LIB${arch_lib}\;$VCINSTALLDIR\\LIB${arch_lib}\;$VCINSTALLDIR\\PlatformSDK\\lib${arch_lib}\;$FrameworkSDKDir\\lib${arch_lib};;$MSSDK\\Lib"
+}
+
+modern_vc_setup

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/buildfiles/vcvars64_10.sh
----------------------------------------------------------------------
diff --git a/geode-client-native/buildfiles/vcvars64_10.sh b/geode-client-native/buildfiles/vcvars64_10.sh
new file mode 100755
index 0000000..366f639
--- /dev/null
+++ b/geode-client-native/buildfiles/vcvars64_10.sh
@@ -0,0 +1,61 @@
+#!/bin/bash -x
+#This script is must be identical to vcvars_*_8.sh except for line below.
+#This is done because you cannot get the path of a sourced script.
+gf_arch_arg=64bit
+
+function modern_vc_setup () {
+  if [ -z "${VS10INSTALLDIR:-}" ]; then
+    if [ -d "`cygpath 'c:\Program Files (x86)\Microsoft Visual Studio 10.0'`" ]; then
+      export VS10INSTALLDIR=`cygpath -d 'c:\Program Files (x86)\Microsoft Visual Studio 10.0'`
+    else
+      echo "ERROR: Unable to determine Visual Studio version for env setup"
+      exit -1
+    fi  
+  fi
+
+  if [ -z "${MSSDK:-}" ]; then
+    if [ -d "`cygpath 'C:\Program Files (x86)\Microsoft SDKs'`" ]; then
+      export MSSDK=`cygpath -d 'C:\Program Files (x86)\Microsoft SDKs'`
+    else
+      echo "ERROR: Unable to determine Microsoft SDK path for env setup"
+      exit -1
+    fi  
+  fi
+  
+  if [ "x$gf_arch_arg" == "x64bit" ]; then
+    arch_bin="\\x86_amd64"
+    arch_lib="\\amd64"
+	x64_lib="\\x64"
+  elif [ "x$gf_arch_arg" == "x32bit" ]; then
+    arch_bin=""
+    arch_lib=""
+	x64_lib=""
+  else
+    echo "ERROR: Unable to determine Visual Studio version for env setup"
+    exit -1
+  fi
+  # Compatible with Visual Studio 2010
+  export VCINSTALLDIR="$VS10INSTALLDIR\VC"
+
+  if [ -d "$VCINSTALLDIR" ]; then
+    echo Setting environment for using Microsoft Visual Studio 2010 tools.
+    export VCVER=vc10  
+    export FrameworkDir="$SYSTEMROOT\\Microsoft.NET\\Framework"
+    export FrameworkVersion=v4.0.30319
+    export FrameworkSDKDir="$MSSDK\\Windows\\v7.0A"
+    export DevEnvDir="$VS10INSTALLDIR\\Common7\\IDE"
+  else
+    echo "ERROR: Unable to determine Visual Studio version for env setup"
+    exit -1
+  fi
+
+  VCPATH="$DevEnvDir;$VCINSTALLDIR\\BIN${arch_bin};$VCINSTALLDIR\\lib${arch_lib};$VS10INSTALLDIR\\Common7\\Tools;$VCINSTALLDIR\\Common7\\Tools\\bin;$FrameworkSDKDir\\bin;$FrameworkDir\\$FrameworkVersion"
+  export PATH="`cygpath -up "$VCPATH"`:$PATH"
+  export INCLUDE="$VCINSTALLDIR\\ATLMFC\\INCLUDE\;$VCINSTALLDIR\\INCLUDE\;$VCINSTALLDIR\\PlatformSDK\\include\;$FrameworkSDKDir\\include"
+  export LIB="$VCINSTALLDIR\\ATLMFC\\LIB${arch_lib}\;$VCINSTALLDIR\\LIB${arch_lib}\;$FrameworkSDKDir\\lib${x64_lib}"
+ echo PATH is $PATH
+ echo lib is $LIB
+ echo link.exe from `which link.exe`
+}
+
+modern_vc_setup

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/buildfiles/vcvars64_8.sh
----------------------------------------------------------------------
diff --git a/geode-client-native/buildfiles/vcvars64_8.sh b/geode-client-native/buildfiles/vcvars64_8.sh
new file mode 100755
index 0000000..7b08357
--- /dev/null
+++ b/geode-client-native/buildfiles/vcvars64_8.sh
@@ -0,0 +1,50 @@
+#!/bin/bash -x
+#This script is must be identical to vcvars_*_8.sh except for line below.
+#This is done because you cannot get the path of a sourced script.
+gf_arch_arg=64bit
+
+function modern_vc_setup () {
+  if [ -z "${VSINSTALLDIR:-}" ]; then
+    if [ -d "`cygpath 'c:\Program Files\Microsoft Visual Studio 8'`" ]; then
+      export VSINSTALLDIR=`cygpath -d 'c:\Program Files\Microsoft Visual Studio 8'`
+    else
+      echo "ERROR: Unable to determine Visual Studio version for env setup"
+      exit -1
+    fi  
+  fi
+
+  if [ "x$gf_arch_arg" == "x64bit" ]; then
+    arch_bin="\\x86_amd64"
+    arch_lib="\\amd64"
+  elif [ "x$gf_arch_arg" == "x32bit" ]; then
+    arch_bin=""
+    arch_lib=""
+  else
+    echo "ERROR: Unable to determine Visual Studio version for env setup"
+    exit -1
+  fi
+  # Compatible with Visual Studio 2005
+  export VCINSTALLDIR="$VSINSTALLDIR\VC"
+
+  if [ -d "$VCINSTALLDIR" ]; then
+    echo Setting environment for using Microsoft Visual Studio 2005 tools.
+    export VCVER=vc8
+    export FrameworkDir="$SYSTEMROOT\\Microsoft.NET\\Framework"
+    export FrameworkVersion=v2.0.50727
+    export FrameworkSDKDir="$VSINSTALLDIR\\SDK\\v2.0"
+    export DevEnvDir="$VSINSTALLDIR\\Common7\\IDE"
+  else
+    echo "ERROR: Unable to determine Visual Studio version for env setup"
+    exit -1
+  fi
+
+  VCPATH="$DevEnvDir;$VCINSTALLDIR\\BIN${arch_bin};$VCINSTALLDIR\\lib${arch_lib};$VSINSTALLDIR\\Common7\\Tools;$VCINSTALLDIR\\Common7\\Tools\\bin;$FrameworkSDKDir\\bin;$FrameworkDir\\$FrameworkVersion"
+  export PATH="`cygpath -up "$VCPATH"`:$PATH"
+  export INCLUDE="$VCINSTALLDIR\\ATLMFC\\INCLUDE\;$VCINSTALLDIR\\INCLUDE\;$VCINSTALLDIR\\PlatformSDK\\include\;$FrameworkSDKDir\\include"
+  export LIB="$VCINSTALLDIR\\ATLMFC\\LIB${arch_lib}\;$VCINSTALLDIR\\LIB${arch_lib}\;$VCINSTALLDIR\\PlatformSDK\\lib${arch_lib}\;$FrameworkSDKDir\\lib${arch_lib}"
+ echo PATH is $PATH
+ echo lib is $LIB
+ echo link.exe from `which link.exe`
+}
+
+modern_vc_setup

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/buildfiles/vcvars64_9.sh
----------------------------------------------------------------------
diff --git a/geode-client-native/buildfiles/vcvars64_9.sh b/geode-client-native/buildfiles/vcvars64_9.sh
new file mode 100755
index 0000000..c78fdbd
--- /dev/null
+++ b/geode-client-native/buildfiles/vcvars64_9.sh
@@ -0,0 +1,51 @@
+#!/bin/bash -x
+#This script is must be identical to vcvars_*_8.sh except for line below.
+#This is done because you cannot get the path of a sourced script.
+gf_arch_arg=64bit
+
+function modern_vc_setup () {
+  if [ -z "${VSINSTALLDIR:-}" ]; then
+    if [ -d "`cygpath 'c:\Program Files\Microsoft Visual Studio 8'`" ]; then
+      export VSINSTALLDIR=`cygpath -d 'c:\Program Files\Microsoft Visual Studio 8'`
+    else
+      echo "ERROR: Unable to determine Visual Studio version for env setup"
+      exit -1
+    fi  
+  fi
+
+  if [ "x$gf_arch_arg" == "x64bit" ]; then
+    arch_bin="\\x86_amd64"
+    arch_lib="\\amd64"
+  elif [ "x$gf_arch_arg" == "x32bit" ]; then
+    arch_bin=""
+    arch_lib=""
+  else
+    echo "ERROR: Unable to determine Visual Studio version for env setup"
+    exit -1
+  fi
+  # Compatible with Visual Studio 2008
+  export VCINSTALLDIR="$VSINSTALLDIR\VC"
+  export MSSDK=`cygpath -d 'c:\Program Files\Microsoft SDKs\Windows\v6.1'`
+
+  if [ -d "$VCINSTALLDIR" ]; then
+    echo Setting environment for using Microsoft Visual Studio 2008 tools.
+    export VCVER=vc8 # intentionally left it as vc8
+    export FrameworkDir="$SYSTEMROOT\\Microsoft.NET\\Framework"
+    export FrameworkVersion=v3.5
+    export FrameworkSDKDir="$VSINSTALLDIR\\SDK\\v3.5"
+    export DevEnvDir="$VSINSTALLDIR\\Common7\\IDE"
+  else
+    echo "ERROR: Unable to determine Visual Studio version for env setup"
+    exit -1
+  fi
+
+  VCPATH="$DevEnvDir;$VCINSTALLDIR\\BIN${arch_bin};$VCINSTALLDIR\\lib${arch_lib};$VSINSTALLDIR\\Common7\\Tools;$VCINSTALLDIR\\Common7\\Tools\\bin;$FrameworkSDKDir\\bin;$FrameworkDir\\$FrameworkVersion;$MSSDK\\Bin\\x64"
+  export PATH="`cygpath -up "$VCPATH"`:$PATH"
+  export INCLUDE="$VCINSTALLDIR\\ATLMFC\\INCLUDE\;$VCINSTALLDIR\\INCLUDE\;$VCINSTALLDIR\\PlatformSDK\\include\;$FrameworkSDKDir\\include;$MSSDK\\Include"
+  export LIB="$VCINSTALLDIR\\ATLMFC\\LIB${arch_lib}\;$VCINSTALLDIR\\LIB${arch_lib}\;$VCINSTALLDIR\\PlatformSDK\\lib${arch_lib}\;$FrameworkSDKDir\\lib${arch_lib};$MSSDK\\Lib\\x64"
+ echo PATH is $PATH
+ echo lib is $LIB
+ echo link.exe from `which link.exe`
+}
+
+modern_vc_setup

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/buildfiles/winlog.sh
----------------------------------------------------------------------
diff --git a/geode-client-native/buildfiles/winlog.sh b/geode-client-native/buildfiles/winlog.sh
new file mode 100755
index 0000000..8abd8c9
--- /dev/null
+++ b/geode-client-native/buildfiles/winlog.sh
@@ -0,0 +1,30 @@
+#!/bin/perl
+
+#
+# filter output from build on windows so error paths are reported with
+# native windows paths..
+#
+
+# example:
+#
+# Entering directory '/cygdrive/c/...'
+#
+#   becomes
+#
+# Entering directory 'C:/'
+
+open( LOG, ">buildWin.log" ) || die( "cannot create buildWin.log file" );
+
+while( $line = <STDIN> ) {
+
+  $line =~ s/(Entering|Leaving) directory\s+\`\/cygdrive\/(.)\//$1 directory \`$2:\//;
+  if ( $line =~ m/Entering directory\s+\`(.*)\'/ ) {
+    $makedir = $1;
+  }
+  if ( ! ($line =~ m/([a-z,A-Z]\:(.*\.(c|h)(p*))\(\d+\) : (error|warning))/ ) ) {
+    $line =~ s/((.*)\(\d+\) : (error|warning))/${makedir}\/$1/;
+  }
+  print LOG $line;
+  print $line;
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/dev-docs/StatDescriptions.txt
----------------------------------------------------------------------
diff --git a/geode-client-native/dev-docs/StatDescriptions.txt b/geode-client-native/dev-docs/StatDescriptions.txt
new file mode 100644
index 0000000..d5a64d6
--- /dev/null
+++ b/geode-client-native/dev-docs/StatDescriptions.txt
@@ -0,0 +1,128 @@
+--------------------------------------------------------------------
+statistics type:  WindowsProcessStats
+description:      Statistics for a Microsoft Windows process
+
+
+name:   handles
+units:  items
+type:   IntGauge
+desc:   The total number of handles currently open by this process. This number is the sum of the handles currently open by each thread in this process.
+
+name:   priorityBase
+units:  priority
+type:   IntGauge
+desc:   The current base priority of the process. Threads within a process can raise and lower their own base priority relative to the process's base priority
+
+name:   threads
+units:  threads
+type:   IntGauge
+desc:    Number of threads currently active in this process. An instruction is the basic unit of execution in a processor, and a thread is the object that executes instructions. Every running process has at least one thread.
+
+name:   activeTime
+units:  milliseconds
+type:   LongCounter
+desc:   The elapsed time in milliseconds that all of the threads of this process used the processor to execute instructions. An instruction is the basic unit of execution in a computer, a thread is the object that executes instructions, and a process is the object created when a program is run. Code executed to handle some hardware interrupts and trap conditions are included in this count.
+
+name:   pageFaults
+units:  operations
+type:   LongCounter
+desc:   The total number of Page Faults by the threads executing in this process. A page fault occurs when a thread refers to a virtual memory page that is not in its working set in main memory. This will not cause the page to be fetched from disk if it is on the standby list and hence already in main memory, or if it is in use by another process with whom the page is shared.
+
+name:   pageFileSize
+units:  bytes
+type:   LongGauge
+desc:   The current number of bytes this process has used in the paging file(s). Paging files are used to store pages of memory used by the process that are not contained in other files. Paging files are shared by all processes, and lack of space in paging files can prevent other processes from allocating memory.
+
+name:   pageFileSizePeak
+units:  bytes
+type:   LongGauge
+desc:   The maximum number of bytes this process has used in the paging file(s). Paging files are used to store pages of memory used by the process that are not contained in other files. Paging files are shared by all processes, and lack of space in paging files can prevent other processes from allocating memory.
+
+name:   privateSize
+units:  bytes
+type:   LongGauge
+desc:   The current number of bytes this process has allocated that cannot be shared with other processes.
+
+name:   systemTime
+units:  milliseconds
+type:   LongCounter
+desc:   The elapsed time in milliseconds that the threads of the process have spent executing code in privileged mode. When a Windows system service is called, the service will often run in Privileged Mode to gain access to system-private data. Such data is protected from access by threads executing in user mode. Calls to the system can be explicit or implicit, such as page faults or interrupts. Unlike some early operating systems, Windows uses process boundaries for subsystem protection in addition to the traditional protection of user and privileged modes. These subsystem processes provide additional protection. Therefore, some work done by Windows on behalf of your application might appear in other subsystem processes in addition to the privileged time in your process.
+
+name:   userTime
+units:  milliseconds
+type:   LongCounter
+desc:   The elapsed time in milliseconds that this process's threads have spent executing code in user mode. Applications, environment subsystems, and integral subsystems execute in user mode. Code executing in User Mode cannot damage the integrity of the Windows Executive, Kernel, and device drivers. Unlike some early operating systems, Windows uses process boundaries for subsystem protection in addition to the traditional protection of user and privileged modes. These subsystem processes provide additional protection. Therefore, some work done by Windows on behalf of your application might appear in other subsystem processes in addition to the privileged time in your process.
+
+name:   virtualSize
+units:  bytes
+type:   LongGauge
+desc:   Virtual Bytes is the current size in bytes of the virtual address space the process is using. Use of virtual address space does not necessarily imply corresponding use of either disk or main memory pages. Virtual space is finite, and by using too much, the process can limit its ability to load libraries.
+
+name:   virtualSizePeak
+units:  bytes
+type:   LongGauge
+desc:   The maximum number of bytes of virtual address space the process has used at any one time. Use of virtual address space does not necessarily imply corresponding use of either disk or main memory pages. Virtual space is however finite, and by using too much, the process might limit its ability to load libraries.
+
+name:   workingSetSize
+units:  bytes
+type:   LongGauge
+desc:   The current number of bytes in the Working Set of this process. The Working Set is the set of memory pages touched recently by the threads in the process. If free memory in the computer is above a threshold, pages are left in the Working Set of a process even if they are not in use. When free memory falls below a threshold, pages are trimmed from Working Sets. If they are needed they will then be soft-faulted back into the Working Set before they are paged out out to disk.
+
+name:   workingSetSizePeak
+units:  bytes
+type:   LongGauge
+desc:   The maximum number of bytes in the Working Set of this process at any point in time. The Working Set is the set of memory pages touched recently by the threads in the process. If free memory in the computer is above a threshold, pages are left in the Working Set of a process even if they are not in use. When free memory falls below a threshold, pages are trimmed from Working Sets. If they are needed they will then be soft-faulted back into the Working Set before they leave main memory.
+                                                                                
+--------------------------------------------------------------------
+statistics type:  LinuxProcessStats
+description:      Statistics for a Linux process
+
+name:   imageSize
+units:  megabytes
+type:   IntGauge
+desc:   The size of the process's image in megabytes
+  
+name:   rssSize
+units:  megabytes
+type:   IntGauge
+desc:   The size of the process's resident set size in megabytes
+    
+
+--------------------------------------------------------------------
+statistics type:  RegionStatistics
+description:      Statistics for this region
+
+name:   creates
+units:  entries
+type:   IntCounter
+desc:   The total number of cache creates for this region
+
+name:   puts
+units:  entries
+type:   IntCounter
+desc:   The total number of cache puts for this region
+
+name:   gets
+units:  entries
+type:   IntCounter
+desc:   The total number of cache gets for this region
+
+name:   hits
+units:  entries
+type:   IntCounter
+desc:   The total number of cache hits for this region
+
+name:   misses
+units:  entries
+type:   IntCounter
+desc:   The total number of cache misses for this region
+
+name:   entries
+units:  entries
+type:   IntCounter
+desc:   The current number of cache entries for this region
+
+  
+
+
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/dev-docs/Windows Build Setup.doc
----------------------------------------------------------------------
diff --git a/geode-client-native/dev-docs/Windows Build Setup.doc b/geode-client-native/dev-docs/Windows Build Setup.doc
new file mode 100644
index 0000000..6e6b5d7
Binary files /dev/null and b/geode-client-native/dev-docs/Windows Build Setup.doc differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/dev-docs/console features.xls
----------------------------------------------------------------------
diff --git a/geode-client-native/dev-docs/console features.xls b/geode-client-native/dev-docs/console features.xls
new file mode 100644
index 0000000..b0c8c69
Binary files /dev/null and b/geode-client-native/dev-docs/console features.xls differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/docs/c-footer.html
----------------------------------------------------------------------
diff --git a/geode-client-native/docs/c-footer.html b/geode-client-native/docs/c-footer.html
new file mode 100644
index 0000000..c856730
--- /dev/null
+++ b/geode-client-native/docs/c-footer.html
@@ -0,0 +1 @@
+<HR><address style="align: right;"><small>GemFire C API Documentation</small></address>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/docs/cli-footer.html
----------------------------------------------------------------------
diff --git a/geode-client-native/docs/cli-footer.html b/geode-client-native/docs/cli-footer.html
new file mode 100644
index 0000000..a048a4f
--- /dev/null
+++ b/geode-client-native/docs/cli-footer.html
@@ -0,0 +1 @@
+<HR><address style="align: right;"><small>GemFire C++ Cache .NET API Documentation</small></address>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/docs/common-Doxyfile
----------------------------------------------------------------------
diff --git a/geode-client-native/docs/common-Doxyfile b/geode-client-native/docs/common-Doxyfile
new file mode 100644
index 0000000..9b43f13
--- /dev/null
+++ b/geode-client-native/docs/common-Doxyfile
@@ -0,0 +1,54 @@
+# Shared Doxygen configuration
+
+# Look in subdirectories for files to be documented
+RECURSIVE              = YES
+
+# Generate brief descriptions like Javadoc does
+JAVADOC_AUTOBRIEF      = YES
+
+# Always generate a detailed description of functions
+ALWAYS_DETAILED_SEC    = YES
+
+# Include a detailed description of the class/file like Javadoc does
+DETAILS_AT_TOP         = YES
+
+# We're generating documentation for C
+OPTIMIZE_OUTPUT_FOR_C  = YES
+
+# We're not generating documentation for Java
+OPTIMIZE_OUTPUT_JAVA   = NO
+
+# Don't show #include information, it is not interesting
+SHOW_INCLUDE_FILES     = NO
+
+# Document c, cpp, h, and dox files
+FILE_PATTERNS          = *.c *.cpp *.h *.dox
+
+# Don't include the source code in the generated HTML
+SOURCE_BROWSER         = NO
+
+# Generate HTML output
+GENERATE_HTML          = YES
+
+# Don't generate these kinds of output
+GENERATE_LATEX         = NO
+GENERATE_RTF           = NO
+GENERATE_MAN           = NO
+GENERATE_XML           = NO
+
+# Preprocess macros
+ENABLE_PREPROCESSING   = YES
+
+# Don't generate class diagrams
+CLASS_DIAGRAMS         = NO
+
+# Add aliases to selectivly hide comments
+ALIASES = "cacheserver=\if cacheserver" \
+	  "endcacheserver=\endif"  \
+	  "nativeclient=\if nativeclient"  \
+	  "endnativeclient=\endif" \
+	  "notsupported_cacheserver=\if cacheserver \
+This functionality is unsupported in the C++ Cache Server Product. \endif" \
+	  "notsupported_nativeclient=\if nativeclient \
+This functionality is unsupported in the Native Client Product. \endif" \
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/docs/cpp-footer.html
----------------------------------------------------------------------
diff --git a/geode-client-native/docs/cpp-footer.html b/geode-client-native/docs/cpp-footer.html
new file mode 100644
index 0000000..649ecdd
--- /dev/null
+++ b/geode-client-native/docs/cpp-footer.html
@@ -0,0 +1 @@
+<HR><address style="align: right;"><small>GemFire C++ Cache API Documentation</small></address>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/docs/doclet/package-list
----------------------------------------------------------------------
diff --git a/geode-client-native/docs/doclet/package-list b/geode-client-native/docs/doclet/package-list
new file mode 100644
index 0000000..fa24cea
--- /dev/null
+++ b/geode-client-native/docs/doclet/package-list
@@ -0,0 +1 @@
+com.sun.javadoc

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/docs/gemFireCPPLogo.gif
----------------------------------------------------------------------
diff --git a/geode-client-native/docs/gemFireCPPLogo.gif b/geode-client-native/docs/gemFireCPPLogo.gif
new file mode 100755
index 0000000..3e6e448
Binary files /dev/null and b/geode-client-native/docs/gemFireCPPLogo.gif differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/docs/log4j/package-list
----------------------------------------------------------------------
diff --git a/geode-client-native/docs/log4j/package-list b/geode-client-native/docs/log4j/package-list
new file mode 100644
index 0000000..fe3653c
--- /dev/null
+++ b/geode-client-native/docs/log4j/package-list
@@ -0,0 +1,17 @@
+org.apache.log4j
+org.apache.log4j.chainsaw
+org.apache.log4j.config
+org.apache.log4j.helpers
+org.apache.log4j.jdbc
+org.apache.log4j.jmx
+org.apache.log4j.lf5
+org.apache.log4j.net
+org.apache.log4j.nt
+org.apache.log4j.or
+org.apache.log4j.or.jms
+org.apache.log4j.or.sax
+org.apache.log4j.performance
+org.apache.log4j.spi
+org.apache.log4j.varia
+org.apache.log4j.xml
+org.apache.log4j.xml.examples

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/docs/native_delta_propagation.doc
----------------------------------------------------------------------
diff --git a/geode-client-native/docs/native_delta_propagation.doc b/geode-client-native/docs/native_delta_propagation.doc
new file mode 100644
index 0000000..530683d
Binary files /dev/null and b/geode-client-native/docs/native_delta_propagation.doc differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/docs/native_delta_propagation_doc.pdf
----------------------------------------------------------------------
diff --git a/geode-client-native/docs/native_delta_propagation_doc.pdf b/geode-client-native/docs/native_delta_propagation_doc.pdf
new file mode 100644
index 0000000..48ae16b
Binary files /dev/null and b/geode-client-native/docs/native_delta_propagation_doc.pdf differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/BenchmarkHierarchicalClient/BenchmarkHierarchicalClient.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/BenchmarkHierarchicalClient/BenchmarkHierarchicalClient.cs b/geode-client-native/examples/clicache/BenchmarkHierarchicalClient/BenchmarkHierarchicalClient.cs
new file mode 100755
index 0000000..dbc4816
--- /dev/null
+++ b/geode-client-native/examples/clicache/BenchmarkHierarchicalClient/BenchmarkHierarchicalClient.cs
@@ -0,0 +1,213 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ * This example measures the time it takes for a client caching operation to 
+ * return in a hierarchical cache configuration. 
+ *
+ * While this example uses a console application, it is not a requirement.
+ *
+ * Please note that this example requires that the BenchmarkHierarchicalServer
+ * be running prior to execution.  To start the BenchmarkHierarchicalServer
+ * QuickStart example, please refer to the GemFire Quickstart documentation.
+//////////////////////////////////////////////////////////////////////////////*/
+using System;
+using System.IO;
+using System.Runtime.Serialization.Formatters.Binary;
+
+using GemStone.GemFire.Cache;
+
+public class BenchmarkHierarchicalClient
+{
+  [STAThread()]
+  public static void Main()
+  {
+    /* Total number of benchmark samples to benchmark and the number of puts
+     * to make for each sample.
+    */
+    const int cnBenchmarkedSamples = 60,
+              cnOperationsPerSample = 5000;
+
+    DistributedSystem MyDistributedSystem = null;
+    Cache MyCache = null;
+
+    try
+    {
+      DateTime[] BenchmarkedItemTimes = new DateTime[cnBenchmarkedSamples];
+
+      // Determine what the serialized overhead is.
+      MemoryStream SerializedStream = new MemoryStream();
+
+      new BinaryFormatter().Serialize(SerializedStream, new byte[0]);
+
+      /* The payload size is done in this manner because we want a 1KB size,
+       * and, therefore, the overhead must be backed out of the overall length.
+      */
+      byte[] Payload = new byte[1024 - SerializedStream.Length];
+
+      SerializedStream.Close();
+
+      DateTime StartingTime;
+
+      Console.WriteLine("* Connecting to the distributed system and creating the cache.");
+
+      /* Properties can be passed to GemFire through two different mechanisms: the 
+       * Properties object as is done below or the gfcpp.properties file. The 
+       * settings passed in a Properties object take precedence over any settings
+       * in a file. This way the end-user cannot bypass any required settings.
+       * 
+       * Using a gfcpp.properties file can be useful when you want to change the 
+       * behavior of certain settings without doing a new build, test, and deploy cycle.
+       * 
+       * See gfcpp.properties for details on some of the other settings used in this 
+       * project.
+      */
+      Properties DistributedSystemProperties = new Properties();
+
+      DistributedSystemProperties.Insert("log-file", "C:/temp/benchmarkClient.log");
+      DistributedSystemProperties.Insert("log-level", "debug");
+
+      // Set the name used to identify the member of the distributed system.
+      DistributedSystemProperties.Insert("name", "BenchmarkHierarchicalClient");
+
+      /* Specify the file whose contents are used to initialize the cache when it is created.
+       * 
+       * An XML file isn't needed at all because everything can be specified in  code--much
+       * as the "license-file" property is. However, it provides a convenient way
+       * to isolate common settings that can be updated without a build/test/deploy cycle.
+      */
+      DistributedSystemProperties.Insert("cache-xml-file", "BenchmarkHierarchicalClient.xml");
+
+      /* Define where the license file is located. It is very useful to do this in
+       * code vs. the gemfire.properties file, because it allows you to access the
+       * license used by the GemFire installation (as pointed to by the GEMFIRE
+       * environment variable).
+      */
+      DistributedSystemProperties.Insert("license-file", "../../gfCppLicense.zip");
+
+      // Connect to the GemFire distributed system.
+      MyDistributedSystem = DistributedSystem.Connect("BenchmarkClient", DistributedSystemProperties);
+
+      // Create the cache. This causes the cache-xml-file to be parsed.
+      MyCache = CacheFactory.Create("BenchmarkClient", MyDistributedSystem);
+
+
+      // Get the example region which is a subregion of /root
+      Region MyExampleRegion = MyCache.GetRegion("/root/exampleRegion");
+
+      Console.WriteLine("{0}* Region, {1}, was opened in the cache.{2}",
+        Environment.NewLine, MyExampleRegion.FullPath, Environment.NewLine);
+
+      Console.WriteLine("Please wait while the benchmark tests are performed.");
+
+      StartingTime = System.DateTime.Now;
+
+      // Perform benchmark until cnBenchmarkedSamples are executed
+      for (int nCurrentBenchmarkedItem = 0; nCurrentBenchmarkedItem < cnBenchmarkedSamples; nCurrentBenchmarkedItem++)
+      {
+        for (int nOperations = 0; nOperations < cnOperationsPerSample; nOperations++)
+        {
+          /* Perform the serialization every time to more accurately 
+           * represent the normal behavior of an application.
+           * 
+           * Optimize performance by allocating memory for 1KB.
+          */
+          MyExampleRegion.Put("Key3", CacheableBytes.Create(Payload));
+
+        }
+
+        BenchmarkedItemTimes[nCurrentBenchmarkedItem] = System.DateTime.Now;
+      }
+
+      Console.WriteLine("{0}Finished benchmarking. Analyzing the results.",
+        Environment.NewLine);
+
+      long nTotalOperations = cnBenchmarkedSamples * cnOperationsPerSample;
+
+      // Calculate the total time for the benchmark.
+      TimeSpan BenchmarkTimeSpan = BenchmarkedItemTimes[cnBenchmarkedSamples - 1] - StartingTime;
+
+      // Find the best sample.
+      TimeSpan BestSampleTime = BenchmarkedItemTimes[0] - StartingTime;
+
+      for (int nCurrentSample = 1; nCurrentSample < BenchmarkedItemTimes.Length; nCurrentSample++)
+      {
+        // Evaluation the sample's time with the sample preceding it.
+        TimeSpan CurrentSampleTime = BenchmarkedItemTimes[nCurrentSample] - BenchmarkedItemTimes[nCurrentSample - 1];
+
+        if (CurrentSampleTime < BestSampleTime)
+        {
+          BestSampleTime = CurrentSampleTime;
+        }
+      }
+
+      Console.WriteLine("{0}Benchmark Statistics:", Environment.NewLine);
+      Console.WriteLine("\tNumber of Samples: {0}", cnBenchmarkedSamples);
+      Console.WriteLine("\t1KB Operations/Sample: {0}", cnOperationsPerSample);
+      Console.WriteLine("\tTotal 1KB Operations: {0}", nTotalOperations);
+      Console.WriteLine("\tTotal Time: {0:N2} seconds",
+        BenchmarkTimeSpan.TotalSeconds);
+
+      Console.WriteLine("{0}Benchmark Averages (Mean):", Environment.NewLine);
+      Console.WriteLine("\tKB/Second: {0:N2}",
+        nTotalOperations / BenchmarkTimeSpan.TotalSeconds);
+      Console.WriteLine("\tBytes/Second: {0:N2}",
+        (1024 * nTotalOperations) / BenchmarkTimeSpan.TotalSeconds);
+      Console.WriteLine("\tMilliseconds/KB: {0:N2}",
+        BenchmarkTimeSpan.TotalMilliseconds / nTotalOperations);
+      Console.WriteLine("\tNanoseconds/KB: {0}",
+        BenchmarkTimeSpan.Ticks / nTotalOperations);
+      Console.WriteLine("\tNanoseconds/Byte: {0:N2}",
+        BenchmarkTimeSpan.Ticks / (1024D * nTotalOperations));
+
+      Console.WriteLine("{0}Best Benchmark Results:", Environment.NewLine);
+      Console.WriteLine("\tKB/Second = {0:N2}",
+        cnOperationsPerSample / BestSampleTime.TotalSeconds);
+      Console.WriteLine("\tBytes/Second = {0:N2}",
+        (1024 * cnOperationsPerSample) / BestSampleTime.TotalSeconds);
+      Console.WriteLine("\tMilliseconds/KB = {0:N2}",
+        BestSampleTime.TotalMilliseconds / cnOperationsPerSample);
+      Console.WriteLine("\tNanoseconds/KB: {0}",
+        BestSampleTime.Ticks / cnOperationsPerSample);
+      Console.WriteLine("\tNanoseconds/Byte: {0:N2}",
+        BestSampleTime.Ticks / (1024D * cnOperationsPerSample));
+
+      // Keep the console active until <Enter> is pressed.
+      Console.WriteLine("{0}---[ Press <Enter> to End the Application ]---",
+        Environment.NewLine);
+      Console.ReadLine();
+    }
+    catch (Exception ThrownException)
+    {
+      Console.Error.WriteLine(ThrownException.Message);
+      Console.Error.WriteLine("---[ Press <Enter> to End the Application ]---");
+      Console.Error.WriteLine(ThrownException.StackTrace);
+      Console.ReadLine();
+    }
+    finally
+    {
+      /* While there are not any ramifications of terminating without closing the cache
+       * and disconnecting from the distributed system, it is considered a best practice
+       * to do so.
+      */
+      try
+      {
+        Console.WriteLine("Closing the cache and disconnecting.{0}",
+          Environment.NewLine);
+      }
+      catch {/* Ignore any exceptions */}
+
+      try
+      {
+        /* Close the cache. This terminates the cache and releases all the resources. 
+         * Generally speaking, after a cache is closed, any further method calls on 
+         * it or region object will throw an exception.
+        */
+        MyCache.Close();
+      }
+      catch {/* Ignore any exceptions */}
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/BenchmarkHierarchicalClient/BenchmarkHierarchicalClient.csproj
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/BenchmarkHierarchicalClient/BenchmarkHierarchicalClient.csproj b/geode-client-native/examples/clicache/BenchmarkHierarchicalClient/BenchmarkHierarchicalClient.csproj
new file mode 100755
index 0000000..8ad95cf
--- /dev/null
+++ b/geode-client-native/examples/clicache/BenchmarkHierarchicalClient/BenchmarkHierarchicalClient.csproj
@@ -0,0 +1,87 @@
+\ufeff<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.50727</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{DAF42015-6FB4-4B35-A486-46BB68CB18CA}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>GemStone.GemFire.Cache.Examples</RootNamespace>
+    <AssemblyName>BenchmarkHierarchicalClient</AssemblyName>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <OldToolsVersion>2.0</OldToolsVersion>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <IntermediateOutputPath>$(OSBUILDDIR)\examples\clicache\Debug\BenchmarkHierarchicalClient\</IntermediateOutputPath>
+    <OutputPath>$(OSBUILDDIR)\examples\clicache\Debug\BenchmarkHierarchicalClient\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>    
+    <PlatformTarget>x86</PlatformTarget>
+    <NoWarn>618</NoWarn>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <IntermediateOutputPath>$(OSBUILDDIR)\examples\clicache\BenchmarkHierarchicalClient\</IntermediateOutputPath>
+    <OutputPath>$(OSBUILDDIR)\examples\clicache\BenchmarkHierarchicalClient\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x86</PlatformTarget>
+    <NoWarn>618</NoWarn>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <IntermediateOutputPath>$(OSBUILDDIR)\examples\clicache\Debug\BenchmarkHierarchicalClient\</IntermediateOutputPath>
+    <OutputPath>$(OSBUILDDIR)\examples\clicache\Debug\BenchmarkHierarchicalClient\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <NoWarn>618</NoWarn>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <IntermediateOutputPath>$(OSBUILDDIR)\examples\clicache\BenchmarkHierarchicalClient\</IntermediateOutputPath>
+    <OutputPath>$(OSBUILDDIR)\examples\clicache\BenchmarkHierarchicalClient\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <NoWarn>618</NoWarn>
+  </PropertyGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\..\vs_projects\gfclicache\gfclicache.vcproj">
+      <Project>{B274E3B1-6A09-4322-952B-8BDA712892CE}</Project>
+      <Name>gfclicache</Name>
+      <Aliases>global</Aliases>
+    </ProjectReference>
+    <Reference Include="System" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="BenchmarkHierarchicalClient.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/BenchmarkHierarchicalClient/BenchmarkHierarchicalClient.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/BenchmarkHierarchicalClient/BenchmarkHierarchicalClient.xml b/geode-client-native/examples/clicache/BenchmarkHierarchicalClient/BenchmarkHierarchicalClient.xml
new file mode 100644
index 0000000..4337549
--- /dev/null
+++ b/geode-client-native/examples/clicache/BenchmarkHierarchicalClient/BenchmarkHierarchicalClient.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" ?>
+<cache>
+  <region name="root">
+    <region-attributes scope="distributed-no-ack" endpoints="localhost:40404" />
+    <region name="exampleRegion">
+      <region-attributes
+        scope="distributed-no-ack"
+        endpoints="localhost:40404"
+        client-notification="true"/>
+    </region>
+  </region>
+</cache>
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/clicache/BenchmarkHierarchicalClient/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/clicache/BenchmarkHierarchicalClient/Properties/AssemblyInfo.cs b/geode-client-native/examples/clicache/BenchmarkHierarchicalClient/Properties/AssemblyInfo.cs
new file mode 100755
index 0000000..9a6a245
--- /dev/null
+++ b/geode-client-native/examples/clicache/BenchmarkHierarchicalClient/Properties/AssemblyInfo.cs
@@ -0,0 +1,33 @@
+\ufeffusing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("BenchmarkHierarchicalClient")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("GemStone Systems, Inc.")]
+[assembly: AssemblyProduct("BenchmarkHierarchicalClient")]
+[assembly: AssemblyCopyright("Copyright � GemStone Systems, Inc. 2008")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("bbbb604d-c503-4d0f-ab8a-346968dffd6a")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+[assembly: AssemblyVersion("9.0.0.0")]
+[assembly: AssemblyFileVersion("9.0.0.0")]



[18/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CacheableKeyM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CacheableKeyM.hpp b/geode-client-native/src/clicache/CacheableKeyM.hpp
new file mode 100644
index 0000000..9aa4c06
--- /dev/null
+++ b/geode-client-native/src/clicache/CacheableKeyM.hpp
@@ -0,0 +1,128 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/CacheableKey.hpp"
+#include "impl/NativeWrapper.hpp"
+#include "SerializableM.hpp"
+#include "ICacheableKey.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      /// <summary>
+      /// This class wraps the native C++ <c>gemfire::Serializable</c> objects
+      /// as managed <see cref="IGFSerializable" /> objects.
+      /// </summary>
+        [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class CacheableKey
+        : public GemStone::GemFire::Cache::Serializable, public GemStone::GemFire::Cache::ICacheableKey
+      {
+      public:
+        /// <summary>
+        /// Return the hashcode for this key.
+        /// It gets the hash code by calling the <c>hashcode()</c> function
+        /// of the underlying <c>gemfire::CacheableKey</c> object.
+        /// </summary>
+        virtual int32_t GetHashCode() override;
+
+        /// <summary>
+        /// Return true if this key matches other object. It invokes the '=='
+        /// operator of the underlying <c>gemfire::CacheableKey</c> object.
+        /// </summary>
+        virtual bool Equals(GemStone::GemFire::Cache::ICacheableKey^ other);
+
+        /// <summary>
+        /// Return true if this key matches other object.
+        /// It invokes the '==' operator if the underlying object is a
+        /// <c>gemfire::CacheableKey</c>, else returns
+        /// <c>System.Object.Equals()</c>
+        /// </summary>
+        virtual bool Equals(Object^ obj) override;
+
+        // Static conversion functions from primitive types.
+
+        /// <summary>
+        /// Implicit conversion operator from a boolean
+        /// to a <c>CacheableKey</c>.
+        /// </summary>
+        static operator GemStone::GemFire::Cache::CacheableKey^ (bool value);
+
+        /// <summary>
+        /// Implicit conversion operator from a byte
+        /// to a <c>CacheableKey</c>.
+        /// </summary>
+        static operator GemStone::GemFire::Cache::CacheableKey^ (Byte value);
+
+        /// <summary>
+        /// Implicit conversion operator from a double
+        /// to a <c>CacheableKey</c>.
+        /// </summary>
+        static operator GemStone::GemFire::Cache::CacheableKey^ (Double value);
+
+        /// <summary>
+        /// Implicit conversion operator from a float
+        /// to a <c>CacheableKey</c>.
+        /// </summary>
+        static operator GemStone::GemFire::Cache::CacheableKey^ (Single value);
+
+        /// <summary>
+        /// Implicit conversion operator from a 16-bit integer
+        /// to a <c>CacheableKey</c>.
+        /// </summary>
+        static operator GemStone::GemFire::Cache::CacheableKey^ (int16_t value);
+
+        /// <summary>
+        /// Implicit conversion operator from a character
+        /// to a <c>CacheableKey</c>.
+        /// </summary>
+        static operator GemStone::GemFire::Cache::CacheableKey^ (Char value);
+
+        /// <summary>
+        /// Implicit conversion operator from a 32-bit integer
+        /// to a <c>CacheableKey</c>.
+        /// </summary>
+        static operator GemStone::GemFire::Cache::CacheableKey^ (int32_t value);
+
+        /// <summary>
+        /// Implicit conversion operator from a 64-bit integer
+        /// to a <c>CacheableKey</c>.
+        /// </summary>
+        static operator GemStone::GemFire::Cache::CacheableKey^ (int64_t value);
+
+        /// <summary>
+        /// Implicit conversion operator from a string
+        /// to a <c>CacheableKey</c>.
+        /// </summary>
+        static operator GemStone::GemFire::Cache::CacheableKey^ (String^ value);
+
+      internal:
+        /// <summary>
+        /// Default constructor.
+        /// </summary>
+        inline CacheableKey()
+          : /*GemStone::GemFire::Cache::*/Serializable() { }
+
+        /// <summary>
+        /// Internal constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline CacheableKey(gemfire::Serializable* nativeptr)
+          : /*GemStone::GemFire::Cache::*/Serializable(nativeptr) { }
+      };
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CacheableObject.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CacheableObject.cpp b/geode-client-native/src/clicache/CacheableObject.cpp
new file mode 100644
index 0000000..5a89378
--- /dev/null
+++ b/geode-client-native/src/clicache/CacheableObject.cpp
@@ -0,0 +1,62 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "CacheableObject.hpp"
+#include "DataInputM.hpp"
+#include "DataOutputM.hpp"
+#include "impl/GFNullStream.hpp"
+#include "impl/GFDataInputStream.hpp"
+#include "impl/GFDataOutputStream.hpp"
+
+using namespace System;
+using namespace System::IO;
+using namespace System::Runtime::Serialization::Formatters::Binary;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      void CacheableObject::ToData(DataOutput^ output)
+      {
+        if(m_obj != nullptr)
+        {
+          GFDataOutputStream dos(output);
+          BinaryFormatter bf;
+          int64_t checkpoint = dos.Length;
+          bf.Serialize(%dos, m_obj);
+          m_objectSize = (uint32_t) (dos.Length - checkpoint);
+        }
+      }
+
+      IGFSerializable^ CacheableObject::FromData(DataInput^ input)
+      {
+        GFDataInputStream dis(input);
+        uint32_t checkpoint = dis.BytesRead;
+        BinaryFormatter bf;
+        m_obj = bf.Deserialize(%dis);
+        m_objectSize = dis.BytesRead - checkpoint;
+        return this;
+      }
+
+      uint32_t CacheableObject::ObjectSize::get()
+      { 
+        if (m_objectSize == 0) {
+          GFNullStream ns;
+          BinaryFormatter bf;
+          bf.Serialize(%ns, m_obj);
+
+          m_objectSize = (uint32_t)sizeof(CacheableObject^) + (uint32_t)ns.Length;
+        }
+        return m_objectSize;
+      }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CacheableObject.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CacheableObject.hpp b/geode-client-native/src/clicache/CacheableObject.hpp
new file mode 100644
index 0000000..6818da5
--- /dev/null
+++ b/geode-client-native/src/clicache/CacheableObject.hpp
@@ -0,0 +1,146 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "IGFSerializable.hpp"
+#include "GemFireClassIdsM.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      /// <summary>
+      /// An mutable generic <see cref="System.Object" /> wrapper that can
+      /// serve as a distributable value for caching.
+      /// </summary>
+      /// <remarks>
+      /// <para>
+      /// This class can serialize any class which has either the
+      /// [Serializable] attribute set or implements
+      /// <see cref="System.Runtime.Serialization.ISerializable" /> interface.
+      /// However, for better efficiency the latter should be avoided and the
+      /// user should implement <see cref="IGFSerializable" /> instead.
+      /// </para><para>
+      /// The user must keep in mind that the rules that apply to runtime
+      /// serialization would be the rules that apply to this class. For
+      /// the serialization will be carried out by serializing all the
+      /// members (public/private/protected) of the class. Each of the
+      /// contained classes should also have either the [Serializable]
+      /// attribute set or implement <c>ISerializable</c> interface.
+      /// </para>
+      /// </remarks>
+        [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class CacheableObject
+        : public IGFSerializable
+      {
+      public:
+        /// <summary>
+        /// Static function to create a new instance from the given object.
+        /// </summary>
+        /// <remarks>
+        /// If the given object is null then this method returns null.
+        /// </remarks>
+        inline static CacheableObject^ Create(Object^ value)
+        {
+          return (value != nullptr ? gcnew CacheableObject(value) :
+            nullptr);
+        }
+
+        /// <summary>
+        /// Serializes this <see cref="System.Object" /> using
+        /// <see cref="System.Runtime.Serialization.Formatters.Binary.BinaryFormatter" /> class.
+        /// </summary>
+        /// <param name="output">
+        /// the DataOutput object to use for serializing the object
+        /// </param>
+        virtual void ToData(DataOutput^ output);
+
+        /// <summary>
+        /// Deserializes the <see cref="System.Object" /> using
+        /// <see cref="System.Runtime.Serialization.Formatters.Binary.BinaryFormatter" /> class.
+        /// </summary>
+        /// <param name="input">
+        /// the DataInput stream to use for reading the object data
+        /// </param>
+        /// <returns>the deserialized object</returns>
+        virtual IGFSerializable^ FromData(DataInput^ input);
+
+        /// <summary>
+        /// return the size of this object in bytes
+        /// </summary>
+        virtual property uint32_t ObjectSize
+        {
+          virtual uint32_t get();
+        }
+
+        /// <summary>
+        /// Returns the classId of the instance being serialized.
+        /// This is used by deserialization to determine what instance
+        /// type to create and deserialize into.
+        /// </summary>
+        /// <returns>the classId</returns>
+        virtual property uint32_t ClassId
+        {
+          inline virtual uint32_t get()
+          {
+            return GemFireClassIds::CacheableManagedObject;
+          }
+        }
+
+        /// <summary>
+        /// Gets the object value.
+        /// </summary>
+        /// <remarks>
+        /// The user can modify the object and the changes shall be reflected
+        /// immediately in the local cache. For this change to be propagate to
+        /// other members of the distributed system, the object needs to be
+        /// put into the cache.
+        /// </remarks>
+        property Object^ Value
+        {
+          inline Object^ get()
+          {
+            return m_obj;
+          }
+        }
+
+        virtual String^ ToString() override
+        {
+          return (m_obj == nullptr ? nullptr : m_obj->ToString());
+        }
+
+        /// <summary>
+        /// Factory function to register this class.
+        /// </summary>
+        static IGFSerializable^ CreateDeserializable()
+        {
+          return gcnew CacheableObject(nullptr);
+        }
+
+      internal:
+        /// <summary>
+        /// Allocates a new instance from the given object.
+        /// </summary>
+        inline CacheableObject(Object^ value)
+          : m_obj(value), m_objectSize(0) { }
+
+        
+
+      private:
+        Object^ m_obj;
+        uint32_t m_objectSize;
+      };
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CacheableObjectArrayM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CacheableObjectArrayM.cpp b/geode-client-native/src/clicache/CacheableObjectArrayM.cpp
new file mode 100644
index 0000000..5a05dc8
--- /dev/null
+++ b/geode-client-native/src/clicache/CacheableObjectArrayM.cpp
@@ -0,0 +1,107 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "cppcache/impl/GemfireTypeIdsImpl.hpp"
+#include "CacheableObjectArrayM.hpp"
+#include "DataOutputM.hpp"
+#include "DataInputM.hpp"
+
+
+using namespace System;
+using namespace System::Collections::Generic;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      // Region: IGFSerializable Members
+
+      void CacheableObjectArray::ToData(DataOutput^ output)
+      {
+        output->WriteArrayLen((int32_t)Count);
+        output->WriteByte((int8_t)gemfire::GemfireTypeIdsImpl::Class);
+        output->WriteByte((int8_t)gemfire::GemfireTypeIds::CacheableASCIIString);
+        output->WriteUTF("java.lang.Object");
+
+        for each (IGFSerializable^ obj in this) {
+          output->WriteObject(obj);
+        }
+
+        /*_GF_MG_EXCEPTION_TRY
+
+          gemfire::DataOutput& nativeOutput = *(output->_NativePtr);
+          nativeOutput.writeArrayLen((int32_t)Count);
+          nativeOutput.write((int8_t)gemfire::GemfireTypeIdsImpl::Class);
+          nativeOutput.write((int8_t)gemfire::GemfireTypeIds::CacheableASCIIString);
+          nativeOutput.writeASCII("java.lang.Object");
+          for each (IGFSerializable^ obj in this) {
+            gemfire::SerializablePtr objPtr(SafeMSerializableConvert(obj));
+            nativeOutput.writeObject(objPtr);
+          }
+
+        _GF_MG_EXCEPTION_CATCH_ALL*/
+      }
+
+      IGFSerializable^ CacheableObjectArray::FromData(DataInput^ input)
+      {
+        int len = input->ReadArrayLen();
+        if (len >= 0) {
+          //int8_t typeCode;
+          input->ReadByte(); // ignore CLASS typeid
+          input->ReadByte(); // ignore string typeid
+          unsigned short classLen;
+          classLen = input->ReadInt16();
+          input->AdvanceCursor(classLen);
+          //nativeInput.readInt(&classLen);
+          //nativeInput.advanceCursor(classLen);
+        }
+        for (int32_t index = 0; index < len; ++index) {
+          Add(input->ReadObject());
+        }
+        return this;
+        /*_GF_MG_EXCEPTION_TRY
+
+          gemfire::DataInput& nativeInput = *(input->_NativePtr);
+          int32_t len;
+          nativeInput.readArrayLen(&len);
+          if (len >= 0) {
+            int8_t typeCode;
+            nativeInput.read(&typeCode); // ignore CLASS typeid
+            nativeInput.read(&typeCode); // ignore string typeid
+            uint16_t classLen;
+            nativeInput.readInt(&classLen);
+            nativeInput.advanceCursor(classLen);
+          }
+          gemfire::CacheablePtr value;
+          for (int32_t index = 0; index < len; ++index) {
+            nativeInput.readObject(value);
+            Add(SafeUMSerializableConvert(value.ptr()));
+          }
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+        return this;*/
+      }
+
+      uint32_t CacheableObjectArray::ObjectSize::get()
+      { 
+        uint32_t size = static_cast<uint32_t> (sizeof(CacheableObjectArray^));
+        for each (IGFSerializable^ val in this) {
+          if (val != nullptr) {
+            size += val->ObjectSize;
+          }
+        }
+        return size;
+      }
+
+      // End Region: IGFSerializable Members
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CacheableObjectArrayM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CacheableObjectArrayM.hpp b/geode-client-native/src/clicache/CacheableObjectArrayM.hpp
new file mode 100644
index 0000000..e913dc7
--- /dev/null
+++ b/geode-client-native/src/clicache/CacheableObjectArrayM.hpp
@@ -0,0 +1,145 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "IGFSerializable.hpp"
+#include "GemFireClassIdsM.hpp"
+
+
+using namespace System;
+using namespace System::Collections::Generic;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      /// <summary>
+      /// A mutable <c>IGFSerializable</c> object array wrapper that can serve
+      /// as a distributable object for caching. Though this class provides
+      /// compatibility with java Object[] serialization, it provides the
+      /// semantics of .NET generic <c>List</c> class.
+      /// </summary>
+        [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class CacheableObjectArray
+        : public List<IGFSerializable^>, public IGFSerializable
+      {
+      public:
+        /// <summary>
+        /// Allocates a new empty instance.
+        /// </summary>
+        inline CacheableObjectArray()
+          : List<IGFSerializable^>()
+        { }
+
+        /// <summary>
+        /// Allocates a new instance copying from the given collection.
+        /// </summary>
+        /// <param name="collection">
+        /// The collection whose elements are copied to this list.
+        /// </param>
+        inline CacheableObjectArray(System::Collections::Generic::IEnumerable<IGFSerializable^>^ collection)
+          : List<IGFSerializable^>(collection)
+        { }
+
+        /// <summary>
+        /// Allocates a new empty instance with given initial size.
+        /// </summary>
+        /// <param name="capacity">
+        /// The initial capacity of the vector.
+        /// </param>
+        inline CacheableObjectArray(int32_t capacity)
+          : List<IGFSerializable^>(capacity)
+        { }
+
+        /// <summary>
+        /// Static function to create a new empty instance.
+        /// </summary>
+        inline static CacheableObjectArray^ Create()
+        {
+          return gcnew CacheableObjectArray();
+        }
+
+        /// <summary>
+        /// Static function to create a new instance copying from the
+        /// given collection.
+        /// </summary>
+        inline static CacheableObjectArray^ Create(
+          System::Collections::Generic::IEnumerable<IGFSerializable^>^ collection)
+        {
+          return gcnew CacheableObjectArray(collection);
+        }
+
+        /// <summary>
+        /// Static function to create a new instance with given initial size.
+        /// </summary>
+        inline static CacheableObjectArray^ Create(int32_t capacity)
+        {
+          return gcnew CacheableObjectArray(capacity);
+        }
+
+        // Region: IGFSerializable Members
+
+        /// <summary>
+        /// Serializes this object.
+        /// </summary>
+        /// <param name="output">
+        /// the DataOutput object to use for serializing the object
+        /// </param>
+        virtual void ToData(DataOutput^ output);
+
+        /// <summary>
+        /// Deserialize this object, typical implementation should return
+        /// the 'this' pointer.
+        /// </summary>
+        /// <param name="input">
+        /// the DataInput stream to use for reading the object data
+        /// </param>
+        /// <returns>the deserialized object</returns>
+        virtual IGFSerializable^ FromData(DataInput^ input);
+
+        /// <summary>
+        /// return the size of this object in bytes
+        /// </summary>
+        virtual property uint32_t ObjectSize
+        {
+          virtual uint32_t get();
+        }
+
+        /// <summary>
+        /// Returns the classId of the instance being serialized.
+        /// This is used by deserialization to determine what instance
+        /// type to create and deserialize into.
+        /// </summary>
+        /// <returns>the classId</returns>
+        virtual property uint32_t ClassId
+        {
+          virtual uint32_t get()
+          {
+            return GemFireClassIds::CacheableObjectArray;
+          }
+        }
+
+        // End Region: IGFSerializable Members
+
+        /// <summary>
+        /// Factory function to register this class.
+        /// </summary>
+        static IGFSerializable^ CreateDeserializable()
+        {
+          return gcnew CacheableObjectArray();
+        }
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CacheableObjectXml.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CacheableObjectXml.cpp b/geode-client-native/src/clicache/CacheableObjectXml.cpp
new file mode 100644
index 0000000..5037b58
--- /dev/null
+++ b/geode-client-native/src/clicache/CacheableObjectXml.cpp
@@ -0,0 +1,90 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "CacheableObjectXml.hpp"
+#include "DataInputM.hpp"
+#include "DataOutputM.hpp"
+#include "LogM.hpp"
+#include "impl/GFNullStream.hpp"
+#include "impl/GFDataInputStream.hpp"
+#include "impl/GFDataOutputStream.hpp"
+
+using namespace System;
+using namespace System::IO;
+using namespace System::Xml::Serialization;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      void CacheableObjectXml::ToData(DataOutput^ output)
+      {
+        if (m_obj == nullptr) {
+          output->WriteByte((Byte)1);
+        }
+        else
+        {
+          output->WriteByte((Byte)0);
+          Type^ objType = m_obj->GetType();
+
+          output->WriteUTF(objType->AssemblyQualifiedName);
+
+          XmlSerializer xs(objType);
+          GFDataOutputStream dos(output);
+          int64_t checkpoint = dos.Length;
+          xs.Serialize(%dos, m_obj);
+          m_objectSize = (uint32_t) (dos.Length - checkpoint);
+        }
+      }
+
+      IGFSerializable^ CacheableObjectXml::FromData(DataInput^ input)
+      {
+        Byte isNull = input->ReadByte();
+        if (isNull) {
+          m_obj = nullptr;
+        }
+        else {
+          String^ typeName = input->ReadUTF();
+          Type^ objType = Type::GetType(typeName);
+          if (objType == nullptr)
+          {
+            Log::Error("CacheableObjectXml.FromData(): Cannot find type '" +
+              typeName + "'.");
+            m_obj = nullptr;
+          }
+          else {
+            GFDataInputStream dis(input);
+            XmlSerializer xs(objType);
+            uint32_t checkpoint = dis.BytesRead;
+            m_obj = xs.Deserialize(%dis);
+            m_objectSize = dis.BytesRead - checkpoint;
+          }
+        }
+        return this;
+      }
+
+      uint32_t CacheableObjectXml::ObjectSize::get()
+      { 
+        if (m_objectSize == 0) {
+          if (m_obj != nullptr) {
+            Type^ objType = m_obj->GetType();
+            XmlSerializer xs(objType);
+            GFNullStream ns;
+            xs.Serialize(%ns, m_obj);
+
+            m_objectSize = (uint32_t)sizeof(CacheableObjectXml^) + (uint32_t)ns.Length;
+          }
+        }
+        return m_objectSize;
+      }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CacheableObjectXml.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CacheableObjectXml.hpp b/geode-client-native/src/clicache/CacheableObjectXml.hpp
new file mode 100644
index 0000000..6273e22
--- /dev/null
+++ b/geode-client-native/src/clicache/CacheableObjectXml.hpp
@@ -0,0 +1,147 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "IGFSerializable.hpp"
+#include "GemFireClassIdsM.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      /// <summary>
+      /// A mutable generic <see cref="System.Object" /> wrapper that can
+      /// serve as a distributable value for caching.
+      /// </summary>
+      /// <remarks>
+      /// <para>
+      /// This class can contain any object and uses the
+      /// <see cref="System.Xml.Serialization.XmlSerializer" /> to
+      /// serialize and deserialize the object. So the user must use the
+      /// <c>XmlSerializer</c> attributes to control the serialization/deserialization
+      /// of the object (or implement the <see cref="System.Xml.Serialization.IXmlSerializable" />)
+      /// to change the serialization/deserialization. However, the latter should
+      /// be avoided for efficiency reasons and the user should implement
+      /// <see cref="IGFSerializable" /> instead.
+      /// </para><para>
+      /// The user must keep in mind that the rules that apply to <c>XmlSerializer</c>
+      /// would be the rules that apply to this class. For instance the user
+      /// cannot pass objects of class implementing or containing
+      /// <see cref="System.Collections.IDictionary" /> class, must use
+      /// <see cref="System.Xml.Serialization.XmlIncludeAttribute" /> to
+      /// mark user-defined types etc.
+      /// </para>
+      /// </remarks>
+        [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class CacheableObjectXml
+        : public IGFSerializable
+      {
+      public:
+        /// <summary>
+        /// Static function to create a new instance from the given object.
+        /// </summary>
+        /// <remarks>
+        /// If the given object is null then this method returns null.
+        /// </remarks>
+        inline static CacheableObjectXml^ Create(Object^ value)
+        {
+          return (value != nullptr ? gcnew CacheableObjectXml(value) :
+            nullptr);
+        }
+
+        /// <summary>
+        /// Serializes this <see cref="System.Object" /> using
+        /// <see cref="System.Xml.Serialization.XmlSerializer" /> class.
+        /// </summary>
+        /// <param name="output">
+        /// the DataOutput object to use for serializing the object
+        /// </param>
+        virtual void ToData(DataOutput^ output);
+
+        /// <summary>
+        /// Deserializes the <see cref="System.Object" /> using
+        /// <see cref="System.Xml.Serialization.XmlSerializer" /> class.
+        /// </summary>
+        /// <param name="input">
+        /// the DataInput stream to use for reading the object data
+        /// </param>
+        /// <returns>the deserialized object</returns>
+        virtual IGFSerializable^ FromData(DataInput^ input);
+
+        /// <summary>
+        /// return the size of this object in bytes
+        /// </summary>
+        virtual property uint32_t ObjectSize
+        {
+          virtual uint32_t get();
+        }
+
+        /// <summary>
+        /// Returns the classId of the instance being serialized.
+        /// This is used by deserialization to determine what instance
+        /// type to create and deserialize into.
+        /// </summary>
+        /// <returns>the classId</returns>
+        virtual property uint32_t ClassId
+        {
+          inline virtual uint32_t get()
+          {
+            return GemFireClassIds::CacheableManagedObjectXml;
+          }
+        }
+
+        /// <summary>
+        /// Gets the object value.
+        /// </summary>
+        /// <remarks>
+        /// The user can modify the object and the changes shall be reflected
+        /// immediately in the local cache. For this change to be propagate to
+        /// other members of the distributed system, the object needs to be
+        /// put into the cache.
+        /// </remarks>
+        property Object^ Value
+        {
+          inline Object^ get()
+          {
+            return m_obj;
+          }
+        }
+
+        virtual String^ ToString() override
+        {
+          return (m_obj == nullptr ? nullptr : m_obj->ToString());
+        }
+
+        /// <summary>
+        /// Factory function to register this class.
+        /// </summary>
+        static IGFSerializable^ CreateDeserializable()
+        {
+          return gcnew CacheableObjectXml(nullptr);
+        }
+
+      internal:
+        /// <summary>
+        /// Allocates a new instance from the given object.
+        /// </summary>
+        inline CacheableObjectXml(Object^ value)
+          : m_obj(value), m_objectSize(0) { }
+
+      private:
+        Object^ m_obj;
+        uint32_t m_objectSize;
+      };
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CacheableStackM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CacheableStackM.cpp b/geode-client-native/src/clicache/CacheableStackM.cpp
new file mode 100644
index 0000000..2edacbd
--- /dev/null
+++ b/geode-client-native/src/clicache/CacheableStackM.cpp
@@ -0,0 +1,67 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "CacheableStackM.hpp"
+#include "DataOutputM.hpp"
+#include "DataInputM.hpp"
+#include "cppcache/impl/GemfireTypeIdsImpl.hpp"
+#include "GemFireClassIdsM.hpp"
+
+using namespace System;
+using namespace System::Collections::Generic;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      // Region: IGFSerializable Members
+
+      void CacheableStack::ToData(DataOutput^ output)
+      {
+        output->WriteArrayLen((int32_t)Count);
+        for each (IGFSerializable^ obj in this) {
+          output->WriteObject(obj);
+        }
+      }
+
+      IGFSerializable^ CacheableStack::FromData(DataInput^ input)
+      {
+        int len = input->ReadArrayLen();
+        if (len > 0)
+        {
+          for( int i = 0; i < len; i++)
+          {
+            Push(input->ReadObject());
+          }
+        }
+        return this;
+      }
+
+      uint32_t CacheableStack::ClassId::get()
+      {
+        return GemFireClassIds::CacheableStack;
+      }
+
+      uint32_t CacheableStack::ObjectSize::get()
+      { 
+        uint32_t size = static_cast<uint32_t> (sizeof(CacheableStack^));
+        for each (IGFSerializable^ val in this) {
+          if (val != nullptr) {
+            size += val->ObjectSize;
+          }
+        }
+        return size;
+      }
+
+      // End Region: IGFSerializable Members
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CacheableStackM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CacheableStackM.hpp b/geode-client-native/src/clicache/CacheableStackM.hpp
new file mode 100644
index 0000000..6d60aff
--- /dev/null
+++ b/geode-client-native/src/clicache/CacheableStackM.hpp
@@ -0,0 +1,137 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "IGFSerializable.hpp"
+
+
+using namespace System;
+using namespace System::Collections::Generic;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      /// <summary>
+      /// A mutable <c>IGFSerializable</c> vector wrapper that can serve as
+      /// a distributable object for caching.
+      /// </summary>
+        [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class CacheableStack
+        : public Stack<IGFSerializable^>, public IGFSerializable
+      {
+      public:
+        /// <summary>
+        /// Allocates a new empty instance.
+        /// </summary>
+        inline CacheableStack()
+          : Stack<IGFSerializable^>()
+        { }
+
+        /// <summary>
+        /// Allocates a new instance copying from the given collection.
+        /// </summary>
+        /// <param name="collection">
+        /// The collection whose elements are copied to this list.
+        /// </param>
+        inline CacheableStack(IEnumerable<IGFSerializable^>^ collection)
+          : Stack<IGFSerializable^>(collection)
+        { }
+
+        /// <summary>
+        /// Allocates a new empty instance with given initial size.
+        /// </summary>
+        /// <param name="capacity">
+        /// The initial capacity of the vector.
+        /// </param>
+        inline CacheableStack(int32_t capacity)
+          : Stack<IGFSerializable^>(capacity)
+        { }
+
+        /// <summary>
+        /// Static function to create a new empty instance.
+        /// </summary>
+        inline static CacheableStack^ Create()
+        {
+          return gcnew CacheableStack();
+        }
+
+        /// <summary>
+        /// Static function to create a new instance copying from the
+        /// given collection.
+        /// </summary>
+        inline static CacheableStack^ Create(
+          IEnumerable<IGFSerializable^>^ collection)
+        {
+          return gcnew CacheableStack(collection);
+        }
+
+        /// <summary>
+        /// Static function to create a new instance with given initial size.
+        /// </summary>
+        inline static CacheableStack^ Create(int32_t capacity)
+        {
+          return gcnew CacheableStack(capacity);
+        }
+
+        // Region: IGFSerializable Members
+
+        /// <summary>
+        /// Serializes this object.
+        /// </summary>
+        /// <param name="output">
+        /// the DataOutput object to use for serializing the object
+        /// </param>
+        virtual void ToData(DataOutput^ output);
+
+        /// <summary>
+        /// Deserialize this object, typical implementation should return
+        /// the 'this' pointer.
+        /// </summary>
+        /// <param name="input">
+        /// the DataInput stream to use for reading the object data
+        /// </param>
+        /// <returns>the deserialized object</returns>
+        virtual IGFSerializable^ FromData(DataInput^ input);
+
+        /// <summary>
+        /// return the size of this object in bytes
+        /// </summary>
+        virtual property uint32_t ObjectSize
+        {
+          virtual uint32_t get();
+        }
+
+        /// <summary>
+        /// Returns the classId of the instance being serialized.
+        /// This is used by deserialization to determine what instance
+        /// type to create and deserialize into.
+        /// </summary>
+        /// <returns>the classId</returns>
+        virtual property uint32_t ClassId
+        {
+          virtual uint32_t get();
+        }
+
+        // End Region: IGFSerializable Members
+
+        /// <summary>
+        /// Factory function to register this class.
+        /// </summary>
+        static IGFSerializable^ CreateDeserializable()
+        {
+          return gcnew CacheableStack();
+        }
+      };
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CacheableStringArrayM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CacheableStringArrayM.cpp b/geode-client-native/src/clicache/CacheableStringArrayM.cpp
new file mode 100644
index 0000000..c98b88e
--- /dev/null
+++ b/geode-client-native/src/clicache/CacheableStringArrayM.cpp
@@ -0,0 +1,101 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "CacheableStringArrayM.hpp"
+#include "CacheableStringM.hpp"
+#include "cppcache/DataInput.hpp"
+#include "cppcache/DataOutput.hpp"
+#include "GemFireClassIdsM.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      CacheableStringArray::CacheableStringArray(array<String^>^ strings)
+        : GemStone::GemFire::Cache::Serializable()
+      {
+        if (strings != nullptr) 
+        {
+          m_value = gcnew array<CacheableString^>(strings->Length);
+
+          for( int i = 0; i< strings->Length; i++)
+          {
+            m_value[i] = CacheableString::Create(strings[i]);
+          }
+        }
+        else
+          m_value = nullptr;
+      }
+
+      CacheableStringArray::CacheableStringArray(
+        array<CacheableString^>^ strings) : GemStone::GemFire::Cache::Serializable()
+      {
+        m_value = strings;
+      }
+
+      array<CacheableString^>^ CacheableStringArray::GetValues()
+      {
+        return m_value;
+      }
+
+      String^ CacheableStringArray::default::get(int32_t index)
+      {
+        return m_value[index]->Value;
+      }
+
+      
+      void CacheableStringArray::ToData(DataOutput^ output) 
+      {
+        if (m_value == nullptr)
+        {
+          output->WriteArrayLen(-1);
+        }
+        else
+        {
+          output->WriteArrayLen(m_value->Length);
+          if (m_value->Length > 0)
+          {
+            for(int i = 0; i < m_value->Length; i++)
+            {
+              output->WriteObject(m_value[i]);
+            }
+          }
+        }
+      }
+
+      IGFSerializable^ CacheableStringArray::FromData(DataInput^ input)
+      {
+        int len = input->ReadArrayLen();
+        if ( len == -1)
+        {
+          m_value = nullptr;
+          return nullptr;
+        }
+        else 
+        {
+          m_value = gcnew array<CacheableString^>(len);
+          if (len > 0)
+          {
+            for( int i = 0; i < len; i++)
+            {
+              m_value[i] = dynamic_cast<CacheableString^>(input->ReadObject());
+            }
+          }
+          return this;
+        }
+      }
+      
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CacheableStringArrayM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CacheableStringArrayM.hpp b/geode-client-native/src/clicache/CacheableStringArrayM.hpp
new file mode 100644
index 0000000..7b266a9
--- /dev/null
+++ b/geode-client-native/src/clicache/CacheableStringArrayM.hpp
@@ -0,0 +1,205 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/CacheableBuiltins.hpp"
+#include "SerializableM.hpp"
+#include "CacheableStringM.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      ref class CacheableString;
+
+      /// <summary>
+      /// An immutable wrapper for array of strings that can serve as
+      /// a distributable object for caching.
+      /// </summary>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class CacheableStringArray
+        : public Serializable
+      {
+      public:
+        /// <summary>
+        /// Static function to create a new instance copying from the given
+        /// string array.
+        /// </summary>
+        /// <remarks>
+        /// If the given array of strings is null or of zero-length then
+        /// this method returns null.
+        /// </remarks>
+        /// <exception cref="IllegalArgumentException">
+        /// If the array contains a string greater than or equal 64K in length.
+        /// </exception>
+        inline static CacheableStringArray^ Create(array<String^>^ strings)
+        {
+          return (strings != nullptr && strings->Length > 0 ?
+            gcnew CacheableStringArray(strings) : nullptr);
+        }
+
+        /// <summary>
+        /// Static function to create a new instance assigning the given
+        /// <c>CacheableString</c> array.
+        /// </summary>
+        /// <remarks>
+        /// If the given array of strings is null or of zero-length then
+        /// this method returns null.
+        /// </remarks>
+        /// <exception cref="IllegalArgumentException">
+        /// If the array contains a string greater than or equal 64K in length.
+        /// </exception>
+        inline static CacheableStringArray^ Create(
+          array<CacheableString^>^ strings)
+        {
+          return (strings != nullptr && strings->Length > 0 ?
+            gcnew CacheableStringArray(strings) : nullptr);
+        }
+
+        
+         /// <summary>
+        /// Serializes this managed object.
+        /// </summary>
+        /// <param name="output">
+        /// the DataOutput object to use for serializing the object
+        /// </param>
+        virtual void ToData(DataOutput^ output) override;
+
+        /// <summary>
+        /// Deserializes the managed object -- returns an instance of the
+        /// <c>IGFSerializable</c> class.
+        /// </summary>
+        /// <param name="input">
+        /// the DataInput stream to use for reading the object data
+        /// </param>
+        /// <returns>the deserialized object</returns>
+        virtual IGFSerializable^ FromData(DataInput^ input) override;
+
+
+        /// <summary>
+        /// Returns the classId of the instance being serialized.
+        /// This is used by deserialization to determine what instance
+        /// type to create and deserialize into.
+        /// </summary>
+        /// <returns>the classId</returns>
+        virtual property uint32_t ClassId
+        {
+          virtual uint32_t get() override
+          {
+            return GemFireClassIds::CacheableStringArray;
+          }
+        }
+
+        /// <summary>
+        /// return the size of this object in bytes
+        /// </summary>
+        virtual property uint32_t ObjectSize
+        {
+          virtual uint32_t get() override
+          {
+            int size = 0; 
+            for( int i = 0; i < m_value->Length; i++ )
+            {
+              size += m_value[i]->ObjectSize;
+            }
+            return size + (int) sizeof(this);
+          }
+
+        }
+        
+
+        /// <summary>
+        /// Returns a copy of the underlying array of strings.
+        /// </summary>
+        array<CacheableString^>^ GetValues();
+
+        /// <summary>
+        /// Returns a copy of the underlying string at the given index.
+        /// </summary>
+        property String^ GFINDEXER(int32_t)
+        {
+          String^ get(int32_t index);
+        }
+
+        /// <summary>
+        /// Gets the length of the array.
+        /// </summary>
+        property int32_t Length
+        {
+          inline int32_t get()
+          {
+            return m_value->Length;
+          }
+        }
+
+        virtual String^ ToString() override
+        {
+          return m_value->ToString();
+        }
+
+        /// <summary>
+        /// Factory function to register this class.
+        /// </summary>
+        static IGFSerializable^ CreateDeserializable()
+        {
+          return gcnew CacheableStringArray();
+        }
+
+      internal:
+        /// <summary>
+        /// Factory function to register wrapper
+        /// </summary>
+        static IGFSerializable^ Create(gemfire::Serializable* obj)
+        {
+          return (obj != nullptr ?
+            gcnew CacheableStringArray(obj) : nullptr);
+        }
+
+      private:
+        array<CacheableString^>^ m_value;
+        /// <summary>
+        /// Allocates a new instance copying from the given string array.
+        /// </summary>
+        /// <exception cref="IllegalArgumentException">
+        /// If the array contains a string greater than or equal 64K in length.
+        /// </exception>
+        CacheableStringArray(array<String^>^ strings);
+
+        /// <summary>
+        /// Allocates a new instance assigning the given
+        /// <c>CacheableString</c> array.
+        /// </summary>
+        /// <exception cref="IllegalArgumentException">
+        /// If the array contains a string greater than or equal 64K in length.
+        /// </exception>
+        CacheableStringArray(array<CacheableString^>^ strings);
+
+        inline CacheableStringArray()
+          : Serializable() 
+        { 
+          gemfire::Serializable* sp = gemfire::CacheableStringArray::createDeserializable();
+          SetSP(sp);
+        }
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline CacheableStringArray(gemfire::Serializable* nativeptr)
+          : Serializable(nativeptr) { }
+      };
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CacheableStringM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CacheableStringM.cpp b/geode-client-native/src/clicache/CacheableStringM.cpp
new file mode 100644
index 0000000..8417bd0
--- /dev/null
+++ b/geode-client-native/src/clicache/CacheableStringM.cpp
@@ -0,0 +1,229 @@
+/*=========================================================================
+* Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+*=========================================================================
+*/
+
+#include "gf_includes.hpp"
+#include "CacheableStringM.hpp"
+#include "DataInputM.hpp"
+#include "DataOutputM.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      void CacheableString::ToData(DataOutput^ output)
+      {
+        if (m_type == GemFire::Cache::GemFireClassIds::CacheableASCIIString ||
+          m_type == GemFire::Cache::GemFireClassIds::CacheableString)
+        {
+          output->WriteUTF(m_value);
+        }
+        else if (m_type == GemFire::Cache::GemFireClassIds::CacheableASCIIStringHuge)
+        {
+          output->WriteASCIIHuge(m_value);
+        }
+        else
+        {
+          output->WriteUTFHuge(m_value);
+        }
+      }
+
+      IGFSerializable^ CacheableString::FromData(DataInput^ input)
+      {
+        if (m_type == GemFire::Cache::GemFireClassIds::CacheableASCIIString ||
+          m_type == GemFire::Cache::GemFireClassIds::CacheableString)
+        {
+          m_value = input->ReadUTF();
+        }
+        else if (m_type == GemFire::Cache::GemFireClassIds::CacheableASCIIStringHuge)
+        {
+          m_value = input->ReadASCIIHuge();
+        }
+        else 
+        {
+          m_value = input->ReadUTFHuge();
+        }
+
+        return this;
+      }
+
+      /*
+      void CacheableString::ToData(DataOutput^ output)
+      {
+        if (m_type == GemFire::Cache::GemFireClassIds::CacheableASCIIString ||
+            m_type == GemFire::Cache::GemFireClassIds::CacheableString)
+        {
+          output->WriteUTF(m_value);
+        }
+        else if (m_type == GemFire::Cache::GemFireClassIds::CacheableASCIIStringHuge)
+        {
+          output->WriteASCIIHuge(m_value);
+        }
+        else
+        {
+          output->WriteUTFHuge(m_value);
+        }
+      }
+
+      IGFSerializable^ CacheableString::FromData(DataInput^ input) 
+      {
+        if (m_type == GemFire::Cache::GemFireClassIds::CacheableASCIIString ||
+            m_type == GemFire::Cache::GemFireClassIds::CacheableString)
+        {
+          m_value = input->ReadUTF();
+        }
+        else if (m_type == GemFire::Cache::GemFireClassIds::CacheableASCIIStringHuge)
+        {
+          m_value = input->ReadASCIIHuge();
+        }
+        else 
+        {
+          m_value = input->ReadUTFHuge();
+        }
+
+        return this;
+      }
+      */
+
+      inline void CacheableString::GetCacheableString(String^ value,
+        gemfire::CacheableStringPtr& cStr)
+      {
+        int32_t len;
+        if (value != nullptr && (len = value->Length) > 0) {
+          pin_ptr<const wchar_t> pin_value = PtrToStringChars(value);
+          cStr = gemfire::CacheableString::create(pin_value, len);
+        }
+        else {
+          cStr = (gemfire::CacheableString*)
+            gemfire::CacheableString::createDeserializable();
+        }
+      }
+
+      inline void CacheableString::GetCacheableString(array<Char>^ value,
+        gemfire::CacheableStringPtr& cStr)
+      {
+        int32_t len;
+        if (value != nullptr && (len = value->Length) > 0) {
+          pin_ptr<const Char> pin_value = &value[0];
+          cStr = gemfire::CacheableString::create(
+            (const wchar_t*)pin_value, len);
+        }
+        else {
+          cStr = (gemfire::CacheableString*)
+            gemfire::CacheableString::createDeserializable();
+        }
+      }
+
+      CacheableString::CacheableString(String^ value)
+        : CacheableKey()
+      {
+        if (value == nullptr ) {
+          throw gcnew IllegalArgumentException("CacheableString: null or " +
+            "zero-length string provided to the constructor.");
+        }
+        m_value = value;
+
+        this->SetStringType();
+      }
+
+      CacheableString::CacheableString(array<Char>^ value)
+        : CacheableKey()
+      {
+        if (value == nullptr ) {
+          throw gcnew IllegalArgumentException("CacheableString: null or " +
+            "zero-length character array provided to the constructor.");
+        }
+        m_value = gcnew String(value);
+       
+        this->SetStringType();
+      }
+
+      CacheableString::CacheableString(String^ value, bool noParamCheck)
+        : CacheableKey()
+      {
+        m_value = value;
+        this->SetStringType();
+      }
+
+      CacheableString::CacheableString(array<Char>^ value, bool noParamCheck)
+        : CacheableKey()
+      {
+        m_value = gcnew String(value);
+        this->SetStringType();
+      }
+
+      bool CacheableString::Equals(GemStone::GemFire::Cache::ICacheableKey^ other)
+      {
+        if (other == nullptr || other->ClassId != ClassId) {
+          return false;
+        }
+
+        CacheableString^ otherStr =
+          dynamic_cast<CacheableString^>(other);
+
+        if (otherStr == nullptr)
+          return false;
+
+        return m_value->Equals(otherStr->Value);//TODO::Hitesh
+      }
+
+      bool CacheableString::Equals(Object^ obj)
+      {
+        CacheableString^ otherStr =
+          dynamic_cast<CacheableString^>(obj);
+
+        if (otherStr != nullptr) {
+          return m_value->Equals(otherStr->Value);
+        }
+        return false;
+      }
+
+      int32_t CacheableString::GetHashCode()
+      {
+        if (String::IsNullOrEmpty(m_value)) {
+          return 0;
+        }
+        //TODO:hitesh need to need java hashcode
+        //return m_value->GetHashCode();
+        if(m_hashcode == 0) 
+        {
+          int32_t prime = 31;
+          int32_t localHash = 0;
+          for (int32_t i = 0; i < m_value->Length; i++) 
+            localHash = prime*localHash +  m_value[i];
+          m_hashcode = localHash;
+        }
+        return m_hashcode;
+      }
+
+      void CacheableString::SetStringType()
+      {
+        int len = DataOutput::getEncodedLength(m_value);
+        
+        if (len == m_value->Length)//ASCII string
+        {
+          if (len > 0xFFFF)
+            m_type = GemFire::Cache::GemFireClassIds::CacheableASCIIStringHuge;
+          else
+            m_type = GemFire::Cache::GemFireClassIds::CacheableASCIIString;
+        }
+        else
+        {
+          if (len > 0xFFFF)
+            m_type = GemFire::Cache::GemFireClassIds::CacheableStringHuge;
+          else
+            m_type = GemFire::Cache::GemFireClassIds::CacheableString;  
+        }
+      }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CacheableStringM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CacheableStringM.hpp b/geode-client-native/src/clicache/CacheableStringM.hpp
new file mode 100644
index 0000000..e6f970b
--- /dev/null
+++ b/geode-client-native/src/clicache/CacheableStringM.hpp
@@ -0,0 +1,319 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/CacheableString.hpp"
+#include "impl/ManagedString.hpp"
+#include "DataOutputM.hpp"
+#include "CacheableKeyM.hpp"
+#include "LogM.hpp"
+#include "GemFireClassIdsM.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      /// <summary>
+      /// An immutable string wrapper that can serve as a distributable
+      /// key object for caching as well as being a string value.
+      /// </summary>
+        [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class CacheableString
+        : public CacheableKey
+      {
+      public:
+        /// <summary>
+        /// Allocates a new instance copying from the given string.
+        /// </summary>
+        /// <param name="value">the string value of the new instance</param>
+        /// <exception cref="IllegalArgumentException">
+        /// if the provided string is null or has zero length
+        /// </exception>
+        CacheableString(String^ value);
+
+        /// <summary>
+        /// Allocates a new instance copying from the given character array.
+        /// </summary>
+        /// <param name="value">
+        /// the character array value of the new instance
+        /// </param>
+        /// <exception cref="IllegalArgumentException">
+        /// if the provided array is null or has zero length
+        /// </exception>
+        CacheableString(array<Char>^ value);
+
+        /// <summary>
+        /// Static function to create a new instance copying from
+        /// the given string.
+        /// </summary>
+        /// <remarks>
+        /// Providing a null or zero size string will return a null
+        /// <c>CacheableString</c> object.
+        /// </remarks>
+        /// <param name="value">the string value of the new instance</param>
+        inline static GemStone::GemFire::Cache::CacheableString^ Create(String^ value)
+        {
+          return (value != nullptr ?
+            gcnew GemStone::GemFire::Cache::CacheableString(value, true) : nullptr);
+        }
+
+        /// <summary>
+        /// Serializes this managed object.
+        /// </summary>
+        /// <param name="output">
+        /// the DataOutput object to use for serializing the object
+        /// </param>
+        virtual void ToData(GemFire::Cache::DataOutput^ output) override;
+
+        /// <summary>
+        /// Deserializes the managed object -- returns an instance of the
+        /// <c>IGFSerializable</c> class.
+        /// </summary>
+        /// <param name="input">
+        /// the DataInput stream to use for reading the object data
+        /// </param>
+        /// <returns>the deserialized object</returns>
+        virtual GemStone::GemFire::Cache::IGFSerializable^ FromData(GemFire::Cache::DataInput^ input) override;
+
+        // <summary>
+        /// Returns the classId of the instance being serialized.
+        /// This is used by deserialization to determine what instance
+        /// type to create and deserialize into.
+        /// </summary>
+        /// <returns>the classId</returns>
+        virtual property uint32_t ClassId
+        {
+          virtual uint32_t get() override
+          {
+            return m_type;
+          }
+        }
+
+        
+        /// <summary>
+        /// return the size of this object in bytes
+        /// </summary>
+        virtual property uint32_t ObjectSize
+        {
+          virtual uint32_t get() override
+          {
+            return (uint32_t)(m_value->Length * sizeof(char));
+          }
+        }
+
+
+        /// <summary>
+        /// Static function to create a new instance copying from
+        /// the given character array.
+        /// </summary>
+        /// <remarks>
+        /// Providing a null or zero size character array will return a null
+        /// <c>CacheableString</c> object.
+        /// </remarks>
+        /// <param name="value">
+        /// the character array value of the new instance
+        /// </param>
+        inline static GemStone::GemFire::Cache::CacheableString^ Create(array<Char>^ value)
+        {
+          return (value != nullptr && value->Length > 0 ?
+            gcnew CacheableString(value, true) : nullptr);
+        }
+
+        /// <summary>
+        /// Return a string representation of the object.
+        /// This returns the same string as <c>Value</c> property.
+        /// </summary>
+        virtual String^ ToString() override
+        {
+          return m_value;
+        }
+
+        /// <summary>
+        /// Return true if this key matches other object.
+        /// It invokes the '==' operator of the underlying
+        /// <c>gemfire::CacheableString</c> object.
+        /// </summary>
+        virtual bool Equals(GemStone::GemFire::Cache::ICacheableKey^ other) override;
+
+        /// <summary>
+        /// Return true if this key matches other object.
+        /// It invokes the '==' operator of the underlying
+        /// <c>gemfire::CacheableString</c> object.
+        /// </summary>
+        virtual bool Equals(Object^ obj) override;
+
+        /// <summary>
+        /// Return the hashcode for this key.
+        /// </summary>
+        virtual int32_t GetHashCode() override;
+
+        /// <summary>
+        /// Gets the string value.
+        /// </summary>
+        property String^ Value
+        {
+          inline String^ get()
+          {
+            return m_value;
+          }
+        }
+
+         /// <summary>
+        /// Static function to check whether IsNullOrEmpty.
+        /// </summary>
+        /// <remarks>
+        /// This is similar to the C# string.IsNullOrEmpty method.
+        /// </remarks>
+        /// <param name="value">the CacheableString value to check</param>
+        inline static bool IsNullOrEmpty(GemStone::GemFire::Cache::CacheableString^ value)
+        {
+          return (value == nullptr || value->Length == 0);
+        }
+
+        /// <summary>
+        /// Implicit conversion operator to underlying <c>System.String</c>.
+        /// </summary>
+        inline static operator String^ (GemStone::GemFire::Cache::CacheableString^ str)
+        {
+          return (str != nullptr ? CacheableString::GetString(str) : nullptr);
+        }
+
+        /// <summary>
+        /// Gets the length of the underlying C string.
+        /// </summary>
+        property uint32_t Length
+        {
+          inline uint32_t get()
+          {
+            return m_value->Length;
+          }
+        }
+
+        /// <summary>
+        /// True when the underlying C string is a wide-character string.
+        /// </summary>
+        property bool IsWideString
+        {
+          inline bool get()
+          {
+            return true;//TODO:hitesh
+          }
+        }
+
+      internal:
+
+        static IGFSerializable^ CreateDeserializable()
+        {
+          return gcnew GemStone::GemFire::Cache::CacheableString(GemFire::Cache::GemFireClassIds::CacheableASCIIString);
+        }
+        
+        static IGFSerializable^ createDeserializableHuge()
+        {
+          return gcnew GemStone::GemFire::Cache::CacheableString(GemFire::Cache::GemFireClassIds::CacheableASCIIStringHuge);
+        }
+
+        static IGFSerializable^ createUTFDeserializable()
+        {
+          return gcnew GemStone::GemFire::Cache::CacheableString(GemFire::Cache::GemFireClassIds::CacheableString);
+        }
+
+        static IGFSerializable^ createUTFDeserializableHuge()
+        {
+          return gcnew GemStone::GemFire::Cache::CacheableString(GemFire::Cache::GemFireClassIds::CacheableStringHuge);
+        }
+
+        /// <summary>
+        /// Factory function to register wrapper
+        /// </summary>
+        static IGFSerializable^ Create(gemfire::Serializable* obj)
+        {
+          return (obj != nullptr ?
+            gcnew GemStone::GemFire::Cache::CacheableString(obj) : nullptr);
+        }
+
+        /// <summary>
+        /// Internal function to create a <c>gemfire::CacheableString</c>
+        /// from the given managed string.
+        /// </summary>
+        static void GetCacheableString(String^ value,
+          gemfire::CacheableStringPtr& cStr);
+
+        /// <summary>
+        /// Internal function to create a <c>gemfire::CacheableString</c>
+        /// from the given managed array of characters.
+        /// </summary>
+        static void GetCacheableString(array<Char>^ value,
+          gemfire::CacheableStringPtr& cStr);
+
+        /// <summary>
+        /// Get the <c>System.String</c> from the given
+        /// <c>gemfire::CacheableString</c>
+        /// </summary>
+        inline static String^ GetString(gemfire::CacheableString * cStr)
+        {
+          if (cStr == NULL) {
+            return nullptr;
+          }
+          else if (cStr->isWideString()) {
+            return ManagedString::Get(cStr->asWChar());
+          }
+          else {
+            return ManagedString::Get(cStr->asChar());
+          }
+        }
+
+        inline static String^ GetString(CacheableString^ cStr)
+        {
+          return cStr->Value;
+        }
+
+      private:
+        String^ m_value;
+        uint32_t m_type; 
+        int m_hashcode;
+
+        CacheableString(): CacheableKey()
+        {
+          m_type = GemFire::Cache::GemFireClassIds::CacheableASCIIString;
+        }
+
+        CacheableString(uint32_t type): CacheableKey()
+        {
+          m_type = type;
+        }
+         
+        void SetStringType();
+
+        /// <summary>
+        /// Private constructor to create a CacheableString without checking
+        /// for arguments.
+        /// </summary>
+        CacheableString(String^ value, bool noParamCheck);
+
+        /// <summary>
+        /// Private constructor to create a CacheableString without checking
+        /// for arguments.
+        /// </summary>
+        CacheableString(array<Char>^ value, bool noParamCheck);
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline CacheableString(gemfire::Serializable* nativeptr)
+          : CacheableKey(nativeptr) { }
+      };
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CacheableUndefinedM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CacheableUndefinedM.cpp b/geode-client-native/src/clicache/CacheableUndefinedM.cpp
new file mode 100644
index 0000000..b095807
--- /dev/null
+++ b/geode-client-native/src/clicache/CacheableUndefinedM.cpp
@@ -0,0 +1,42 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "CacheableUndefinedM.hpp"
+#include "DataOutputM.hpp"
+#include "DataInputM.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      // Region: IGFSerializable Members
+
+      void CacheableUndefined::ToData(DataOutput^ output)
+      {
+      }
+
+      IGFSerializable^ CacheableUndefined::FromData(DataInput^ input)
+      {
+        return this;
+      }
+
+      uint32_t CacheableUndefined::ObjectSize::get()
+      {
+        return static_cast<uint32_t> (sizeof(CacheableUndefined^));
+      }
+
+      // End Region: IGFSerializable Members
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CacheableUndefinedM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CacheableUndefinedM.hpp b/geode-client-native/src/clicache/CacheableUndefinedM.hpp
new file mode 100644
index 0000000..58d7c3d
--- /dev/null
+++ b/geode-client-native/src/clicache/CacheableUndefinedM.hpp
@@ -0,0 +1,98 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "IGFSerializable.hpp"
+#include "GemFireClassIdsM.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      /// <summary>
+      /// Encapsulate an undefined result.
+      /// </summary>
+        [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class CacheableUndefined
+        : public IGFSerializable
+      {
+      public:
+        /// <summary>
+        /// Allocates a new empty instance.
+        /// </summary>
+        inline CacheableUndefined() { }
+
+        /// <summary>
+        /// Static function to create a new empty instance.
+        /// </summary>
+        inline static CacheableUndefined^ Create()
+        {
+          return gcnew CacheableUndefined();
+        }
+
+        // Region: IGFSerializable Members
+
+        /// <summary>
+        /// Serializes this object.
+        /// </summary>
+        /// <param name="output">
+        /// the DataOutput object to use for serializing the object
+        /// </param>
+        virtual void ToData(DataOutput^ output);
+
+        /// <summary>
+        /// Deserialize this object, typical implementation should return
+        /// the 'this' pointer.
+        /// </summary>
+        /// <param name="input">
+        /// the DataInput stream to use for reading the object data
+        /// </param>
+        /// <returns>the deserialized object</returns>
+        virtual IGFSerializable^ FromData(DataInput^ input);
+
+        /// <summary>
+        /// return the size of this object in bytes
+        /// </summary>
+        virtual property uint32_t ObjectSize
+        {
+          virtual uint32_t get();
+        }
+
+        /// <summary>
+        /// Returns the classId of the instance being serialized.
+        /// This is used by deserialization to determine what instance
+        /// type to create and deserialize into.
+        /// </summary>
+        /// <returns>the classId</returns>
+        virtual property uint32_t ClassId
+        {
+          inline virtual uint32_t get()
+          {
+            return GemFireClassIds::CacheableUndefined;
+          }
+        }
+
+        // End Region: IGFSerializable Members
+
+        /// <summary>
+        /// Factory function to register this class.
+        /// </summary>
+        static IGFSerializable^ CreateDeserializable()
+        {
+          return gcnew CacheableUndefined();
+        }
+      };
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CacheableVectorM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CacheableVectorM.cpp b/geode-client-native/src/clicache/CacheableVectorM.cpp
new file mode 100644
index 0000000..74c44ef
--- /dev/null
+++ b/geode-client-native/src/clicache/CacheableVectorM.cpp
@@ -0,0 +1,58 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "CacheableVectorM.hpp"
+#include "DataOutputM.hpp"
+#include "DataInputM.hpp"
+
+
+using namespace System;
+using namespace System::Collections::Generic;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      // Region: IGFSerializable Members
+
+      void CacheableVector::ToData(DataOutput^ output)
+      {
+        output->WriteArrayLen(this->Count);
+        for each (IGFSerializable^ obj in this) {
+          output->WriteObject(obj);
+        }
+      }
+
+      IGFSerializable^ CacheableVector::FromData(DataInput^ input)
+      {
+        int len = input->ReadArrayLen();
+        for( int i = 0; i < len; i++)
+        {
+          this->Add(input->ReadObject());
+        }
+        return this;
+      }
+
+      uint32_t CacheableVector::ObjectSize::get()
+      { 
+        uint32_t size = static_cast<uint32_t> (sizeof(CacheableVector^));
+        for each (IGFSerializable^ val in this) {
+          if (val != nullptr) {
+            size += val->ObjectSize;
+          }
+        }
+        return size;
+      }
+
+      // End Region: IGFSerializable Members
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CacheableVectorM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CacheableVectorM.hpp b/geode-client-native/src/clicache/CacheableVectorM.hpp
new file mode 100644
index 0000000..6b40229
--- /dev/null
+++ b/geode-client-native/src/clicache/CacheableVectorM.hpp
@@ -0,0 +1,142 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "IGFSerializable.hpp"
+#include "GemFireClassIdsM.hpp"
+
+
+using namespace System;
+using namespace System::Collections::Generic;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      /// <summary>
+      /// A mutable <c>IGFSerializable</c> vector wrapper that can serve as
+      /// a distributable object for caching. This class extends .NET generic
+      /// <c>List</c> class.
+      /// </summary>
+        [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class CacheableVector
+        : public List<IGFSerializable^>, public IGFSerializable
+      {
+      public:
+        /// <summary>
+        /// Allocates a new empty instance.
+        /// </summary>
+        inline CacheableVector()
+          : List<IGFSerializable^>()
+        { }
+
+        /// <summary>
+        /// Allocates a new instance copying from the given collection.
+        /// </summary>
+        /// <param name="collection">
+        /// The collection whose elements are copied to this list.
+        /// </param>
+        inline CacheableVector(IEnumerable<IGFSerializable^>^ collection)
+          : List<IGFSerializable^>(collection)
+        { }
+
+        /// <summary>
+        /// Allocates a new empty instance with given initial size.
+        /// </summary>
+        /// <param name="capacity">
+        /// The initial capacity of the vector.
+        /// </param>
+        inline CacheableVector(int32_t capacity)
+          : List<IGFSerializable^>(capacity)
+        { }
+
+        /// <summary>
+        /// Static function to create a new empty instance.
+        /// </summary>
+        inline static CacheableVector^ Create()
+        {
+          return gcnew CacheableVector();
+        }
+
+        /// <summary>
+        /// Static function to create a new instance copying from the
+        /// given collection.
+        /// </summary>
+        inline static CacheableVector^ Create(
+          IEnumerable<IGFSerializable^>^ collection)
+        {
+          return gcnew CacheableVector(collection);
+        }
+
+        /// <summary>
+        /// Static function to create a new instance with given initial size.
+        /// </summary>
+        inline static CacheableVector^ Create(int32_t capacity)
+        {
+          return gcnew CacheableVector(capacity);
+        }
+
+        // Region: IGFSerializable Members
+
+        /// <summary>
+        /// Serializes this object.
+        /// </summary>
+        /// <param name="output">
+        /// the DataOutput object to use for serializing the object
+        /// </param>
+        virtual void ToData(DataOutput^ output);
+
+        /// <summary>
+        /// Deserialize this object, typical implementation should return
+        /// the 'this' pointer.
+        /// </summary>
+        /// <param name="input">
+        /// the DataInput stream to use for reading the object data
+        /// </param>
+        /// <returns>the deserialized object</returns>
+        virtual IGFSerializable^ FromData(DataInput^ input);
+
+        /// <summary>
+        /// return the size of this object in bytes
+        /// </summary>
+        virtual property uint32_t ObjectSize
+        {
+          virtual uint32_t get();
+        }
+
+        /// <summary>
+        /// Returns the classId of the instance being serialized.
+        /// This is used by deserialization to determine what instance
+        /// type to create and deserialize into.
+        /// </summary>
+        /// <returns>the classId</returns>
+        virtual property uint32_t ClassId
+        {
+          virtual uint32_t get()
+          {
+            return GemFireClassIds::CacheableVector;
+          }
+        }
+
+        // End Region: IGFSerializable Members
+
+        /// <summary>
+        /// Factory function to register this class.
+        /// </summary>
+        static IGFSerializable^ CreateDeserializable()
+        {
+          return gcnew CacheableVector();
+        }
+      };
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CqAttributesFactoryM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CqAttributesFactoryM.cpp b/geode-client-native/src/clicache/CqAttributesFactoryM.cpp
new file mode 100644
index 0000000..71a5121
--- /dev/null
+++ b/geode-client-native/src/clicache/CqAttributesFactoryM.cpp
@@ -0,0 +1,52 @@
+/*=========================================================================
+* Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+*=========================================================================
+*/
+
+#include "gf_includes.hpp"
+#include "CqAttributesFactoryM.hpp"
+#include "CqAttributesM.hpp"
+#include "impl/ManagedCqListener.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      void CqAttributesFactory::AddCqListener(ICqListener^ cqListener )
+      {
+        gemfire::CqListenerPtr listenerptr;
+        if ( cqListener != nullptr ) {
+          listenerptr = new gemfire::ManagedCqListener( cqListener );
+        }
+
+        NativePtr->addCqListener( listenerptr );
+      }
+      void CqAttributesFactory::InitCqListeners(array<ICqListener^>^ cqListeners)
+      {
+        gemfire::VectorOfCqListener vrr(cqListeners->GetLength(1));
+
+        for( int i = 0; i < cqListeners->GetLength(1); i++ )
+        {
+          ICqListener^ lister = cqListeners[i];
+          vrr[i] = new gemfire::ManagedCqListener( lister );
+        }
+
+        NativePtr->initCqListeners( vrr );
+      }
+
+      CqAttributes^ CqAttributesFactory::Create( )
+      {
+        return CqAttributes::Create(NativePtr->create().ptr());
+      }
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CqAttributesFactoryM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CqAttributesFactoryM.hpp b/geode-client-native/src/clicache/CqAttributesFactoryM.hpp
new file mode 100644
index 0000000..01408e7
--- /dev/null
+++ b/geode-client-native/src/clicache/CqAttributesFactoryM.hpp
@@ -0,0 +1,72 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/CqAttributesFactory.hpp"
+#include "impl/NativeWrapper.hpp"
+#include "impl/SafeConvert.hpp"
+
+using namespace System;
+using namespace System::Collections::Generic;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      ref class CqAttributes;
+      interface class ICqListener;
+
+      /// <summary>
+      /// Creates instances of <c>CqAttributes</c>.
+      /// </summary>
+      /// <seealso cref="CqAttributes" />
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class CqAttributesFactory sealed
+        : public Internal::UMWrap<gemfire::CqAttributesFactory>
+      {
+      public:
+
+        /// <summary>
+        /// Creates a new instance of <c>CqAttributesFactory</c> ready
+        /// to create a <c>CqAttributes</c> with default settings.
+        /// </summary>
+        inline CqAttributesFactory( )
+          : UMWrap( new gemfire::CqAttributesFactory( ), true )
+        { }
+        inline CqAttributesFactory(CqAttributes^ cqAttributes )
+          : UMWrap( new gemfire::CqAttributesFactory(gemfire::CqAttributesPtr(GetNativePtr<gemfire::CqAttributes>(cqAttributes ))), true )
+        { }
+
+        // ATTRIBUTES
+
+        /// <summary>
+        /// add a cqListener 
+        /// </summary>
+        void AddCqListener(ICqListener^ cqListener);
+
+        /// <summary>
+        /// Initialize with an array of listeners
+        /// </summary>
+        void InitCqListeners( array<ICqListener^>^ cqListeners );
+
+        // FACTORY METHOD
+
+        /// <summary>
+        /// Creates a <c>CqAttributes</c> with the current settings.
+        /// </summary>
+        CqAttributes^ Create( );
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CqAttributesM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CqAttributesM.cpp b/geode-client-native/src/clicache/CqAttributesM.cpp
new file mode 100644
index 0000000..57505ca
--- /dev/null
+++ b/geode-client-native/src/clicache/CqAttributesM.cpp
@@ -0,0 +1,47 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "CqAttributesM.hpp"
+#include "impl/ManagedCqListener.hpp"
+#include "ICqListener.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      array<ICqListener^>^ CqAttributes::getCqListeners( )
+      {
+	      gemfire::VectorOfCqListener vrr;
+	      NativePtr->getCqListeners( vrr );
+              array<ICqListener^>^ listners = gcnew array<ICqListener^>( vrr.size( ) );
+
+              for( int32_t index = 0; index < vrr.size( ); index++ )
+	      {
+	            gemfire::CqListenerPtr& nativeptr( vrr[ index ] );
+                    gemfire::ManagedCqListener* mg_listener =
+                         dynamic_cast<gemfire::ManagedCqListener*>( nativeptr.ptr( ) );
+                    if (mg_listener != nullptr)
+                    {
+	              listners[ index ] =  mg_listener->ptr( );
+                    }else 
+		    {
+	              listners[ index ] =  nullptr;
+		    }
+	       }
+	       return listners;
+      }
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/CqAttributesM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/CqAttributesM.hpp b/geode-client-native/src/clicache/CqAttributesM.hpp
new file mode 100644
index 0000000..befd090
--- /dev/null
+++ b/geode-client-native/src/clicache/CqAttributesM.hpp
@@ -0,0 +1,73 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/CqAttributes.hpp"
+#include "impl/NativeWrapper.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      interface class ICqListener;
+
+      /// <summary>
+      /// Defines attributes for configuring a cq.
+      /// </summary>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class CqAttributes sealed
+        : public Internal::SBWrap<gemfire::CqAttributes>
+      {
+      public:
+
+        /// <summary>
+        /// get all listeners in this attributes
+        /// </summary>
+        virtual array<ICqListener^>^ getCqListeners();
+
+      internal:
+
+        /// <summary>
+        /// Internal factory function to wrap a native object pointer inside
+        /// this managed class with null pointer check.
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        /// <returns>
+        /// The managed wrapper object; null if the native pointer is null.
+        /// </returns>
+        inline static CqAttributes^ Create( gemfire::CqAttributes* nativeptr )
+        {
+          if (nativeptr == nullptr)
+          {
+            return nullptr;
+          }
+          return gcnew CqAttributes( nativeptr );
+        }
+
+
+      private:
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline CqAttributes( gemfire::CqAttributes* nativeptr )
+          : SBWrap( nativeptr ) { }
+      };
+
+    }
+  }
+}



[07/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/TransactionEventM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/TransactionEventM.cpp b/geode-client-native/src/clicache/TransactionEventM.cpp
new file mode 100644
index 0000000..bf32506
--- /dev/null
+++ b/geode-client-native/src/clicache/TransactionEventM.cpp
@@ -0,0 +1,54 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+#ifdef CSTX_COMMENTED
+#include "gf_includes.hpp"
+#include "TransactionEventM.hpp"
+#include "impl/SafeConvert.hpp"
+#include "CacheM.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      GemStone::GemFire::Cache::Cache^ TransactionEvent::Cache::get( )
+      {
+        gemfire::CachePtr& cacheptr( NativePtr->getCache( ) );
+        return GemStone::GemFire::Cache::Cache::Create( cacheptr.ptr( ) );
+      }
+
+      TransactionId^ TransactionEvent::TransactionId::get( )
+      {
+        gemfire::TransactionIdPtr& tidptr( NativePtr->getTransactionId( ) );
+        return GemStone::GemFire::Cache::TransactionId::Create( tidptr.ptr( ) );
+      }
+
+      array<EntryEvent^>^ TransactionEvent::Events::get( )
+      {
+        gemfire::VectorOfEntryEvent vee;
+        vee = NativePtr->getEvents();
+        array<EntryEvent^>^ events =
+          gcnew array<EntryEvent^>( vee.size( ) );
+        // Loop through the unmanaged event objects to convert them to the managed objects. 
+        for( int32_t index = 0; index < vee.size( ); index++ )
+        {
+          gemfire::EntryEventPtr& nativeptr( vee[ index ] );
+          EntryEvent entryEvent( nativeptr.ptr( ) );
+          events[ index ] = (%entryEvent);
+        }
+        return events;
+      }
+    }
+  }
+}
+#endif
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/TransactionEventM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/TransactionEventM.hpp b/geode-client-native/src/clicache/TransactionEventM.hpp
new file mode 100644
index 0000000..abc82db
--- /dev/null
+++ b/geode-client-native/src/clicache/TransactionEventM.hpp
@@ -0,0 +1,73 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+#ifdef CSTX_COMMENTED
+#pragma once
+
+#include "gf_defs.hpp"
+#include "EntryEventM.hpp"
+#include "cppcache/TransactionEvent.hpp"
+#include "impl/NativeWrapper.hpp"
+#include "TransactionIdM.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      ref class Cache;
+
+      /// <summary>
+      /// This class encapsulates events that occur for an transaction in a cache.
+      /// </summary>
+      public ref class TransactionEvent sealed
+        : public Internal::SBWrap<gemfire::TransactionEvent>
+      {
+      public:
+
+        /// <summary>
+        /// Gets the transaction id for this transaction.
+        /// </summary>
+        property GemStone::GemFire::Cache::TransactionId^ TransactionId
+        {
+          GemStone::GemFire::Cache::TransactionId^ get( );
+        }
+
+     		/// <summary>
+        /// Returns an ordered list of every event for this transaction.
+        /// The event order is consistent with the order in which the operations were
+        /// performed during the transaction.
+        /// </summary>
+        property array<EntryEvent^>^ Events
+        {
+          array<EntryEvent^>^ get( );
+        }
+
+        /// <summary>
+        /// Gets the Cache for this transaction event
+        /// </summary>
+        property GemStone::GemFire::Cache::Cache^ Cache
+        {
+          GemStone::GemFire::Cache::Cache^ get( );
+        }
+      
+     internal:
+        /// <summary>
+        /// Internal constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline TransactionEvent( const gemfire::TransactionEvent* nativeptr )
+          : SBWrap( const_cast<gemfire::TransactionEvent*>( nativeptr )) { }
+      };
+
+    }
+  }
+}
+#endif
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/TransactionListenerAdapter.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/TransactionListenerAdapter.hpp b/geode-client-native/src/clicache/TransactionListenerAdapter.hpp
new file mode 100644
index 0000000..d36f40c
--- /dev/null
+++ b/geode-client-native/src/clicache/TransactionListenerAdapter.hpp
@@ -0,0 +1,49 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+#ifdef CSTX_COMMENTED
+#pragma once
+
+#include "gf_defs.hpp"
+#include "ITransactionListener.hpp"
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      /// <summary>
+      /// Utility class that implements all methods in <c>ITransactionListener</c>
+      /// with empty implementations. Applications can subclass this class
+      /// and only override the methods for the events of interest.
+      /// </summary>
+      public ref class TransactionListenerAdapter
+        : public ITransactionListener
+      {
+      public:
+        virtual void AfterCommit(TransactionEvent^ te)
+        {
+        }
+
+	      virtual void AfterFailedCommit(TransactionEvent^ te)
+        {
+        }
+
+	      virtual void AfterRollback(TransactionEvent^ te)
+        {
+        }
+    
+        virtual void Close()
+        {
+        }
+      };
+
+    }
+  }
+}
+#endif
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/TransactionWriterAdapter.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/TransactionWriterAdapter.hpp b/geode-client-native/src/clicache/TransactionWriterAdapter.hpp
new file mode 100644
index 0000000..e515cd0
--- /dev/null
+++ b/geode-client-native/src/clicache/TransactionWriterAdapter.hpp
@@ -0,0 +1,38 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+#ifdef CSTX_COMMENTED
+#pragma once
+
+#include "gf_defs.hpp"
+#include "ITransactionWriter.hpp"
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      /// <summary>
+      /// Utility class that implements all methods in <c>ITransactionWriter</c>
+      /// with empty implementations. Applications can subclass this class
+      /// and only override the methods for the events of interest.
+      /// </summary>
+      public ref class TransactionWriterAdapter
+        : public ITransactionWriter
+      {
+      public:
+        virtual void BeforeCommit(TransactionEvent^ te)
+        {
+        }
+      };
+
+    }
+  }
+}
+#endif
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/UserFunctionExecutionExceptionM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/UserFunctionExecutionExceptionM.cpp b/geode-client-native/src/clicache/UserFunctionExecutionExceptionM.cpp
new file mode 100644
index 0000000..dbcd87d
--- /dev/null
+++ b/geode-client-native/src/clicache/UserFunctionExecutionExceptionM.cpp
@@ -0,0 +1,63 @@
+/*=========================================================================
+* Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+*=========================================================================
+*/
+
+#include "UserFunctionExecutionExceptionM.hpp"
+#include "CacheableStringM.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      // IGFSerializable methods
+      void UserFunctionExecutionException::ToData( DataOutput^ output )
+      {
+        throw gcnew IllegalStateException("UserFunctionExecutionException::ToData is not intended for use.");
+      }
+
+      IGFSerializable^ UserFunctionExecutionException::FromData( DataInput^ input )
+      {
+        throw gcnew IllegalStateException("UserFunctionExecutionException::FromData is not intended for use.");
+        return this;
+      } 
+
+      uint32_t UserFunctionExecutionException::ObjectSize::get( )
+      {        
+        _GF_MG_EXCEPTION_TRY
+          throw gcnew IllegalStateException("UserFunctionExecutionException::ObjectSize is not intended for use.");
+          return NativePtr->objectSize( );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      String^ UserFunctionExecutionException::Message::get() 
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheableStringPtr value = NativePtr->getMessage(  );
+          return CacheableString::GetString( value.ptr( ) );          
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      String^ UserFunctionExecutionException::Name::get() 
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire::CacheableStringPtr value = NativePtr->getName(  );
+          return CacheableString::GetString( value.ptr( ) );          
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+    }
+  }
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/UserFunctionExecutionExceptionM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/UserFunctionExecutionExceptionM.hpp b/geode-client-native/src/clicache/UserFunctionExecutionExceptionM.hpp
new file mode 100644
index 0000000..e98a02c
--- /dev/null
+++ b/geode-client-native/src/clicache/UserFunctionExecutionExceptionM.hpp
@@ -0,0 +1,124 @@
+/*=========================================================================
+* Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+*=========================================================================
+*/
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/UserFunctionExecutionException.hpp"
+#include "IGFSerializable.hpp"
+#include "DataInputM.hpp"
+#include "DataOutputM.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      /// <summary>
+      /// UserFunctionExecutionException class is used to encapsulate gemfire sendException in case of Function execution.
+      /// </summary>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class UserFunctionExecutionException sealed
+        : public Internal::SBWrap<gemfire::UserFunctionExecutionException>, public IGFSerializable
+      {
+      public:
+
+        // IGFSerializable members
+
+        /// <summary>
+        /// Serializes this object.
+        /// Users should not implement/call this api as it is only intended for internal use.
+        /// </summary>
+        /// <param name="output">
+        /// the DataOutput stream to use for serialization
+        /// </param>
+        /// <exception cref="IllegalStateException">
+        /// If this api is called from User code.
+        /// </exception>
+        virtual void ToData( DataOutput^ output );
+
+        /// <summary>
+        /// Deserializes this object.
+        /// Users should not implement/call this api as it is only intended for internal use.
+        /// </summary>
+        /// <param name="input">
+        /// the DataInput stream to use for reading data
+        /// </param>
+        /// <exception cref="IllegalStateException">
+        /// If this api is called from User code.
+        /// </exception>
+        /// <returns>the deserialized object</returns>
+        virtual IGFSerializable^ FromData( DataInput^ input );        
+
+        /// <summary>
+        /// Returns the classId of this class for serialization.
+        /// Users should not implement/call this api as it is only intended for internal use.
+        /// </summary>
+        /// <exception cref="IllegalStateException">
+        /// If this api is called from User code.
+        /// </exception>
+        /// <returns>classId of this class</returns>
+        /// <seealso cref="IGFSerializable.ClassId" />
+        virtual property uint32_t ClassId
+        {
+          inline virtual uint32_t get( )
+          {
+            throw gcnew IllegalStateException("UserFunctionExecutionException::ClassId is not intended for use.");
+            return 0;
+          }
+        }
+
+        /// <summary>
+        /// return the size of this object in bytes
+        /// Users should not implement/call this api as it is only intended for internal use.
+        /// </summary>
+        /// <exception cref="IllegalStateException">
+        /// If this api is called from User code.
+        /// </exception>
+        virtual property uint32_t ObjectSize
+        {
+          virtual uint32_t get( ); 
+        }
+
+        // End: IGFSerializable members   
+
+        /// <summary>
+        /// return as String the Exception message returned from gemfire sendException api.          
+        /// </summary>
+        /// <returns>the String Exception Message</returns>
+        property String^ Message
+        {
+          String^ get();          
+        }
+
+        /// <summary>
+        /// return as String the Exception name returned from gemfire sendException api.          
+        /// </summary>
+        /// <returns>the String Exception Name</returns>
+        property String^ Name
+        {
+          String^ get();          
+        }
+
+      internal:
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer.
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline UserFunctionExecutionException( gemfire::UserFunctionExecutionException* nativeptr )
+          : SBWrap( nativeptr ) { }
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/Utils.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/Utils.cpp b/geode-client-native/src/clicache/Utils.cpp
new file mode 100644
index 0000000..725a4ae
--- /dev/null
+++ b/geode-client-native/src/clicache/Utils.cpp
@@ -0,0 +1,63 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "Utils.hpp"
+#include "cppcache/impl/Utils.hpp"
+
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+
+    MethodInfo^ Utils::LoadMethod( String^ assemblyName,
+      String^ typeName, String^ methodName)
+    {
+      Type^ loadType;
+
+      loadType = Type::GetType( typeName + ',' + assemblyName, false, true );
+      if (loadType != nullptr)
+      {
+        return loadType->GetMethod( methodName, BindingFlags::Public |
+          BindingFlags::Static | BindingFlags::IgnoreCase );
+      }
+      return nullptr;
+    }
+
+    MethodInfo^ Utils::LoadMethodFrom( String^ assemblyPath,
+      String^ typeName, String^ methodName)
+    {
+      String^ assemblyName;
+      Type^ loadType;
+
+      assemblyName = System::IO::Path::GetFileNameWithoutExtension(
+        assemblyPath );
+      loadType = Type::GetType( typeName + ',' + assemblyName, false, true );
+      if (loadType == nullptr)
+      {
+        Assembly^ assmb = Assembly::LoadFrom( assemblyPath );
+        if (assmb != nullptr)
+        {
+          loadType = assmb->GetType(typeName, false, true);
+        }
+      }
+      if (loadType != nullptr)
+      {
+        return loadType->GetMethod( methodName, BindingFlags::Public |
+          BindingFlags::Static | BindingFlags::IgnoreCase );
+      }
+      return nullptr;
+    }
+
+    int32_t Utils::LastError::get( )
+    {
+      return gemfire::Utils::getLastError( );
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/Utils.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/Utils.hpp b/geode-client-native/src/clicache/Utils.hpp
new file mode 100644
index 0000000..8154b21
--- /dev/null
+++ b/geode-client-native/src/clicache/Utils.hpp
@@ -0,0 +1,75 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+//#include "cppcache/SystemProperties.hpp"
+#include "impl/NativeWrapper.hpp"
+#include "LogM.hpp"
+
+
+using namespace System;
+using namespace System::Reflection;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+
+    /// <summary>
+    /// Some static utility methods.
+    /// </summary>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+    public ref class Utils STATICCLASS
+    {
+    public:
+
+      /// <summary>
+      /// Load a method from the given assembly path using the default
+      /// constructor (if not a static method) of the given type.
+      /// </summary>
+      /// <param name="assemblyPath">The path of the assembly.</param>
+      /// <param name="typeName">
+      /// The name of the class containing the method.
+      /// </param>
+      /// <param name="methodName">The name of the method.</param>
+      /// <returns>
+      /// The <c>System.Reflection.MethodInfo</c> for the given method,
+      /// or null if the method is not found.
+      /// </returns>
+      static MethodInfo^ LoadMethod( String^ assemblyPath,
+        String^ typeName, String^ methodName);
+
+      /// <summary>
+      /// Load a method from the given assembly name using the default
+      /// constructor (if not a static method) of the given type.
+      /// </summary>
+      /// <param name="assemblyName">The name of the assembly.</param>
+      /// <param name="typeName">
+      /// The name of the class containing the method.
+      /// </param>
+      /// <param name="methodName">The name of the method.</param>
+      /// <returns>
+      /// The <c>System.Reflection.MethodInfo</c> for the given method,
+      /// or null if the method is not found.
+      /// </returns>
+      static MethodInfo^ LoadMethodFrom( String^ assemblyName,
+        String^ typeName, String^ methodName);
+
+      /// <summary>
+      /// Utility method to get the calling thread's last system error code.
+      /// </summary>
+      static property int32_t LastError
+      {
+        int32_t get( );
+      }
+    };
+
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/AttributesFactoryMN.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/AttributesFactoryMN.cpp b/geode-client-native/src/clicache/com/vmware/AttributesFactoryMN.cpp
new file mode 100644
index 0000000..d642f53
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/AttributesFactoryMN.cpp
@@ -0,0 +1,345 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+//#include "gf_includesN.hpp"
+#include "AttributesFactoryMN.hpp"
+#include "RegionMN.hpp"
+#include "impl/ManagedCacheLoaderN.hpp"
+#include "impl/ManagedPersistenceManagerN.hpp"
+#include "impl/ManagedCacheWriterN.hpp"
+#include "impl/ManagedCacheListenerN.hpp"
+#include "impl/ManagedPartitionResolverN.hpp"
+#include "impl/ManagedFixedPartitionResolverN.hpp"
+#include "impl/CacheLoaderMN.hpp"
+#include "impl/CacheWriterMN.hpp"
+#include "impl/CacheListenerMN.hpp"
+#include "impl/PartitionResolverMN.hpp"
+#include "impl/PersistenceManagerProxyMN.hpp"
+#include "RegionAttributesMN.hpp"
+#include "ICacheLoaderN.hpp"
+#include "IPersistenceManagerN.hpp"
+#include "ICacheWriterN.hpp"
+#include "IPartitionResolverN.hpp"
+#include "IFixedPartitionResolverN.hpp"
+#include "impl/SafeConvertN.hpp"
+
+using namespace System;
+using namespace System::Collections::Generic;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+      generic<class TKey, class TValue>
+      AttributesFactory<TKey, TValue>::AttributesFactory( RegionAttributes<TKey, TValue>^ regionAttributes )
+        : UMWrap( )
+      {
+        gemfire::RegionAttributesPtr attribptr(
+          GetNativePtrFromSBWrapGeneric<gemfire::RegionAttributes>( regionAttributes ) );
+        SetPtr( new gemfire::AttributesFactory( attribptr ), true );
+      }
+
+      // CALLBACKS
+
+      generic<class TKey, class TValue>
+      void AttributesFactory<TKey, TValue>::SetCacheLoader( ICacheLoader<TKey, TValue>^ cacheLoader )
+      {
+        gemfire::CacheLoaderPtr loaderptr;
+        if ( cacheLoader != nullptr ) {
+          CacheLoaderGeneric<TKey, TValue>^ clg = gcnew CacheLoaderGeneric<TKey, TValue>();
+          clg->SetCacheLoader(cacheLoader);
+          loaderptr = new gemfire::ManagedCacheLoaderGeneric( /*clg,*/ cacheLoader );
+          ((gemfire::ManagedCacheLoaderGeneric*)loaderptr.ptr())->setptr(clg);
+        }
+        NativePtr->setCacheLoader( loaderptr );
+      }
+
+      generic<class TKey, class TValue>
+      void AttributesFactory<TKey, TValue>::SetCacheWriter( ICacheWriter<TKey, TValue>^ cacheWriter )
+      {
+        gemfire::CacheWriterPtr writerptr;
+        if ( cacheWriter != nullptr ) {
+          CacheWriterGeneric<TKey, TValue>^ cwg = gcnew CacheWriterGeneric<TKey, TValue>();
+          cwg->SetCacheWriter(cacheWriter);
+          writerptr = new gemfire::ManagedCacheWriterGeneric( /*cwg,*/ cacheWriter );
+          ((gemfire::ManagedCacheWriterGeneric*)writerptr.ptr())->setptr(cwg);
+        }
+        NativePtr->setCacheWriter( writerptr );
+      }
+
+      generic<class TKey, class TValue>
+      void AttributesFactory<TKey, TValue>::SetCacheListener( ICacheListener<TKey, TValue>^ cacheListener )
+      {
+        gemfire::CacheListenerPtr listenerptr;
+        if ( cacheListener != nullptr ) {
+          CacheListenerGeneric<TKey, TValue>^ clg = gcnew CacheListenerGeneric<TKey, TValue>();
+          clg->SetCacheListener(cacheListener);
+          //listenerptr = new gemfire::ManagedCacheListenerGeneric( (ICacheListener<Object^, Object^>^)cacheListener );
+          listenerptr = new gemfire::ManagedCacheListenerGeneric( /*clg,*/ cacheListener );
+          ((gemfire::ManagedCacheListenerGeneric*)listenerptr.ptr())->setptr(clg);
+        }
+        NativePtr->setCacheListener( listenerptr );
+      }
+
+      generic<class TKey, class TValue>
+      void AttributesFactory<TKey, TValue>::SetPartitionResolver( IPartitionResolver<TKey, TValue>^ partitionresolver )
+      {
+        gemfire::PartitionResolverPtr resolverptr;
+        if ( partitionresolver != nullptr ) {
+          Generic::IFixedPartitionResolver<TKey, TValue>^ resolver = 
+            dynamic_cast<Generic::IFixedPartitionResolver<TKey, TValue>^>(partitionresolver);
+          if (resolver != nullptr) {            
+            FixedPartitionResolverGeneric<TKey, TValue>^ prg = gcnew FixedPartitionResolverGeneric<TKey, TValue>();
+            prg->SetPartitionResolver(partitionresolver);
+            resolverptr = new gemfire::ManagedFixedPartitionResolverGeneric( partitionresolver ); 
+            ((gemfire::ManagedFixedPartitionResolverGeneric*)resolverptr.ptr())->setptr(prg);
+          }
+          else {            
+            PartitionResolverGeneric<TKey, TValue>^ prg = gcnew PartitionResolverGeneric<TKey, TValue>();
+            prg->SetPartitionResolver(partitionresolver);
+            resolverptr = new gemfire::ManagedPartitionResolverGeneric( partitionresolver );
+            ((gemfire::ManagedPartitionResolverGeneric*)resolverptr.ptr())->setptr(prg);            
+          }         
+        }
+        NativePtr->setPartitionResolver( resolverptr );
+      }
+
+      generic<class TKey, class TValue>
+      void AttributesFactory<TKey, TValue>::SetCacheLoader( String^ libPath, String^ factoryFunctionName )
+      {
+        throw gcnew System::NotSupportedException;
+        ManagedString mg_libpath( libPath );
+        ManagedString mg_factoryFunctionName( factoryFunctionName );
+
+        NativePtr->setCacheLoader( mg_libpath.CharPtr,
+          mg_factoryFunctionName.CharPtr );
+      }
+
+      generic<class TKey, class TValue>
+      void AttributesFactory<TKey, TValue>::SetCacheWriter( String^ libPath, String^ factoryFunctionName )
+      {
+        throw gcnew System::NotSupportedException;
+        ManagedString mg_libpath( libPath );
+        ManagedString mg_factoryFunctionName( factoryFunctionName );
+
+        NativePtr->setCacheWriter( mg_libpath.CharPtr,
+          mg_factoryFunctionName.CharPtr );
+      }
+
+      generic<class TKey, class TValue>
+      void AttributesFactory<TKey, TValue>::SetCacheListener( String^ libPath, String^ factoryFunctionName )
+      {
+        throw gcnew System::NotSupportedException;
+        ManagedString mg_libpath( libPath );
+        ManagedString mg_factoryFunctionName( factoryFunctionName );
+
+        NativePtr->setCacheListener( mg_libpath.CharPtr,
+          mg_factoryFunctionName.CharPtr );
+      }
+
+      generic<class TKey, class TValue>
+      void AttributesFactory<TKey, TValue>::SetPartitionResolver( String^ libPath, String^ factoryFunctionName )
+      {
+        throw gcnew System::NotSupportedException;
+        ManagedString mg_libpath( libPath );
+        ManagedString mg_factoryFunctionName( factoryFunctionName );
+
+        NativePtr->setPartitionResolver( mg_libpath.CharPtr,
+          mg_factoryFunctionName.CharPtr );
+      }
+
+      // EXPIRATION ATTRIBUTES
+
+      generic<class TKey, class TValue>
+      void AttributesFactory<TKey, TValue>::SetEntryIdleTimeout( ExpirationAction action, uint32_t idleTimeout )
+      {
+        NativePtr->setEntryIdleTimeout(
+          static_cast<gemfire::ExpirationAction::Action>( action ), idleTimeout );
+      }
+
+      generic<class TKey, class TValue>
+      void AttributesFactory<TKey, TValue>::SetEntryTimeToLive( ExpirationAction action, uint32_t timeToLive )
+      {
+        NativePtr->setEntryTimeToLive(
+          static_cast<gemfire::ExpirationAction::Action>( action ), timeToLive );
+      }
+
+      generic<class TKey, class TValue>
+      void AttributesFactory<TKey, TValue>::SetRegionIdleTimeout( ExpirationAction action, uint32_t idleTimeout )
+      {
+        NativePtr->setRegionIdleTimeout(
+          static_cast<gemfire::ExpirationAction::Action>( action ), idleTimeout );
+      }
+
+      generic<class TKey, class TValue>
+      void AttributesFactory<TKey, TValue>::SetRegionTimeToLive( ExpirationAction action, uint32_t timeToLive )
+      {
+        NativePtr->setRegionTimeToLive(
+          static_cast<gemfire::ExpirationAction::Action>( action ), timeToLive );
+      }
+
+      // PERSISTENCE
+       generic<class TKey, class TValue>
+      void AttributesFactory<TKey, TValue>::SetPersistenceManager(IPersistenceManager<TKey, TValue>^ persistenceManager, Properties<String^, String^>^ config )
+      {
+        gemfire::PersistenceManagerPtr persistenceManagerptr;
+        if ( persistenceManager != nullptr ) {
+          PersistenceManagerGeneric<TKey, TValue>^ clg = gcnew PersistenceManagerGeneric<TKey, TValue>();
+          clg->SetPersistenceManager(persistenceManager);
+          persistenceManagerptr = new gemfire::ManagedPersistenceManagerGeneric( /*clg,*/ persistenceManager );
+          ((gemfire::ManagedPersistenceManagerGeneric*)persistenceManagerptr.ptr())->setptr(clg);
+        }
+         gemfire::PropertiesPtr configptr(GetNativePtr<gemfire::Properties>( config ) );
+         NativePtr->setPersistenceManager( persistenceManagerptr, configptr );
+      }
+      
+      generic<class TKey, class TValue>
+      void AttributesFactory<TKey, TValue>::SetPersistenceManager(IPersistenceManager<TKey, TValue>^ persistenceManager )
+      {
+        SetPersistenceManager(persistenceManager, nullptr);
+      }
+        
+      generic<class TKey, class TValue>
+      void AttributesFactory<TKey, TValue>::SetPersistenceManager( String^ libPath,
+        String^ factoryFunctionName )
+      {        
+        SetPersistenceManager( libPath, factoryFunctionName, nullptr );
+      }
+
+      generic<class TKey, class TValue>
+      void AttributesFactory<TKey, TValue>::SetPersistenceManager( String^ libPath,
+        String^ factoryFunctionName, Properties<String^, String^>^ config )
+      {        
+        ManagedString mg_libpath( libPath );
+        ManagedString mg_factoryFunctionName( factoryFunctionName );
+        // VJR: TODO:
+				//TODO::split
+        gemfire::PropertiesPtr configptr(
+          GetNativePtr<gemfire::Properties>( config ) );
+
+        NativePtr->setPersistenceManager( mg_libpath.CharPtr,
+          mg_factoryFunctionName.CharPtr, configptr );
+          
+      }
+
+      // DISTRIBUTION ATTRIBUTES
+
+      generic<class TKey, class TValue>
+      void AttributesFactory<TKey, TValue>::SetScope( ScopeType scopeType )
+      {
+        NativePtr->setScope(
+          static_cast<gemfire::ScopeType::Scope>( scopeType ) );
+      }
+
+      // STORAGE ATTRIBUTES
+
+      generic<class TKey, class TValue>
+      void AttributesFactory<TKey, TValue>::SetClientNotificationEnabled(
+        bool clientNotificationEnabled )
+      {
+        NativePtr->setClientNotificationEnabled( clientNotificationEnabled );
+      }
+
+      generic<class TKey, class TValue>
+      void AttributesFactory<TKey, TValue>::SetEndpoints( String^ endpoints )
+      {
+        ManagedString mg_endpoints( endpoints );
+
+        NativePtr->setEndpoints( mg_endpoints.CharPtr );
+      }
+
+      generic<class TKey, class TValue>
+      void AttributesFactory<TKey, TValue>::SetPoolName( String^ poolName )
+      {
+        ManagedString mg_poolName( poolName );
+
+        NativePtr->setPoolName( mg_poolName.CharPtr );
+      }
+
+      // MAP ATTRIBUTES
+
+      generic<class TKey, class TValue>
+      void AttributesFactory<TKey, TValue>::SetInitialCapacity( int32_t initialCapacity )
+      {
+        _GF_MG_EXCEPTION_TRY/* due to auto replace */
+
+          NativePtr->setInitialCapacity( initialCapacity );
+
+        _GF_MG_EXCEPTION_CATCH_ALL/* due to auto replace */
+      }
+
+      generic<class TKey, class TValue>
+      void AttributesFactory<TKey, TValue>::SetLoadFactor( Single loadFactor )
+      {
+        _GF_MG_EXCEPTION_TRY/* due to auto replace */
+
+          NativePtr->setLoadFactor( loadFactor );
+
+        _GF_MG_EXCEPTION_CATCH_ALL/* due to auto replace */
+      }
+
+      generic<class TKey, class TValue>
+      void AttributesFactory<TKey, TValue>::SetConcurrencyLevel( int32_t concurrencyLevel )
+      {
+        _GF_MG_EXCEPTION_TRY/* due to auto replace */
+
+          NativePtr->setConcurrencyLevel( concurrencyLevel );
+
+        _GF_MG_EXCEPTION_CATCH_ALL/* due to auto replace */
+      }
+
+      generic<class TKey, class TValue>
+      void AttributesFactory<TKey, TValue>::SetLruEntriesLimit( uint32_t entriesLimit )
+      {
+        NativePtr->setLruEntriesLimit( entriesLimit );
+      }
+
+      generic<class TKey, class TValue>
+      void AttributesFactory<TKey, TValue>::SetDiskPolicy( DiskPolicyType diskPolicy )
+      {
+        NativePtr->setDiskPolicy(
+          static_cast<gemfire::DiskPolicyType::PolicyType>( diskPolicy ) );
+      }
+
+      generic<class TKey, class TValue>
+      void AttributesFactory<TKey, TValue>::SetCachingEnabled( bool cachingEnabled )
+      {
+        NativePtr->setCachingEnabled( cachingEnabled );
+      }
+
+      generic<class TKey, class TValue>
+      void AttributesFactory<TKey, TValue>::SetCloningEnabled( bool cloningEnabled )
+      {
+        NativePtr->setCloningEnabled( cloningEnabled );
+      }
+
+      generic<class TKey, class TValue>
+      void  AttributesFactory<TKey, TValue>::SetConcurrencyChecksEnabled( bool concurrencyChecksEnabled )
+      {
+        NativePtr->setConcurrencyChecksEnabled( concurrencyChecksEnabled );
+      }
+      // FACTORY METHOD
+
+      generic<class TKey, class TValue>
+      RegionAttributes<TKey, TValue>^ AttributesFactory<TKey, TValue>::CreateRegionAttributes( )
+      {
+        _GF_MG_EXCEPTION_TRY/* due to auto replace */
+
+          gemfire::RegionAttributesPtr& nativeptr (
+            NativePtr->createRegionAttributes( ) );
+          return RegionAttributes<TKey, TValue>::Create( nativeptr.ptr( ) );
+
+        _GF_MG_EXCEPTION_CATCH_ALL/* due to auto replace */
+      }
+
+    }
+  }
+}
+} //namespace 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/AttributesFactoryMN.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/AttributesFactoryMN.hpp b/geode-client-native/src/clicache/com/vmware/AttributesFactoryMN.hpp
new file mode 100644
index 0000000..f5cbf55
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/AttributesFactoryMN.hpp
@@ -0,0 +1,553 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "../../gf_defs.hpp"
+#include <cppcache/AttributesFactory.hpp>
+//#include "impl/NativeWrapperN.hpp"
+#include "ExpirationActionMN.hpp"
+#include "DiskPolicyTypeMN.hpp"
+#include "ScopeTypeMN.hpp"
+
+#include "ICacheLoaderN.hpp"
+#include "ICacheWriterN.hpp"
+#include "ICacheListenerN.hpp"
+#include "IPartitionResolverN.hpp"
+#include "IFixedPartitionResolverN.hpp"
+#include "IPersistenceManagerN.hpp"
+#include "RegionAttributesMN.hpp"
+
+using namespace System;
+using namespace System::Collections::Generic;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache {
+    
+    namespace Generic 
+    {
+
+      //ref class RegionAttributes;
+      //interface class ICacheLoader;
+      //interface class ICacheWriter;
+      //interface class ICacheListener;
+      //interface class IPartitionResolver;
+      //interface class IFixedPartitionResolver;
+
+
+      /// <summary>
+      /// Factory class to create instances of <see cref="RegionAttributes" />.
+      /// </summary>
+      /// <remarks>
+      /// An <see cref="AttributesFactory" />
+      /// instance maintains state for creating <see cref="RegionAttributes" /> instances.
+      /// The setter methods are used to change the settings that will be used for
+      /// creating the next attributes instance with the <see cref="CreateRegionAttributes" />
+      /// method. If you create a factory with the default constructor, then the
+      /// factory is set up to create attributes with all default settings. You can
+      /// also create a factory by providing a preset <see cref="RegionAttributes" />.
+      /// <para>
+      /// Once a <see cref="RegionAttributes" /> is created, it can only be modified
+      /// after it has been used to create a <see cref="Region" />, and then only by
+      /// using an <see cref="AttributesMutator" /> obtained from the region.
+      /// </para><para>
+      /// <h3>Attributes</h3>
+      /// <h4>Callbacks</h4>
+      /// <dl>
+      /// <dt><see cref="ICacheLoader" /> [<em>default:</em> null]</dt>
+      ///     <dd>User-implemented plug-in for loading data on cache misses.<br />
+      ///        see <see cref="SetCacheLoader" />,
+      ///            <see cref="RegionAttributes.CacheLoader" /></dd>
+      ///
+      /// <dt><see cref="ICacheWriter" /> [<em>default:</em> null]</dt>
+      ///     <dd>User-implemented plug-in for intercepting cache modifications, e.g.
+      ///         for writing to an external data source.<br />
+      ///         see <see cref="SetCacheWriter" />,
+      ///             <see cref="RegionAttributes.CacheWriter" /></dd>
+      ///
+      /// <dt><see cref="ICacheListener" /> [<em>default:</em> null]</dt>
+      ///     <dd>User-implemented plug-in for receiving and handling cache-related events.<br />
+      ///         see <see cref="SetCacheListener" />,
+      ///             <see cref="RegionAttributes.CacheListener" /></dd>
+      ///
+      /// <dt><see cref="IPartitionResolver" /> [<em>default:</em> null]</dt>
+      ///     <dd>User-implemented plug-in for custom partitioning.<br />
+      ///         see <see cref="SetPartitionResolver" />,
+      ///             <see cref="RegionAttributes.PartitionResolver" /></dd>
+      /// </dl>
+      /// <h4>Expiration</h4>
+      /// <dl>
+      /// <dt>RegionTimeToLive [<em>default:</em> no expiration]</dt>
+      ///     <dd>Expiration configuration for the entire region based on the
+      ///     lastModifiedTime ( <see cref="CacheStatistics.LastModifiedTime" /> ).<br />
+      ///         see <see cref="SetRegionTimeToLive" />,
+      ///             <see cref="RegionAttributes.RegionTimeToLive" />,
+      ///             <see cref="AttributesMutator.SetRegionTimeToLive" /></dd>
+      ///
+      /// <dt>RegionIdleTimeout [<em>default:</em> no expiration]</dt>
+      ///     <dd>Expiration configuration for the entire region based on the
+      ///         lastAccessedTime ( <see cref="CacheStatistics.LastAccessedTime" /> ).<br />
+      ///         see <see cref="SetRegionIdleTimeout" />,
+      ///             <see cref="RegionAttributes.RegionIdleTimeout" />,
+      ///             <see cref="AttributesMutator.SetRegionIdleTimeout" /></dd>
+      ///
+      /// <dt>EntryTimeToLive [<em>default:</em> no expiration]</dt>
+      ///     <dd>Expiration configuration for individual entries based on the
+      ///     lastModifiedTime ( <see cref="CacheStatistics.LastModifiedTime" /> ).<br />
+      ///         see <see cref="SetEntryTimeToLive" />,
+      ///             <see cref="RegionAttributes.EntryTimeToLive" />,
+      ///             <see cref="AttributesMutator.SetEntryTimeToLive" /></dd>
+      ///
+      /// <dt>EntryIdleTimeout [<em>default:</em> no expiration]</dt>
+      ///     <dd>Expiration configuration for individual entries based on the
+      ///         lastAccessedTime ( <see cref="CacheStatistics.LastAccessedTime" /> ).<br />
+      ///         see <see cref="SetEntryIdleTimeout" />,
+      ///             <see cref="RegionAttributes.EntryIdleTimeout" />,
+      ///             <see cref="AttributesMutator.SetEntryIdleTimeout" /></dd>
+      /// </dl>
+      /// <h4>Distribution</h4>
+      /// <dl>
+      /// <dt><see cref="ScopeType" /> [<em>default:</em> <tt>ScopeType.DistributedNoAck</tt>]</dt>
+      ///     <dd>The C++ cache can contain either local regions or distributed regions. 
+      ///         Distributed regions are configured with servers that they distribute 
+      ///         their operations to upto. Locally scoped regions do not have any 
+      ///         distribution behavior. GFE native client regions scoped as 
+      ///         ScopeType.DistributedNoAck and ScopeType.DistributedAck have identical
+      ///         distribution behavior.<br />
+      ///         see <see cref="SetScope" />,
+      ///             <see cref="RegionAttributes.Scope" /></dd>
+      /// </dl>
+      /// <h4>Storage</h4>
+      /// <dl>
+      /// <dt>InitialCapacity [<em>default:</em> <tt>16</tt>]</dt>
+      ///     <dd>The initial capacity of the map used for storing the entries.<br />
+      ///         see <see cref="SetInitialCapacity" />,
+      ///             <see cref="RegionAttributes.InitialCapacity" /></dd>
+      ///
+      /// <dt>LoadFactor [<em>default:</em> <tt>0.75</tt>]</dt>
+      ///     <dd>The load factor of the map used for storing the entries.<br />
+      ///         see <see cref="SetLoadFactor" />,
+      ///             <see cref="RegionAttributes.LoadFactor" /></dd>
+      ///
+      /// <dt>ConcurrencyLevel [<em>default:</em> <tt>16</tt>]</dt>
+      ///     <dd>The allowed concurrency among updates to values in the region
+      ///         is guided by the <tt>concurrencyLevel</tt>, which is used as a hint
+      ///         for internal sizing. The actual concurrency will vary.
+      ///         Ideally, you should choose a value to accommodate as many
+      ///         threads as will ever concurrently modify values in the region. Using a
+      ///         significantly higher value than you need can waste space and time,
+      ///         and a significantly lower value can lead to thread contention. But
+      ///         overestimates and underestimates within an order of magnitude do
+      ///         not usually have much noticeable impact. A value of one is
+      ///         appropriate when it is known that only one thread will modify
+      ///         and all others will only read.<br />
+      ///         see <see cref="SetConcurrencyLevel" />,
+      ///             <see cref="RegionAttributes.ConcurrencyLevel" /></dd>
+      ///
+      /// </dl>
+      /// </para>
+      /// </remarks>
+      /// <seealso cref="RegionAttributes" />
+      /// <seealso cref="AttributesMutator" />
+      /// <seealso cref="Region.CreateSubRegion" />
+      generic<class TKey, class TValue>
+      public ref class AttributesFactory sealed
+        : public Internal::UMWrap<gemfire::AttributesFactory>
+      {
+      public:
+
+        /// <summary>
+        /// Creates a new <c>AttributesFactory</c> ready to create
+        /// a <c>RegionAttributes</c> with default settings.
+        /// </summary>
+        inline AttributesFactory<TKey, TValue>( )
+          : UMWrap( new gemfire::AttributesFactory( ), true ) { }
+
+        /// <summary>
+        /// Creates a new instance of <c>AttributesFactory</c> ready to create
+        /// a <c>RegionAttributes</c> with the same settings as those in the
+        /// specified <c>RegionAttributes</c>.
+        /// </summary>
+        /// <param name="regionAttributes">
+        /// attributes used to initialize this AttributesFactory
+        /// </param>
+        AttributesFactory<TKey, TValue>(RegionAttributes<TKey, TValue>^ regionAttributes);
+
+        // CALLBACKS
+
+        /// <summary>
+        /// Sets the cache loader for the <c>RegionAttributes</c> being created.
+        /// </summary>
+        /// <param name="cacheLoader">
+        /// a user-defined cache loader, or null for no cache loader
+        /// </param>
+        //generic<class TKey, class TValue>
+        void SetCacheLoader( ICacheLoader<TKey, TValue>^ cacheLoader );
+
+        /// <summary>
+        /// Sets the cache writer for the <c>RegionAttributes</c> being created.
+        /// </summary>
+        /// <param name="cacheWriter">
+        /// user-defined cache writer, or null for no cache writer
+        /// </param>
+        //generic<class TKey, class TValue>
+        void SetCacheWriter( ICacheWriter<TKey, TValue>^ cacheWriter );
+
+        /// <summary>
+        /// Sets the CacheListener for the <c>RegionAttributes</c> being created.
+        /// </summary>
+        /// <param name="cacheListener">
+        /// user-defined cache listener, or null for no cache listener
+        /// </param>
+        //generic<class TKey, class TValue>
+        void SetCacheListener( ICacheListener<TKey, TValue>^ cacheListener );
+
+        /// <summary>
+        /// Sets the PartitionResolver for the <c>RegionAttributes</c> being created.
+        /// </summary>
+        /// <param name="partitionresolver">
+        /// user-defined partition resolver, or null for no partition resolver
+        /// </param>
+        //generic<class TKey, class TValue>
+        void SetPartitionResolver( IPartitionResolver<TKey, TValue>^ partitionresolver );
+
+        /// <summary>
+        /// Sets the library path for the library that will be invoked for the loader of the region.
+        /// </summary>
+        /// <param name="libPath">
+        /// library pathname containing the factory function.
+        /// </param>
+        /// <param name="factoryFunctionName">
+        /// Name of factory function that creates a <c>CacheLoader</c>
+        /// for a native library, or the name of the method in the form
+        /// {Namespace}.{Class Name}.{Method Name} that creates an
+        /// <c>ICacheLoader</c> for a managed library.
+        /// </param>
+        //generic<class TKey, class TValue>
+        void SetCacheLoader( String^ libPath, String^ factoryFunctionName );
+
+        /// <summary>
+        /// Sets the library path for the library that will be invoked for the writer of the region.
+        /// </summary>
+        /// <param name="libPath">
+        /// library pathname containing the factory function.
+        /// </param>
+        /// <param name="factoryFunctionName">
+        /// Name of factory function that creates a <c>CacheWriter</c>
+        /// for a native library, or the name of the method in the form
+        /// {Namespace}.{Class Name}.{Method Name} that creates an
+        /// <c>ICacheWriter</c> for a managed library.
+        /// </param>
+        //generic<class TKey, class TValue>
+        void SetCacheWriter( String^ libPath, String^ factoryFunctionName );
+
+        /// <summary>
+        /// Sets the library path for the library that will be invoked for the listener of the region.
+        /// </summary>
+        /// <param name="libPath">
+        /// library pathname containing the factory function.
+        /// </param>
+        /// <param name="factoryFunctionName">
+        /// Name of factory function that creates a <c>CacheListener</c>
+        /// for a native library, or the name of the method in the form
+        /// {Namespace}.{Class Name}.{Method Name} that creates an
+        /// <c>ICacheListener</c> for a managed library.
+        /// </param>
+        //generic<class TKey, class TValue>
+        void SetCacheListener( String^ libPath, String^ factoryFunctionName );
+
+
+        /// <summary>
+        /// Sets the library path for the library that will be invoked for the partition resolver of the region.
+        /// </summary>
+        /// <param name="libPath">
+        /// library pathname containing the factory function.
+        /// </param>
+        /// <param name="factoryFunctionName">
+        /// Name of factory function that creates a <c>PartitionResolver</c>
+        /// for a native library, or the name of the method in the form
+        /// {Namespace}.{Class Name}.{Method Name} that creates an
+        /// <c>IPartitionResolver</c> for a managed library.
+        /// </param>
+        //generic<class TKey, class TValue>
+        void SetPartitionResolver( String^ libPath, String^ factoryFunctionName );
+
+
+        // EXPIRATION ATTRIBUTES
+
+        /// <summary>
+        /// Sets the idleTimeout expiration attributes for region entries for the next
+        /// <c>RegionAttributes</c> created.
+        /// </summary>
+        /// <param name="action">
+        /// The expiration action for which to set the timeout.
+        /// </param>
+        /// <param name="idleTimeout">
+        /// the idleTimeout in seconds for entries in this region.
+        /// </param>
+        void SetEntryIdleTimeout( ExpirationAction action, uint32_t idleTimeout );
+
+        /// <summary>
+        /// Sets the timeToLive expiration attributes for region entries for the next
+        /// <c>RegionAttributes</c> created.
+        /// </summary>
+        /// <param name="action">
+        /// The expiration action for which to set the timeout.
+        /// </param>
+        /// <param name="timeToLive">
+        /// the timeToLive in seconds for entries in this region.
+        /// </param>
+        void SetEntryTimeToLive( ExpirationAction action, uint32_t timeToLive );
+
+        /// <summary>
+        /// Sets the idleTimeout expiration attributes for the region itself for the
+        /// next <c>RegionAttributes</c> created.
+        /// </summary>
+        /// <param name="action">
+        /// The expiration action for which to set the timeout.
+        /// </param>
+        /// <param name="idleTimeout">
+        /// the idleTimeout in seconds for the region as a whole.
+        /// </param>
+        void SetRegionIdleTimeout( ExpirationAction action, uint32_t idleTimeout );
+
+        /// <summary>
+        /// Sets the timeToLive expiration attributes for the region itself for the
+        /// next <c>RegionAttributes</c> created.
+        /// </summary>
+        /// <param name="action">
+        /// The expiration action for which to set the timeout.
+        /// </param>
+        /// <param name="timeToLive">
+        /// the timeToLive in seconds for the region as a whole.
+        /// </param>
+        void SetRegionTimeToLive( ExpirationAction action, uint32_t timeToLive );
+
+
+        // PERSISTENCE
+
+        /// <summary>
+        /// Sets the PersistenceManager object that will be invoked for the persistence of the region.
+        /// </summary>
+        /// <param name="persistenceManager">
+        /// Persistence Manager object
+        /// </param>
+        //generic<class TKey, class TValue>
+        void SetPersistenceManager(IPersistenceManager<TKey, TValue>^ persistenceManager);
+
+        /// <summary>
+        /// Sets the PersistenceManager object that will be invoked for the persistence of the region.
+        /// </summary>
+        /// <param name="persistenceManager">
+        /// Persistence Manager object
+        /// </param>
+        /// <param name="config">
+        /// The configuration properties to use for the PersistenceManager.
+        /// </param>
+        //generic<class TKey, class TValue>
+        void SetPersistenceManager(IPersistenceManager<TKey, TValue>^ persistenceManager, Properties<String^, String^>^ config);
+        
+
+        /// <summary>
+        /// Sets the library path for the library that will be invoked for the persistence of the region.
+        /// If the region is being created from a client on a server, or on a server directly, then
+        /// This must be used to set the PersistenceManager.
+        /// </summary>
+        /// <param name="libPath">The path of the PersistenceManager shared library.</param>
+        /// <param name="factoryFunctionName">
+        /// The name of the factory function to create an instance of PersistenceManager object.
+        /// </param>
+        void SetPersistenceManager( String^ libPath, String^ factoryFunctionName );
+
+        /// <summary>
+        /// Sets the library path for the library that will be invoked for the persistence of the region.
+        /// If the region is being created from a client on a server, or on a server directly, then
+        /// This must be used to set the PersistenceManager.
+        /// </summary>
+        /// <param name="libPath">The path of the PersistenceManager shared library.</param>
+        /// <param name="factoryFunctionName">
+        /// The name of the factory function to create an instance of PersistenceManager object.
+        /// </param>
+        /// <param name="config">
+        /// The configuration properties to use for the PersistenceManager.
+        /// </param>
+        void SetPersistenceManager( String^ libPath, String^ factoryFunctionName,
+          /*Dictionary<Object^, Object^>*/Properties<String^, String^>^ config );
+
+
+        // DISTRIBUTION ATTRIBUTES
+
+        /// <summary>
+        /// Sets the scope for the next <c>RegionAttributes</c> created.
+        /// </summary>
+        /// <param name="scopeType">
+        /// the type of scope to use for the region
+        /// </param>
+        [Obsolete("This method is obsolete since 3.5")]
+        void SetScope( ScopeType scopeType );
+
+
+        // STORAGE ATTRIBUTES
+
+        /// <summary>
+        /// Enables/disables client noficiations for a Thin client region.
+        /// </summary>
+        /// <param name="clientNotificationEnabled">
+        /// true if client notifications have to be enabled; false otherwise
+        /// </param>        
+        [Obsolete("This method is obsolete since 3.5; use PoolFactory.SetSubscriptionEnabled instead.")]
+        void SetClientNotificationEnabled(
+          bool clientNotificationEnabled );
+
+        /// <summary>
+        /// Set the endpoints for a Thin Client region.
+        /// </summary>
+        /// <remarks>
+        /// If the endpoints are set then the region is taken to be a Thin-client
+        /// region that interacts with the GemFire Java cacheserver.
+        /// </remarks>
+        /// <param name="endpoints">
+        /// The list of host:port pairs separated by commas.
+        /// </param>
+        [Obsolete("This method is obsolete since 3.5; use PoolFactory.AddServer or PoolFactory.AddLocator instead.")]
+        void SetEndpoints( String^ endpoints );
+
+        /// <summary>
+        /// Set the pool name for a Thin Client region.
+        /// </summary>
+        /// <remarks>
+        /// The pool with the name specified must be already created.
+        /// </remarks>
+        /// <param name="poolName">
+        /// The name of the pool to attach to this region.
+        /// </param>
+        void SetPoolName( String^ poolName );
+
+        // MAP ATTRIBUTES
+
+        /// <summary>
+        /// Sets the entry initial capacity for the <c>RegionAttributes</c>
+        /// being created. This value is used in initializing the map that
+        /// holds the entries.
+        /// </summary>
+        /// <param name="initialCapacity">the initial capacity of the entry map</param>
+        /// <exception cref="IllegalArgumentException">
+        /// if initialCapacity is nonpositive
+        /// </exception>
+        void SetInitialCapacity( int32_t initialCapacity );
+
+        /// <summary>
+        /// Sets the entry load factor for the next <c>RegionAttributes</c>
+        /// created. This value is
+        /// used in initializing the map that holds the entries.
+        /// </summary>
+        /// <param name="loadFactor">the load factor of the entry map</param>
+        /// <exception cref="IllegalArgumentException">
+        /// if loadFactor is nonpositive
+        /// </exception>
+        void SetLoadFactor( Single loadFactor );
+
+        /// <summary>
+        /// Sets the concurrency level of the next <c>RegionAttributes</c>
+        /// created. This value is used in initializing the map that holds the entries.
+        /// </summary>
+        /// <param name="concurrencyLevel">
+        /// the concurrency level of the entry map
+        /// </param>
+        /// <exception cref="IllegalArgumentException">
+        /// if concurrencyLevel is nonpositive
+        /// </exception>
+        void SetConcurrencyLevel( int32_t concurrencyLevel );
+
+        /// <summary>
+        /// Sets a limit on the number of entries that will be held in the cache.
+        /// If a new entry is added while at the limit, the cache will evict the
+        /// least recently used entry.
+        /// </summary>
+        /// <param name="entriesLimit">
+        /// The limit of the number of entries before eviction starts.
+        /// Defaults to 0, meaning no LRU actions will used.
+        /// </param>
+        void SetLruEntriesLimit( uint32_t entriesLimit );
+
+        /// <summary>
+        /// Sets the disk policy type for the next <c>RegionAttributes</c> created.
+        /// </summary>
+        /// <param name="diskPolicy">
+        /// the disk policy to use for the region
+        /// </param>
+        void SetDiskPolicy( DiskPolicyType diskPolicy );
+
+        /// <summary>
+        /// Set caching enabled flag for this region.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// If set to false, then no data is stored in the local process,
+        /// but events and distributions will still occur, and the region
+        /// can still be used to put and remove, etc...
+        /// </para><para>
+        /// The default if not set is 'true', 'false' is illegal for regions
+        /// of <c>ScopeType.Local</c> scope. 
+        /// </para>
+        /// </remarks>
+        /// <param name="cachingEnabled">
+        /// if true, cache data for this region in this process.
+        /// </param>
+        void SetCachingEnabled( bool cachingEnabled );
+        /// <summary>
+        /// Set cloning enabled flag for this region.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// If set to false, then there is no cloning will take place in case of delta.
+        /// Delta will be applied on the old value which will change old value in-place.
+        /// </para><para>
+        /// The default if not set is 'false'
+        /// of <c>ScopeType.Local</c> scope. 
+        /// </para>
+        /// </remarks>
+        /// <param name="cloningEnabled">
+        /// if true, clone old value before applying delta so that in-place change would not occour..
+        /// </param>
+        void SetCloningEnabled( bool cloningEnabled );
+
+        /// <summary>
+        /// Sets concurrency checks enabled flag for this region.
+        /// </summary>
+        /// <remarks>
+        /// <para>
+        /// If set to false, then the version checks will not occur.
+        /// </para><para>
+        /// The default if not set is 'true'
+        /// </para>
+        /// </remarks>
+        /// <param name="concurrencyChecksEnabled">
+        /// if true, version checks for region entries will occur.
+        /// </param>
+        void SetConcurrencyChecksEnabled( bool concurrencyChecksEnabled );
+        // FACTORY METHOD
+
+        /// <summary>
+        /// Creates a <c>RegionAttributes</c> with the current settings.
+        /// </summary>
+        /// <returns>the newly created <c>RegionAttributes</c></returns>
+        /// <exception cref="IllegalStateException">
+        /// if the current settings violate the <a href="compability.html">
+        /// compatibility</a> rules.
+        /// </exception>
+        RegionAttributes<TKey, TValue>^ CreateRegionAttributes( );
+      };
+
+    }
+  }
+}
+ } //namespace 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/AttributesMutatorMN.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/AttributesMutatorMN.cpp b/geode-client-native/src/clicache/com/vmware/AttributesMutatorMN.cpp
new file mode 100644
index 0000000..ee9ef4d
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/AttributesMutatorMN.cpp
@@ -0,0 +1,175 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+//#include "gf_includesN.hpp"
+#include "AttributesMutatorMN.hpp"
+//#include "RegionMN.hpp"
+#include "impl/ManagedCacheListenerN.hpp"
+#include "impl/ManagedCacheLoaderN.hpp"
+#include "impl/ManagedCacheWriterN.hpp"
+#include "impl/CacheLoaderMN.hpp"
+#include "impl/CacheWriterMN.hpp"
+#include "impl/CacheListenerMN.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+
+      generic<class TKey, class TValue>
+      int32_t AttributesMutator<TKey, TValue>::SetEntryIdleTimeout( int32_t idleTimeout )
+      {
+        return NativePtr->setEntryIdleTimeout( idleTimeout );
+      }
+
+      generic<class TKey, class TValue>
+      ExpirationAction AttributesMutator<TKey, TValue>::SetEntryIdleTimeoutAction(
+        ExpirationAction action )
+      {
+        return static_cast<ExpirationAction>(
+          NativePtr->setEntryIdleTimeoutAction(
+          static_cast<gemfire::ExpirationAction::Action>( action ) ) );
+      }
+
+      generic<class TKey, class TValue>
+      int32_t AttributesMutator<TKey, TValue>::SetEntryTimeToLive( int32_t timeToLive )
+      {
+        return NativePtr->setEntryTimeToLive( timeToLive );
+      }
+
+      generic<class TKey, class TValue>
+      ExpirationAction AttributesMutator<TKey, TValue>::SetEntryTimeToLiveAction(
+        ExpirationAction action )
+      {
+        return static_cast<ExpirationAction>(
+          NativePtr->setEntryTimeToLiveAction(
+          static_cast<gemfire::ExpirationAction::Action>( action ) ) );
+      }
+
+      generic<class TKey, class TValue>
+      int32_t AttributesMutator<TKey, TValue>::SetRegionIdleTimeout( int32_t idleTimeout )
+      {
+        return NativePtr->setRegionIdleTimeout( idleTimeout );
+      }
+
+      generic<class TKey, class TValue>
+      ExpirationAction AttributesMutator<TKey, TValue>::SetRegionIdleTimeoutAction(
+        ExpirationAction action )
+      {
+        return static_cast<ExpirationAction>(
+          NativePtr->setRegionIdleTimeoutAction(
+          static_cast<gemfire::ExpirationAction::Action>( action ) ) );
+      }
+
+      generic<class TKey, class TValue>
+      int32_t AttributesMutator<TKey, TValue>::SetRegionTimeToLive( int32_t timeToLive )
+      {
+        return NativePtr->setRegionTimeToLive( timeToLive );
+      }
+
+      generic<class TKey, class TValue>
+      ExpirationAction AttributesMutator<TKey, TValue>::SetRegionTimeToLiveAction(
+        ExpirationAction action )
+      {
+        return static_cast<ExpirationAction>(
+          NativePtr->setRegionTimeToLiveAction(
+          static_cast<gemfire::ExpirationAction::Action>( action ) ) );
+      }
+
+      generic<class TKey, class TValue>
+      uint32_t AttributesMutator<TKey, TValue>::SetLruEntriesLimit( uint32_t entriesLimit )
+      {
+        return NativePtr->setLruEntriesLimit( entriesLimit );
+      }
+
+      generic<class TKey, class TValue>
+      void AttributesMutator<TKey, TValue>::SetCacheListener( ICacheListener<TKey, TValue>^ cacheListener )
+      {
+        gemfire::CacheListenerPtr listenerptr;
+        if (cacheListener != nullptr)
+        {
+          CacheListenerGeneric<TKey, TValue>^ clg = gcnew CacheListenerGeneric<TKey, TValue>();
+          clg->SetCacheListener(cacheListener);
+          listenerptr = new gemfire::ManagedCacheListenerGeneric( /*clg,*/ cacheListener );
+          ((gemfire::ManagedCacheListenerGeneric*)listenerptr.ptr())->setptr(clg);
+        }
+        NativePtr->setCacheListener( listenerptr );
+      }
+
+      generic<class TKey, class TValue>
+      void AttributesMutator<TKey, TValue>::SetCacheListener( String^ libPath,
+        String^ factoryFunctionName )
+      {
+        throw gcnew System::NotSupportedException;
+        ManagedString mg_libpath( libPath );
+        ManagedString mg_factoryFunctionName( factoryFunctionName );
+
+        NativePtr->setCacheListener( mg_libpath.CharPtr,
+          mg_factoryFunctionName.CharPtr );
+      }
+
+      generic<class TKey, class TValue>
+      void AttributesMutator<TKey, TValue>::SetCacheLoader( ICacheLoader<TKey, TValue>^ cacheLoader )
+      {
+        gemfire::CacheLoaderPtr loaderptr;
+        if (cacheLoader != nullptr)
+        {
+          CacheLoaderGeneric<TKey, TValue>^ clg = gcnew CacheLoaderGeneric<TKey, TValue>();
+          clg->SetCacheLoader(cacheLoader);
+          loaderptr = new gemfire::ManagedCacheLoaderGeneric( /*clg,*/ cacheLoader );
+          ((gemfire::ManagedCacheLoaderGeneric*)loaderptr.ptr())->setptr(clg);
+        }
+        NativePtr->setCacheLoader( loaderptr );
+      }
+
+      generic<class TKey, class TValue>
+      void AttributesMutator<TKey, TValue>::SetCacheLoader( String^ libPath,
+        String^ factoryFunctionName )
+      {
+        throw gcnew System::NotSupportedException;
+        ManagedString mg_libpath( libPath );
+        ManagedString mg_factoryFunctionName( factoryFunctionName );
+
+        NativePtr->setCacheLoader( mg_libpath.CharPtr,
+          mg_factoryFunctionName.CharPtr );
+      }
+
+      generic<class TKey, class TValue>
+      void AttributesMutator<TKey, TValue>::SetCacheWriter( ICacheWriter<TKey, TValue>^ cacheWriter )
+      {
+        gemfire::CacheWriterPtr writerptr;
+        if (cacheWriter != nullptr)
+        {
+          CacheWriterGeneric<TKey, TValue>^ cwg = gcnew CacheWriterGeneric<TKey, TValue>();
+          cwg->SetCacheWriter(cacheWriter);
+          writerptr = new gemfire::ManagedCacheWriterGeneric( /*cwg,*/ cacheWriter );
+          ((gemfire::ManagedCacheWriterGeneric*)writerptr.ptr())->setptr(cwg);
+        }
+        NativePtr->setCacheWriter( writerptr );
+      }
+
+      generic<class TKey, class TValue>
+      void AttributesMutator<TKey, TValue>::SetCacheWriter( String^ libPath,
+        String^ factoryFunctionName )
+      {
+        throw gcnew System::NotSupportedException;
+        ManagedString mg_libpath( libPath );
+        ManagedString mg_factoryFunctionName( factoryFunctionName );
+
+        NativePtr->setCacheWriter( mg_libpath.CharPtr,
+          mg_factoryFunctionName.CharPtr );
+      }
+
+    }
+  }
+}
+ } //namespace 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/AttributesMutatorMN.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/AttributesMutatorMN.hpp b/geode-client-native/src/clicache/com/vmware/AttributesMutatorMN.hpp
new file mode 100644
index 0000000..e535a7a
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/AttributesMutatorMN.hpp
@@ -0,0 +1,256 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "../../gf_defs.hpp"
+#include <cppcache/AttributesMutator.hpp>
+//#include "impl/NativeWrapperN.hpp"
+#include "ExpirationActionMN.hpp"
+#include "ICacheListenerN.hpp"
+#include "ICacheLoaderN.hpp"
+#include "ICacheWriterN.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+
+      /// <summary>
+      /// Supports modification of certain region attributes after the region
+      /// has been created.
+      /// </summary>
+      /// <remarks>
+      /// <para>
+      /// It is required that the attributes be completely initialized using an
+      /// <see cref="AttributesFactory" /> before creating the region.
+      /// AttributesMutator can be applied to adjusting and tuning a subset of
+      /// attributes that are modifiable at runtime.
+      /// </para><para>
+      /// The setter methods all return the previous value of the attribute.
+      /// </para>
+      /// </remarks>
+      /// <seealso cref="Region.AttributesMutator" />
+      /// <seealso cref="RegionAttributes" />
+      /// <seealso cref="AttributesFactory" />
+      generic<class TKey, class TValue>
+      public ref class AttributesMutator sealed
+        : public Internal::SBWrap<gemfire::AttributesMutator>
+      {
+      public:
+
+        /// <summary>
+        /// Sets the idleTimeout duration for region entries.
+        /// </summary>
+        /// <param name="idleTimeout">
+        /// the idleTimeout in seconds for entries in this region, or 0 for no idle timeout
+        /// </param>
+        /// <returns>the previous value</returns>
+        /// <exception cref="IllegalStateException">
+        /// if the new idleTimeout changes entry expiration from
+        /// disabled to enabled or enabled to disabled.
+        /// </exception>
+        int32_t SetEntryIdleTimeout( int32_t idleTimeout );
+
+        /// <summary>
+        /// Sets the idleTimeout action for region entries.
+        /// </summary>
+        /// <param name="action">
+        /// the idleTimeout action for entries in this region
+        /// </param>
+        /// <returns>the previous action</returns>
+        ExpirationAction SetEntryIdleTimeoutAction( ExpirationAction action );
+
+        /// <summary>
+        /// Sets the timeToLive duration for region entries.
+        /// </summary>
+        /// <param name="timeToLive">
+        /// the timeToLive in seconds for entries in this region, or 0 to disable time-to-live
+        /// </param>
+        /// <returns>the previous value</returns>
+        /// <exception cref="IllegalStateException">
+        /// if the new timeToLive changes entry expiration from
+        /// disabled to enabled or enabled to disabled
+        /// </exception>
+        int32_t SetEntryTimeToLive( int32_t timeToLive );
+
+        /// <summary>
+        /// Set the timeToLive action for region entries.
+        /// </summary>
+        /// <param name="action">
+        /// the timeToLive action for entries in this region
+        /// </param>
+        /// <returns>the previous action</returns>
+        ExpirationAction SetEntryTimeToLiveAction( ExpirationAction action );
+
+        /// <summary>
+        /// Sets the idleTimeout duration for the region itself.
+        /// </summary>
+        /// <param name="idleTimeout">
+        /// the idleTimeout for this region, in seconds, or 0 to disable idle timeout
+        /// </param>
+        /// <returns>the previous value</returns>
+        /// <exception cref="IllegalStateException">
+        /// if the new idleTimeout changes region expiration from
+        /// disabled to enabled or enabled to disabled.
+        /// </exception>
+        int32_t SetRegionIdleTimeout( int32_t idleTimeout );
+
+        /// <summary>
+        /// Sets the idleTimeout action for the region itself.
+        /// </summary>
+        /// <param name="action">
+        /// the idleTimeout action for this region
+        /// </param>
+        /// <returns>the previous action</returns>
+        ExpirationAction SetRegionIdleTimeoutAction( ExpirationAction action );
+
+        /// <summary>
+        /// Sets the timeToLive duration for the region itself.
+        /// </summary>
+        /// <param name="timeToLive">
+        /// the timeToLive for this region, in seconds, or 0 to disable time-to-live
+        /// </param>
+        /// <returns>the previous value</returns>
+        /// <exception cref="IllegalStateException">
+        /// if the new timeToLive changes region expiration from
+        /// disabled to enabled or enabled to disabled.
+        /// </exception>
+        int32_t SetRegionTimeToLive( int32_t timeToLive );
+
+        /// <summary>
+        /// Sets the timeToLive action for the region itself.
+        /// </summary>
+        /// <param name="action">
+        /// the timeToLiv eaction for this region
+        /// </param>
+        /// <returns>the previous action</returns>
+        ExpirationAction SetRegionTimeToLiveAction( ExpirationAction action );
+
+        /// <summary>
+        /// Sets the maximum entry count in the region before LRU eviction.
+        /// </summary>
+        /// <param name="entriesLimit">the number of entries to allow, or 0 to disable LRU</param>
+        /// <returns>the previous value</returns>
+        /// <exception cref="IllegalStateException">
+        /// if the new entriesLimit changes LRU from
+        /// disabled to enabled or enabled to disabled.
+        /// </exception>
+        uint32_t SetLruEntriesLimit( uint32_t entriesLimit );
+
+        /// <summary>
+        /// Sets the CacheListener for the region.
+        /// The previous cache listener (if any) will be replaced with the given <c>cacheListener</c>.
+        /// </summary>
+        /// <param name="cacheListener">
+        /// user-defined cache listener, or null for no cache listener
+        /// </param>
+        void SetCacheListener( ICacheListener<TKey, TValue>^ cacheListener );
+
+        /// <summary>
+        /// Sets the library path for the library that will be invoked for the listener of the region.
+        /// The previous cache listener will be replaced with a listener created
+        /// using the factory function provided in the given library.
+        /// </summary>
+        /// <param name="libPath">
+        /// library pathname containing the factory function.
+        /// </param>
+        /// <param name="factoryFunctionName">
+        /// Name of factory function that creates a <c>CacheListener</c>
+        /// for a native library, or the name of the method in the form
+        /// {Namespace}.{Class Name}.{Method Name} that creates an
+        /// <c>ICacheListener</c> for a managed library.
+        /// </param>
+        void SetCacheListener( String^ libPath, String^ factoryFunctionName );
+
+        /// <summary>
+        /// Sets the CacheLoader for the region.
+        /// The previous cache loader (if any) will be replaced with the given <c>cacheLoader</c>.
+        /// </summary>
+        /// <param name="cacheLoader">
+        /// user-defined cache loader, or null for no cache loader
+        /// </param>
+        void SetCacheLoader( ICacheLoader<TKey, TValue>^ cacheLoader );
+
+        /// <summary>
+        /// Sets the library path for the library that will be invoked for the loader of the region.
+        /// The previous cache loader will be replaced with a loader created
+        /// using the factory function provided in the given library.
+        /// </summary>
+        /// <param name="libPath">
+        /// library pathname containing the factory function.
+        /// </param>
+        /// <param name="factoryFunctionName">
+        /// Name of factory function that creates a <c>CacheLoader</c>
+        /// for a native library, or the name of the method in the form
+        /// {Namespace}.{Class Name}.{Method Name} that creates an
+        /// <c>ICacheLoader</c> for a managed library.
+        /// </param>
+        void SetCacheLoader( String^ libPath, String^ factoryFunctionName );
+
+        /// <summary>
+        /// Sets the CacheListener for the region.
+        /// The previous cache writer (if any) will be replaced with the given <c>cacheWriter</c>.
+        /// </summary>
+        /// <param name="cacheWriter">
+        /// user-defined cache writer, or null for no cache writer
+        /// </param>
+        void SetCacheWriter( ICacheWriter<TKey, TValue>^ cacheWriter );
+
+        /// <summary>
+        /// Sets the library path for the library that will be invoked for the writer of the region.
+        /// The previous cache writer will be replaced with a writer created
+        /// using the factory function provided in the given library.
+        /// </summary>
+        /// <param name="libPath">
+        /// library pathname containing the factory function.
+        /// </param>
+        /// <param name="factoryFunctionName">
+        /// Name of factory function that creates a <c>CacheWriter</c>
+        /// for a native library, or the name of the method in the form
+        /// {Namespace}.{Class Name}.{Method Name} that creates an
+        /// <c>ICacheWriter</c> for a managed library.
+        /// </param>
+        void SetCacheWriter( String^ libPath, String^ factoryFunctionName );
+
+
+      internal:
+        /// <summary>
+        /// Internal factory function to wrap a native object pointer inside
+        /// this managed class with null pointer check.
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        /// <returns>
+        /// The managed wrapper object; null if the native pointer is null.
+        /// </returns>
+        inline static AttributesMutator<TKey, TValue>^ Create( gemfire::AttributesMutator* nativeptr )
+        {
+          return ( nativeptr != nullptr ?
+            gcnew AttributesMutator<TKey, TValue>( nativeptr ) : nullptr );
+        }
+
+
+      private:
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline AttributesMutator<TKey, TValue>( gemfire::AttributesMutator* nativeptr )
+          : SBWrap( nativeptr ) { }
+      };
+
+    }
+  }
+}
+ } //namespace 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CacheAttributesFactoryMN.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CacheAttributesFactoryMN.cpp b/geode-client-native/src/clicache/com/vmware/CacheAttributesFactoryMN.cpp
new file mode 100644
index 0000000..ae6f59c
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CacheAttributesFactoryMN.cpp
@@ -0,0 +1,53 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+
+
+//#include "gf_includesN.hpp"
+#include "CacheAttributesFactoryMN.hpp"
+#include "CacheAttributesMN.hpp"
+#include "../../ExceptionTypesM.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+
+      void CacheAttributesFactory::SetRedundancyLevel( int32_t redundancyLevel )
+      {
+        NativePtr->setRedundancyLevel( redundancyLevel );
+      }
+
+      void CacheAttributesFactory::SetEndpoints( String^ endpoints )
+      {
+        ManagedString mg_endpoints( endpoints );
+        NativePtr->setEndpoints( mg_endpoints.CharPtr );
+      }
+
+      CacheAttributes^ CacheAttributesFactory::CreateCacheAttributes( )
+      {
+        _GF_MG_EXCEPTION_TRY/* due to auto replace */
+
+          gemfire::CacheAttributesPtr& nativeptr =
+            NativePtr->createCacheAttributes();
+
+          return CacheAttributes::Create(nativeptr.ptr());
+
+        _GF_MG_EXCEPTION_CATCH_ALL/* due to auto replace */
+      }
+
+    }
+  }
+}
+ } //namespace 
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CacheAttributesFactoryMN.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CacheAttributesFactoryMN.hpp b/geode-client-native/src/clicache/com/vmware/CacheAttributesFactoryMN.hpp
new file mode 100644
index 0000000..35c3fb2
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CacheAttributesFactoryMN.hpp
@@ -0,0 +1,76 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+
+
+#pragma once
+
+#include "../../gf_defs.hpp"
+#include <cppcache/CacheAttributesFactory.hpp>
+#include "impl/NativeWrapperN.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+
+      ref class CacheAttributes;
+
+      /// <summary>
+      /// Creates instances of <c>CacheAttributes</c>.
+      /// </summary>
+      /// <seealso cref="CacheAttributes" />
+      public ref class CacheAttributesFactory sealed
+        : public Internal::UMWrap<gemfire::CacheAttributesFactory>
+      {
+      public:
+
+        /// <summary>
+        /// Creates a new instance of <c>CacheAttributesFactory</c> ready
+        /// to create a <c>CacheAttributes</c> with default settings.
+        /// </summary>
+        inline CacheAttributesFactory( )
+          : UMWrap( new gemfire::CacheAttributesFactory( ), true )
+        { }
+
+        // ATTRIBUTES
+
+        /// <summary>
+        /// Sets redundancy level to use for regions in the cache.
+        /// </summary>
+        [Obsolete("This method is obsolete since 3.5; use PoolFactory.SetSubscriptionRedundancy instead.")]
+        void SetRedundancyLevel( int32_t redundancyLevel );
+
+        /// <summary>
+        /// Sets endpoints list to be used at the cache-level.
+        /// </summary>
+        [Obsolete("This method is obsolete since 3.5; use PoolFactory.AddServer or PoolFactory.AddLocator instead.")]
+        void SetEndpoints( String^ endpoints );
+
+        // FACTORY METHOD
+
+        /// <summary>
+        /// Creates a <c>CacheAttributes</c> with the current settings.
+        /// </summary>
+        /// <returns>The newly created <c>CacheAttributes</c></returns>
+        /// <exception cref="IllegalStateException">
+        /// if the current settings violate the <a href="compability.html">
+        /// compatibility</a> rules.
+        /// </exception>
+        CacheAttributes^ CreateCacheAttributes( );
+      };
+
+    }
+  }
+}
+ } //namespace 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CacheAttributesMN.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CacheAttributesMN.cpp b/geode-client-native/src/clicache/com/vmware/CacheAttributesMN.cpp
new file mode 100644
index 0000000..402b527
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CacheAttributesMN.cpp
@@ -0,0 +1,38 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+
+
+//#include "gf_includesN.hpp"
+#include "CacheAttributesMN.hpp"
+#include "impl/ManagedStringN.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+
+      int32_t CacheAttributes::RedundancyLevel::get( )
+      {
+        return NativePtr->getRedundancyLevel( );
+      }
+
+      String^ CacheAttributes::Endpoints::get( )
+      {
+        return ManagedString::Get( NativePtr->getEndpoints( ) );
+      }
+
+    }
+  }
+}
+ } //namespace 
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/com/vmware/CacheAttributesMN.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/com/vmware/CacheAttributesMN.hpp b/geode-client-native/src/clicache/com/vmware/CacheAttributesMN.hpp
new file mode 100644
index 0000000..b399f89
--- /dev/null
+++ b/geode-client-native/src/clicache/com/vmware/CacheAttributesMN.hpp
@@ -0,0 +1,98 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+
+
+#pragma once
+
+#include "../../gf_defs.hpp"
+#include <cppcache/CacheAttributes.hpp>
+#include "impl/NativeWrapperN.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache { namespace Generic
+    {
+
+      /// <summary>
+      /// Defines attributes for configuring a cache.
+      /// </summary>
+      /// <remarks>
+      /// Currently the following attributes are defined:
+      /// <c>redundancyLevel</c>: Redundancy for HA client queues.
+      /// <c>endpoints</c>: Cache level endpoints list.
+      /// To create an instance of this interface, use
+      /// <see cref="CacheAttributesFactory.CreateCacheAttributes" />.
+      ///
+      /// For compatibility rules and default values, see
+      /// <see cref="CacheAttributesFactory" />.
+      ///
+      /// Note that the <c>CacheAttributes</c> are not distributed with
+      /// the region.
+      /// </remarks>
+      /// <seealso cref="CacheAttributesFactory" />
+      public ref class CacheAttributes sealed
+        : public Internal::SBWrap<gemfire::CacheAttributes>
+      {
+      public:
+
+        /// <summary>
+        /// Gets redundancy level for regions in the cache.
+        /// </summary>
+        property int32_t RedundancyLevel
+        {
+          int32_t get( );
+        }
+
+        /// <summary>
+        /// Gets cache level endpoints list.
+        /// </summary>
+        property String^ Endpoints
+        {
+          String^ get( );
+        }
+
+
+      internal:
+
+        /// <summary>
+        /// Internal factory function to wrap a native object pointer inside
+        /// this managed class with null pointer check.
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        /// <returns>
+        /// The managed wrapper object; null if the native pointer is null.
+        /// </returns>
+        inline static CacheAttributes^ Create(
+          gemfire::CacheAttributes* nativeptr )
+        {
+          return ( nativeptr != nullptr ?
+            gcnew CacheAttributes( nativeptr ) : nullptr );
+        }
+
+
+      private:
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline CacheAttributes( gemfire::CacheAttributes* nativeptr )
+          : SBWrap( nativeptr ) { }
+      };
+
+    }
+  }
+}
+ } //namespace 
+



[08/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/StatisticsFactoryM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/StatisticsFactoryM.hpp b/geode-client-native/src/clicache/StatisticsFactoryM.hpp
new file mode 100644
index 0000000..e7da8f2
--- /dev/null
+++ b/geode-client-native/src/clicache/StatisticsFactoryM.hpp
@@ -0,0 +1,254 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "impl/NativeWrapper.hpp"
+#include "cppcache/statistics/StatisticsFactory.hpp"
+#include "cppcache/statistics/StatisticsType.hpp"
+#include "cppcache/statistics/StatisticDescriptor.hpp"
+#include "cppcache/statistics/Statistics.hpp"
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      ref class StatisticDescriptor;
+      ref class StatisticsType;
+      ref class Statistics; 
+
+      /// <summary>
+      /// Instances of this interface provide methods that create instances
+      /// of <see cref="StatisticDescriptor" /> and <see cref="StatisticsType" />.
+      /// Every <see cref="StatisticsFactory" /> is also a type factory.
+      /// </summary>
+      /// <para>
+      /// A <c>StatisticsFactory</c> can create a <see cref="StatisticDescriptor" />
+      /// statistic of three numeric types:
+      /// <c>int</c>, <c>long</c>, and <c>double</c>.  A
+      /// statistic (<c>StatisticDescriptor</c>) can either be a
+      /// <I>gauge</I> meaning that its value can increase and decrease or a
+      /// <I>counter</I> meaning that its value is strictly increasing.
+      /// Marking a statistic as a counter allows the GemFire Manager Console
+      /// to properly display a statistics whose value "wraps around" (that
+      /// is, exceeds its maximum value).
+      /// </para>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class StatisticsFactory sealed
+        : public Internal::UMWrap<gemfire_statistics::StatisticsFactory>
+      {
+        protected:
+          StatisticsFactory(){}
+          StatisticsFactory(StatisticsFactory^){}
+      public:
+          /// <summary>
+          /// Return a pre-existing statistics factory. Typically configured through
+          /// creation of a distributed system.
+          /// </summary>
+          static StatisticsFactory^ GetExistingInstance();
+
+          /// <summary>
+          /// Creates and returns an int counter  <see cref="StatisticDescriptor" />
+          /// with the given <c>name</c>, <c>description</c>,
+          /// <c>units</c>, and with larger values indicating better performance.
+          /// </summary>
+          virtual StatisticDescriptor^ CreateIntCounter( String^ name, String^ description, String^ units, int8_t largerBetter );
+
+          /// <summary>
+          /// Creates and returns an int counter  <see cref="StatisticDescriptor" />
+          /// with the given <c>name</c>, <c>description</c>,
+          /// <c>units</c>.
+          /// </summary>
+          virtual StatisticDescriptor^ CreateIntCounter( String^ name, String^ description, String^ units );
+
+          /// <summary>
+          /// Creates and returns an long counter  <see cref="StatisticDescriptor" />
+          /// with the given <c>name</c>, <c>description</c>,
+          /// <c>units</c>, and with larger values indicating better performance.
+          /// </summary>
+          virtual StatisticDescriptor^ CreateLongCounter( String^ name, String^ description, String^ units, int8_t largerBetter );
+
+          /// <summary>
+          /// Creates and returns an long counter  <see cref="StatisticDescriptor" />
+          /// with the given <c>name</c>, <c>description</c>,
+          /// <c>units</c>.
+          /// </summary>
+          virtual StatisticDescriptor^ CreateLongCounter( String^ name, String^ description, String^ units );
+
+          /// <summary>
+          /// Creates and returns an double counter  <see cref="StatisticDescriptor" />
+          /// with the given <c>name</c>, <c>description</c>,
+          /// <c>units</c>, and with larger values indicating better performance.
+          /// </summary>
+
+          virtual StatisticDescriptor^ CreateDoubleCounter( String^ name, String^ description, String^ units, int8_t largerBetter );
+
+          /// <summary>
+          /// Creates and returns an double counter  <see cref="StatisticDescriptor" />
+          /// with the given <c>name</c>, <c>description</c>,
+          /// <c>units</c>.
+          /// </summary>
+          virtual StatisticDescriptor^ CreateDoubleCounter( String^ name, String^ description, String^ units );
+
+          /// <summary>
+          /// Creates and returns an int gauge  <see cref="StatisticDescriptor" />
+          /// with the given <c>name</c>, <c>description</c>,
+          /// <c>units</c>, and with smaller values indicating better performance.
+          /// </summary>
+          virtual StatisticDescriptor^ CreateIntGauge( String^ name, String^ description, String^ units, int8_t largerBetter );
+
+          /// <summary>
+          /// Creates and returns an int gauge  <see cref="StatisticDescriptor" />
+          /// with the given <c>name</c>, <c>description</c>,
+          /// <c>units</c>.
+          /// </summary>
+          virtual StatisticDescriptor^ CreateIntGauge( String^ name, String^ description, String^ units );
+
+          /// <summary>
+          /// Creates and returns an long gauge <see cref="StatisticDescriptor" />
+          /// with the given <c>name</c>, <c>description</c>,
+          /// <c>units</c>, and with smaller values indicating better performance.
+          /// </summary>
+          virtual StatisticDescriptor^ CreateLongGauge( String^ name, String^ description, String^ units, int8_t largerBetter );
+
+          /// <summary>
+          /// Creates and returns an long gauge <see cref="StatisticDescriptor" />
+          /// with the given <c>name</c>, <c>description</c>,
+          /// <c>units</c>.
+          /// </summary>
+          virtual StatisticDescriptor^ CreateLongGauge( String^ name, String^ description, String^ units );
+
+          /// <summary>
+          /// Creates and returns an double gauge <see cref="StatisticDescriptor" />
+          /// with the given <c>name</c>, <c>description</c>,
+          /// <c>units</c>, and with smaller values indicating better performance.
+          /// </summary>
+          virtual StatisticDescriptor^ CreateDoubleGauge( String^ name, String^ description, String^ units, int8_t largerBetter );
+
+          /// <summary>
+          /// Creates and returns an double gauge <see cref="StatisticDescriptor" />
+          /// with the given <c>name</c>, <c>description</c>,
+          /// <c>units</c>.
+          /// </summary>
+          virtual StatisticDescriptor^ CreateDoubleGauge( String^ name, String^ description, String^ units );
+
+          /// <summary>
+          /// Creates and returns a <see cref="StatisticsType" /> 
+          /// with the given <c>name</c>, <c>description</c>,and <see cref="StatisticDescriptor" />
+          /// </summary>
+          /// <exception cref="IllegalArgumentException">
+          /// if a type with the given <c>name</c> already exists.
+          /// </exception>
+          virtual StatisticsType^ CreateType( String^ name, String^ description,
+                                   array<StatisticDescriptor^>^ stats, int32 statsLength);
+
+          /// <summary>
+          /// Finds and returns an already created <see cref="StatisticsType" /> 
+          /// with the given <c>name</c>. Returns <c>null</c> if the type does not exist.
+          /// </summary>
+          virtual StatisticsType^ FindType( String^ name );
+
+          /// <summary>
+          /// Creates and returns a <see cref="Statistics" /> instance of the given <see cref="StatisticsType" /> type, <c>textId</c>, and with default ids.
+          /// </summary>
+          /// <para>
+          /// The created instance may not be <see cref="Statistics#isAtomic" /> atomic.
+          /// </para>
+          virtual Statistics^ CreateStatistics(StatisticsType^ type);
+
+          /// <summary>
+          /// Creates and returns a <see cref="Statistics" /> instance of the given <see cref="StatisticsType" /> type, <c>textId</c>, and with a default numeric id.
+          /// </summary>
+          /// <para>
+          /// The created instance may not be <see cref="Statistics#isAtomic" /> atomic.
+          /// </para>
+          virtual Statistics^ CreateStatistics(StatisticsType^ type, String^ textId);
+
+          /// <summary>
+          /// Creates and returns a <see cref="Statistics" /> instance of the given <see cref="StatisticsType" /> type, <c>textId</c>, and <c>numericId</c>.
+          /// </summary>
+          /// <para>
+          /// The created instance may not be <see cref="Statistics#isAtomic" /> atomic.
+          /// </para>
+          virtual Statistics^ CreateStatistics(StatisticsType^ type, String^ textId, int64_t numericId);
+
+          /// <summary>
+          /// Creates and returns a <see cref="Statistics" /> instance of the given <see cref="StatisticsType" /> type, <c>textId</c>, and with default ids.
+          /// </summary>
+          /// <para>
+          /// The created instance will be <see cref="Statistics#isAtomic" /> atomic.
+          /// </para>
+          virtual Statistics^ CreateAtomicStatistics(StatisticsType^ type);
+
+          /// <summary>
+          /// Creates and returns a <see cref="Statistics" /> instance of the given <see cref="StatisticsType" /> type, <c>textId</c>, and with a default numeric id.
+          /// </summary>
+          /// <para>
+          /// The created instance will be <see cref="Statistics#isAtomic" /> atomic.
+          /// </para>
+          virtual Statistics^ CreateAtomicStatistics(StatisticsType^ type, String^ textId);
+
+          /// <summary>
+          /// Creates and returns a <see cref="Statistics" /> instance of the given <see cref="StatisticsType" /> type, <c>textId</c>, and <c>numericId</c>.
+          /// </summary>
+          /// <para>
+          /// The created instance will be <see cref="Statistics#isAtomic" /> atomic.
+          /// </para>
+          virtual Statistics^ CreateAtomicStatistics(StatisticsType^ type, String^ textId, int64 numericId);
+
+          /// <summary>
+          /// Return the first instance that matches the type, or NULL
+          /// </summary>
+          virtual Statistics^ FindFirstStatisticsByType( StatisticsType^ type );
+          
+          /// <summary>
+          /// Returns a name that can be used to identify the manager
+          /// </summary>
+          virtual property String^ Name
+          {
+            virtual String^ get( );
+          }
+
+          /// <summary>
+          /// Returns a numeric id that can be used to identify the manager
+          /// </summary>
+          virtual property int64_t ID
+          {
+            virtual int64_t get( );
+          }
+
+        internal:
+           /// <summary>
+           /// Internal factory function to wrap a native object pointer inside
+           /// this managed class, with null pointer check.
+           /// </summary>
+           /// <param name="nativeptr">native object pointer</param>
+           /// <returns>
+           /// the managed wrapper object, or null if the native pointer is null.
+           /// </returns>
+           inline static StatisticsFactory^ Create(
+           gemfire_statistics::StatisticsFactory* nativeptr )
+           {
+             return ( nativeptr != nullptr ?
+             gcnew StatisticsFactory( nativeptr ) : nullptr );
+           }
+
+         private:
+           /// <summary>
+           /// Private constructor to wrap a native object pointer
+           /// </summary>
+           /// <param name="nativeptr">The native object pointer</param>
+           inline StatisticsFactory( gemfire_statistics::StatisticsFactory* nativeptr )
+           : UMWrap( nativeptr, false ) { }
+      };
+    }
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/StatisticsM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/StatisticsM.cpp b/geode-client-native/src/clicache/StatisticsM.cpp
new file mode 100644
index 0000000..95b8df9
--- /dev/null
+++ b/geode-client-native/src/clicache/StatisticsM.cpp
@@ -0,0 +1,284 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "StatisticsM.hpp"
+#include "StatisticDescriptorM.hpp"
+#include "ExceptionTypesM.hpp"
+#include "StatisticsTypeM.hpp"
+#include "impl/SafeConvert.hpp"
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      void Statistics::Close()
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          NativePtr->close();
+
+        _GF_MG_EXCEPTION_CATCH_ALL 
+      }
+
+      int32_t Statistics::NameToId(String^ name)
+      {
+        ManagedString mg_name( name );
+        _GF_MG_EXCEPTION_TRY
+          return NativePtr->nameToId(mg_name.CharPtr);
+        _GF_MG_EXCEPTION_CATCH_ALL 
+      }
+
+      StatisticDescriptor^ Statistics::NameToDescriptor(String^ name)
+      {
+        ManagedString mg_name( name );
+        _GF_MG_EXCEPTION_TRY
+          return GemStone::GemFire::Cache::StatisticDescriptor::Create(NativePtr->nameToDescriptor(mg_name.CharPtr));
+        _GF_MG_EXCEPTION_CATCH_ALL 
+      }
+
+      int64_t Statistics::UniqueId::get( )
+      {
+        return NativePtr->getUniqueId();
+      }
+
+      StatisticsType^ Statistics::Type::get( )
+      { 
+        return GemStone::GemFire::Cache::StatisticsType::Create(NativePtr->getType());
+      }
+
+      String^ Statistics::TextId::get()
+      {
+        return ManagedString::Get(NativePtr->getTextId());
+      }
+
+      int64_t Statistics::NumericId::get()
+      {
+        return NativePtr->getNumericId();
+      }
+      bool Statistics::IsAtomic::get()
+      {
+        return NativePtr->isAtomic();
+      }
+      bool Statistics::IsShared::get()
+      {
+        return NativePtr->isShared();
+      }
+      bool Statistics::IsClosed::get()
+      {
+        return NativePtr->isClosed();
+      }
+      
+      void Statistics::SetInt(int32_t id, int32_t value)
+      {
+        _GF_MG_EXCEPTION_TRY
+          NativePtr->setInt(id, value);
+        _GF_MG_EXCEPTION_CATCH_ALL 
+      } 
+
+      void Statistics::SetInt(String^ name, int32_t value)
+      {
+        ManagedString mg_name( name );
+        _GF_MG_EXCEPTION_TRY
+          NativePtr->setInt((char*)mg_name.CharPtr, value);
+        _GF_MG_EXCEPTION_CATCH_ALL 
+      }
+
+      void Statistics::SetInt(StatisticDescriptor^ descriptor, int32_t value)
+      {
+        _GF_MG_EXCEPTION_TRY
+          NativePtr->setInt(GetNativePtr<gemfire_statistics::StatisticDescriptor>(descriptor),value);
+        _GF_MG_EXCEPTION_CATCH_ALL 
+      }
+
+      void Statistics::SetLong(int32_t id, int64_t value)
+      {
+        _GF_MG_EXCEPTION_TRY
+          NativePtr->setLong(id, value);
+        _GF_MG_EXCEPTION_CATCH_ALL 
+      }
+
+      void Statistics::SetLong(StatisticDescriptor^ descriptor, int64_t value)
+      {
+        _GF_MG_EXCEPTION_TRY
+          NativePtr->setLong(GetNativePtr<gemfire_statistics::StatisticDescriptor>(descriptor),value);
+        _GF_MG_EXCEPTION_CATCH_ALL 
+      }
+
+      void Statistics::SetLong(String^ name, int64_t value)
+      {
+        ManagedString mg_name( name );
+        _GF_MG_EXCEPTION_TRY
+          NativePtr->setLong((char*)mg_name.CharPtr, value);
+        _GF_MG_EXCEPTION_CATCH_ALL 
+      }
+
+      void Statistics::SetDouble(int32_t id, double value)
+      {
+        _GF_MG_EXCEPTION_TRY
+          NativePtr->setDouble(id, value);
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Statistics::SetDouble(String^ name, double value)
+      {
+        ManagedString mg_name( name );
+        _GF_MG_EXCEPTION_TRY
+          NativePtr->setDouble((char*)mg_name.CharPtr, value);
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void Statistics::SetDouble(StatisticDescriptor^ descriptor, double value)
+      {
+        _GF_MG_EXCEPTION_TRY
+            NativePtr->setDouble(GetNativePtr<gemfire_statistics::StatisticDescriptor>(descriptor), value);
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      int32_t Statistics::GetInt(int32_t id)
+      {
+        _GF_MG_EXCEPTION_TRY
+          return NativePtr->getInt(id);
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      int32_t Statistics::GetInt(StatisticDescriptor^ descriptor)
+      {
+        _GF_MG_EXCEPTION_TRY
+          return NativePtr->getInt(GetNativePtr<gemfire_statistics::StatisticDescriptor>(descriptor));
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      int32_t Statistics::GetInt(String^ name)
+      {
+        ManagedString mg_name( name );
+        _GF_MG_EXCEPTION_TRY
+          return NativePtr->getInt((char*)mg_name.CharPtr);
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      int64_t Statistics::GetLong(int32_t id)
+      {
+        _GF_MG_EXCEPTION_TRY
+           return NativePtr->getLong(id);
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+       int64_t Statistics::GetLong(StatisticDescriptor^ descriptor)
+       {
+          _GF_MG_EXCEPTION_TRY
+            return NativePtr->getLong(GetNativePtr<gemfire_statistics::StatisticDescriptor>(descriptor));
+          _GF_MG_EXCEPTION_CATCH_ALL
+       }
+
+      int64_t Statistics::GetLong(String^ name)
+      {
+        ManagedString mg_name( name );
+        _GF_MG_EXCEPTION_TRY
+         return NativePtr->getLong((char*)mg_name.CharPtr);
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      double Statistics::GetDouble(int32_t id)
+      {
+         _GF_MG_EXCEPTION_TRY
+           return NativePtr->getDouble(id);
+         _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      double Statistics::GetDouble(StatisticDescriptor^ descriptor)
+      {
+        _GF_MG_EXCEPTION_TRY
+           return NativePtr->getDouble(GetNativePtr<gemfire_statistics::StatisticDescriptor>(descriptor));
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      double Statistics::GetDouble(String^ name)
+      {
+        ManagedString mg_name( name );
+        _GF_MG_EXCEPTION_TRY
+          return NativePtr->getDouble((char*)mg_name.CharPtr);
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      int64_t Statistics::GetRawBits(StatisticDescriptor^ descriptor)
+      {
+         _GF_MG_EXCEPTION_TRY
+           return NativePtr->getRawBits(GetNativePtr<gemfire_statistics::StatisticDescriptor>(descriptor));
+         _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      int32_t Statistics::IncInt(int32_t id, int32_t delta)
+      {
+        _GF_MG_EXCEPTION_TRY
+          return NativePtr->incInt(id,delta);
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      int32_t Statistics::IncInt(StatisticDescriptor^ descriptor, int32_t delta)
+      {
+        _GF_MG_EXCEPTION_TRY
+          return NativePtr->incInt(GetNativePtr<gemfire_statistics::StatisticDescriptor>(descriptor),delta);
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      int32_t Statistics::IncInt(String^ name, int32_t delta)
+      {
+         ManagedString mg_name( name );
+        _GF_MG_EXCEPTION_TRY
+          return NativePtr->incInt((char*)mg_name.CharPtr,delta);
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      int64_t Statistics::IncLong(int32_t id, int64_t delta)
+      {
+        _GF_MG_EXCEPTION_TRY
+          return NativePtr->incLong(id,delta);
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      int64_t Statistics::IncLong(StatisticDescriptor^ descriptor, int64_t delta)
+      {
+        _GF_MG_EXCEPTION_TRY
+          return NativePtr->incLong(GetNativePtr<gemfire_statistics::StatisticDescriptor>(descriptor),delta);
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      int64_t Statistics::IncLong(String^ name, int64_t delta)
+      {
+         ManagedString mg_name( name );
+         _GF_MG_EXCEPTION_TRY
+           return NativePtr->incLong((char*)mg_name.CharPtr,delta);
+         _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      double Statistics::IncDouble(int32_t id, double delta)
+      {
+        _GF_MG_EXCEPTION_TRY
+          return NativePtr->incDouble(id,delta);
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      double Statistics::IncDouble(StatisticDescriptor^ descriptor, double delta)
+      {
+        _GF_MG_EXCEPTION_TRY
+          return NativePtr->incDouble(GetNativePtr<gemfire_statistics::StatisticDescriptor>(descriptor),delta);
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      double Statistics::IncDouble(String^ name, double delta)
+      {
+        ManagedString mg_name( name );
+        _GF_MG_EXCEPTION_TRY
+          return NativePtr->incDouble((char*)mg_name.CharPtr,delta);
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+    }
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/StatisticsM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/StatisticsM.hpp b/geode-client-native/src/clicache/StatisticsM.hpp
new file mode 100644
index 0000000..7f17977
--- /dev/null
+++ b/geode-client-native/src/clicache/StatisticsM.hpp
@@ -0,0 +1,531 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "impl/NativeWrapper.hpp"
+#include "cppcache/statistics/Statistics.hpp"
+#include "cppcache/statistics/StatisticDescriptor.hpp"   
+#include "cppcache/statistics/StatisticsType.hpp"
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      ref class StatisticDescriptor;
+      ref class StatisticsType;
+
+      /// <summary>
+      /// An instantiation of an existing <c>StatisticsType</c> object with methods for
+      /// setting, incrementing and getting individual <c>StatisticDescriptor</c> values.
+      /// </summary>
+      /// <para>
+      /// The class is purposefully inherited from UMWrapN and not UMWrap as the destructor
+      /// of the class is protected, and so it is now not called from inside the InternalCleanup
+      /// method.
+      /// </para>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class Statistics sealed
+        : public Internal::UMWrapN<gemfire_statistics::Statistics>
+       {
+       public:
+
+         /// <summary>
+         /// Closes these statistics.  After statistics have been closed, they
+         /// are no longer archived.
+         /// A value access on a closed statistics always results in zero.
+         /// A value modification on a closed statistics is ignored.
+         /// </summary>
+         virtual void Close();
+
+         /// <summary>
+         /// Returns the id of the statistic with the given name in this
+         /// statistics instance.
+         /// </summary>
+         /// <param name="name">the statistic name</param>
+         /// <returns>the id of the statistic with the given name</returns>
+         /// <exception cref="IllegalArgumentException">
+         /// if no statistic named <c>name</c> exists in this
+         /// statistics instance.
+         /// </exception>
+         /// <see cref="StatisticsType#nameToDescriptor" />        
+         virtual int32_t NameToId(String^ name);
+
+         /// <summary>
+         /// Returns the descriptor of the statistic with the given name in this
+         /// statistics instance.
+         /// </summary>
+         /// <param name="name">the statistic name</param>
+         /// <returns>the descriptor of the statistic with the given name</returns>
+         /// <exception cref="IllegalArgumentException">
+         /// if no statistic named <c>name</c> exists in this
+         /// statistics instance.
+         /// </exception>
+         /// <see cref="StatisticsType#nameToId" />
+         virtual StatisticDescriptor^ NameToDescriptor(String^ name);
+
+         /// <summary>
+         /// Gets a value that uniquely identifies this statistics.
+         /// </summary>
+         virtual property int64_t UniqueId
+         {
+           virtual int64_t get( );
+         }
+
+         /// <summary>
+         /// Gets the <see cref="StatisticsType" /> of this instance.
+         /// </summary>
+         virtual property StatisticsType^ Type
+         {
+           virtual StatisticsType^ get( );
+         }
+
+         /// <summary>
+         /// Gets the text associated with this instance that helps identify it.
+         /// </summary>
+         virtual property String^ TextId
+         {
+           virtual String^ get( );
+         }
+
+         /// <summary>
+         /// Gets the number associated with this instance that helps identify it.
+         /// </summary>
+         virtual property int64_t NumericId 
+         {
+           virtual int64_t get( );
+         }
+
+         /// <summary>
+         /// Returns true if modifications are atomic. This means that multiple threads
+         /// can safely modify this instance without additional synchronization.
+         /// </summary>
+         /// <para>
+         /// Returns false if modifications are not atomic. This means that modifications
+         /// to this instance are cheaper but not thread safe.
+         /// </para>
+         /// <para>
+         /// Note that all instances that are <see cref="#isShared" /> shared are also atomic.
+         /// </para>
+         virtual property bool IsAtomic
+         {
+           virtual bool get( );
+         }
+
+         /// <summary>
+         /// Returns true if the data for this instance is stored in shared memory.
+         /// Returns false if the data is store in local memory.
+         /// </summary>
+         /// <para>
+         /// Note that all instances that are <see cref="#isShared" /> shared are also atomic.
+         /// </para>
+         virtual property bool IsShared
+         {
+           virtual bool get( );
+         }
+
+         /// <summary>
+         /// Returns true if the instance has been <see cref="#close" /> closed.
+         /// </summary>
+         virtual property bool IsClosed
+         {
+           virtual bool get( );
+         }
+
+         /// <summary>
+         /// Sets the value of a statistic with the given <c>id</c>
+         /// whose type is <c>int</c>.
+         /// </summary>
+         /// <param name="id">a statistic id obtained with <see cref="#nameToId" />
+         /// or <see cref="#StatisticsType#nameToId" /> </param>
+         /// <param name="value">value to set</param>
+         /// <exception cref="IllegalArgumentException">
+         /// If the id is invalid.
+         /// </exception>
+         virtual void SetInt(int32_t id, int32_t value);
+
+         /// <summary>
+         /// Sets the value of a named statistic of type <c>int</c>
+         /// </summary>
+         /// <param name="name">statistic name</param>
+         /// <param name="value">value to set</param>
+         /// <exception cref="IllegalArgumentException">
+         /// If no statistic exists named <c>name</c> or
+         /// if the statistic with name <c>name</c> is not of
+         /// type <c>int</c>.
+         /// </exception>
+         virtual void SetInt(String^ name, int32_t value);
+
+         /// <summary>
+         /// Sets the value of a described statistic of type <c>int</c>
+         /// </summary>
+         /// <param name="descriptor">a statistic descriptor obtained with <see cref="#nameToDescriptor" />
+         /// or <see cref="#StatisticsType#nameToDescriptor" /> </param>
+         /// <param name="value">value to set</param>
+         /// <exception cref="IllegalArgumentException">
+         /// If no statistic exists for the given <c>descriptor</c> or
+         /// if the described statistic is not of
+         /// type <c>int</c>.
+         /// </exception>
+         virtual void SetInt(StatisticDescriptor^ descriptor, int32_t value);
+
+         /// <summary>
+         /// Sets the value of a statistic with the given <c>id</c>
+         /// whose type is <c>long</c>.
+         /// </summary>
+         /// <param name="id">a statistic id obtained with <see cref="#nameToId" /> 
+         /// or <see cref="#StatisticsType#nameToId" />. </param>
+         /// <param name="value">value to set</param>
+         /// <exception cref="IllegalArgumentException">
+         /// If the id is invalid.
+         /// </exception>
+         virtual void SetLong(int32_t id, int64_t value); 
+
+         /// <summary>
+         /// Sets the value of a described statistic of type <c>long</c>
+         /// </summary>
+         /// <param name="descriptor">a statistic descriptor obtained with <see cref="#nameToDescriptor" />
+         /// or <see cref="StatisticsType#nameToDescriptor" /> </param>
+         /// <param name="value">value to set</param>
+         /// <exception cref="IllegalArgumentException">
+         /// If no statistic exists for the given <c>descriptor</c> or
+         /// if the described statistic is not of
+         /// type <c>long</c>.
+         /// </exception>
+         virtual void SetLong(StatisticDescriptor^ descriptor, int64_t value);
+
+         /// <summary>
+         /// Sets the value of a named statistic of type <c>long</c>.
+         /// </summary>
+         /// <param name="name">statistic name</param>
+         /// <param name="value">value to set</param>
+         /// <exception cref="IllegalArgumentException">
+         /// If no statistic exists named <c>name</c> or
+         /// if the statistic with name <c>name</c> is not of
+         /// type <c>long</c>.
+         /// </exception>
+         virtual void SetLong(String^ name, int64_t value);
+
+
+         /// <summary>
+         /// Sets the value of a statistic with the given <c>id</c>
+         /// whose type is <c>double</c>.
+         /// </summary>
+         /// <param name="id">a statistic id obtained with <see cref="#nameToId" />
+         /// or <see cref="#StatisticsType#nameToId" /> </param>
+         /// <param name="value">value to set</param>
+         /// <exception cref="IllegalArgumentException">
+         /// If the id is invalid.
+         /// </exception>
+         virtual void SetDouble(int32_t id, double value);
+
+         /// <summary>
+         /// Sets the value of a named statistic of type <c>double</c>
+         /// </summary>
+         /// <param name="name">statistic name</param>
+         /// <param name="value">value to set</param>
+         /// <exception cref="IllegalArgumentException">
+         /// If no statistic exists named <c>name</c> or
+         /// if the statistic with name <c>name</c> is not of
+         /// type <c>double</c>.
+         /// </exception>
+         virtual void SetDouble(String^ name, double value);
+
+         /// <summary>
+         /// Sets the value of a described statistic of type <c>double</c>
+         /// </summary>
+         /// <param name="descriptor">a statistic descriptor obtained with <see cref="#nameToDescriptor" />
+         /// or <see cref="StatisticsType#nameToDescriptor" /> </param>
+         /// <param name="value">value to set</param>
+         /// <exception cref="IllegalArgumentException">
+         /// If no statistic exists for the given <c>descriptor</c> or
+         /// if the described statistic is not of
+         /// type <c>double</c>.
+         /// </exception>
+         virtual void SetDouble(StatisticDescriptor^ descriptor, double value);
+
+         /// <summary>
+         /// Returns the value of the identified statistic of type <c>int</c>.
+         /// whose type is <c>double</c>.
+         /// </summary>
+         /// <param name="id">a statistic id obtained with <see cref="#nameToId" />
+         /// or <see cref="#StatisticsType#nameToId" /> </param>
+         /// <exception cref="IllegalArgumentException">
+         /// If the id is invalid.
+         /// </exception>
+         virtual int32_t GetInt(int32_t id);
+
+         /// <summary>
+         /// Returns the value of the described statistic of type <code>int</code>.
+         /// </summary>
+         /// <param name="descriptor">a statistic descriptor obtained with <see cref="#nameToDescriptor" />
+         /// or <see cref="StatisticsType#nameToDescriptor" /> </param>
+         /// <exception cref="IllegalArgumentException">
+         /// If no statistic exists with the specified <c>descriptor</c> or
+         /// if the described statistic is not of
+         /// type <c>int</c>.
+         /// </exception>
+         virtual int32_t GetInt(StatisticDescriptor^ descriptor);
+
+
+         /// <summary>
+         /// Returns the value of the statistic of type <code>int</code> at
+         /// the given name.
+         /// </summary>
+         /// <param name="name">statistic name</param>
+         /// <exception cref="IllegalArgumentException">
+         /// If no statistic exists named <c>name</c> or
+         /// if the statistic with name <c>name</c> is not of
+         /// type <c>int</c>.
+         /// </exception>
+         virtual int32_t GetInt(String^ name);
+
+         /// <summary>
+         /// Returns the value of the identified statistic of type <c>long</c>.
+         /// </summary>
+         /// <param name="id">a statistic id obtained with <see cref="#nameToId" />
+         /// or <see cref="#StatisticsType#nameToId" /> </param>
+         /// <exception cref="IllegalArgumentException">
+         /// If the id is invalid.
+         /// </exception>
+         virtual int64_t GetLong(int32_t id);
+
+         
+         /// <summary>
+         /// Returns the value of the described statistic of type <c>long</c>.
+         /// </summary>
+         /// <param name="descriptor">a statistic descriptor obtained with <see cref="#nameToDescriptor" />
+         /// or <see cref="StatisticsType#nameToDescriptor" /> </param>
+         /// <exception cref="IllegalArgumentException">
+         /// If no statistic exists with the specified <c>descriptor</c> or
+         /// if the described statistic is not of
+         /// type <c>long</c>.
+         /// </exception>
+         virtual int64_t GetLong(StatisticDescriptor^ descriptor);
+
+         
+         /// <summary>
+         /// Returns the value of the statistic of type <c>long</c> at
+         /// the given name.
+         /// </summary>
+         /// <param name="name">statistic name</param>
+         /// <exception cref="IllegalArgumentException">
+         /// If no statistic exists named <c>name</c> or
+         /// if the statistic with name <c>name</c> is not of
+         /// type <c>long</c>.
+         /// </exception>
+         virtual int64_t GetLong(String^ name);
+
+
+         /// <summary>
+         /// Returns the value of the identified statistic of type <c>double</c>.
+         /// </summary>
+         /// <param name="id">a statistic id obtained with <see cref="#nameToId" />
+         /// or <see cref="#StatisticsType#nameToId" /> </param>
+         /// <exception cref="IllegalArgumentException">
+         /// If the id is invalid.
+         /// </exception>
+         virtual double GetDouble(int32_t id);
+                  
+         /// <summary>
+         /// Returns the value of the described statistic of type <c>double</c>.
+         /// </summary>
+         /// <param name="descriptor">a statistic descriptor obtained with <see cref="#nameToDescriptor" />
+         /// or <see cref="StatisticsType#nameToDescriptor" /> </param>
+         /// <exception cref="IllegalArgumentException">
+         /// If no statistic exists with the specified <c>descriptor</c> or
+         /// if the described statistic is not of
+         /// type <c>double</c>.
+         /// </exception>
+         virtual double GetDouble(StatisticDescriptor^ descriptor);
+
+         /// <summary>
+         /// Returns the value of the statistic of type <c>double</c> at
+         /// the given name.
+         /// </summary>
+         /// <param name="name">statistic name</param>
+         /// <exception cref="IllegalArgumentException">
+         /// If no statistic exists named <c>name</c> or
+         /// if the statistic with name <c>name</c> is not of
+         /// type <c>double</c>.
+         /// </exception>
+         virtual double GetDouble(String^ name);
+
+         /// <summary>
+         /// Returns the bits that represent the raw value of the described statistic.
+         /// </summary>
+         /// <param name="descriptor">a statistic descriptor obtained with <see cref="#nameToDescriptor" />
+         /// or <see cref="StatisticsType#nameToDescriptor" /> </param>
+         /// <exception cref="IllegalArgumentException">
+         /// If the described statistic does not exist
+         /// </exception>
+         virtual int64_t GetRawBits(StatisticDescriptor^ descriptor);
+
+         /// <summary>
+         /// Increments the value of the identified statistic of type <c>int</c>
+         /// by the given amount.
+         /// </summary>
+         /// <param name="id">a statistic id obtained with <see cref="#nameToId" />
+         /// or <see cref="#StatisticsType#nameToId" /> </param>
+         /// <param name="delta">the value of the statistic after it has been incremented</param>
+         /// <returns>the value of the statistic after it has been incremented</returns>
+         /// <exception cref="IllegalArgumentException">
+         /// If the id is invalid.
+         /// </exception>
+         virtual int32_t IncInt(int32_t id, int32_t delta);
+
+         /// <summary>
+         /// Increments the value of the described statistic of type <c>int</c>
+         /// by the given amount.
+         /// </summary>
+         /// <param name="descriptor">a statistic descriptor obtained with <see cref="#nameToDescriptor" />
+         /// or <see cref="StatisticsType#nameToDescriptor" /> </param>
+         /// <param name="delta">change value to be added</param>
+         /// <returns>the value of the statistic after it has been incremented</returns>
+         /// <exception cref="IllegalArgumentException">
+         /// If no statistic exists for the given <c>descriptor</c> or
+         /// if the described statistic is not of
+         /// type <c>int</c>.
+         /// </exception>
+         virtual int32_t IncInt(StatisticDescriptor^ descriptor, int32_t delta);
+
+         /// <summary>
+         /// Increments the value of the statistic of type <c>int</c> with
+         /// the given name by a given amount.
+         /// </summary>
+         /// <param name="name">statistic name</param>
+         /// <param name="delta">change value to be added</param>
+         /// <returns>the value of the statistic after it has been incremented</returns>
+         /// <exception cref="IllegalArgumentException">
+         /// If no statistic exists named <c>name</c> or
+         /// if the statistic with name <c>name</c> is not of
+         /// type <c>int</c>.
+         /// </exception>
+         virtual int32_t IncInt(String^ name, int32_t delta);
+
+         /// <summary>
+         /// Increments the value of the identified statistic of type <c>long</c>
+         /// by the given amount.
+         /// </summary>
+         /// <param name="id">a statistic id obtained with <see cref="#nameToId" />
+         /// or <see cref="#StatisticsType#nameToId" /> </param>
+         /// <param name="delta">the value of the statistic after it has been incremented</param>
+         /// <returns>the value of the statistic after it has been incremented</returns>
+         /// <exception cref="IllegalArgumentException">
+         /// If the id is invalid.
+         /// </exception>
+         virtual int64_t IncLong(int32_t id, int64_t delta);
+
+
+         /// <summary>
+         /// Increments the value of the described statistic of type <c>long</c>
+         /// by the given amount.
+         /// </summary>
+         /// <param name="descriptor">a statistic descriptor obtained with <see cref="#nameToDescriptor" />
+         /// or <see cref="StatisticsType#nameToDescriptor" /> </param>
+         /// <param name="delta">change value to be added</param>
+         /// <returns>the value of the statistic after it has been incremented</returns>
+         /// <exception cref="IllegalArgumentException">
+         /// If no statistic exists for the given <c>descriptor</c> or
+         /// if the described statistic is not of
+         /// type <c>long</c>.
+         /// </exception>
+         virtual int64_t IncLong(StatisticDescriptor^ descriptor, int64_t delta);
+
+         /// <summary>
+         /// Increments the value of the statistic of type <c>long</c> with
+         /// the given name by a given amount.
+         /// </summary>
+         /// <param name="name">statistic name</param>
+         /// <param name="delta">change value to be added</param>
+         /// <returns>the value of the statistic after it has been incremented</returns>
+         /// <exception cref="IllegalArgumentException">
+         /// If no statistic exists named <c>name</c> or
+         /// if the statistic with name <c>name</c> is not of
+         /// type <c>long</c>.
+         /// </exception>
+         virtual int64_t IncLong(String^ name, int64_t delta);
+
+
+         /// <summary>
+         /// Increments the value of the identified statistic of type <c>double</c>
+         /// by the given amount.
+         /// </summary>
+         /// <param name="id">a statistic id obtained with <see cref="#nameToId" />
+         /// or <see cref="#StatisticsType#nameToId" /> </param>
+         /// <param name="delta">the value of the statistic after it has been incremented</param>
+         /// <returns>the value of the statistic after it has been incremented</returns>
+         /// <exception cref="IllegalArgumentException">
+         /// If the id is invalid.
+         /// </exception>
+         virtual double IncDouble(int32_t id, double delta);
+
+         /// <summary>
+         /// Increments the value of the described statistic of type <c>double</c>
+         /// by the given amount.
+         /// </summary>
+         /// <param name="descriptor">a statistic descriptor obtained with <see cref="#nameToDescriptor" />
+         /// or <see cref="StatisticsType#nameToDescriptor" /> </param>
+         /// <param name="delta">change value to be added</param>
+         /// <returns>the value of the statistic after it has been incremented</returns>
+         /// <exception cref="IllegalArgumentException">
+         /// If no statistic exists for the given <c>descriptor</c> or
+         /// if the described statistic is not of
+         /// type <c>double</c>.
+         /// </exception>
+         virtual double IncDouble(StatisticDescriptor^ descriptor, double delta);
+
+         /// <summary>
+         /// Increments the value of the statistic of type <c>double</c> with
+         /// the given name by a given amount.
+         /// </summary>
+         /// <param name="name">statistic name</param>
+         /// <param name="delta">change value to be added</param>
+         /// <returns>the value of the statistic after it has been incremented</returns>
+         /// <exception cref="IllegalArgumentException">
+         /// If no statistic exists named <c>name</c> or
+         /// if the statistic with name <c>name</c> is not of
+         /// type <c>double</c>.
+         /// </exception>
+         virtual double IncDouble(String^ name, double delta);
+
+         internal:
+           /// <summary>
+           /// Internal factory function to wrap a native object pointer inside
+           /// this managed class, with null pointer check.
+           /// </summary>
+           /// <param name="nativeptr">native object pointer</param>
+           /// <returns>
+           /// the managed wrapper object, or null if the native pointer is null.
+           /// </returns>
+          inline static Statistics^ Create(
+          gemfire_statistics::Statistics* nativeptr )
+          {
+            return ( nativeptr != nullptr ?
+            gcnew Statistics( nativeptr ) : nullptr );
+          }
+
+         private:
+           /// <summary>
+           /// Private constructor to wrap a native object pointer
+           /// </summary>
+           /// <param name="nativeptr">The native object pointer</param>
+          inline Statistics( gemfire_statistics::Statistics* nativeptr )
+          : UMWrapN( nativeptr, false ) { }
+
+      };
+    }
+  }
+}
+
+
+
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/StatisticsTypeM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/StatisticsTypeM.cpp b/geode-client-native/src/clicache/StatisticsTypeM.cpp
new file mode 100644
index 0000000..68fb04d
--- /dev/null
+++ b/geode-client-native/src/clicache/StatisticsTypeM.cpp
@@ -0,0 +1,68 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "StatisticsTypeM.hpp"
+#include "StatisticDescriptorM.hpp"
+#include "impl/ManagedString.hpp"
+#include "ExceptionTypesM.hpp"
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      String^ StatisticsType::Name::get()
+      {
+        return ManagedString::Get( NativePtr->getName() );
+      }
+
+      String^ StatisticsType::Description::get()
+      {
+        return ManagedString::Get( NativePtr->getDescription() );
+      }
+
+      array<StatisticDescriptor^>^ StatisticsType::Statistics::get()
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          gemfire_statistics::StatisticDescriptor ** nativedescriptors = NativePtr->getStatistics();
+          array<StatisticDescriptor^>^ descriptors = gcnew array<StatisticDescriptor^>(NativePtr->getDescriptorsCount());
+          for (int item = 0; item < NativePtr->getDescriptorsCount(); item++)
+          {
+            descriptors[item] = GemStone::GemFire::Cache::StatisticDescriptor::Create(nativedescriptors[item]);
+          }
+          return descriptors;
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      int32_t StatisticsType::NameToId( String^ name )
+      {
+        ManagedString mg_name( name );
+        _GF_MG_EXCEPTION_TRY
+          return NativePtr->nameToId(mg_name.CharPtr);
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      StatisticDescriptor^ StatisticsType::NameToDescriptor( String^ name )
+      {
+        ManagedString mg_name( name );
+        _GF_MG_EXCEPTION_TRY
+          return GemStone::GemFire::Cache::StatisticDescriptor::Create(NativePtr->nameToDescriptor(mg_name.CharPtr));
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      int32_t StatisticsType::DescriptorsCount::get()
+      {
+        return NativePtr->getDescriptorsCount();
+      }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/StatisticsTypeM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/StatisticsTypeM.hpp b/geode-client-native/src/clicache/StatisticsTypeM.hpp
new file mode 100644
index 0000000..39c98b7
--- /dev/null
+++ b/geode-client-native/src/clicache/StatisticsTypeM.hpp
@@ -0,0 +1,128 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "impl/NativeWrapper.hpp"
+#include "cppcache/statistics/StatisticsType.hpp"
+#include "cppcache/statistics/StatisticDescriptor.hpp"
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+      ref class StatisticDescriptor;
+
+      /// <summary>
+      /// This class is used to describe a logical collection of StatisticDescriptors.These descriptions
+      /// are used to create an instance of <see cref="Statistics" /> class.
+      /// </summary>
+      /// <para>
+      /// To get an instance of this interface use an instance of
+      /// <see cref="StatisticsFactory" /> class.
+      /// </para>
+      /// <para>
+      /// The class is purposefully inherited from UMWrapN and not UMWrap as the destructor
+      /// of the class is protected, and so it is now not called from inside the InternalCleanup
+      /// method.
+      /// </para>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class StatisticsType sealed
+        : public Internal::UMWrapN<gemfire_statistics::StatisticsType>
+      {
+      public:
+        /// <summary>
+        /// Returns the name of this statistics type.
+        /// </summary>
+        virtual property String^ Name
+        {
+          virtual String^ get( );
+        }
+
+        /// <summary>
+        /// Returns a description of this statistics type.
+        /// </summary>
+        virtual property String^ Description
+        {
+          virtual String^ get( );
+        }
+
+        /// <summary>
+        /// Returns descriptions of the statistics that this statistics type
+        /// gathers together.
+        /// </summary>
+        virtual property array<StatisticDescriptor^>^ Statistics
+        {
+          virtual array<StatisticDescriptor^>^ get( );
+        }
+
+        /// <summary>
+        /// Returns the id of the statistic with the given name in this
+        /// statistics instance.
+        /// </summary>
+        /// <param name="name">the statistic name</param>
+        /// <returns>the id of the statistic with the given name</returns>
+        /// <exception cref="IllegalArgumentException">
+        /// if no statistic named <c>name</c> exists in this
+        /// statistic instance.
+        /// </exception>
+        virtual int32_t NameToId(String^ name);
+
+        /// <summary>
+        /// Returns the descriptor of the statistic with the given name in this
+        /// statistics instance.
+        /// </summary>
+        /// <param name="name">the statistic name</param>
+        /// <returns>the descriptor of the statistic with the given name</returns>
+        /// <exception cref="IllegalArgumentException">
+        /// if no statistic named <c>name</c> exists in this
+        /// statistic instance.
+        /// </exception>
+        virtual StatisticDescriptor^ NameToDescriptor(String^ name);
+
+        /// <summary>
+        /// Returns the total number of statistics descriptors in the type.
+        /// </summary>
+        virtual property int32_t DescriptorsCount
+        {
+          virtual int32_t get( );
+        }
+
+      internal:
+        /// <summary>
+        /// Internal factory function to wrap a native object pointer inside
+        /// this managed class, with null pointer check.
+        /// </summary>
+        /// <param name="nativeptr">native object pointer</param>
+        /// <returns>
+        /// the managed wrapper object, or null if the native pointer is null.
+        /// </returns>
+        inline static StatisticsType^ Create(
+          gemfire_statistics::StatisticsType* nativeptr )
+        {
+          return ( nativeptr != nullptr ?
+            gcnew StatisticsType( nativeptr ) : nullptr );
+        }
+
+      private:
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline StatisticsType( gemfire_statistics::StatisticsType* nativeptr )
+          : UMWrapN( nativeptr, false ) { }
+
+      };
+    }
+  }
+}
+
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/StructM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/StructM.cpp b/geode-client-native/src/clicache/StructM.cpp
new file mode 100644
index 0000000..86e7389
--- /dev/null
+++ b/geode-client-native/src/clicache/StructM.cpp
@@ -0,0 +1,71 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "cppcache/Struct.hpp"
+#include "StructM.hpp"
+#include "StructSetM.hpp"
+#include "impl/SafeConvert.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      IGFSerializable^ Struct::default::get( size_t index )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          return SafeUMSerializableConvert(static_cast<gemfire::Struct*>(
+            NativePtr())->operator[](static_cast<int32_t>(index)).ptr());
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      IGFSerializable^ Struct::default::get( String^ fieldName )
+      {
+        ManagedString mg_fieldName( fieldName );
+
+        _GF_MG_EXCEPTION_TRY
+
+          return SafeUMSerializableConvert(static_cast<gemfire::Struct*>(
+            NativePtr())->operator[](mg_fieldName.CharPtr).ptr());
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      StructSet^ Struct::Set::get( )
+      {
+        return StructSet::Create(static_cast<gemfire::Struct*>(
+          NativePtr())->getStructSet().ptr());
+      }
+
+      bool Struct::HasNext( )
+      {
+        return static_cast<gemfire::Struct*>(NativePtr())->hasNext();
+      }
+
+      size_t Struct::Length::get( )
+      {
+        return static_cast<gemfire::Struct*>(NativePtr())->length();
+      }
+
+      IGFSerializable^ Struct::Next( )
+      {
+        return SafeUMSerializableConvert(static_cast<gemfire::Struct*>(
+          NativePtr())->next().ptr());
+      }
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/StructM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/StructM.hpp b/geode-client-native/src/clicache/StructM.hpp
new file mode 100644
index 0000000..292564f
--- /dev/null
+++ b/geode-client-native/src/clicache/StructM.hpp
@@ -0,0 +1,132 @@
+/*=========================================================================
+* Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+*=========================================================================
+*/
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "SerializableM.hpp"
+#include "cppcache/Struct.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      ref class StructSet;
+      interface class IGFSerializable;
+
+      /// <summary>
+      /// Encapsulates a row of query struct set.
+      /// </summary>
+      /// <remarks>
+      /// A Struct has a StructSet as its parent. It contains the field values
+      /// returned after executing a Query obtained from a QueryService which in turn
+      /// is obtained from a Cache.
+      /// </remarks>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class Struct sealed
+        : public GemStone::GemFire::Cache::Serializable
+      {
+      public:
+
+        /// <summary>
+        /// Get the field value for the given index number.
+        /// </summary>
+        /// <returns>
+        /// The value of the field or null if index is out of bounds.
+        /// </returns>
+        property IGFSerializable^ GFINDEXER( size_t )
+        {
+          IGFSerializable^ get( size_t index );
+        }
+
+        /// <summary>
+        /// Get the field value for the given field name.
+        /// </summary>
+        /// <returns>The value of the field.</returns>
+        /// <exception cref="IllegalArgumentException">
+        /// if the field name is not found.
+        /// </exception>
+        property IGFSerializable^ GFINDEXER( String^ )
+        {
+          IGFSerializable^ get( String^ fieldName );
+        }
+
+        /// <summary>
+        /// Get the parent <c>StructSet</c> of this <c>Struct</c>.
+        /// </summary>
+        /// <returns>
+        /// A reference to the parent <c>StructSet</c> of this <c>Struct</c>.
+        /// </returns>
+        property StructSet^ Set
+        {
+          StructSet^ get( );
+        }
+
+        /// <summary>
+        /// Check whether another field value is available to iterate over
+        /// in this <c>Struct</c>.
+        /// </summary>
+        /// <returns>true if available otherwise false.</returns>
+        bool HasNext( );
+
+        /// <summary>
+        /// Get the number of field values available.
+        /// </summary>
+        /// <returns>the number of field values available.</returns>
+        property size_t Length
+        {
+          size_t get( );
+        }
+
+        /// <summary>
+        /// Get the next field value item available in this <c>Struct</c>.
+        /// </summary>
+        /// <returns>
+        /// A reference to the next item in the <c>Struct</c>
+        /// or null if no more available.
+        /// </returns>
+        IGFSerializable^ Next( );
+
+
+      internal:
+
+        /// <summary>
+        /// Factory function to register wrapper
+        /// </summary>
+        inline static IGFSerializable^ Create( gemfire::Serializable* obj )
+        {
+          return ( obj != nullptr ?
+            gcnew Struct( obj ) : nullptr );
+        }
+
+        inline static IGFSerializable^ CreateDeserializable( )
+        {
+          return gcnew Struct(  ) ;
+        }
+
+      private:
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline Struct( gemfire::Serializable* nativeptr )
+          : GemStone::GemFire::Cache::Serializable( nativeptr ) { }
+
+        inline Struct(  )
+          : GemStone::GemFire::Cache::Serializable( gemfire::Struct::createDeserializable()) { }
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/StructSetM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/StructSetM.cpp b/geode-client-native/src/clicache/StructSetM.cpp
new file mode 100644
index 0000000..b3ecf9e
--- /dev/null
+++ b/geode-client-native/src/clicache/StructSetM.cpp
@@ -0,0 +1,79 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "StructSetM.hpp"
+#include "SelectResultsIteratorM.hpp"
+#include "impl/SafeConvert.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      bool StructSet::IsModifiable::get( )
+      {
+        return NativePtr->isModifiable( );
+      }
+
+      int32_t StructSet::Size::get( )
+      {
+        return NativePtr->size( );
+      }
+
+      IGFSerializable^ StructSet::default::get( size_t index )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          return SafeUMSerializableConvert((NativePtr->operator[](static_cast<int32_t>(index))).ptr());
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      SelectResultsIterator^ StructSet::GetIterator( )
+      {
+        gemfire::SelectResultsIterator* nativeptr =
+          new gemfire::SelectResultsIterator(NativePtr->getIterator());
+
+        return SelectResultsIterator::Create( nativeptr );
+      }
+
+      System::Collections::Generic::IEnumerator<IGFSerializable^>^
+        StructSet::GetEnumerator( )
+      {
+        return GetIterator( );
+      }
+
+      System::Collections::IEnumerator^ StructSet::GetIEnumerator( )
+      {
+        return GetIterator( );
+      }
+
+      size_t StructSet::GetFieldIndex( String^ fieldName )
+      {
+        ManagedString mg_fieldName( fieldName );
+
+        _GF_MG_EXCEPTION_TRY
+
+          return NativePtr->getFieldIndex( mg_fieldName.CharPtr );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      String^ StructSet::GetFieldName( size_t index )
+      {
+        return ManagedString::Get( NativePtr->getFieldName( static_cast<int32_t> (index) ) );
+      }
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/StructSetM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/StructSetM.hpp b/geode-client-native/src/clicache/StructSetM.hpp
new file mode 100644
index 0000000..f7d7eee
--- /dev/null
+++ b/geode-client-native/src/clicache/StructSetM.hpp
@@ -0,0 +1,151 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/StructSet.hpp"
+#include "impl/NativeWrapper.hpp"
+#include "ICqResults.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      ref class SelectResultsIterator;
+      interface class IGFSerializable;
+
+      /// <summary>
+      /// Encapsulates a query struct set.
+      /// </summary>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class StructSet sealed
+        : public Internal::SBWrap<gemfire::StructSet>, public ICqResults
+      {
+      public:
+
+        /// <summary>
+        /// True if this <c>StructSet</c> is modifiable.
+        /// </summary>
+        /// <returns>returns false always at this time.</returns>
+        virtual property bool IsModifiable
+        {
+          virtual bool get( );
+        }
+
+        /// <summary>
+        /// The size of the <c>StructSet</c>.
+        /// </summary>
+        /// <returns>
+        /// the number of items in the <c>StructSet</c>.
+        /// </returns>
+        virtual property int32_t Size
+        {
+          virtual int32_t get( );
+        }
+
+        /// <summary>
+        /// Index operator to directly access an item in the <c>StructSet</c>.
+        /// </summary>
+        /// <exception cref="IllegalArgumentException">
+        /// if the index is out of bounds.
+        /// </exception>
+        /// <returns>Item at the given index.</returns>
+        virtual property IGFSerializable^ GFINDEXER( size_t )
+        {
+          virtual IGFSerializable^ get( size_t index );
+        }
+
+        /// <summary>
+        /// Get a <c>SelectResultsIterator</c> with which to iterate
+        /// over the items in the <c>StructSet</c>.
+        /// </summary>
+        /// <returns>
+        /// The <c>SelectResultsIterator</c> with which to iterate.
+        /// </returns>
+        virtual SelectResultsIterator^ GetIterator( );
+
+        /// <summary>
+        /// Get the index number of the specified field name
+        /// in the <c>StructSet</c>.
+        /// </summary>
+        /// <param name="fieldName">
+        /// the field name for which the index is required.
+        /// </param>
+        /// <returns>the index number of the specified field name.</returns>
+        /// <exception cref="IllegalArgumentException">
+        /// if the field name is not found.
+        /// </exception>
+        size_t GetFieldIndex( String^ fieldName );
+
+        /// <summary>
+        /// Get the field name of the <c>StructSet</c> from the
+        /// specified index number.
+        /// </summary>
+        /// <param name="index">
+        /// the index number of the field name to get.
+        /// </param>
+        /// <returns>
+        /// the field name from the specified index number or null if not found.
+        /// </returns>
+        String^ GetFieldName( size_t index );
+
+
+        // Region: IEnumerable<IGFSerializable^> Members
+
+        /// <summary>
+        /// Returns an enumerator that iterates through the <c>StructSet</c>.
+        /// </summary>
+        /// <returns>
+        /// A <c>System.Collections.Generic.IEnumerator</c> that
+        /// can be used to iterate through the <c>StructSet</c>.
+        /// </returns>
+        virtual System::Collections::Generic::IEnumerator<IGFSerializable^>^
+          GetEnumerator( );
+
+        // End Region: IEnumerable<IGFSerializable^> Members
+
+
+      internal:
+
+        /// <summary>
+        /// Internal factory function to wrap a native object pointer inside
+        /// this managed class with null pointer check.
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        /// <returns>
+        /// The managed wrapper object; null if the native pointer is null.
+        /// </returns>
+        inline static StructSet^ Create(gemfire::StructSet* nativeptr)
+        {
+          return (nativeptr != nullptr ? gcnew StructSet(nativeptr) : nullptr);
+        }
+
+
+      private:
+
+        virtual System::Collections::IEnumerator^ GetIEnumerator( ) sealed
+          = System::Collections::IEnumerable::GetEnumerator;
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline StructSet(gemfire::StructSet* nativeptr)
+          : SBWrap(nativeptr) { }
+      };
+
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/SystemPropertiesM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/SystemPropertiesM.cpp b/geode-client-native/src/clicache/SystemPropertiesM.cpp
new file mode 100644
index 0000000..c71b830
--- /dev/null
+++ b/geode-client-native/src/clicache/SystemPropertiesM.cpp
@@ -0,0 +1,219 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "SystemPropertiesM.hpp"
+#include "PropertiesM.hpp"
+#include "impl/SafeConvert.hpp"
+#include <cppcache/SystemProperties.hpp>
+
+using namespace System;
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      SystemProperties::SystemProperties( Properties^ properties )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          SetPtr(new gemfire::SystemProperties(gemfire::PropertiesPtr(
+            GetNativePtr<gemfire::Properties>(properties))), true);
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      SystemProperties::SystemProperties( Properties^ properties,
+        String^ configFile )
+      {
+        _GF_MG_EXCEPTION_TRY
+
+          ManagedString mg_configFile( configFile );
+          gemfire::PropertiesPtr propertiesptr(
+            GetNativePtr<gemfire::Properties>( properties ) );
+          SetPtr( new gemfire::SystemProperties( propertiesptr,
+            mg_configFile.CharPtr ), true );
+
+        _GF_MG_EXCEPTION_CATCH_ALL
+      }
+
+      void SystemProperties::LogSettings( )
+      {
+        NativePtr->logSettings( );
+      }
+
+      int32_t SystemProperties::StatisticsSampleInterval::get( )
+      {
+        return NativePtr->statisticsSampleInterval( );
+      }
+
+      bool SystemProperties::StatisticsEnabled::get( )
+      {
+        return NativePtr->statisticsEnabled( );
+      }
+
+      String^ SystemProperties::StatisticsArchiveFile::get( )
+      {
+        return ManagedString::Get( NativePtr->statisticsArchiveFile( ) );
+      }
+
+      String^ SystemProperties::LogFileName::get( )
+      {
+        return ManagedString::Get( NativePtr->logFilename( ) );
+      }
+
+      GemStone::GemFire::Cache::LogLevel SystemProperties::GFLogLevel::get( )
+      {
+        return static_cast<GemStone::GemFire::Cache::LogLevel>( NativePtr->logLevel( ) );
+      }
+
+      bool SystemProperties::HeapLRULimitEnabled::get( )
+      {
+        return NativePtr->heapLRULimitEnabled( );
+      }
+      
+      size_t SystemProperties::HeapLRULimit::get( )
+      {
+        return NativePtr->heapLRULimit( );
+      }
+      
+      int32_t SystemProperties::HeapLRUDelta::get( )
+      {
+        return NativePtr->heapLRUDelta( );
+      }
+      
+      int32_t SystemProperties::MaxSocketBufferSize::get( )
+      {
+        return NativePtr->maxSocketBufferSize( );
+      }
+      
+      int32_t SystemProperties::PingInterval::get( )
+      {
+        return NativePtr->pingInterval( );
+      }
+      
+      int32_t SystemProperties::RedundancyMonitorInterval::get( )
+      {
+        return NativePtr->redundancyMonitorInterval( );
+      }
+      
+      int32_t SystemProperties::NotifyAckInterval::get( )
+      {
+        return NativePtr->notifyAckInterval( );
+      }
+      
+      int32_t SystemProperties::NotifyDupCheckLife::get( )
+      {
+        return NativePtr->notifyDupCheckLife( );
+      }
+      
+      bool SystemProperties::DebugStackTraceEnabled::get( )
+      {
+        return NativePtr->debugStackTraceEnabled( );
+      }
+
+      bool SystemProperties::CrashDumpEnabled::get( )
+      {
+        return NativePtr->crashDumpEnabled();
+      }
+
+      bool SystemProperties::AppDomainEnabled::get( )
+      {
+        return NativePtr->isAppDomainEnabled();
+      }
+
+      String^ SystemProperties::Name::get( )
+      {
+        return ManagedString::Get( NativePtr->name( ) );
+      }
+
+      String^ SystemProperties::CacheXmlFile::get( )
+      {
+        return ManagedString::Get( NativePtr->cacheXMLFile( ) );
+      }
+
+      int32_t SystemProperties::LogFileSizeLimit::get( )
+      {
+        return NativePtr->logFileSizeLimit( );
+      }
+
+	  int32_t SystemProperties::LogDiskSpaceLimit::get( )
+      {
+		  return NativePtr->logDiskSpaceLimit( );
+      }
+
+      int32_t SystemProperties::StatsFileSizeLimit::get( )
+      {
+        return NativePtr->statsFileSizeLimit( );
+      }
+
+	  int32_t SystemProperties::StatsDiskSpaceLimit::get( )
+      {
+		  return NativePtr->statsDiskSpaceLimit( );
+      }
+
+      uint32_t SystemProperties::MaxQueueSize::get( )
+      {
+        return NativePtr->maxQueueSize( );
+      }
+
+      bool SystemProperties::SSLEnabled::get( )
+      {
+        return NativePtr->sslEnabled();
+      }
+
+      String^ SystemProperties::SSLKeyStore::get()
+      {
+        return ManagedString::Get(NativePtr->sslKeyStore());
+      }
+
+      String^ SystemProperties::SSLTrustStore::get()
+      {
+        return ManagedString::Get(NativePtr->sslTrustStore());
+      }
+      // adongre
+      String^ SystemProperties::SSLKeystorePassword::get()
+      {
+        return ManagedString::Get(NativePtr->sslKeystorePassword());
+      }
+
+      bool SystemProperties::IsSecurityOn::get( )
+      {
+        return NativePtr->isSecurityOn( );
+      }
+
+      Properties^ SystemProperties::GetSecurityProperties::get( )
+      {
+        return Properties::Create( NativePtr->getSecurityProperties( ).ptr( ) );
+      }
+
+      String^ SystemProperties::DurableClientId::get( )
+      {
+        return ManagedString::Get( NativePtr->durableClientId( ) );
+      }
+
+      uint32_t SystemProperties::DurableTimeout::get( )
+      {
+        return NativePtr->durableTimeout( );
+      }
+
+      uint32_t SystemProperties::ConnectTimeout::get( )
+      {
+        return NativePtr->connectTimeout( );
+      }
+
+      String^ SystemProperties::ConflateEvents::get( )
+      {
+        return ManagedString::Get( NativePtr->conflateEvents( ) );
+      }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/SystemPropertiesM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/SystemPropertiesM.hpp b/geode-client-native/src/clicache/SystemPropertiesM.hpp
new file mode 100644
index 0000000..c337ead
--- /dev/null
+++ b/geode-client-native/src/clicache/SystemPropertiesM.hpp
@@ -0,0 +1,418 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/SystemProperties.hpp"
+#include "impl/NativeWrapper.hpp"
+#include "LogM.hpp"
+
+using namespace System;
+
+/*
+namespace gemfire
+{
+  class SystemProperties;
+}
+*/
+
+namespace GemStone
+{
+  namespace GemFire
+  {
+    namespace Cache
+    {
+
+      ref class Properties;
+
+      //ref class IAuthInitialize;
+
+      /// <summary>
+      /// A class for internal use, that encapsulates the properties that can be
+      /// set through <see cref="DistributedSystem.Connect" />
+      /// or a gfcpp.properties file.
+      /// </summary>
+      [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+      public ref class SystemProperties sealed
+        : public Internal::UMWrap<gemfire::SystemProperties>
+      {
+      public:
+
+        /// <summary>
+        /// Constructor. Sets the default (hard-coded) values first, and then overwrites those with
+        /// any values found in the given properties.
+        /// </summary>
+        /// <param name="properties">initialize with the given properties</param>
+        SystemProperties( Properties^ properties );
+
+        /// <summary>
+        /// Constructor.
+        /// <ol>
+        /// <li>Sets the default (hard-coded) values.</li>
+        /// <li>Overwrites those with any values from <c>systemDefault/gfcpp.properties</c></li>
+        /// <li>Overwrites those with any values from the given file (if it exists)
+        /// or the local <c>./gfcpp.properties</c> (if the given file does not exist).</li>
+        /// <li>Overwrites those with any values found in the given properties.</li>
+        /// </ol>
+        /// </summary>
+        /// <param name="properties">these overwrite any other values already set</param>
+        /// <param name="configFile">see summary</param>
+        SystemProperties( Properties^ properties, String^ configFile );
+
+        /// <summary>
+        /// Prints all settings to the process log.
+        /// </summary>
+        void LogSettings( );
+
+        /// <summary>
+        /// Returns the sampling interval, that is,
+        /// how often the statistics thread writes to disk, in seconds.
+        /// </summary>
+        /// <returns>the statistics sampling interval</returns>
+        property int32_t StatisticsSampleInterval
+        {
+          int32_t get( );
+        }
+
+        /// <summary>
+        /// True if statistics are enabled (archived).
+        /// </summary>
+        /// <returns>true if enabled</returns>
+        property bool StatisticsEnabled
+        {
+          bool get( );
+        }
+
+        /// <summary>
+        /// Returns the name of the statistics archive file.
+        /// </summary>
+        /// <returns>the filename</returns>
+        property String^ StatisticsArchiveFile
+        {
+          String^ get( );
+        }
+
+        /// <summary>
+        /// Returns the name of the message log file.
+        /// </summary>
+        /// <returns>the filename</returns>
+        property String^ LogFileName
+        {
+          String^ get( );
+        }
+
+        /// <summary>
+        /// Returns the message logging level.
+        /// </summary>
+        /// <returns>the log level</returns>
+        property GemStone::GemFire::Cache::LogLevel GFLogLevel
+        {
+          GemStone::GemFire::Cache::LogLevel get( );
+        }
+
+        /// <summary>
+        /// Returns  a boolean that specifies if heapLRULimit has been enabled for the
+        /// process. If enabled, the HeapLRULimit specifies the maximum amount of memory
+        /// that values in a cache can use to store data before overflowing to disk or
+        /// destroying entries to ensure that the server process never runs out of
+        /// memory
+        /// </summary>
+        /// <returns>true if enabled</returns>
+        property bool HeapLRULimitEnabled
+        {
+          bool get( );
+        }
+
+        /// <summary>
+        /// Returns  the HeapLRULimit value (in bytes), the maximum memory that values
+        /// in a cache can use to store data before overflowing to disk or destroying
+        /// entries to ensure that the server process never runs out of memory due to
+        /// cache memory usage
+        /// </summary>
+        /// <returns>the HeapLRULimit value</returns>
+        property size_t HeapLRULimit
+        {
+          size_t get( );
+        }
+
+        /// <summary>
+        /// Returns  the HeapLRUDelta value (a percent value). This specifies the
+        /// percentage of entries the system will evict each time it detects that
+        /// it has exceeded the HeapLRULimit. Defaults to 10%
+        /// </summary>
+        /// <returns>the HeapLRUDelta value</returns>
+        property int32_t HeapLRUDelta
+        {
+          int32_t get( );
+        }
+
+        /// <summary>
+        /// Returns  the maximum socket buffer size to use
+        /// </summary>
+        /// <returns>the MaxSocketBufferSize value</returns>
+        property int32_t MaxSocketBufferSize
+        {
+          int32_t get( );
+        }
+
+        /// <summary>
+        /// Returns  the time between two consecutive ping to servers
+        /// </summary>
+        /// <returns>the PingInterval value</returns>
+        property int32_t PingInterval
+        {
+          int32_t get( );
+        }
+
+        /// <summary>
+        /// Returns  the time between two consecutive checks for redundancy for HA
+        /// </summary>
+        /// <returns>the RedundancyMonitorInterval value</returns>
+        property int32_t RedundancyMonitorInterval
+        {
+          int32_t get( );
+        }
+
+        /// <summary>
+        /// Returns the periodic notify ack interval
+        /// </summary>
+        /// <returns>the NotifyAckInterval value</returns>
+        property int32_t NotifyAckInterval
+        {
+          int32_t get( );
+        }
+
+        /// <summary>
+        /// Returns the expiry time of an idle event id map entry for duplicate notification checking
+        /// </summary>
+        /// <returns>the NotifyDupCheckLife value</returns>
+        property int32_t NotifyDupCheckLife
+        {
+          int32_t get( );
+        }
+
+        /// <summary>
+        /// True if the stack trace is enabled.
+        /// </summary>
+        /// <returns>true if enabled</returns>
+        property bool DebugStackTraceEnabled
+        {
+          bool get( );
+        }
+
+        /// <summary>
+        /// True if the crash dump generation for unhandled fatal exceptions
+        /// is enabled. If "log-file" property has been specified then they are
+        /// created in the same directory as the log file, and having the same
+        /// prefix as log file. By default crash dumps are created in the
+        /// current working directory and have the "gemfire_cpp" prefix.
+        ///
+        /// The actual dump file will have timestamp and process ID
+        /// in the full name.
+        /// </summary>
+        /// <returns>true if enabled</returns>
+        property bool CrashDumpEnabled
+        {
+          bool get();
+        }
+
+        /// <summary>
+        /// Whether client is running in multiple AppDomain or not.
+        /// Default value is "false".
+        /// </summary>
+        /// <returns>true if enabled</returns>
+        property bool AppDomainEnabled
+        {
+          bool get();
+        }
+
+        /// <summary>
+        /// Returns the system name.
+        /// </summary>
+        /// <returns>the name</returns>
+        property String^ Name
+        {
+          String^ get( );
+        }
+
+        /// <summary>
+        /// Returns the name of the "cache.xml" file.
+        /// </summary>
+        /// <returns>the filename</returns>
+        property String^ CacheXmlFile
+        {
+          String^ get( );
+        }
+
+        /// <summary>
+        /// Returns the maximum log file size, in bytes, or 0 if unlimited.
+        /// </summary>
+        /// <returns>the maximum limit</returns>
+        property int32_t LogFileSizeLimit
+        {
+          int32_t get( );
+        }
+
+        /// <summary>
+        /// Returns the maximum log Disk size, in bytes, or 0 if unlimited.
+        /// </summary>
+        /// <returns>the maximum limit</returns>
+        property int32_t LogDiskSpaceLimit
+        {
+          int32_t get( );
+        }
+
+		/// <summary>
+        /// Returns the maximum statistics file size, in bytes, or 0 if unlimited.
+        /// </summary>
+        /// <returns>the maximum limit</returns>
+        property int32_t StatsFileSizeLimit
+        {
+          int32_t get( );
+        }
+
+        /// <summary>
+        /// Returns the maximum statistics Disk size, in bytes, or 0 if unlimited.
+        /// </summary>
+        /// <returns>the maximum limit</returns>
+        property int32_t StatsDiskSpaceLimit
+        {
+          int32_t get( );
+        }
+
+		/// <summary>
+        /// Returns the max queue size for notification messages
+        /// </summary>
+        /// <returns>the max queue size</returns>
+        property uint32_t MaxQueueSize
+        {
+          uint32_t get( );
+        }
+
+        /// <summary>
+        /// True if ssl connection support is enabled.
+        /// </summary>
+        /// <returns>true if enabled</returns>
+        property bool SSLEnabled
+        {
+          bool get( );
+        }
+
+        /// <summary>
+        /// Returns the SSL private keystore file path.
+        /// </summary>
+        /// <returns>the SSL private keystore file path</returns>
+        property String^ SSLKeyStore
+        {
+          String^ get( );
+        }
+
+        /// <summary>
+        /// Returns the SSL public certificate trust store file path.
+        /// </summary>
+        /// <returns>the SSL public certificate trust store file path</returns>
+        property String^ SSLTrustStore
+        {
+          String^ get( );
+        }
+
+        // adongre
+        /// <summary>
+        /// Returns the client keystore password..
+        /// </summary>
+        /// <returns>Returns the client keystore password.</returns>
+        property String^ SSLKeystorePassword
+        {
+          String^ get( );
+        }
+
+        /// <summary>
+        /// True if client needs to be authenticated
+        /// </summary>
+        /// <returns>true if enabled</returns>
+        property bool IsSecurityOn
+        {
+          bool get( );
+        }
+
+        /// <summary>
+        /// Returns all the security properties
+        /// </summary>
+        /// <returns>the security properties</returns>
+        property Properties^ GetSecurityProperties {
+          Properties^ get( );
+        }
+
+        /// <summary>
+        /// Returns the durable client's ID.
+        /// </summary>
+        /// <returns>the durable client ID</returns>
+        property String^ DurableClientId
+        {
+          String^ get( );
+        }
+
+        /// <summary>
+        /// Returns the durable client's timeout.
+        /// </summary>
+        /// <returns>the durable client timeout</returns>
+        property uint32_t DurableTimeout
+        {
+          uint32_t get( );
+        }
+
+        /// <summary>
+        /// Returns the connect timeout used for server and locator handshakes.
+        /// </summary>
+        /// <returns>the connect timeout used for server and locator handshakes</returns>
+        property uint32_t ConnectTimeout
+        {
+          uint32_t get( );
+        }
+
+        /// <summary>
+        /// Returns the conflate event's option
+        /// </summary>
+        /// <returns>the conflate event option</returns>
+        property String^ ConflateEvents
+        {
+          String^ get( );
+        }
+
+      internal:
+
+        /// <summary>
+        /// Internal factory function to wrap a native object pointer inside
+        /// this managed class, with null pointer check.
+        /// </summary>
+        /// <param name="nativeptr">native object pointer</param>
+        /// <returns>
+        /// the managed wrapper object, or null if the native pointer is null.
+        /// </returns>
+        inline static SystemProperties^ Create(
+          gemfire::SystemProperties* nativeptr )
+        {
+          return ( nativeptr != nullptr ?
+            gcnew SystemProperties( nativeptr ) : nullptr );
+        }
+
+
+      private:
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline SystemProperties( gemfire::SystemProperties* nativeptr )
+          : UMWrap( nativeptr, false ) { }
+      };
+
+    }
+  }
+}



[51/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
Add source for geode c++ and .net clients


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/ac967000
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/ac967000
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/ac967000

Branch: refs/heads/native-client-software-grant
Commit: ac9670005e7a8d3463f9a21247823e32a2501724
Parents: 3ac74a4
Author: Anthony Baker <ab...@apache.org>
Authored: Fri May 13 14:08:53 2016 -0700
Committer: Anthony Baker <ab...@apache.org>
Committed: Fri May 13 14:08:53 2016 -0700

----------------------------------------------------------------------
 .../VS_Solutions/debug/AdminAPI/AdminAPI.sln    |    28 +
 .../debug/AdminAPI/main/AdminApiMain.cpp        |   109 +
 .../debug/AdminAPI/main/AdminApiMain.hpp        |    29 +
 .../debug/AdminAPI/main/AdminApiMain.vcproj     |   151 +
 .../debug/AdminAPI/main/gfcpp.properties        |     6 +
 .../AdminAPI/main/locator.gfcpp.properties      |     5 +
 .../debug/AdminAPI/main/mcast.gfcpp.properties  |     6 +
 .../debug/AdminAPI/src/AdminApiSrc.vcproj       |   236 +
 .../examples/CacheTest/CacheTest.sln            |    25 +
 .../examples/CacheTest/CacheTest.vcproj         |   538 +
 .../examples/CacheTest/gfcpp.properties         |     6 +
 .../examples/CacheTest/locator.gfcpp.properties |     5 +
 .../examples/CacheTest/mcast.gfcpp.properties   |     6 +
 .../examples/CacheTest/scripts/cs.sh            |    25 +
 .../examples/CacheTest/scripts/ct.sh            |    25 +
 .../examples/CacheTest/scripts/start_some.bat   |    17 +
 .../examples/CacheTest/xml/01_cache.xml         |    65 +
 .../examples/CacheTest/xml/02_cache.xml         |    65 +
 .../examples/CacheTest/xml/03_cache.xml         |    65 +
 .../examples/CacheTest/xml/04_cache.xml         |    60 +
 .../VS_Solutions/gfclicache/gfclicache.sln      |  1248 ++
 .../VS_Solutions_10/gfclicache/gfclicache.sln   |   610 +
 geode-client-native/bootstrap                   |    44 +
 geode-client-native/build.sh                    |   179 +
 geode-client-native/build.xml                   |  3255 ++++
 geode-client-native/build64.sh                  |   191 +
 geode-client-native/build64_vc8.sh              |    90 +
 geode-client-native/build_vc8.sh                |    99 +
 .../buildfiles/build_from_eclipse.bat           |    10 +
 geode-client-native/buildfiles/composit-ar.sh   |    81 +
 geode-client-native/buildfiles/dependencies.xml |     8 +
 geode-client-native/buildfiles/nprocs           |    21 +
 geode-client-native/buildfiles/osplatform.xml   |    69 +
 geode-client-native/buildfiles/prettycode.sh    |   192 +
 geode-client-native/buildfiles/sonar.xml        |    32 +
 geode-client-native/buildfiles/source_verify.pl |   139 +
 .../buildfiles/thirdparty.properties            |     9 +
 .../buildfiles/thirdparty_sol.properties        |     6 +
 .../buildfiles/thirdparty_solx86.properties     |     4 +
 .../thirdparty_solx86_cpp11.properties          |    13 +
 .../buildfiles/thirdparty_win.properties        |    26 +
 .../buildfiles/uniqueTransportConfig.sh         |    10 +
 geode-client-native/buildfiles/utilities.xml    |    35 +
 geode-client-native/buildfiles/vcvars32_10.sh   |    56 +
 geode-client-native/buildfiles/vcvars32_8.sh    |    47 +
 geode-client-native/buildfiles/vcvars32_9.sh    |    48 +
 geode-client-native/buildfiles/vcvars64_10.sh   |    61 +
 geode-client-native/buildfiles/vcvars64_8.sh    |    50 +
 geode-client-native/buildfiles/vcvars64_9.sh    |    51 +
 geode-client-native/buildfiles/winlog.sh        |    30 +
 .../dev-docs/StatDescriptions.txt               |   128 +
 .../dev-docs/Windows Build Setup.doc            |   Bin 0 -> 35840 bytes
 .../dev-docs/console features.xls               |   Bin 0 -> 42496 bytes
 geode-client-native/docs/c-footer.html          |     1 +
 geode-client-native/docs/cli-footer.html        |     1 +
 geode-client-native/docs/common-Doxyfile        |    54 +
 geode-client-native/docs/cpp-footer.html        |     1 +
 geode-client-native/docs/doclet/package-list    |     1 +
 geode-client-native/docs/gemFireCPPLogo.gif     |   Bin 0 -> 5002 bytes
 geode-client-native/docs/log4j/package-list     |    17 +
 .../docs/native_delta_propagation.doc           |   Bin 0 -> 51200 bytes
 .../docs/native_delta_propagation_doc.pdf       |   Bin 0 -> 107503 bytes
 .../BenchmarkHierarchicalClient.cs              |   213 +
 .../BenchmarkHierarchicalClient.csproj          |    87 +
 .../BenchmarkHierarchicalClient.xml             |    13 +
 .../Properties/AssemblyInfo.cs                  |    33 +
 .../BenchmarkHierarchicalClient/README.html     |   151 +
 .../clicache/CacheRunner/CacheRunner.cs         |   698 +
 .../clicache/CacheRunner/CacheRunner.csproj     |   129 +
 .../CacheRunner/CacheRunner.csproj.user         |     6 +
 .../examples/clicache/CacheRunner/Callbacks.cs  |    85 +
 .../clicache/CacheRunner/ComplexNumber.cs       |   206 +
 .../clicache/CacheRunner/ExampleObject.cs       |   229 +
 .../CacheRunner/Properties/AssemblyInfo.cs      |    33 +
 .../examples/clicache/CacheRunner/README.html   |   653 +
 .../examples/clicache/CqQuery/CqQuery.cs        |   325 +
 .../examples/clicache/CqQuery/CqQuery.csproj    |    97 +
 .../clicache/CqQuery/CqQuery.csproj.user        |     6 +
 .../clicache/CqQuery/Properties/AssemblyInfo.cs |    33 +
 .../examples/clicache/CqQuery/README.html       |   420 +
 .../ExecuteFunctions/ExecuteFunctions.cs        |   217 +
 .../ExecuteFunctions/ExecuteFunctions.csproj    |    85 +
 .../ExecuteFunctions.csproj.user                |     6 +
 .../ExecuteFunctions/Properties/AssemblyInfo.cs |    33 +
 .../clicache/ExecuteFunctions/README.html       |   427 +
 .../examples/clicache/HelloWorld/DocIndex.css   |  1058 ++
 .../examples/clicache/HelloWorld/HelloWorld.cs  |    99 +
 .../clicache/HelloWorld/HelloWorld.csproj       |    85 +
 .../clicache/HelloWorld/HelloWorld.csproj.user  |     5 +
 .../HelloWorld/Properties/AssemblyInfo.cs       |    33 +
 .../examples/clicache/HelloWorld/README.html    |   117 +
 .../HierarchicalClient/HierarchicalClient.cs    |   256 +
 .../HierarchicalClient.csproj                   |    86 +
 .../HierarchicalClient/HierarchicalClient.xml   |     7 +
 .../Properties/AssemblyInfo.cs                  |    33 +
 .../clicache/HierarchicalClient/README.html     |   170 +
 .../clicache/ProductBrowser/Form1.Designer.cs   |   364 +
 .../examples/clicache/ProductBrowser/Form1.cs   |   342 +
 .../examples/clicache/ProductBrowser/Form1.resx |   120 +
 .../examples/clicache/ProductBrowser/Product.cs |   293 +
 .../ProductBrowser/ProductBrowser.csproj        |   120 +
 .../examples/clicache/ProductBrowser/Program.cs |    28 +
 .../ProductBrowser/Properties/AssemblyInfo.cs   |    33 +
 .../Properties/Resources.Designer.cs            |    63 +
 .../ProductBrowser/Properties/Resources.resx    |   117 +
 .../Properties/Settings.Designer.cs             |    26 +
 .../ProductBrowser/Properties/Settings.settings |     7 +
 .../clicache/ProductBrowser/README.html         |   377 +
 .../com/examples/gemfire/net/Product.java       |   201 +
 .../examples/gemfire/net/ProductBrowser.java    |   189 +
 .../defaultConfig/gemfire.properties            |     7 +
 .../ProductBrowser/defaultConfig/product.xml    |     8 +
 .../clicache/ProductBrowser/gemfire.properties  |     7 +
 .../clicache/ProductBrowser/product.xml         |    13 +
 .../clicache/UserObjects/AccountHistory.cs      |    94 +
 .../clicache/UserObjects/BankAccount.cs         |   130 +
 .../examples/clicache/UserObjects/Program.cs    |    73 +
 .../UserObjects/Properties/AssemblyInfo.cs      |    33 +
 .../clicache/UserObjects/UserObjects.csproj     |    87 +
 .../examples/dist/c-overview.dox                |    16 +
 .../examples/dist/cacheRunner/CacheRunner.cpp   |  1641 ++
 .../examples/dist/cacheRunner/CacheRunner.hpp   |   318 +
 .../examples/dist/cacheRunner/CommandReader.cpp |   322 +
 .../examples/dist/cacheRunner/CommandReader.hpp |   158 +
 .../examples/dist/cacheRunner/ExampleObject.hpp |   194 +
 .../examples/dist/cacheRunner/README.html       |  1739 ++
 .../dist/cacheRunner/TestCacheCallback.cpp      |   254 +
 .../dist/cacheRunner/TestCacheCallback.hpp      |    96 +
 .../dist/cacheRunner/TestCacheListener.cpp      |   163 +
 .../dist/cacheRunner/TestCacheListener.hpp      |   164 +
 .../dist/cacheRunner/TestCacheLoader.cpp        |    70 +
 .../dist/cacheRunner/TestCacheLoader.hpp        |    98 +
 .../dist/cacheRunner/TestCacheWriter.cpp        |   252 +
 .../dist/cacheRunner/TestCacheWriter.hpp        |   198 +
 .../examples/dist/cacheRunner/User.hpp          |   146 +
 .../examples/dist/cacheRunner/buildit.bat       |     7 +
 .../examples/dist/cacheRunner/buildit.sh        |    41 +
 .../examples/dist/cacheRunner/cacherunner.xml   |    29 +
 .../examples/dist/cacheRunner/cacherunner2.xml  |    29 +
 .../dist/cacheRunner/csQueryPortfolios.xml      |   354 +
 .../dist/cacheRunner/csQueryPortfolios2.xml     |   354 +
 .../dist/cacheRunner/gfecs1/cacherunner.xml     |    29 +
 .../cacheRunner/gfecs1/csQueryPortfolios.xml    |   354 +
 .../dist/cacheRunner/gfecs2/cacherunner2.xml    |    29 +
 .../cacheRunner/gfecs2/csQueryPortfolios2.xml   |   354 +
 .../examples/dist/cacheRunner/tcr_cache.xml     |    27 +
 .../examples/dist/cacheRunner/tcr_cacheless.xml |    33 +
 .../examples/dist/cacheRunner/tcr_hacache.xml   |    34 +
 .../dist/cacheRunner/tcr_hacacheless.xml        |    32 +
 .../examples/dist/cqQuery/CqQuery.cpp           |   385 +
 .../examples/dist/cqQuery/README.html           |   335 +
 .../examples/dist/cqQuery/Updater.cpp           |    95 +
 .../dist/cqQuery/XMLs/clientCqQuery.xml         |    11 +
 .../dist/cqQuery/XMLs/serverCqQuery.xml         |    91 +
 .../examples/dist/cqQuery/buildit.bat           |     8 +
 .../examples/dist/cqQuery/buildit.sh            |    52 +
 .../examples/dist/cqQuery/cleanup.bat           |     7 +
 .../examples/dist/cqQuery/cleanup.sh            |     7 +
 .../examples/dist/cqQuery/runCqQuery.bat        |    20 +
 .../examples/dist/cqQuery/runCqQuery.sh         |    18 +
 .../examples/dist/cqQuery/runUpdater.bat        |    20 +
 .../examples/dist/cqQuery/runUpdater.sh         |    18 +
 .../examples/dist/cqQuery/startServer.bat       |    32 +
 .../examples/dist/cqQuery/startServer.sh        |    19 +
 .../examples/dist/cqQuery/stopServer.bat        |    21 +
 .../examples/dist/cqQuery/stopServer.sh         |    18 +
 .../dist/executeFunction/ExecuteFunctions.cpp   |   287 +
 .../XMLs/serverExecuteFunctions.xml             |    31 +
 .../XMLs/serverExecuteFunctions2.xml            |    31 +
 .../examples/dist/executeFunction/buildit.bat   |     7 +
 .../examples/dist/executeFunction/buildit.sh    |    46 +
 .../examples/dist/executeFunction/cleanup.bat   |     9 +
 .../examples/dist/executeFunction/cleanup.sh    |     9 +
 .../executeFunction/runExecuteFunctions.bat     |    20 +
 .../dist/executeFunction/runExecuteFunctions.sh |    18 +
 .../dist/executeFunction/startServer.bat        |    34 +
 .../dist/executeFunction/startServer.sh         |    25 +
 .../dist/executeFunction/stopServer.bat         |    22 +
 .../examples/dist/executeFunction/stopServer.sh |    20 +
 geode-client-native/examples/dist/overview.html |    15 +
 .../dist/userobjects/AccountHistory.cpp         |    99 +
 .../dist/userobjects/AccountHistory.hpp         |    59 +
 .../examples/dist/userobjects/BankAccount.cpp   |    62 +
 .../examples/dist/userobjects/BankAccount.hpp   |    72 +
 .../examples/dist/userobjects/EClassIds.hpp     |    17 +
 .../examples/dist/userobjects/ExampleMain.cpp   |    68 +
 .../examples/dist/userobjects/README.html       |   107 +
 .../examples/dist/userobjects/buildit.bat       |     7 +
 .../examples/dist/userobjects/buildit.sh        |    42 +
 geode-client-native/examples/unix_README.html   |    41 +
 geode-client-native/examples/win_README.html    |    57 +
 geode-client-native/filehdr.txt                 |    12 +
 geode-client-native/gfgrep                      |    18 +
 geode-client-native/makefiles/cppcache.gmk      |   788 +
 geode-client-native/makefiles/executable.gmk    |    74 +
 geode-client-native/makefiles/makemapfile.sh    |    23 +
 geode-client-native/makefiles/merge/README.txt  |    24 +
 geode-client-native/makefiles/merge/dircomp.pl  |   171 +
 geode-client-native/makefiles/merge/dircomp.sh  |     5 +
 geode-client-native/makefiles/merge/do_diff.sh  |    20 +
 geode-client-native/makefiles/merge/do_merge.sh |    11 +
 .../makefiles/merge/mergeOneFile.sh             |    20 +
 .../makefiles/merge/mergesetup.csh              |    21 +
 geode-client-native/makefiles/merge/scanHs.pl   |   173 +
 geode-client-native/makefiles/platform.gmk      |    98 +
 .../makefiles/test_executables.gmk              |   233 +
 geode-client-native/makefiles/test_library.gmk  |   173 +
 geode-client-native/makefiles/ver_script        |     6 +
 geode-client-native/myBuild.sh.example          |    25 +
 geode-client-native/quickstart/CMakeLists.txt   |   133 +
 geode-client-native/quickstart/GNUmakefile      |     5 +
 .../quickstart/GNUmakefile.common               |    70 +
 geode-client-native/quickstart/README.html      |  1415 ++
 .../quickstart/XMLs/clientDelta.xml             |    14 +
 .../quickstart/XMLs/clientExceptions.xml        |     9 +
 .../quickstart/XMLs/clientHACache.xml           |     6 +
 .../quickstart/XMLs/clientInterop.xml           |     6 +
 .../quickstart/XMLs/clientInteropJava.xml       |    10 +
 .../XMLs/clientLoaderListenerWriter.xml         |     8 +
 .../quickstart/XMLs/clientPdxAutoSerializer.xml |    12 +
 .../quickstart/XMLs/clientPdxInstance.xml       |    12 +
 .../quickstart/XMLs/clientPdxRemoteQuery.xml    |    12 +
 .../quickstart/XMLs/clientPdxSerializer.xml     |    12 +
 .../quickstart/XMLs/clientPoolCqQuery.xml       |    14 +
 .../quickstart/XMLs/clientPoolRemoteQuery.xml   |    17 +
 .../quickstart/XMLs/clientRefIDExample.xml      |    22 +
 .../quickstart/XMLs/clientRegisterInterest.xml  |    11 +
 .../quickstart/XMLs/clientSecurity.xml          |    12 +
 .../quickstart/XMLs/serverBasicOperations.xml   |    15 +
 .../quickstart/XMLs/serverCqQuery.xml           |   159 +
 .../quickstart/XMLs/serverDataExpiration.xml    |    16 +
 .../quickstart/XMLs/serverDelta.xml             |    23 +
 .../quickstart/XMLs/serverDistributedSystem.xml |    15 +
 .../XMLs/serverDistributedSystem2.xml           |    15 +
 .../quickstart/XMLs/serverDurableClient.xml     |    15 +
 .../quickstart/XMLs/serverExceptions.xml        |    18 +
 .../quickstart/XMLs/serverExecuteFunctions.xml  |    28 +
 .../quickstart/XMLs/serverExecuteFunctions2.xml |    28 +
 .../quickstart/XMLs/serverHACache.xml           |    19 +
 .../quickstart/XMLs/serverHACache2.xml          |    19 +
 .../quickstart/XMLs/serverInterop.xml           |    15 +
 .../XMLs/serverLoaderListenerWriter.xml         |    16 +
 .../quickstart/XMLs/serverMultiuserSecurity.xml |    20 +
 .../quickstart/XMLs/serverPdxAutoSerializer.xml |    15 +
 .../quickstart/XMLs/serverPdxInstance.xml       |    15 +
 .../quickstart/XMLs/serverPdxRemoteQuery.xml    |    15 +
 .../quickstart/XMLs/serverPdxSerializer.xml     |    15 +
 .../quickstart/XMLs/serverPoolCqQuery.xml       |   160 +
 .../quickstart/XMLs/serverPoolRemoteQuery.xml   |   162 +
 .../quickstart/XMLs/serverPoolWithEndpoints.xml |    15 +
 .../XMLs/serverPutAllGetAllOperations.xml       |    15 +
 .../quickstart/XMLs/serverRefIDExample.xml      |    18 +
 .../quickstart/XMLs/serverRegisterInterest.xml  |    15 +
 .../quickstart/XMLs/serverRemoteQuery.xml       |   160 +
 .../quickstart/XMLs/serverSecurity.xml          |    15 +
 .../quickstart/XMLs/serverTransactions.xml      |    15 +
 .../quickstart/XMLs/serverTransactionsXA.xml    |    15 +
 geode-client-native/quickstart/buildit.sh       |   126 +
 geode-client-native/quickstart/buildit_10.bat   |    47 +
 geode-client-native/quickstart/cleanup.bat      |     9 +
 geode-client-native/quickstart/cleanup.sh       |    12 +
 .../quickstart/cpp/BasicOperations.cpp          |   101 +
 .../quickstart/cpp/CMakeLists.txt               |   117 +
 geode-client-native/quickstart/cpp/CqQuery.cpp  |   175 +
 .../quickstart/cpp/DataExpiration.cpp           |   105 +
 geode-client-native/quickstart/cpp/Delta.cpp    |    93 +
 .../quickstart/cpp/DistributedSystem.cpp        |   125 +
 .../quickstart/cpp/DurableClient.cpp            |   139 +
 .../quickstart/cpp/Exceptions.cpp               |   120 +
 .../quickstart/cpp/ExecuteFunctions.cpp         |   176 +
 .../quickstart/cpp/FindCPPCache.cmake           |    50 +
 geode-client-native/quickstart/cpp/GNUmakefile  |     8 +
 .../quickstart/cpp/GNUmakefile.execs            |    61 +
 geode-client-native/quickstart/cpp/HACache.cpp  |   100 +
 .../quickstart/cpp/LoaderListenerWriter.cpp     |    88 +
 .../quickstart/cpp/MultiuserSecurity.cpp        |   185 +
 .../quickstart/cpp/PdxAutoSerializer.cpp        |   123 +
 .../quickstart/cpp/PdxInstance.cpp              |   125 +
 .../quickstart/cpp/PdxRemoteQuery.cpp           |   120 +
 .../quickstart/cpp/PdxSerializer.cpp            |   254 +
 .../quickstart/cpp/PoolCqQuery.cpp              |   183 +
 .../quickstart/cpp/PoolRemoteQuery.cpp          |   120 +
 .../quickstart/cpp/PoolWithEndpoints.cpp        |    97 +
 .../quickstart/cpp/PutAllGetAllOperations.cpp   |    76 +
 .../quickstart/cpp/RefIDExample.cpp             |   105 +
 .../quickstart/cpp/RegisterInterest.cpp         |    99 +
 .../quickstart/cpp/RemoteQuery.cpp              |   144 +
 geode-client-native/quickstart/cpp/Security.cpp |    77 +
 .../quickstart/cpp/Transactions.cpp             |   110 +
 .../quickstart/cpp/TransactionsXA.cpp           |   122 +
 .../cpp/deltaobjects/DeltaExample.hpp           |   191 +
 .../cpp/plugins/DurableCacheListener.cpp        |    17 +
 .../cpp/plugins/DurableCacheListener.hpp        |    24 +
 .../cpp/plugins/SimpleCacheListener.cpp         |    36 +
 .../cpp/plugins/SimpleCacheListener.hpp         |    28 +
 .../cpp/plugins/SimpleCacheLoader.cpp           |    20 +
 .../cpp/plugins/SimpleCacheLoader.hpp           |    26 +
 .../cpp/plugins/SimpleCacheWriter.cpp           |    40 +
 .../cpp/plugins/SimpleCacheWriter.hpp           |    28 +
 .../quickstart/cpp/queryobjects/GNUmakefile     |     5 +
 .../cpp/queryobjects/GNUmakefile.pdxauto        |    29 +
 .../quickstart/cpp/queryobjects/Portfolio.cpp   |   127 +
 .../quickstart/cpp/queryobjects/Portfolio.hpp   |   155 +
 .../cpp/queryobjects/PortfolioPdx.cpp           |   183 +
 .../cpp/queryobjects/PortfolioPdx.hpp           |   126 +
 .../cpp/queryobjects/PortfolioPdxAuto.cpp       |   125 +
 .../cpp/queryobjects/PortfolioPdxAuto.hpp       |   127 +
 .../quickstart/cpp/queryobjects/Position.cpp    |    98 +
 .../quickstart/cpp/queryobjects/Position.hpp    |   101 +
 .../quickstart/cpp/queryobjects/PositionPdx.cpp |   167 +
 .../quickstart/cpp/queryobjects/PositionPdx.hpp |   111 +
 .../cpp/queryobjects/PositionPdxAuto.cpp        |    98 +
 .../cpp/queryobjects/PositionPdxAuto.hpp        |   109 +
 .../BasicOperationsC++.vcxproj                  |   142 +
 .../vsprojects/CqQueryC++/CqQueryC++.vcxproj    |   164 +
 .../DataExpirationC++/DataExpirationC++.vcxproj |   141 +
 .../cpp/vsprojects/DeltaC++/DeltaC++.vcxproj    |   140 +
 .../DistributedSystemC++.vcxproj                |   186 +
 .../DurableClientC++/DurableClientC++.vcxproj   |   143 +
 .../ExceptionsC++/ExceptionsC++.vcxproj         |   166 +
 .../ExecuteFunctionsC++.vcxproj                 |   166 +
 .../vsprojects/HACacheC++/HACacheC++.vcxproj    |   166 +
 .../vsprojects/InteropC++/InteropC++.vcxproj    |   140 +
 .../LoaderListenerWriterC++.vcxproj             |   144 +
 .../MultiuserSecurityC++.vcxproj                |   142 +
 .../PdxAutoSerializerC++.vcxproj                |   197 +
 .../PdxAutoSerializerC++.vcxproj.filters        |    34 +
 .../PdxInstanceC++/PdxInstanceC++.vcxproj       |   140 +
 .../PdxRemoteQueryC++/PdxRemoteQueryC++.vcxproj |   170 +
 .../PdxSerializerC++/PdxSerializerC++.vcxproj   |   140 +
 .../PoolCqQueryC++/PoolCqQuery.vcxproj          |   189 +
 .../PoolRemoteQueryC++.vcxproj                  |   171 +
 .../PoolWithEndpointsC++.vcxproj                |   165 +
 .../PutAllGetAllOperationsC++.vcxproj           |   144 +
 .../RefIDExample C++/RefIDExample C++.vcxproj   |   195 +
 .../RegisterInterestC++.vcxproj                 |   141 +
 .../RemoteQueryC++/RemoteQueryC++.vcxproj       |   167 +
 .../vsprojects/SecurityC++/SecurityC++.vcxproj  |   142 +
 .../TransactionsC++/TransactionsC++.vcxproj     |   165 +
 .../TransactionsXAC++/TransactionsXAC++.vcxproj |   165 +
 .../quickstart/csharp/BasicOperations.cs        |   110 +
 .../quickstart/csharp/CqQuery.cs                |   172 +
 .../quickstart/csharp/DataExpiration.cs         |   105 +
 geode-client-native/quickstart/csharp/Delta.cs  |    93 +
 .../quickstart/csharp/DeltaExample.cs           |   183 +
 .../quickstart/csharp/DistributedSystem.cs      |   113 +
 .../quickstart/csharp/DurableClient.cs          |   134 +
 .../quickstart/csharp/Exceptions.cs             |   124 +
 .../quickstart/csharp/ExecuteFunctions.cs       |   151 +
 .../quickstart/csharp/HACache.cs                |   114 +
 .../quickstart/csharp/LoaderListenerWriter.cs   |   110 +
 .../quickstart/csharp/MultiuserSecurity.cs      |   181 +
 .../quickstart/csharp/PdxInstance.cs            |   120 +
 .../quickstart/csharp/PdxRemoteQuery.cs         |   125 +
 .../quickstart/csharp/PdxSerializer.cs          |   233 +
 .../quickstart/csharp/PoolCqQuery.cs            |   174 +
 .../quickstart/csharp/PoolRemoteQuery.cs        |   123 +
 .../quickstart/csharp/PoolWithEndpoints.cs      |    99 +
 .../quickstart/csharp/PutAllGetAllOperations.cs |    78 +
 .../quickstart/csharp/RefIDExample.cs           |   103 +
 .../quickstart/csharp/RegisterInterest.cs       |   103 +
 .../quickstart/csharp/RemoteQuery.cs            |   142 +
 .../quickstart/csharp/Security.cs               |   168 +
 .../quickstart/csharp/Transactions.cs           |   117 +
 .../quickstart/csharp/TransactionsXA.cs         |   126 +
 .../csharp/plugins/DurableCacheListener.cs      |    66 +
 .../csharp/plugins/SimpleCacheListener.cs       |    66 +
 .../csharp/plugins/SimpleCacheLoader.cs         |    26 +
 .../csharp/plugins/SimpleCacheWriter.cs         |    50 +
 .../BasicOperations/BasicOperations.csproj      |   118 +
 .../BasicOperations/Properties/AssemblyInfo.cs  |    33 +
 .../csharp/vsprojects/CqQuery/CqQuery.csproj    |   123 +
 .../CqQuery/Properties/AssemblyInfo.cs          |    33 +
 .../DataExpiration/DataExpiration.csproj        |   120 +
 .../DataExpiration/Properties/AssemblyInfo.cs   |    33 +
 .../csharp/vsprojects/Delta/Delta.csproj        |   120 +
 .../vsprojects/Delta/Properties/AssemblyInfo.cs |    33 +
 .../DistributedSystem/DistributedSystem.csproj  |   117 +
 .../Properties/AssemblyInfo.cs                  |    33 +
 .../DurableClient/DurableClient.csproj          |   123 +
 .../DurableClient/Properties/AssemblyInfo.cs    |    33 +
 .../csharp/vsprojects/DurableClient/app.config  |     3 +
 .../vsprojects/Exceptions/Exceptions.csproj     |   119 +
 .../Exceptions/Properties/AssemblyInfo.cs       |    33 +
 .../ExecuteFunctions/ExecuteFunctions.csproj    |   117 +
 .../ExecuteFunctions/Properties/AssemblyInfo.cs |    33 +
 .../csharp/vsprojects/HACache/HACache.csproj    |   119 +
 .../HACache/Properties/AssemblyInfo.cs          |    33 +
 .../csharp/vsprojects/Interop/Interop.csproj    |   121 +
 .../Interop/Properties/AssemblyInfo.cs          |    33 +
 .../LoaderListenerWriter.csproj                 |   126 +
 .../Properties/AssemblyInfo.cs                  |    33 +
 .../MultiuserSecurity/MultiuserSecurity.csproj  |   118 +
 .../Properties/AssemblyInfo.cs                  |    33 +
 .../vsprojects/PdxInstance/PdxInstance.csproj   |   117 +
 .../PdxInstance/Properties/AssemblyInfo.cs      |    33 +
 .../PdxRemoteQuery/PdxRemoteQuery.csproj        |   123 +
 .../PdxRemoteQuery/Properties/AssemblyInfo.cs   |    33 +
 .../PdxSerializer/PdxSerializer.csproj          |   117 +
 .../PdxSerializer/Properties/AssemblyInfo.cs    |    33 +
 .../vsprojects/PoolCqQuery/PoolCqQuery.csproj   |   123 +
 .../PoolCqQuery/Properties/AssemblyInfo.cs      |    33 +
 .../PoolRemoteQuery/PoolRemoteQuery.csproj      |   123 +
 .../PoolRemoteQuery/Properties/AssemblyInfo.cs  |    33 +
 .../PoolWithEndpoints/PoolWithEndpoints.csproj  |   117 +
 .../Properties/AssemblyInfo.cs                  |    33 +
 .../Properties/AssemblyInfo.cs                  |    33 +
 .../PutAllGetAllOperations.csproj               |   118 +
 .../RefIDExample/Properties/AssemblyInfo.cs     |    33 +
 .../vsprojects/RefIDExample/RefIDExample.csproj |   113 +
 .../RegisterInterest/Properties/AssemblyInfo.cs |    33 +
 .../RegisterInterest/RegisterInterest.csproj    |   117 +
 .../RemoteQuery/Properties/AssemblyInfo.cs      |    33 +
 .../vsprojects/RemoteQuery/RemoteQuery.csproj   |   123 +
 .../Security/Properties/AssemblyInfo.cs         |    33 +
 .../csharp/vsprojects/Security/Security.csproj  |   118 +
 .../SimplePlugins/SimplePlugins.csproj          |   120 +
 .../Transactions/Properties/AssemblyInfo.cs     |    33 +
 .../vsprojects/Transactions/Transactions.csproj |   117 +
 .../TransactionsXA/Properties/AssemblyInfo.cs   |    33 +
 .../TransactionsXA/TransactionsXA.csproj        |   117 +
 .../quickstart/interop/GNUmakefile              |     5 +
 .../quickstart/interop/GNUmakefile.execs        |    20 +
 .../quickstart/interop/GNUmakefile.java         |    21 +
 .../quickstart/interop/InteropCPP.cpp           |    73 +
 .../quickstart/interop/InteropCSHARP.cs         |    77 +
 .../quickstart/interop/InteropJAVA.java         |    70 +
 geode-client-native/quickstart/overview.gif     |   Bin 0 -> 10167 bytes
 geode-client-native/quickstart/quickstart.xml   |   194 +
 .../quickstart/quickstart_cpp.sln               |   479 +
 .../quickstart/quickstart_csharp.sln            |   520 +
 geode-client-native/quickstart/runcpp.bat       |   271 +
 geode-client-native/quickstart/runcpp.sh        |   232 +
 geode-client-native/quickstart/runcs.bat        |   264 +
 geode-client-native/quickstart/runinterop.bat   |    40 +
 geode-client-native/quickstart/runinterop.sh    |    35 +
 geode-client-native/sdk/build-src.xml           |   154 +
 geode-client-native/src/BUILDING.md             |    68 +
 geode-client-native/src/CMakeLists.txt          |    84 +
 geode-client-native/src/FindNativeClient.cmake  |   277 +
 .../src/FindNativeClientCPPCache.cmake          |    68 +
 geode-client-native/src/bdbimpl/BDBHelper.cpp   |   196 +
 geode-client-native/src/bdbimpl/BDBImpl.cpp     |   521 +
 geode-client-native/src/bdbimpl/BDBImpl.hpp     |   188 +
 geode-client-native/src/bdbimpl/DBHelper.hpp    |    47 +
 geode-client-native/src/bdbimpl/GNUmakefile     |    73 +
 geode-client-native/src/cclient/Makefile        |    22 +
 geode-client-native/src/cclient/README          |    34 +
 geode-client-native/src/cclient/sample/Makefile |    25 +
 geode-client-native/src/cclient/sample/runit.sh |    17 +
 geode-client-native/src/cclient/sample/sample.c |    85 +
 .../src/cclient/sample/sampleserver.xml         |    15 +
 geode-client-native/src/cclient/src/Makefile    |    27 +
 geode-client-native/src/cclient/src/data_io.c   |   312 +
 geode-client-native/src/cclient/src/data_io.h   |    80 +
 geode-client-native/src/cclient/src/gf_client.c |   805 +
 geode-client-native/src/cclient/src/gf_client.h |    88 +
 .../src/clicache/AttributesFactoryM.cpp         |   270 +
 .../src/clicache/AttributesFactoryM.hpp         |   517 +
 .../src/clicache/AttributesMutatorM.cpp         |   145 +
 .../src/clicache/AttributesMutatorM.hpp         |   255 +
 geode-client-native/src/clicache/CMakeLists.txt |    43 +
 .../src/clicache/CacheAttributesFactoryM.cpp    |    49 +
 .../src/clicache/CacheAttributesFactoryM.hpp    |    74 +
 .../src/clicache/CacheAttributesM.cpp           |    34 +
 .../src/clicache/CacheAttributesM.hpp           |    95 +
 .../src/clicache/CacheFactoryM.cpp              |   410 +
 .../src/clicache/CacheFactoryM.hpp              |   658 +
 .../src/clicache/CacheListenerAdapter.hpp       |    74 +
 geode-client-native/src/clicache/CacheM.cpp     |   223 +
 geode-client-native/src/clicache/CacheM.hpp     |   281 +
 .../src/clicache/CacheStatisticsM.cpp           |    32 +
 .../src/clicache/CacheStatisticsM.hpp           |   145 +
 .../src/clicache/CacheWriterAdapter.hpp         |    64 +
 .../src/clicache/CacheableArrayListM.hpp        |   115 +
 .../src/clicache/CacheableBuiltinsM.hpp         |   662 +
 .../src/clicache/CacheableDateM.cpp             |   101 +
 .../src/clicache/CacheableDateM.hpp             |   164 +
 .../src/clicache/CacheableFileNameM.cpp         |    96 +
 .../src/clicache/CacheableFileNameM.hpp         |   159 +
 .../src/clicache/CacheableHashMapM.cpp          |    68 +
 .../src/clicache/CacheableHashMapM.hpp          |   145 +
 .../src/clicache/CacheableHashSetM.hpp          |   551 +
 .../src/clicache/CacheableHashTableM.hpp        |   103 +
 .../src/clicache/CacheableIdentityHashMapM.hpp  |   119 +
 .../src/clicache/CacheableKeyM.cpp              |    98 +
 .../src/clicache/CacheableKeyM.hpp              |   128 +
 .../src/clicache/CacheableObject.cpp            |    62 +
 .../src/clicache/CacheableObject.hpp            |   146 +
 .../src/clicache/CacheableObjectArrayM.cpp      |   107 +
 .../src/clicache/CacheableObjectArrayM.hpp      |   145 +
 .../src/clicache/CacheableObjectXml.cpp         |    90 +
 .../src/clicache/CacheableObjectXml.hpp         |   147 +
 .../src/clicache/CacheableStackM.cpp            |    67 +
 .../src/clicache/CacheableStackM.hpp            |   137 +
 .../src/clicache/CacheableStringArrayM.cpp      |   101 +
 .../src/clicache/CacheableStringArrayM.hpp      |   205 +
 .../src/clicache/CacheableStringM.cpp           |   229 +
 .../src/clicache/CacheableStringM.hpp           |   319 +
 .../src/clicache/CacheableUndefinedM.cpp        |    42 +
 .../src/clicache/CacheableUndefinedM.hpp        |    98 +
 .../src/clicache/CacheableVectorM.cpp           |    58 +
 .../src/clicache/CacheableVectorM.hpp           |   142 +
 .../src/clicache/CqAttributesFactoryM.cpp       |    52 +
 .../src/clicache/CqAttributesFactoryM.hpp       |    72 +
 .../src/clicache/CqAttributesM.cpp              |    47 +
 .../src/clicache/CqAttributesM.hpp              |    73 +
 .../src/clicache/CqAttributesMutatorM.cpp       |    54 +
 .../src/clicache/CqAttributesMutatorM.hpp       |    90 +
 geode-client-native/src/clicache/CqEventM.cpp   |    62 +
 geode-client-native/src/clicache/CqEventM.hpp   |    84 +
 .../src/clicache/CqListenerM.hpp                |   102 +
 .../src/clicache/CqOperationM.hpp               |    76 +
 geode-client-native/src/clicache/CqQueryM.cpp   |   181 +
 geode-client-native/src/clicache/CqQueryM.hpp   |   174 +
 .../src/clicache/CqServiceStatisticsM.cpp       |    41 +
 .../src/clicache/CqServiceStatisticsM.hpp       |    92 +
 geode-client-native/src/clicache/CqStateM.cpp   |    84 +
 geode-client-native/src/clicache/CqStateM.hpp   |    90 +
 .../src/clicache/CqStatisticsM.cpp              |    37 +
 .../src/clicache/CqStatisticsM.hpp              |    84 +
 geode-client-native/src/clicache/DataInputM.cpp |   540 +
 geode-client-native/src/clicache/DataInputM.hpp |   572 +
 .../src/clicache/DataOutputM.cpp                |   586 +
 .../src/clicache/DataOutputM.hpp                |   531 +
 .../src/clicache/DiskPolicyTypeM.hpp            |    76 +
 .../src/clicache/DistributedSystemM.cpp         |   586 +
 .../src/clicache/DistributedSystemM.hpp         |   203 +
 .../src/clicache/EntryEventM.cpp                |    78 +
 .../src/clicache/EntryEventM.hpp                |   112 +
 .../src/clicache/ExceptionTypesM.cpp            |   173 +
 .../src/clicache/ExceptionTypesM.hpp            |   700 +
 geode-client-native/src/clicache/ExecutionM.cpp |    84 +
 geode-client-native/src/clicache/ExecutionM.hpp |   126 +
 .../src/clicache/ExpirationActionM.hpp          |   124 +
 .../src/clicache/FunctionServiceM.cpp           |   121 +
 .../src/clicache/FunctionServiceM.hpp           |    93 +
 .../src/clicache/GemFireClassIdsM.hpp           |   276 +
 .../src/clicache/IAuthInitialize.hpp            |    71 +
 .../src/clicache/ICacheListener.hpp             |   199 +
 .../src/clicache/ICacheLoader.hpp               |   108 +
 .../src/clicache/ICacheWriter.hpp               |   161 +
 .../src/clicache/ICacheableKey.hpp              |    60 +
 .../src/clicache/ICqAttributes.hpp              |   108 +
 geode-client-native/src/clicache/ICqEvent.hpp   |   108 +
 .../src/clicache/ICqListener.hpp                |   108 +
 geode-client-native/src/clicache/ICqResults.hpp |    39 +
 .../src/clicache/ICqStatusListener.hpp          |    44 +
 .../src/clicache/IFixedPartitionResolver.hpp    |    86 +
 geode-client-native/src/clicache/IGFDelta.hpp   |    70 +
 .../src/clicache/IGFSerializable.hpp            |    95 +
 .../src/clicache/IGemFireCache.hpp              |    80 +
 .../src/clicache/IPartitionResolver.hpp         |    93 +
 .../src/clicache/IRegionService.hpp             |   104 +
 .../src/clicache/IResultCollector.hpp           |    64 +
 .../src/clicache/ISelectResults.hpp             |    68 +
 .../src/clicache/ITransactionListener.hpp       |    38 +
 .../src/clicache/ITransactionWriter.hpp         |    31 +
 geode-client-native/src/clicache/LogM.cpp       |   114 +
 geode-client-native/src/clicache/LogM.hpp       |   301 +
 .../src/clicache/PoolFactoryM.cpp               |   250 +
 .../src/clicache/PoolFactoryM.hpp               |   398 +
 geode-client-native/src/clicache/PoolM.cpp      |   182 +
 geode-client-native/src/clicache/PoolM.hpp      |   281 +
 .../src/clicache/PoolManagerM.cpp               |    72 +
 .../src/clicache/PoolManagerM.hpp               |    69 +
 .../src/clicache/PropertiesM.cpp                |   525 +
 .../src/clicache/PropertiesM.hpp                |   358 +
 geode-client-native/src/clicache/QueryM.cpp     |   121 +
 geode-client-native/src/clicache/QueryM.hpp     |   200 +
 .../src/clicache/QueryServiceM.cpp              |   169 +
 .../src/clicache/QueryServiceM.hpp              |   135 +
 .../src/clicache/RegionAttributesM.cpp          |   298 +
 .../src/clicache/RegionAttributesM.hpp          |   504 +
 .../src/clicache/RegionEntryM.cpp               |    61 +
 .../src/clicache/RegionEntryM.hpp               |   172 +
 .../src/clicache/RegionEventM.cpp               |    60 +
 .../src/clicache/RegionEventM.hpp               |    84 +
 .../src/clicache/RegionFactoryM.cpp             |   272 +
 .../src/clicache/RegionFactoryM.hpp             |   410 +
 geode-client-native/src/clicache/RegionM.cpp    |  1280 ++
 geode-client-native/src/clicache/RegionM.hpp    |  5063 ++++++
 .../src/clicache/RegionShortcutM.hpp            |    66 +
 .../src/clicache/ResultCollectorM.cpp           |    63 +
 .../src/clicache/ResultCollectorM.hpp           |   105 +
 geode-client-native/src/clicache/ResultSetM.cpp |    66 +
 geode-client-native/src/clicache/ResultSetM.hpp |   111 +
 geode-client-native/src/clicache/ScopeTypeM.hpp |   134 +
 .../src/clicache/SelectResultsIteratorM.cpp     |    50 +
 .../src/clicache/SelectResultsIteratorM.hpp     |   120 +
 .../src/clicache/SerializableM.cpp              |   279 +
 .../src/clicache/SerializableM.hpp              |   631 +
 .../src/clicache/StatisticDescriptorM.cpp       |    51 +
 .../src/clicache/StatisticDescriptorM.hpp       |   116 +
 .../src/clicache/StatisticsFactoryM.cpp         |   240 +
 .../src/clicache/StatisticsFactoryM.hpp         |   254 +
 .../src/clicache/StatisticsM.cpp                |   284 +
 .../src/clicache/StatisticsM.hpp                |   531 +
 .../src/clicache/StatisticsTypeM.cpp            |    68 +
 .../src/clicache/StatisticsTypeM.hpp            |   128 +
 geode-client-native/src/clicache/StructM.cpp    |    71 +
 geode-client-native/src/clicache/StructM.hpp    |   132 +
 geode-client-native/src/clicache/StructSetM.cpp |    79 +
 geode-client-native/src/clicache/StructSetM.hpp |   151 +
 .../src/clicache/SystemPropertiesM.cpp          |   219 +
 .../src/clicache/SystemPropertiesM.hpp          |   418 +
 .../src/clicache/TransactionEventM.cpp          |    54 +
 .../src/clicache/TransactionEventM.hpp          |    73 +
 .../src/clicache/TransactionListenerAdapter.hpp |    49 +
 .../src/clicache/TransactionWriterAdapter.hpp   |    38 +
 .../UserFunctionExecutionExceptionM.cpp         |    63 +
 .../UserFunctionExecutionExceptionM.hpp         |   124 +
 geode-client-native/src/clicache/Utils.cpp      |    63 +
 geode-client-native/src/clicache/Utils.hpp      |    75 +
 .../clicache/com/vmware/AttributesFactoryMN.cpp |   345 +
 .../clicache/com/vmware/AttributesFactoryMN.hpp |   553 +
 .../clicache/com/vmware/AttributesMutatorMN.cpp |   175 +
 .../clicache/com/vmware/AttributesMutatorMN.hpp |   256 +
 .../com/vmware/CacheAttributesFactoryMN.cpp     |    53 +
 .../com/vmware/CacheAttributesFactoryMN.hpp     |    76 +
 .../clicache/com/vmware/CacheAttributesMN.cpp   |    38 +
 .../clicache/com/vmware/CacheAttributesMN.hpp   |    98 +
 .../src/clicache/com/vmware/CacheFactoryMN.cpp  |   474 +
 .../src/clicache/com/vmware/CacheFactoryMN.hpp  |   731 +
 .../com/vmware/CacheListenerAdapterN.hpp        |    75 +
 .../src/clicache/com/vmware/CacheMN.cpp         |   277 +
 .../src/clicache/com/vmware/CacheMN.hpp         |   319 +
 .../clicache/com/vmware/CacheStatisticsMN.cpp   |    33 +
 .../clicache/com/vmware/CacheStatisticsMN.hpp   |   145 +
 .../com/vmware/CacheTransactionManagerMN.cpp    |   206 +
 .../com/vmware/CacheTransactionManagerMN.hpp    |   262 +
 .../clicache/com/vmware/CacheWriterAdapterN.hpp |    65 +
 .../com/vmware/CacheableArrayListMN.hpp         |    87 +
 .../clicache/com/vmware/CacheableBuiltinsMN.hpp |   569 +
 .../src/clicache/com/vmware/CacheableDateMN.cpp |   111 +
 .../src/clicache/com/vmware/CacheableDateMN.hpp |   167 +
 .../clicache/com/vmware/CacheableFileNameMN.cpp |    99 +
 .../clicache/com/vmware/CacheableFileNameMN.hpp |   162 +
 .../clicache/com/vmware/CacheableHashMapMN.cpp  |    45 +
 .../clicache/com/vmware/CacheableHashMapMN.hpp  |   137 +
 .../clicache/com/vmware/CacheableHashSetMN.hpp  |   594 +
 .../com/vmware/CacheableHashTableMN.hpp         |   108 +
 .../com/vmware/CacheableIdentityHashMapMN.hpp   |   118 +
 .../src/clicache/com/vmware/CacheableKeyMN.cpp  |   108 +
 .../src/clicache/com/vmware/CacheableKeyMN.hpp  |   129 +
 .../com/vmware/CacheableLinkedListMN.hpp        |   142 +
 .../com/vmware/CacheableObjectArrayMN.cpp       |   114 +
 .../com/vmware/CacheableObjectArrayMN.hpp       |   145 +
 .../clicache/com/vmware/CacheableObjectN.cpp    |    72 +
 .../clicache/com/vmware/CacheableObjectN.hpp    |   146 +
 .../clicache/com/vmware/CacheableObjectXmlN.cpp |   101 +
 .../clicache/com/vmware/CacheableObjectXmlN.hpp |   147 +
 .../clicache/com/vmware/CacheableStackMN.cpp    |    82 +
 .../clicache/com/vmware/CacheableStackMN.hpp    |   120 +
 .../com/vmware/CacheableStringArrayMN.cpp       |    88 +
 .../com/vmware/CacheableStringArrayMN.hpp       |   180 +
 .../clicache/com/vmware/CacheableStringMN.cpp   |   202 +
 .../clicache/com/vmware/CacheableStringMN.hpp   |   313 +
 .../com/vmware/CacheableUndefinedMN.cpp         |    45 +
 .../com/vmware/CacheableUndefinedMN.hpp         |    99 +
 .../clicache/com/vmware/CacheableVectorMN.cpp   |    70 +
 .../clicache/com/vmware/CacheableVectorMN.hpp   |   126 +
 .../com/vmware/CqAttributesFactoryMN.cpp        |   133 +
 .../com/vmware/CqAttributesFactoryMN.hpp        |    80 +
 .../src/clicache/com/vmware/CqAttributesMN.cpp  |    57 +
 .../src/clicache/com/vmware/CqAttributesMN.hpp  |    74 +
 .../com/vmware/CqAttributesMutatorMN.cpp        |   166 +
 .../com/vmware/CqAttributesMutatorMN.hpp        |   104 +
 .../src/clicache/com/vmware/CqEventMN.cpp       |    68 +
 .../src/clicache/com/vmware/CqEventMN.hpp       |    86 +
 .../src/clicache/com/vmware/CqListenerMN.hpp    |   103 +
 .../src/clicache/com/vmware/CqOperationMN.hpp   |    78 +
 .../src/clicache/com/vmware/CqQueryMN.cpp       |   196 +
 .../src/clicache/com/vmware/CqQueryMN.hpp       |   182 +
 .../com/vmware/CqServiceStatisticsMN.cpp        |    42 +
 .../com/vmware/CqServiceStatisticsMN.hpp        |    92 +
 .../src/clicache/com/vmware/CqStateMN.cpp       |    84 +
 .../src/clicache/com/vmware/CqStateMN.hpp       |    89 +
 .../src/clicache/com/vmware/CqStatisticsMN.cpp  |    38 +
 .../src/clicache/com/vmware/CqStatisticsMN.hpp  |    84 +
 .../src/clicache/com/vmware/DataInputMN.cpp     |  1086 ++
 .../src/clicache/com/vmware/DataInputMN.hpp     |   685 +
 .../src/clicache/com/vmware/DataOutputMN.cpp    |   884 +
 .../src/clicache/com/vmware/DataOutputMN.hpp    |   598 +
 .../clicache/com/vmware/DiskPolicyTypeMN.hpp    |    78 +
 .../clicache/com/vmware/DistributedSystemMN.cpp |   894 +
 .../clicache/com/vmware/DistributedSystemMN.hpp |   209 +
 .../src/clicache/com/vmware/EntryEventMN.cpp    |    86 +
 .../src/clicache/com/vmware/EntryEventMN.hpp    |   115 +
 .../clicache/com/vmware/ExceptionTypesMN.cpp    |   171 +
 .../clicache/com/vmware/ExceptionTypesMN.hpp    |   695 +
 .../src/clicache/com/vmware/ExecutionMN.cpp     |   115 +
 .../src/clicache/com/vmware/ExecutionMN.hpp     |   134 +
 .../clicache/com/vmware/ExpirationActionMN.hpp  |   127 +
 .../clicache/com/vmware/FunctionServiceMN.cpp   |   132 +
 .../clicache/com/vmware/FunctionServiceMN.hpp   |   100 +
 .../clicache/com/vmware/GemFireClassIdsMN.hpp   |   361 +
 .../clicache/com/vmware/IAuthInitializeN.hpp    |    75 +
 .../src/clicache/com/vmware/ICacheListenerN.hpp |   201 +
 .../src/clicache/com/vmware/ICacheLoaderN.hpp   |   107 +
 .../src/clicache/com/vmware/ICacheWriterN.hpp   |   163 +
 .../src/clicache/com/vmware/ICacheableKeyN.hpp  |    60 +
 .../src/clicache/com/vmware/ICqAttributesN.hpp  |   108 +
 .../src/clicache/com/vmware/ICqEventN.hpp       |   113 +
 .../src/clicache/com/vmware/ICqListenerN.hpp    |   112 +
 .../src/clicache/com/vmware/ICqResultsN.hpp     |    41 +
 .../clicache/com/vmware/ICqStatusListenerN.hpp  |    49 +
 .../com/vmware/IFixedPartitionResolverN.hpp     |    96 +
 .../src/clicache/com/vmware/IGFDeltaN.hpp       |    70 +
 .../clicache/com/vmware/IGFSerializableN.hpp    |    96 +
 .../src/clicache/com/vmware/IGemFireCacheN.hpp  |   102 +
 .../clicache/com/vmware/IPartitionResolverN.hpp |   100 +
 .../src/clicache/com/vmware/IPdxInstance.hpp    |   179 +
 .../clicache/com/vmware/IPdxInstanceFactory.hpp |   340 +
 .../src/clicache/com/vmware/IPdxReaderN.hpp     |   203 +
 .../clicache/com/vmware/IPdxSerializableN.hpp   |    59 +
 .../src/clicache/com/vmware/IPdxSerializer.hpp  |    60 +
 .../src/clicache/com/vmware/IPdxTypeMapper.hpp  |    46 +
 .../clicache/com/vmware/IPdxUnreadFields.hpp    |    32 +
 .../src/clicache/com/vmware/IPdxWriterN.hpp     |   239 +
 .../com/vmware/IPersistenceManagerN.hpp         |    98 +
 .../src/clicache/com/vmware/IRegionN.hpp        |  2078 +++
 .../src/clicache/com/vmware/IRegionServiceN.hpp |   120 +
 .../clicache/com/vmware/IResultCollectorN.hpp   |    72 +
 .../src/clicache/com/vmware/ISelectResultsN.hpp |    70 +
 .../com/vmware/ISubscriptionServiceN.hpp        |   619 +
 .../com/vmware/ITransactionListenerN.hpp        |    74 +
 .../clicache/com/vmware/ITransactionWriterN.hpp |    54 +
 .../com/vmware/IWritablePdxInstance.hpp         |    45 +
 .../src/clicache/com/vmware/LocalRegionMN.cpp   |   826 +
 .../src/clicache/com/vmware/LocalRegionMN.hpp   |   245 +
 .../src/clicache/com/vmware/LogMN.cpp           |   116 +
 .../src/clicache/com/vmware/LogMN.hpp           |   320 +
 .../com/vmware/PdxIdentityFieldAttribute.hpp    |    43 +
 .../src/clicache/com/vmware/PoolFactoryMN.cpp   |   283 +
 .../src/clicache/com/vmware/PoolFactoryMN.hpp   |   412 +
 .../src/clicache/com/vmware/PoolMN.cpp          |   232 +
 .../src/clicache/com/vmware/PoolMN.hpp          |   337 +
 .../src/clicache/com/vmware/PoolManagerMN.cpp   |    77 +
 .../src/clicache/com/vmware/PoolManagerMN.hpp   |    71 +
 .../src/clicache/com/vmware/PropertiesMN.cpp    |   573 +
 .../src/clicache/com/vmware/PropertiesMN.hpp    |   310 +
 .../src/clicache/com/vmware/QueryMN.cpp         |   131 +
 .../src/clicache/com/vmware/QueryMN.hpp         |   202 +
 .../src/clicache/com/vmware/QueryServiceMN.cpp  |   189 +
 .../src/clicache/com/vmware/QueryServiceMN.hpp  |   146 +
 .../vmware/ReflectionBasedAutoSerializer.cpp    |   559 +
 .../vmware/ReflectionBasedAutoSerializer.hpp    |   217 +
 .../clicache/com/vmware/RegionAttributesMN.cpp  |   361 +
 .../clicache/com/vmware/RegionAttributesMN.hpp  |   508 +
 .../src/clicache/com/vmware/RegionEntryMN.cpp   |    67 +
 .../src/clicache/com/vmware/RegionEntryMN.hpp   |   174 +
 .../src/clicache/com/vmware/RegionEventMN.cpp   |    65 +
 .../src/clicache/com/vmware/RegionEventMN.hpp   |    88 +
 .../src/clicache/com/vmware/RegionFactoryMN.cpp |   323 +
 .../src/clicache/com/vmware/RegionFactoryMN.hpp |   441 +
 .../src/clicache/com/vmware/RegionMN.cpp        |  1251 ++
 .../src/clicache/com/vmware/RegionMN.hpp        |   294 +
 .../clicache/com/vmware/RegionShortcutMN.hpp    |    67 +
 .../clicache/com/vmware/ResultCollectorMN.cpp   |    78 +
 .../clicache/com/vmware/ResultCollectorMN.hpp   |   111 +
 .../src/clicache/com/vmware/ResultSetMN.cpp     |    69 +
 .../src/clicache/com/vmware/ResultSetMN.hpp     |   114 +
 .../src/clicache/com/vmware/ScopeTypeMN.hpp     |   136 +
 .../com/vmware/SelectResultsIteratorMN.cpp      |    57 +
 .../com/vmware/SelectResultsIteratorMN.hpp      |   121 +
 .../src/clicache/com/vmware/SerializableMN.cpp  |  1521 ++
 .../src/clicache/com/vmware/SerializableMN.hpp  |   699 +
 .../com/vmware/StatisticDescriptorMN.cpp        |    55 +
 .../com/vmware/StatisticDescriptorMN.hpp        |   118 +
 .../clicache/com/vmware/StatisticsFactoryMN.cpp |   247 +
 .../clicache/com/vmware/StatisticsFactoryMN.hpp |   256 +
 .../src/clicache/com/vmware/StatisticsMN.cpp    |   288 +
 .../src/clicache/com/vmware/StatisticsMN.hpp    |   534 +
 .../clicache/com/vmware/StatisticsTypeMN.cpp    |    75 +
 .../clicache/com/vmware/StatisticsTypeMN.hpp    |   131 +
 .../src/clicache/com/vmware/StructMN.cpp        |    70 +
 .../src/clicache/com/vmware/StructMN.hpp        |   135 +
 .../src/clicache/com/vmware/StructSetMN.cpp     |    85 +
 .../src/clicache/com/vmware/StructSetMN.hpp     |   154 +
 .../clicache/com/vmware/SystemPropertiesMN.cpp  |   237 +
 .../clicache/com/vmware/SystemPropertiesMN.hpp  |   437 +
 .../clicache/com/vmware/TransactionEventMN.cpp  |    70 +
 .../clicache/com/vmware/TransactionEventMN.hpp  |    90 +
 .../src/clicache/com/vmware/TransactionIdMN.hpp |    51 +
 .../com/vmware/TransactionListenerAdapterN.hpp  |    53 +
 .../com/vmware/TransactionWriterAdapterN.hpp    |    40 +
 .../vmware/UserFunctionExecutionExceptionMN.cpp |    67 +
 .../vmware/UserFunctionExecutionExceptionMN.hpp |   125 +
 .../src/clicache/com/vmware/UtilsN.cpp          |    72 +
 .../src/clicache/com/vmware/UtilsN.hpp          |    83 +
 .../clicache/com/vmware/impl/AssemblyInfoN.cpp  |    49 +
 .../com/vmware/impl/AuthInitializeMN.hpp        |   140 +
 .../com/vmware/impl/AuthenticatedCacheMN.cpp    |    92 +
 .../com/vmware/impl/AuthenticatedCacheMN.hpp    |   160 +
 .../com/vmware/impl/CacheListenerMN.hpp         |   104 +
 .../clicache/com/vmware/impl/CacheLoaderMN.hpp  |    76 +
 .../clicache/com/vmware/impl/CacheWriterMN.hpp  |    80 +
 .../com/vmware/impl/CliCallbackDelgateN.hpp     |    52 +
 .../com/vmware/impl/CqListenerProxyMN.hpp       |    60 +
 .../com/vmware/impl/CqStatusListenerProxyMN.hpp |    70 +
 .../com/vmware/impl/DelegateWrapperN.hpp        |    95 +
 .../clicache/com/vmware/impl/DotNetTypes.hpp    |    53 +
 .../src/clicache/com/vmware/impl/EnumInfo.cpp   |    57 +
 .../src/clicache/com/vmware/impl/EnumInfo.hpp   |    96 +
 .../vmware/impl/FixedPartitionResolverMN.hpp    |   108 +
 .../com/vmware/impl/GFDataInputStreamN.hpp      |   127 +
 .../com/vmware/impl/GFDataOutputStreamN.hpp     |   108 +
 .../clicache/com/vmware/impl/GFNullStreamN.hpp  |   110 +
 .../com/vmware/impl/ManagedAuthInitializeN.cpp  |   206 +
 .../com/vmware/impl/ManagedAuthInitializeN.hpp  |   124 +
 .../com/vmware/impl/ManagedCacheListenerN.cpp   |   350 +
 .../com/vmware/impl/ManagedCacheListenerN.hpp   |   227 +
 .../com/vmware/impl/ManagedCacheLoaderN.cpp     |   251 +
 .../com/vmware/impl/ManagedCacheLoaderN.hpp     |   142 +
 .../com/vmware/impl/ManagedCacheWriterN.cpp     |   300 +
 .../com/vmware/impl/ManagedCacheWriterN.hpp     |   183 +
 .../vmware/impl/ManagedCacheableDeltaBytesN.cpp |   320 +
 .../vmware/impl/ManagedCacheableDeltaBytesN.hpp |   221 +
 .../com/vmware/impl/ManagedCacheableDeltaN.cpp  |   265 +
 .../com/vmware/impl/ManagedCacheableDeltaN.hpp  |   170 +
 .../vmware/impl/ManagedCacheableKeyBytesN.cpp   |   270 +
 .../vmware/impl/ManagedCacheableKeyBytesN.hpp   |   188 +
 .../com/vmware/impl/ManagedCacheableKeyN.cpp    |   233 +
 .../com/vmware/impl/ManagedCacheableKeyN.hpp    |   162 +
 .../com/vmware/impl/ManagedCqListenerN.cpp      |   174 +
 .../com/vmware/impl/ManagedCqListenerN.hpp      |   131 +
 .../vmware/impl/ManagedCqStatusListenerN.cpp    |   205 +
 .../vmware/impl/ManagedCqStatusListenerN.hpp    |   125 +
 .../impl/ManagedFixedPartitionResolverN.cpp     |   247 +
 .../impl/ManagedFixedPartitionResolverN.hpp     |   135 +
 .../vmware/impl/ManagedPartitionResolverN.cpp   |   236 +
 .../vmware/impl/ManagedPartitionResolverN.hpp   |   121 +
 .../vmware/impl/ManagedPersistenceManagerN.cpp  |   233 +
 .../vmware/impl/ManagedPersistenceManagerN.hpp  |    69 +
 .../com/vmware/impl/ManagedResultCollectorN.cpp |   215 +
 .../com/vmware/impl/ManagedResultCollectorN.hpp |    94 +
 .../clicache/com/vmware/impl/ManagedStringN.hpp |    91 +
 .../vmware/impl/ManagedTransactionListenerN.cpp |   246 +
 .../vmware/impl/ManagedTransactionListenerN.hpp |    80 +
 .../vmware/impl/ManagedTransactionWriterN.cpp   |   205 +
 .../vmware/impl/ManagedTransactionWriterN.hpp   |    83 +
 .../com/vmware/impl/ManagedVisitorN.cpp         |    38 +
 .../com/vmware/impl/ManagedVisitorN.hpp         |    68 +
 .../com/vmware/impl/MemoryPressureHandlerN.cpp  |    69 +
 .../com/vmware/impl/MemoryPressureHandlerN.hpp  |    35 +
 .../clicache/com/vmware/impl/NativeWrapperN.hpp |   520 +
 .../com/vmware/impl/PartitionResolverMN.hpp     |    66 +
 .../clicache/com/vmware/impl/PdxFieldType.cpp   |   183 +
 .../clicache/com/vmware/impl/PdxFieldType.hpp   |   142 +
 .../src/clicache/com/vmware/impl/PdxHelper.cpp  |   459 +
 .../src/clicache/com/vmware/impl/PdxHelper.hpp  |    67 +
 .../com/vmware/impl/PdxInstanceFactoryImpl.cpp  |   346 +
 .../com/vmware/impl/PdxInstanceFactoryImpl.hpp  |   385 +
 .../com/vmware/impl/PdxInstanceImpl.cpp         |  1434 ++
 .../com/vmware/impl/PdxInstanceImpl.hpp         |   283 +
 .../clicache/com/vmware/impl/PdxLocalReader.cpp |   415 +
 .../clicache/com/vmware/impl/PdxLocalReader.hpp |   303 +
 .../clicache/com/vmware/impl/PdxLocalWriter.cpp |   482 +
 .../clicache/com/vmware/impl/PdxLocalWriter.hpp |   361 +
 .../com/vmware/impl/PdxManagedCacheableKey.cpp  |   287 +
 .../com/vmware/impl/PdxManagedCacheableKey.hpp  |   178 +
 .../vmware/impl/PdxManagedCacheableKeyBytes.cpp |   358 +
 .../vmware/impl/PdxManagedCacheableKeyBytes.hpp |   219 +
 .../vmware/impl/PdxReaderWithTypeCollector.cpp  |   540 +
 .../vmware/impl/PdxReaderWithTypeCollector.hpp  |   260 +
 .../com/vmware/impl/PdxRemotePreservedData.hpp  |   111 +
 .../com/vmware/impl/PdxRemoteReader.cpp         |   841 +
 .../com/vmware/impl/PdxRemoteReader.hpp         |   257 +
 .../com/vmware/impl/PdxRemoteWriter.cpp         |   327 +
 .../com/vmware/impl/PdxRemoteWriter.hpp         |   330 +
 .../src/clicache/com/vmware/impl/PdxType.cpp    |   548 +
 .../src/clicache/com/vmware/impl/PdxType.hpp    |   193 +
 .../com/vmware/impl/PdxTypeRegistry.cpp         |   309 +
 .../com/vmware/impl/PdxTypeRegistry.hpp         |   103 +
 .../src/clicache/com/vmware/impl/PdxWrapper.hpp |    76 +
 .../vmware/impl/PdxWriterWithTypeCollector.cpp  |   351 +
 .../vmware/impl/PdxWriterWithTypeCollector.hpp  |   320 +
 .../vmware/impl/PersistenceManagerProxyMN.hpp   |    91 +
 .../clicache/com/vmware/impl/RegionImplN.cpp    |     2 +
 .../clicache/com/vmware/impl/RegionImplN.hpp    |    20 +
 .../com/vmware/impl/ResultCollectorProxyMN.hpp  |    66 +
 .../clicache/com/vmware/impl/SafeConvertN.hpp   |   446 +
 .../com/vmware/impl/TransactionListenerMN.hpp   |    74 +
 .../com/vmware/impl/TransactionWriterMN.hpp     |    57 +
 .../clicache/com/vmware/impl/WeakhashMap.hpp    |   250 +
 geode-client-native/src/clicache/gf_defs.hpp    |   272 +
 .../src/clicache/gf_includes.hpp                |    27 +
 .../src/clicache/gfclicache.vcxproj.filters     |  1193 ++
 .../src/clicache/impl/AssemblyInfo.cpp          |    46 +
 .../src/clicache/impl/AuthenticatedCacheM.cpp   |    82 +
 .../src/clicache/impl/AuthenticatedCacheM.hpp   |   150 +
 .../src/clicache/impl/CacheLoaderM.cpp          |    11 +
 .../src/clicache/impl/DelegateWrapper.hpp       |    93 +
 .../src/clicache/impl/GFDataInputStream.hpp     |   112 +
 .../src/clicache/impl/GFDataOutputStream.hpp    |   106 +
 .../src/clicache/impl/GFNullStream.hpp          |   109 +
 .../src/clicache/impl/ManagedAuthInitialize.cpp |   163 +
 .../src/clicache/impl/ManagedAuthInitialize.hpp |   123 +
 .../src/clicache/impl/ManagedCacheListener.cpp  |   266 +
 .../src/clicache/impl/ManagedCacheListener.hpp  |   218 +
 .../src/clicache/impl/ManagedCacheLoader.cpp    |   165 +
 .../src/clicache/impl/ManagedCacheLoader.hpp    |   137 +
 .../src/clicache/impl/ManagedCacheWriter.cpp    |   220 +
 .../src/clicache/impl/ManagedCacheWriter.hpp    |   173 +
 .../src/clicache/impl/ManagedCacheableDelta.cpp |   189 +
 .../src/clicache/impl/ManagedCacheableDelta.hpp |   142 +
 .../impl/ManagedCacheableDeltaBytes.cpp         |   236 +
 .../impl/ManagedCacheableDeltaBytes.hpp         |   196 +
 .../src/clicache/impl/ManagedCacheableKey.cpp   |   212 +
 .../src/clicache/impl/ManagedCacheableKey.hpp   |   158 +
 .../clicache/impl/ManagedCacheableKeyBytes.cpp  |   253 +
 .../clicache/impl/ManagedCacheableKeyBytes.hpp  |   184 +
 .../src/clicache/impl/ManagedCqListener.cpp     |   166 +
 .../src/clicache/impl/ManagedCqListener.hpp     |   120 +
 .../impl/ManagedFixedPartitionResolver.cpp      |    72 +
 .../impl/ManagedFixedPartitionResolver.hpp      |   117 +
 .../clicache/impl/ManagedPartitionResolver.cpp  |   171 +
 .../clicache/impl/ManagedPartitionResolver.hpp  |   120 +
 .../clicache/impl/ManagedResultCollector.cpp    |   199 +
 .../clicache/impl/ManagedResultCollector.hpp    |    87 +
 .../src/clicache/impl/ManagedString.hpp         |    89 +
 .../src/clicache/impl/ManagedVisitor.cpp        |    36 +
 .../src/clicache/impl/ManagedVisitor.hpp        |    62 +
 .../src/clicache/impl/MemoryPressureHandler.cpp |    65 +
 .../src/clicache/impl/MemoryPressureHandler.hpp |    31 +
 .../src/clicache/impl/NativeWrapper.hpp         |   522 +
 .../src/clicache/impl/SafeConvert.hpp           |   328 +
 .../src/clicache/templates/CMakeLists.txt       |     8 +
 .../src/clicache/templates/Templates.csproj.in  |   128 +
 .../gemfire/plugins/sqlite/AssemblyInfo.cs      |    33 +
 .../gemfire/plugins/sqlite/SqLiteImpl.cs        |   257 +
 geode-client-native/src/cppcache/Assert.cpp     |    29 +
 geode-client-native/src/cppcache/Assert.hpp     |    84 +
 .../src/cppcache/AttributesFactory.cpp          |   246 +
 .../src/cppcache/AttributesFactory.hpp          |   384 +
 .../src/cppcache/AttributesMutator.cpp          |   169 +
 .../src/cppcache/AttributesMutator.hpp          |   159 +
 .../src/cppcache/AuthInitialize.hpp             |    55 +
 geode-client-native/src/cppcache/CMakeLists.txt |   151 +
 .../src/cppcache/CPPCacheConfig.cmake           |    34 +
 geode-client-native/src/cppcache/Cache.cpp      |   300 +
 geode-client-native/src/cppcache/Cache.hpp      |   258 +
 .../src/cppcache/CacheAttributes.cpp            |    84 +
 .../src/cppcache/CacheAttributes.hpp            |    94 +
 .../src/cppcache/CacheAttributesFactory.cpp     |    52 +
 .../src/cppcache/CacheAttributesFactory.hpp     |    87 +
 .../src/cppcache/CacheFactory.cpp               |   637 +
 .../src/cppcache/CacheFactory.hpp               |   495 +
 .../src/cppcache/CacheListener.cpp              |    64 +
 .../src/cppcache/CacheListener.hpp              |   188 +
 .../src/cppcache/CacheLoader.cpp                |    27 +
 .../src/cppcache/CacheLoader.hpp                |    95 +
 .../src/cppcache/CacheStatistics.cpp            |    42 +
 .../src/cppcache/CacheStatistics.hpp            |    97 +
 .../src/cppcache/CacheTransactionManager.cpp    |     6 +
 .../src/cppcache/CacheTransactionManager.hpp    |   185 +
 .../src/cppcache/CacheWriter.cpp                |    54 +
 .../src/cppcache/CacheWriter.hpp                |   166 +
 geode-client-native/src/cppcache/Cacheable.hpp  |    31 +
 geode-client-native/src/cppcache/Cacheable.inl  |    39 +
 .../src/cppcache/CacheableBuiltins.cpp          |    57 +
 .../src/cppcache/CacheableBuiltins.hpp          |   799 +
 .../src/cppcache/CacheableDate.cpp              |   150 +
 .../src/cppcache/CacheableDate.hpp              |   153 +
 .../src/cppcache/CacheableEnum.cpp              |    85 +
 .../src/cppcache/CacheableEnum.hpp              |   132 +
 .../src/cppcache/CacheableFileName.cpp          |    69 +
 .../src/cppcache/CacheableFileName.hpp          |   120 +
 .../src/cppcache/CacheableKey.cpp               |    17 +
 .../src/cppcache/CacheableKey.hpp               |    83 +
 .../src/cppcache/CacheableKey.inl               |    40 +
 .../src/cppcache/CacheableKeys.hpp              |   104 +
 .../src/cppcache/CacheableObjectArray.cpp       |    70 +
 .../src/cppcache/CacheableObjectArray.hpp       |   107 +
 .../src/cppcache/CacheableString.cpp            |   363 +
 .../src/cppcache/CacheableString.hpp            |   322 +
 .../src/cppcache/CacheableUndefined.cpp         |    47 +
 .../src/cppcache/CacheableUndefined.hpp         |    97 +
 .../src/cppcache/CqAttributes.hpp               |    52 +
 .../src/cppcache/CqAttributesFactory.cpp        |    44 +
 .../src/cppcache/CqAttributesFactory.hpp        |    90 +
 .../src/cppcache/CqAttributesMutator.hpp        |    64 +
 geode-client-native/src/cppcache/CqEvent.hpp    |    94 +
 geode-client-native/src/cppcache/CqListener.cpp |    15 +
 geode-client-native/src/cppcache/CqListener.hpp |    84 +
 .../src/cppcache/CqOperation.hpp                |    39 +
 geode-client-native/src/cppcache/CqQuery.hpp    |   166 +
 geode-client-native/src/cppcache/CqResults.hpp  |    37 +
 .../src/cppcache/CqServiceStatistics.hpp        |    68 +
 geode-client-native/src/cppcache/CqState.cpp    |    51 +
 geode-client-native/src/cppcache/CqState.hpp    |    74 +
 .../src/cppcache/CqStatistics.hpp               |    64 +
 .../src/cppcache/CqStatusListener.cpp           |    12 +
 .../src/cppcache/CqStatusListener.hpp           |    39 +
 geode-client-native/src/cppcache/DataInput.cpp  |    11 +
 geode-client-native/src/cppcache/DataInput.hpp  |  1154 ++
 geode-client-native/src/cppcache/DataOutput.cpp |   151 +
 geode-client-native/src/cppcache/DataOutput.hpp |   903 ++
 geode-client-native/src/cppcache/Delta.cpp      |    28 +
 geode-client-native/src/cppcache/Delta.hpp      |    75 +
 .../src/cppcache/DiskPolicyType.cpp             |    40 +
 .../src/cppcache/DiskPolicyType.hpp             |    66 +
 .../src/cppcache/DistributedSystem.cpp          |   425 +
 .../src/cppcache/DistributedSystem.hpp          |   116 +
 geode-client-native/src/cppcache/EntryEvent.cpp |    32 +
 geode-client-native/src/cppcache/EntryEvent.hpp |   108 +
 geode-client-native/src/cppcache/Exception.cpp  |   170 +
 geode-client-native/src/cppcache/Exception.hpp  |   121 +
 .../src/cppcache/ExceptionTypes.cpp             |   316 +
 .../src/cppcache/ExceptionTypes.hpp             |   388 +
 geode-client-native/src/cppcache/Execution.hpp  |    99 +
 .../src/cppcache/ExpirationAction.cpp           |    31 +
 .../src/cppcache/ExpirationAction.hpp           |   107 +
 .../src/cppcache/ExpirationAttributes.cpp       |    38 +
 .../src/cppcache/ExpirationAttributes.hpp       |    79 +
 .../src/cppcache/FindCPPCache.cmake             |    34 +
 .../src/cppcache/FixedPartitionResolver.hpp     |    84 +
 .../src/cppcache/FunctionService.cpp            |   153 +
 .../src/cppcache/FunctionService.hpp            |   191 +
 geode-client-native/src/cppcache/GNUmakefile    |    39 +
 .../src/cppcache/GemFireCache.hpp               |    71 +
 .../src/cppcache/GemfireCppCache.hpp            |    77 +
 .../src/cppcache/GemfireCppCache.inl            |    18 +
 .../src/cppcache/GemfireTypeIds.hpp             |    76 +
 .../src/cppcache/HashFunction.hpp               |    94 +
 .../src/cppcache/HashMapOfSharedBase.cpp        |   201 +
 .../src/cppcache/HashMapOfSharedBase.hpp        |   162 +
 geode-client-native/src/cppcache/HashMapT.hpp   |   297 +
 .../src/cppcache/HashSetOfSharedBase.cpp        |   196 +
 .../src/cppcache/HashSetOfSharedBase.hpp        |   156 +
 geode-client-native/src/cppcache/HashSetT.hpp   |   253 +
 .../InternalCacheTransactionManager2PC.cpp      |     6 +
 .../InternalCacheTransactionManager2PC.hpp      |    57 +
 geode-client-native/src/cppcache/Log.cpp        |   910 ++
 geode-client-native/src/cppcache/Log.hpp        |   787 +
 .../src/cppcache/PartitionResolver.cpp          |    29 +
 .../src/cppcache/PartitionResolver.hpp          |    92 +
 .../src/cppcache/PdxAutoSerializer.hpp          |   528 +
 .../src/cppcache/PdxFieldTypes.hpp              |    44 +
 .../src/cppcache/PdxInstance.hpp                |   548 +
 .../src/cppcache/PdxInstanceFactory.hpp         |   390 +
 geode-client-native/src/cppcache/PdxReader.hpp  |   371 +
 .../src/cppcache/PdxSerializable.cpp            |    67 +
 .../src/cppcache/PdxSerializable.hpp            |   103 +
 .../src/cppcache/PdxSerializer.hpp              |    73 +
 .../src/cppcache/PdxUnreadFields.hpp            |    37 +
 geode-client-native/src/cppcache/PdxWrapper.cpp |   162 +
 geode-client-native/src/cppcache/PdxWrapper.hpp |   119 +
 geode-client-native/src/cppcache/PdxWriter.hpp  |   379 +
 .../src/cppcache/PersistenceManager.cpp         |    12 +
 .../src/cppcache/PersistenceManager.hpp         |   122 +
 geode-client-native/src/cppcache/Pool.cpp       |   129 +
 geode-client-native/src/cppcache/Pool.hpp       |   266 +
 .../src/cppcache/PoolFactory.cpp                |   186 +
 .../src/cppcache/PoolFactory.hpp                |   481 +
 .../src/cppcache/PoolManager.cpp                |    99 +
 .../src/cppcache/PoolManager.hpp                |    80 +
 geode-client-native/src/cppcache/Properties.cpp |   371 +
 geode-client-native/src/cppcache/Properties.hpp |   158 +
 geode-client-native/src/cppcache/Query.hpp      |    97 +
 .../src/cppcache/QueryService.hpp               |   158 +
 geode-client-native/src/cppcache/Region.cpp     |     6 +
 geode-client-native/src/cppcache/Region.hpp     |  1352 ++
 .../src/cppcache/RegionAttributes.cpp           |   739 +
 .../src/cppcache/RegionAttributes.hpp           |   401 +
 .../src/cppcache/RegionEntry.cpp                |    48 +
 .../src/cppcache/RegionEntry.hpp                |   101 +
 .../src/cppcache/RegionEvent.cpp                |    29 +
 .../src/cppcache/RegionEvent.hpp                |    78 +
 .../src/cppcache/RegionFactory.cpp              |   247 +
 .../src/cppcache/RegionFactory.hpp              |   234 +
 .../src/cppcache/RegionService.hpp              |   105 +
 .../src/cppcache/RegionShortcut.hpp             |    61 +
 .../src/cppcache/ResultCollector.cpp            |    50 +
 .../src/cppcache/ResultCollector.hpp            |    91 +
 geode-client-native/src/cppcache/ResultSet.hpp  |    76 +
 geode-client-native/src/cppcache/ScopeType.cpp  |    34 +
 geode-client-native/src/cppcache/ScopeType.hpp  |   103 +
 .../src/cppcache/SelectResults.hpp              |    78 +
 .../src/cppcache/SelectResultsIterator.cpp      |    61 +
 .../src/cppcache/SelectResultsIterator.hpp      |    90 +
 .../src/cppcache/Serializable.cpp               |    61 +
 .../src/cppcache/Serializable.hpp               |   162 +
 geode-client-native/src/cppcache/Serializer.hpp |   488 +
 geode-client-native/src/cppcache/SharedBase.cpp |    32 +
 geode-client-native/src/cppcache/SharedBase.hpp |    96 +
 geode-client-native/src/cppcache/SharedPtr.cpp  |    30 +
 geode-client-native/src/cppcache/SharedPtr.hpp  |   287 +
 .../src/cppcache/SharedPtrHelper.hpp            |    70 +
 .../src/cppcache/SignalHandler.cpp              |    93 +
 .../src/cppcache/SignalHandler.hpp              |    91 +
 geode-client-native/src/cppcache/Struct.cpp     |   181 +
 geode-client-native/src/cppcache/Struct.hpp     |   150 +
 geode-client-native/src/cppcache/StructSet.hpp  |    93 +
 .../src/cppcache/SystemProperties.cpp           |  1017 ++
 .../src/cppcache/SystemProperties.hpp           |   545 +
 .../src/cppcache/TransactionId.cpp              |    28 +
 .../src/cppcache/TransactionId.hpp              |    35 +
 geode-client-native/src/cppcache/TypeHelper.hpp |   139 +
 geode-client-native/src/cppcache/UserData.hpp   |    26 +
 .../cppcache/UserFunctionExecutionException.cpp |    38 +
 .../cppcache/UserFunctionExecutionException.hpp |   111 +
 .../src/cppcache/VectorOfSharedBase.cpp         |   260 +
 .../src/cppcache/VectorOfSharedBase.hpp         |   168 +
 geode-client-native/src/cppcache/VectorT.hpp    |   333 +
 .../src/cppcache/WritablePdxInstance.hpp        |   507 +
 geode-client-native/src/cppcache/config.h.in    |    17 +
 geode-client-native/src/cppcache/gf_base.hpp    |   340 +
 geode-client-native/src/cppcache/gf_types.hpp   |    95 +
 .../src/cppcache/gfcpp_globals.hpp              |    88 +
 .../src/cppcache/impl/ACEDummy.cpp              |    32 +
 .../src/cppcache/impl/AdminRegion.cpp           |   143 +
 .../src/cppcache/impl/AdminRegion.hpp           |    64 +
 .../src/cppcache/impl/AtomicInc.hpp             |    93 +
 .../src/cppcache/impl/AutoDelete.hpp            |    82 +
 .../src/cppcache/impl/BucketServerLocation.hpp  |   169 +
 .../src/cppcache/impl/BufferManager.hpp         |   107 +
 .../src/cppcache/impl/BufferPool.hpp            |    76 +
 .../src/cppcache/impl/CacheConfig.cpp           |   144 +
 .../src/cppcache/impl/CacheConfig.hpp           |    72 +
 .../src/cppcache/impl/CacheImpl.cpp             |   960 ++
 .../src/cppcache/impl/CacheImpl.hpp             |   348 +
 .../src/cppcache/impl/CachePerfStats.hpp        |   364 +
 .../src/cppcache/impl/CacheRegionHelper.hpp     |    44 +
 .../impl/CacheTransactionManagerImpl.cpp        |   652 +
 .../impl/CacheTransactionManagerImpl.hpp        |    96 +
 .../src/cppcache/impl/CacheXml.cpp              |   183 +
 .../src/cppcache/impl/CacheXml.hpp              |   215 +
 .../src/cppcache/impl/CacheXmlCreation.cpp      |    82 +
 .../src/cppcache/impl/CacheXmlCreation.hpp      |    97 +
 .../src/cppcache/impl/CacheXmlParser.cpp        |  1980 +++
 .../src/cppcache/impl/CacheXmlParser.hpp        |   172 +
 .../cppcache/impl/CacheableObjectPartList.cpp   |   141 +
 .../cppcache/impl/CacheableObjectPartList.hpp   |   129 +
 .../src/cppcache/impl/CacheableToken.cpp        |   125 +
 .../src/cppcache/impl/CacheableToken.hpp        |   160 +
 .../impl/CachedDeserializableHelper.hpp         |    91 +
 .../cppcache/impl/ClientConnectionRequest.cpp   |    43 +
 .../cppcache/impl/ClientConnectionRequest.hpp   |    62 +
 .../cppcache/impl/ClientConnectionResponse.cpp  |    32 +
 .../cppcache/impl/ClientConnectionResponse.hpp  |    46 +
 .../src/cppcache/impl/ClientHealthStats.cpp     |    78 +
 .../src/cppcache/impl/ClientHealthStats.hpp     |    83 +
 .../src/cppcache/impl/ClientMetadata.cpp        |   369 +
 .../src/cppcache/impl/ClientMetadata.hpp        |    90 +
 .../src/cppcache/impl/ClientMetadataService.cpp |   925 ++
 .../src/cppcache/impl/ClientMetadataService.hpp |   190 +
 .../cppcache/impl/ClientProxyMembershipID.cpp   |   569 +
 .../cppcache/impl/ClientProxyMembershipID.hpp   |   128 +
 .../cppcache/impl/ClientReplacementRequest.cpp  |    18 +
 .../cppcache/impl/ClientReplacementRequest.hpp  |    33 +
 .../src/cppcache/impl/ConcurrentEntriesMap.cpp  |   246 +
 .../src/cppcache/impl/ConcurrentEntriesMap.hpp  |   158 +
 .../src/cppcache/impl/Condition.cpp             |    47 +
 .../src/cppcache/impl/Condition.hpp             |    80 +
 .../src/cppcache/impl/ConnectCounter.cpp        |    15 +
 .../src/cppcache/impl/ConnectCounter.hpp        |    30 +
 .../src/cppcache/impl/Connector.hpp             |    93 +
 .../src/cppcache/impl/ContainerWithLock.hpp     |   140 +
 .../src/cppcache/impl/CppCacheLibrary.cpp       |   205 +
 .../src/cppcache/impl/CppCacheLibrary.hpp       |    43 +
 .../src/cppcache/impl/CqAttributesImpl.cpp      |    83 +
 .../src/cppcache/impl/CqAttributesImpl.hpp      |    71 +
 .../cppcache/impl/CqAttributesMutatorImpl.cpp   |    34 +
 .../cppcache/impl/CqAttributesMutatorImpl.hpp   |    70 +
 .../src/cppcache/impl/CqEventImpl.cpp           |   101 +
 .../src/cppcache/impl/CqEventImpl.hpp           |    97 +
 .../src/cppcache/impl/CqQueryImpl.cpp           |   575 +
 .../src/cppcache/impl/CqQueryImpl.hpp           |   267 +
 .../src/cppcache/impl/CqQueryVsdStats.cpp       |   137 +
 .../src/cppcache/impl/CqQueryVsdStats.hpp       |   139 +
 .../src/cppcache/impl/CqService.cpp             |   612 +
 .../src/cppcache/impl/CqService.hpp             |   244 +
 .../src/cppcache/impl/CqServiceVsdStats.cpp     |   145 +
 .../src/cppcache/impl/CqServiceVsdStats.hpp     |   176 +
 .../cppcache/impl/DSMemberForVersionStamp.hpp   |    36 +
 .../src/cppcache/impl/DiffieHellman.cpp         |   181 +
 .../src/cppcache/impl/DiffieHellman.hpp         |    92 +
 .../src/cppcache/impl/DiskStoreId.cpp           |    31 +
 .../src/cppcache/impl/DiskStoreId.hpp           |   118 +
 .../src/cppcache/impl/DiskVersionTag.hpp        |    77 +
 .../src/cppcache/impl/DistributedSystemImpl.cpp |   129 +
 .../src/cppcache/impl/DistributedSystemImpl.hpp |   129 +
 .../src/cppcache/impl/EntriesMap.hpp            |   172 +
 .../src/cppcache/impl/EntriesMapFactory.cpp     |    85 +
 .../src/cppcache/impl/EntriesMapFactory.hpp     |    35 +
 .../src/cppcache/impl/EntryExpiryHandler.cpp    |   132 +
 .../src/cppcache/impl/EntryExpiryHandler.hpp    |    67 +
 .../src/cppcache/impl/EnumInfo.cpp              |    69 +
 .../src/cppcache/impl/EnumInfo.hpp              |    65 +
 .../src/cppcache/impl/EventId.cpp               |   218 +
 .../src/cppcache/impl/EventId.hpp               |   141 +
 .../src/cppcache/impl/EventIdMap.cpp            |   345 +
 .../src/cppcache/impl/EventIdMap.hpp            |   195 +
 .../src/cppcache/impl/EventType.hpp             |    36 +
 .../src/cppcache/impl/EvictionController.cpp    |   161 +
 .../src/cppcache/impl/EvictionController.hpp    |   108 +
 .../src/cppcache/impl/EvictionThread.cpp        |    47 +
 .../src/cppcache/impl/EvictionThread.hpp        |    59 +
 .../src/cppcache/impl/ExecutionImpl.cpp         |   478 +
 .../src/cppcache/impl/ExecutionImpl.hpp         |   106 +
 .../src/cppcache/impl/ExpMapEntry.cpp           |    30 +
 .../src/cppcache/impl/ExpMapEntry.hpp           |   114 +
 .../src/cppcache/impl/ExpiryHandler_T.hpp       |    64 +
 .../src/cppcache/impl/ExpiryTaskManager.cpp     |   116 +
 .../src/cppcache/impl/ExpiryTaskManager.hpp     |   272 +
 .../src/cppcache/impl/FairQueue.hpp             |   194 +
 .../src/cppcache/impl/FarSideEntryOp.cpp        |   229 +
 .../src/cppcache/impl/FarSideEntryOp.hpp        |   116 +
 .../impl/FixedPartitionAttributesImpl.hpp       |   130 +
 .../src/cppcache/impl/FunctionServiceImpl.cpp   |    19 +
 .../src/cppcache/impl/FunctionServiceImpl.hpp   |    62 +
 .../src/cppcache/impl/GF_TASK_T.hpp             |    71 +
 .../impl/GatewayEventCallbackArgument.hpp       |    63 +
 .../impl/GatewaySenderEventCallbackArgument.hpp |    54 +
 .../src/cppcache/impl/GemfireTypeIdsImpl.hpp    |    75 +
 .../src/cppcache/impl/GenericPool.hpp           |    76 +
 .../src/cppcache/impl/GetAllServersRequest.cpp  |    14 +
 .../src/cppcache/impl/GetAllServersRequest.hpp  |    51 +
 .../src/cppcache/impl/GetAllServersResponse.cpp |    35 +
 .../src/cppcache/impl/GetAllServersResponse.hpp |    58 +
 .../src/cppcache/impl/HostAsm.cpp               |   121 +
 .../src/cppcache/impl/HostAsm.hpp               |   436 +
 .../src/cppcache/impl/IntQueue.hpp              |   129 +
 .../src/cppcache/impl/InterestResultPolicy.cpp  |     8 +
 .../src/cppcache/impl/InterestResultPolicy.hpp  |    42 +
 .../InternalCacheTransactionManager2PCImpl.cpp  |   223 +
 .../InternalCacheTransactionManager2PCImpl.hpp  |    46 +
 .../src/cppcache/impl/InternalDataView.cpp      |    28 +
 .../src/cppcache/impl/InternalDataView.hpp      |    28 +
 .../src/cppcache/impl/LRUAction.cpp             |   107 +
 .../src/cppcache/impl/LRUAction.hpp             |   195 +
 .../src/cppcache/impl/LRUEntriesMap.cpp         |   528 +
 .../src/cppcache/impl/LRUEntriesMap.hpp         |   128 +
 .../src/cppcache/impl/LRUExpMapEntry.cpp        |    30 +
 .../src/cppcache/impl/LRUExpMapEntry.hpp        |   118 +
 .../src/cppcache/impl/LRUList.cpp               |   131 +
 .../src/cppcache/impl/LRUList.hpp               |   181 +
 .../src/cppcache/impl/LRULocalDestroyAction.cpp |    19 +
 .../src/cppcache/impl/LRULocalDestroyAction.hpp |    49 +
 .../src/cppcache/impl/LRUMapEntry.cpp           |    30 +
 .../src/cppcache/impl/LRUMapEntry.hpp           |   142 +
 .../src/cppcache/impl/LocalRegion.cpp           |  3164 ++++
 .../src/cppcache/impl/LocalRegion.hpp           |   441 +
 .../src/cppcache/impl/LocatorListRequest.cpp    |    35 +
 .../src/cppcache/impl/LocatorListRequest.hpp    |    30 +
 .../src/cppcache/impl/LocatorListResponse.cpp   |    49 +
 .../src/cppcache/impl/LocatorListResponse.hpp   |    39 +
 .../src/cppcache/impl/MapEntry.cpp              |    31 +
 .../src/cppcache/impl/MapEntry.hpp              |   352 +
 .../src/cppcache/impl/MapEntryT.hpp             |   345 +
 .../src/cppcache/impl/MapSegment.cpp            |   799 +
 .../src/cppcache/impl/MapSegment.hpp            |   293 +
 .../src/cppcache/impl/MapWithLock.hpp           |    79 +
 .../cppcache/impl/MemberListForVersionStamp.cpp |    49 +
 .../cppcache/impl/MemberListForVersionStamp.hpp |    55 +
 .../src/cppcache/impl/NanoTimer.cpp             |    43 +
 .../src/cppcache/impl/NanoTimer.hpp             |    30 +
 .../src/cppcache/impl/NoResult.hpp              |    57 +
 .../src/cppcache/impl/NonCopyable.hpp           |    31 +
 .../src/cppcache/impl/OpTimer.hpp               |    67 +
 .../src/cppcache/impl/PdxEnumInstantiator.cpp   |    41 +
 .../src/cppcache/impl/PdxEnumInstantiator.hpp   |    49 +
 .../src/cppcache/impl/PdxFieldType.cpp          |   164 +
 .../src/cppcache/impl/PdxFieldType.hpp          |   132 +
 .../src/cppcache/impl/PdxHelper.cpp             |   444 +
 .../src/cppcache/impl/PdxHelper.hpp             |    71 +
 .../cppcache/impl/PdxInstanceFactoryImpl.cpp    |   338 +
 .../cppcache/impl/PdxInstanceFactoryImpl.hpp    |   386 +
 .../src/cppcache/impl/PdxInstanceImpl.cpp       |  2654 +++
 .../src/cppcache/impl/PdxInstanceImpl.hpp       |  1082 ++
 .../src/cppcache/impl/PdxInstantiator.cpp       |    45 +
 .../src/cppcache/impl/PdxInstantiator.hpp       |    51 +
 .../src/cppcache/impl/PdxLocalReader.cpp        |   391 +
 .../src/cppcache/impl/PdxLocalReader.hpp        |   209 +
 .../src/cppcache/impl/PdxLocalWriter.cpp        |   494 +
 .../src/cppcache/impl/PdxLocalWriter.hpp        |   329 +
 .../impl/PdxReaderWithTypeCollector.cpp         |   676 +
 .../impl/PdxReaderWithTypeCollector.hpp         |   214 +
 .../cppcache/impl/PdxRemotePreservedData.hpp    |   118 +
 .../src/cppcache/impl/PdxRemoteReader.cpp       |  1082 ++
 .../src/cppcache/impl/PdxRemoteReader.hpp       |   204 +
 .../src/cppcache/impl/PdxRemoteWriter.cpp       |   274 +
 .../src/cppcache/impl/PdxRemoteWriter.hpp       |   215 +
 .../src/cppcache/impl/PdxType.cpp               |   593 +
 .../src/cppcache/impl/PdxType.hpp               |   230 +
 .../src/cppcache/impl/PdxTypeRegistry.cpp       |   288 +
 .../src/cppcache/impl/PdxTypeRegistry.hpp       |   139 +
 .../src/cppcache/impl/PdxTypes.hpp              |    38 +
 .../impl/PdxWriterWithTypeCollector.cpp         |   261 +
 .../impl/PdxWriterWithTypeCollector.hpp         |   209 +
 .../src/cppcache/impl/PoolAttributes.cpp        |   132 +
 .../src/cppcache/impl/PoolAttributes.hpp        |   209 +
 .../src/cppcache/impl/PoolStatistics.cpp        |   222 +
 .../src/cppcache/impl/PoolStatistics.hpp        |   330 +
 .../src/cppcache/impl/PoolXmlCreation.cpp       |    40 +
 .../src/cppcache/impl/PoolXmlCreation.hpp       |    82 +
 .../src/cppcache/impl/PooledBase.cpp            |    58 +
 .../src/cppcache/impl/PooledBase.hpp            |    66 +
 .../src/cppcache/impl/PooledBasePool.hpp        |    77 +
 .../impl/PreservedDataExpiryHandler.cpp         |    61 +
 .../impl/PreservedDataExpiryHandler.hpp         |    64 +
 .../src/cppcache/impl/ProxyCache.cpp            |   182 +
 .../src/cppcache/impl/ProxyCache.hpp            |   127 +
 .../src/cppcache/impl/ProxyRegion.cpp           |    10 +
 .../src/cppcache/impl/ProxyRegion.hpp           |  1503 ++
 .../cppcache/impl/ProxyRemoteQueryService.cpp   |   206 +
 .../cppcache/impl/ProxyRemoteQueryService.hpp   |    62 +
 .../src/cppcache/impl/PutAllPartialResult.cpp   |    54 +
 .../src/cppcache/impl/PutAllPartialResult.hpp   |   122 +
 .../impl/PutAllPartialResultServerException.cpp |    85 +
 .../impl/PutAllPartialResultServerException.hpp |   131 +
 geode-client-native/src/cppcache/impl/Queue.hpp |   177 +
 .../cppcache/impl/QueueConnectionRequest.cpp    |    67 +
 .../cppcache/impl/QueueConnectionRequest.hpp    |    44 +
 .../cppcache/impl/QueueConnectionResponse.cpp   |    40 +
 .../cppcache/impl/QueueConnectionResponse.hpp   |    48 +
 .../src/cppcache/impl/ReadWriteLock.cpp         |    81 +
 .../src/cppcache/impl/ReadWriteLock.hpp         |    76 +
 .../src/cppcache/impl/RegionCommit.cpp          |    71 +
 .../src/cppcache/impl/RegionCommit.hpp          |    52 +
 .../src/cppcache/impl/RegionConfig.cpp          |    92 +
 .../src/cppcache/impl/RegionConfig.hpp          |    62 +
 .../src/cppcache/impl/RegionExpiryHandler.cpp   |   119 +
 .../src/cppcache/impl/RegionExpiryHandler.hpp   |    67 +
 .../src/cppcache/impl/RegionGlobalLocks.hpp     |    41 +
 .../src/cppcache/impl/RegionInternal.cpp        |   258 +
 .../src/cppcache/impl/RegionInternal.hpp        |   300 +
 .../src/cppcache/impl/RegionStats.cpp           |   243 +
 .../src/cppcache/impl/RegionStats.hpp           |   324 +
 .../src/cppcache/impl/RegionXmlCreation.cpp     |   103 +
 .../src/cppcache/impl/RegionXmlCreation.hpp     |   130 +
 .../src/cppcache/impl/RemoteQuery.cpp           |   180 +
 .../src/cppcache/impl/RemoteQuery.hpp           |    73 +
 .../src/cppcache/impl/RemoteQueryService.cpp    |   307 +
 .../src/cppcache/impl/RemoteQueryService.hpp    |    80 +
 .../src/cppcache/impl/ResultSetImpl.cpp         |    58 +
 .../src/cppcache/impl/ResultSetImpl.hpp         |    57 +
 .../src/cppcache/impl/STLCompile.cpp            |     5 +
 .../src/cppcache/impl/SerializationRegistry.cpp |   565 +
 .../src/cppcache/impl/SerializationRegistry.hpp |   161 +
 .../src/cppcache/impl/ServerLocation.cpp        |    22 +
 .../src/cppcache/impl/ServerLocation.hpp        |   182 +
 .../src/cppcache/impl/ServerLocationRequest.cpp |    16 +
 .../src/cppcache/impl/ServerLocationRequest.hpp |    30 +
 .../cppcache/impl/ServerLocationResponse.hpp    |    33 +
 geode-client-native/src/cppcache/impl/Set.hpp   |   144 +
 .../src/cppcache/impl/SpinLock.cpp              |    31 +
 .../src/cppcache/impl/SpinLock.hpp              |   117 +
 .../src/cppcache/impl/SslSockStream.cpp         |   119 +
 .../src/cppcache/impl/SslSockStream.hpp         |    83 +
 .../src/cppcache/impl/StackFrame.cpp            |    33 +
 .../src/cppcache/impl/StackFrame.hpp            |   141 +
 .../src/cppcache/impl/StackTrace.cpp            |   277 +
 .../src/cppcache/impl/StackTrace.hpp            |    58 +
 .../src/cppcache/impl/StructSetImpl.cpp         |   106 +
 .../src/cppcache/impl/StructSetImpl.hpp         |    69 +
 .../cppcache/impl/SuspendedTxExpiryHandler.cpp  |    51 +
 .../cppcache/impl/SuspendedTxExpiryHandler.hpp  |    57 +
 .../src/cppcache/impl/TSSTXStateWrapper.cpp     |    33 +
 .../src/cppcache/impl/TSSTXStateWrapper.hpp     |    41 +
 .../src/cppcache/impl/TXCleaner.cpp             |    54 +
 .../src/cppcache/impl/TXCleaner.hpp             |    44 +
 .../src/cppcache/impl/TXCommitMessage.cpp       |   187 +
 .../src/cppcache/impl/TXCommitMessage.hpp       |    48 +
 .../src/cppcache/impl/TXEntryState.cpp          |   365 +
 .../src/cppcache/impl/TXEntryState.hpp          |    76 +
 geode-client-native/src/cppcache/impl/TXId.cpp  |    34 +
 geode-client-native/src/cppcache/impl/TXId.hpp  |    43 +
 .../src/cppcache/impl/TXRegionState.cpp         |    28 +
 .../src/cppcache/impl/TXRegionState.hpp         |    39 +
 .../src/cppcache/impl/TXState.cpp               |   130 +
 .../src/cppcache/impl/TXState.hpp               |    87 +
 .../src/cppcache/impl/TableOfPrimes.hpp         |    87 +
 .../src/cppcache/impl/TcpConn.cpp               |   398 +
 .../src/cppcache/impl/TcpConn.hpp               |   141 +
 .../src/cppcache/impl/TcpSslConn.cpp            |   213 +
 .../src/cppcache/impl/TcpSslConn.hpp            |    86 +
 .../src/cppcache/impl/TcrChunkedContext.hpp     |   192 +
 .../src/cppcache/impl/TcrConnection.cpp         |  1553 ++
 .../src/cppcache/impl/TcrConnection.hpp         |   363 +
 .../src/cppcache/impl/TcrConnectionManager.cpp  |   582 +
 .../src/cppcache/impl/TcrConnectionManager.hpp  |   190 +
 .../cppcache/impl/TcrDistributionManager.cpp    |    55 +
 .../cppcache/impl/TcrDistributionManager.hpp    |    46 +
 .../src/cppcache/impl/TcrEndpoint.cpp           |  1266 ++
 .../src/cppcache/impl/TcrEndpoint.hpp           |   257 +
 .../cppcache/impl/TcrHADistributionManager.cpp  |    87 +
 .../cppcache/impl/TcrHADistributionManager.hpp  |    86 +
 .../src/cppcache/impl/TcrMessage.cpp            |  4354 +++++
 .../src/cppcache/impl/TcrMessage.hpp            |   841 +
 .../src/cppcache/impl/TcrPoolEndPoint.cpp       |   136 +
 .../src/cppcache/impl/TcrPoolEndPoint.hpp       |    46 +
 .../src/cppcache/impl/ThinClientBaseDM.cpp      |   324 +
 .../src/cppcache/impl/ThinClientBaseDM.hpp      |   188 +
 .../impl/ThinClientCacheDistributionManager.cpp |   190 +
 .../impl/ThinClientCacheDistributionManager.hpp |    54 +
 .../impl/ThinClientDistributionManager.cpp      |   416 +
 .../impl/ThinClientDistributionManager.hpp      |    78 +
 .../src/cppcache/impl/ThinClientHARegion.cpp    |   173 +
 .../src/cppcache/impl/ThinClientHARegion.hpp    |    82 +
 .../cppcache/impl/ThinClientLocatorHelper.cpp   |   368 +
 .../cppcache/impl/ThinClientLocatorHelper.hpp   |    45 +
 .../src/cppcache/impl/ThinClientPoolDM.cpp      |  2388 +++
 .../src/cppcache/impl/ThinClientPoolDM.hpp      |   599 +
 .../src/cppcache/impl/ThinClientPoolHADM.cpp    |   292 +
 .../src/cppcache/impl/ThinClientPoolHADM.hpp    |   136 +
 .../src/cppcache/impl/ThinClientPoolRegion.cpp  |    57 +
 .../src/cppcache/impl/ThinClientPoolRegion.hpp  |    45 +
 .../cppcache/impl/ThinClientPoolStickyDM.cpp    |   142 +
 .../cppcache/impl/ThinClientPoolStickyDM.hpp    |    40 +
 .../cppcache/impl/ThinClientPoolStickyHADM.cpp  |    61 +
 .../cppcache/impl/ThinClientPoolStickyHADM.hpp  |    41 +
 .../impl/ThinClientRedundancyManager.cpp        |  1203 ++
 .../impl/ThinClientRedundancyManager.hpp        |   123 +
 .../src/cppcache/impl/ThinClientRegion.cpp      |  3812 +++++
 .../src/cppcache/impl/ThinClientRegion.hpp      |   533 +
 .../cppcache/impl/ThinClientStickyManager.cpp   |   202 +
 .../cppcache/impl/ThinClientStickyManager.hpp   |    46 +
 .../src/cppcache/impl/ThreadPool.cpp            |   151 +
 .../src/cppcache/impl/ThreadPool.hpp            |   156 +
 .../src/cppcache/impl/TimeoutTimer.hpp          |    72 +
 .../cppcache/impl/TombstoneExpiryHandler.cpp    |    84 +
 .../cppcache/impl/TombstoneExpiryHandler.hpp    |    67 +
 .../src/cppcache/impl/TombstoneList.cpp         |   165 +
 .../src/cppcache/impl/TombstoneList.hpp         |    95 +
 .../src/cppcache/impl/TrackedMapEntry.cpp       |    45 +
 .../src/cppcache/impl/TrackedMapEntry.hpp       |    87 +
 .../src/cppcache/impl/TransactionSuspender.cpp  |    31 +
 .../src/cppcache/impl/TransactionSuspender.hpp  |    33 +
 .../cppcache/impl/TransactionalOperation.cpp    |   100 +
 .../cppcache/impl/TransactionalOperation.hpp    |    60 +
 .../src/cppcache/impl/TssConnectionWrapper.cpp  |   149 +
 .../src/cppcache/impl/TssConnectionWrapper.hpp  |    60 +
 .../src/cppcache/impl/UnixSignalHandler.hpp     |   223 +
 .../src/cppcache/impl/UserAttributes.cpp        |   165 +
 .../src/cppcache/impl/UserAttributes.hpp        |   176 +
 geode-client-native/src/cppcache/impl/Utils.cpp |   314 +
 geode-client-native/src/cppcache/impl/Utils.hpp |   231 +
 .../src/cppcache/impl/Version.cpp               |    31 +
 .../src/cppcache/impl/Version.hpp               |    35 +
 .../src/cppcache/impl/VersionStamp.cpp          |   201 +
 .../src/cppcache/impl/VersionStamp.hpp          |    70 +
 .../src/cppcache/impl/VersionTag.cpp            |   110 +
 .../src/cppcache/impl/VersionTag.hpp            |    80 +
 .../impl/VersionedCacheableObjectPartList.cpp   |   327 +
 .../impl/VersionedCacheableObjectPartList.hpp   |   273 +
 .../src/cppcache/impl/WindowsSignalHandler.cpp  |   242 +
 .../src/cppcache/impl/WindowsSignalHandler.hpp  |    41 +
 .../src/cppcache/impl/dllmain.cpp               |   146 +
 .../src/cppcache/impl/gfcppBanner.cpp           |    15 +
 .../src/cppcache/impl/gfcppBanner.hpp           |     7 +
 .../src/cppcache/impl/hostsolaris.asm           |   171 +
 .../statistics/AtomicStatisticsImpl.cpp         |   637 +
 .../statistics/AtomicStatisticsImpl.hpp         |   242 +
 .../statistics/GemfireStatisticsFactory.cpp     |   305 +
 .../statistics/GemfireStatisticsFactory.hpp     |   136 +
 .../src/cppcache/statistics/HostStatHelper.cpp  |   160 +
 .../src/cppcache/statistics/HostStatHelper.hpp  |    76 +
 .../cppcache/statistics/HostStatHelperLinux.cpp |   176 +
 .../cppcache/statistics/HostStatHelperLinux.hpp |    45 +
 .../cppcache/statistics/HostStatHelperNull.cpp  |    10 +
 .../cppcache/statistics/HostStatHelperNull.hpp  |    25 +
 .../statistics/HostStatHelperSolaris.cpp        |   221 +
 .../statistics/HostStatHelperSolaris.hpp        |    59 +
 .../cppcache/statistics/HostStatHelperWin.cpp   |   742 +
 .../cppcache/statistics/HostStatHelperWin.hpp   |   299 +
 .../src/cppcache/statistics/HostStatSampler.cpp |   788 +
 .../src/cppcache/statistics/HostStatSampler.hpp |   233 +
 .../cppcache/statistics/LinuxProcessStats.cpp   |   129 +
 .../cppcache/statistics/LinuxProcessStats.hpp   |    72 +
 .../cppcache/statistics/NullProcessStats.cpp    |    47 +
 .../cppcache/statistics/NullProcessStats.hpp    |    46 +
 .../cppcache/statistics/OsStatisticsImpl.cpp    |   638 +
 .../cppcache/statistics/OsStatisticsImpl.hpp    |   254 +
 .../cppcache/statistics/PoolStatsSampler.cpp    |   128 +
 .../cppcache/statistics/PoolStatsSampler.hpp    |    44 +
 .../src/cppcache/statistics/ProcessStats.cpp    |    26 +
 .../src/cppcache/statistics/ProcessStats.hpp    |    71 +
 .../cppcache/statistics/SolarisProcessStats.cpp |   131 +
 .../cppcache/statistics/SolarisProcessStats.hpp |    74 +
 .../cppcache/statistics/StatArchiveWriter.cpp   |   725 +
 .../cppcache/statistics/StatArchiveWriter.hpp   |   260 +
 .../cppcache/statistics/StatSamplerStats.cpp    |    91 +
 .../cppcache/statistics/StatSamplerStats.hpp    |    46 +
 .../cppcache/statistics/StatisticDescriptor.hpp |    88 +
 .../statistics/StatisticDescriptorImpl.cpp      |   320 +
 .../statistics/StatisticDescriptorImpl.hpp      |   260 +
 .../src/cppcache/statistics/Statistics.cpp      |   183 +
 .../src/cppcache/statistics/Statistics.hpp      |   500 +
 .../cppcache/statistics/StatisticsFactory.cpp   |    19 +
 .../cppcache/statistics/StatisticsFactory.hpp   |   188 +
 .../cppcache/statistics/StatisticsManager.cpp   |   287 +
 .../cppcache/statistics/StatisticsManager.hpp   |   119 +
 .../src/cppcache/statistics/StatisticsType.hpp  |    85 +
 .../cppcache/statistics/StatisticsTypeImpl.cpp  |   226 +
 .../cppcache/statistics/StatisticsTypeImpl.hpp  |    99 +
 .../src/cppcache/statistics/StatsDef.hpp        |    46 +
 .../cppcache/statistics/WindowsProcessStats.cpp |   156 +
 .../cppcache/statistics/WindowsProcessStats.hpp |    78 +
 .../src/cppcache/version.cmake.in               |    41 +
 geode-client-native/src/cppcache/version.h.in   |     5 +
 .../src/cryptoimpl/CMakeLists.txt               |    31 +
 geode-client-native/src/cryptoimpl/DHImpl.cpp   |   734 +
 geode-client-native/src/cryptoimpl/DHImpl.hpp   |    86 +
 geode-client-native/src/cryptoimpl/GFSsl.hpp    |    36 +
 geode-client-native/src/cryptoimpl/GNUmakefile  |    71 +
 geode-client-native/src/cryptoimpl/SSLImpl.cpp  |   140 +
 geode-client-native/src/cryptoimpl/SSLImpl.hpp  |    50 +
 .../src/dependencies/ACE/CMakeLists.txt         |   155 +
 .../src/dependencies/ACE/config.h.in            |     8 +
 .../src/dependencies/ACE/patches                |    72 +
 .../src/dependencies/CMakeLists.txt             |   108 +
 .../src/dependencies/antlr/CMakeLists.txt       |    66 +
 .../src/dependencies/antlr/patches              |    33 +
 .../src/dependencies/doxygen/CMakeLists.txt     |    42 +
 .../src/dependencies/libxml2/CMakeLists.txt     |    57 +
 .../src/dependencies/openssl/CMakeLists.txt     |    99 +
 .../src/dependencies/openssl/patches            |    13 +
 .../dependencies/perl-Devel-GDB/CMakeLists.txt  |    30 +
 .../dependencies/sqlite-netFx/CMakeLists.txt    |    26 +
 .../src/dependencies/sqlite/CMakeLists.txt      |    39 +
 .../src/dependencies/sqlite/CMakeLists.txt.in   |   141 +
 .../src/dependencies/thirdparty.properties.in   |    16 +
 .../src/dependencies/xerces-c/CMakeLists.txt    |    63 +
 geode-client-native/src/dhimpl/CMakeLists.txt   |    22 +
 geode-client-native/src/dhimpl/DHImpl.cpp       |   626 +
 geode-client-native/src/dhimpl/DHImpl.hpp       |    54 +
 geode-client-native/src/dhimpl/GNUmakefile      |    66 +
 .../src/dtds/gfcpp-cache3000.dtd                |   233 +
 .../src/dtds/gfcpp-cache3500.dtd                |   248 +
 .../src/dtds/gfcpp-cache3600.dtd                |   252 +
 .../src/dtds/gfcpp-cache7000.dtd                |   253 +
 .../src/dtds/gfcpp-cache8000.dtd                |   253 +
 geode-client-native/src/executables/GNUmakefile |   103 +
 .../src/executables/GacInstall/AssemblyInfo.cs  |    40 +
 .../src/executables/GacInstall/Program.cs       |   139 +
 geode-client-native/src/gfcpp/CMakeLists.txt    |    14 +
 geode-client-native/src/gfcpp/gfcpp.cpp         |    41 +
 .../src/pdxautoserializer/.depend               |     0
 .../src/pdxautoserializer/ASBuiltins.hpp        |   117 +
 .../src/pdxautoserializer/ASCLIBuiltins.hpp     |   532 +
 .../src/pdxautoserializer/ASCPPInclude.hpp      |    27 +
 .../src/pdxautoserializer/CMakeLists.txt        |    22 +
 .../src/pdxautoserializer/CodeGenerator.hpp     |   169 +
 .../pdxautoserializer/CodeGeneratorFactory.cpp  |    55 +
 .../pdxautoserializer/CodeGeneratorFactory.hpp  |    62 +
 .../src/pdxautoserializer/Doxyfile              |  1252 ++
 .../src/pdxautoserializer/GNUmakefile           |    55 +
 .../src/pdxautoserializer/InputParser.cpp       |    53 +
 .../src/pdxautoserializer/InputParser.hpp       |   164 +
 .../pdxautoserializer/InputParserFactory.cpp    |    60 +
 .../pdxautoserializer/InputParserFactory.hpp    |    64 +
 .../src/pdxautoserializer/OutputFormatter.cpp   |   178 +
 .../src/pdxautoserializer/OutputFormatter.hpp   |   219 +
 .../src/pdxautoserializer/base_types.hpp        |   248 +
 .../src/pdxautoserializer/base_types.hpp.new    |   396 +
 .../pdxautoserializer/impl/CPPCodeGenerator.cpp |   594 +
 .../pdxautoserializer/impl/CPPCodeGenerator.hpp |   229 +
 .../impl/CPPParser/CPPDictionary.hpp            |    93 +
 .../impl/CPPParser/CPPInputParser.cpp           |   347 +
 .../impl/CPPParser/CPPInputParser.hpp           |   182 +
 .../impl/CPPParser/CPPLexer.cpp                 |  2731 ++++
 .../impl/CPPParser/CPPLexer.hpp                 |   159 +
 .../impl/CPPParser/CPPParser.cpp                | 14427 +++++++++++++++++
 .../impl/CPPParser/CPPParser.hpp                |   687 +
 .../impl/CPPParser/CPPSymbol.hpp                |   106 +
 .../impl/CPPParser/CPP_parser.g                 |  2646 +++
 .../impl/CPPParser/DictEntry.hpp                |   134 +
 .../impl/CPPParser/Dictionary.cpp               |   468 +
 .../impl/CPPParser/Dictionary.hpp               |   111 +
 .../impl/CPPParser/STDCTokenTypes.hpp           |   216 +
 .../impl/CPPParser/STDCTokenTypes.txt           |   191 +
 .../impl/CPPParser/Support.cpp                  |   976 ++
 .../src/pdxautoserializer/impl/Helper.cpp       |    93 +
 .../src/pdxautoserializer/impl/Helper.hpp       |   188 +
 .../src/pdxautoserializer/impl/Log.cpp          |    48 +
 .../src/pdxautoserializer/impl/Log.hpp          |    85 +
 .../src/pdxautoserializer/impl/Main.cpp         |   452 +
 .../src/plugins/SQLiteCLI/CMakeLists.txt        |     7 +
 .../src/plugins/SQLiteCLI/SQLiteCLI.csproj.in   |   127 +
 .../src/sqliteimpl/CMakeLists.txt               |    26 +
 geode-client-native/src/sqliteimpl/GNUmakefile  |    65 +
 .../src/sqliteimpl/SqLiteHelper.cpp             |   183 +
 .../src/sqliteimpl/SqLiteHelper.hpp             |    43 +
 .../src/sqliteimpl/SqLiteImpl.cpp               |   196 +
 .../src/sqliteimpl/SqLiteImpl.hpp               |   129 +
 .../src/templates/security/CMakeLists.txt       |    21 +
 .../src/templates/security/PkcsAuthInit.cpp     |   178 +
 .../src/templates/security/PkcsAuthInit.hpp     |    97 +
 .../templates/security/UserPasswordAuthInit.cpp |    51 +
 .../templates/security/UserPasswordAuthInit.hpp |    75 +
 .../src/templates/security/authz-dummy.xml      |    72 +
 .../src/templates/security/authz-ldap.xml       |    69 +
 .../src/templates/security/authz-pkcs.xml       |    69 +
 .../src/templates/security/authz5_5.dtd         |    89 +
 .../src/templates/security/buildit.bat          |    48 +
 .../src/templates/security/buildit.sh           |    74 +
 .../templates/security/csharp/AssemblyInfo.cs   |    39 +
 .../security/csharp/UserPasswordAuthInit.cs     |    90 +
 .../src/templates/security/csharp/buildit.bat   |    11 +
 .../templates/security/openssl/Linux/buildit.sh |    18 +
 .../templates/security/openssl/SunOS/buildit.sh |    31 +
 .../security/openssl/Windows/buildit.sh         |    18 +
 geode-client-native/src/tests/CMakeLists.txt    |    12 +
 .../src/tests/clicache/CMakeLists.txt           |    25 +
 .../clicache/DUnitFramework/AssemblyInfo.cs     |    40 +
 .../tests/clicache/DUnitFramework/ClientBase.cs |   384 +
 .../clicache/DUnitFramework/ClientGroup.cs      |   538 +
 .../DUnitFramework/DUnitFramework.csproj.in     |   158 +
 .../clicache/DUnitFramework/DUnitTestClass.cs   |   275 +
 .../tests/clicache/DUnitFramework/Exceptions.cs |   266 +
 .../DUnitFramework/IClientServerComm.cs         |   259 +
 .../src/tests/clicache/DUnitFramework/Log.cs    |   168 +
 .../DUnitFramework/ServerCommunication.cs       |   192 +
 .../clicache/DUnitFramework/ServerConnection.cs |    30 +
 .../tests/clicache/DUnitFramework/TimeBomb.cs   |   227 +
 .../clicache/DUnitFramework/UnitProcess.cs      |  1077 ++
 .../tests/clicache/DUnitFramework/UnitThread.cs |   263 +
 .../src/tests/clicache/DUnitFramework/Util.cs   |  1773 ++
 .../DUnitFramework/XmlNodeReaderWriter.cs       |   640 +
 .../tests/clicache/FwkBBClient/AssemblyInfo.cs  |    40 +
 .../tests/clicache/FwkBBClient/FwkBBClient.cs   |   186 +
 .../clicache/FwkBBClient/FwkBBClient.csproj.in  |   127 +
 .../tests/clicache/FwkBBServer/AssemblyInfo.cs  |    40 +
 .../tests/clicache/FwkBBServer/FwkBBServer.cs   |    56 +
 .../clicache/FwkBBServer/FwkBBServer.csproj.in  |   122 +
 .../src/tests/clicache/FwkClient/App.config     |     6 +
 .../tests/clicache/FwkClient/AssemblyInfo.cs    |    40 +
 .../src/tests/clicache/FwkClient/ClientComm.cs  |   317 +
 .../tests/clicache/FwkClient/ClientProcess.cs   |   254 +
 .../clicache/FwkClient/FwkClient.csproj.in      |   125 +
 .../tests/clicache/FwkDriver/AssemblyInfo.cs    |    40 +
 .../src/tests/clicache/FwkDriver/FwkDriver.cs   |  1972 +++
 .../clicache/FwkDriver/FwkDriver.csproj.in      |   174 +
 .../tests/clicache/FwkLauncher/AssemblyInfo.cs  |    40 +
 .../clicache/FwkLauncher/FwkLauncher.csproj.in  |   125 +
 .../tests/clicache/FwkLauncher/LauncherComm.cs  |   146 +
 .../clicache/FwkLauncher/LauncherProcess.cs     |   192 +
 .../src/tests/clicache/FwkLib/AssemblyInfo.cs   |    40 +
 .../src/tests/clicache/FwkLib/CacheHelper.cs    |   503 +
 .../src/tests/clicache/FwkLib/CacheServer.cs    |  1729 ++
 .../DeltaTest/DeltaClientValidationListener.cs  |   172 +
 .../clicache/FwkLib/DeltaTest/DeltaTest.cs      |   730 +
 .../FwkLib/DurableTest/DurableClientTests.cs    |   378 +
 .../FwkLib/DurableTest/DurableListener.cs       |   264 +
 .../FwkLib/DurableTest/DurablePerfListener.cs   |   142 +
 .../FwkLib/EventTest/ETCacheListener.cs         |    73 +
 .../clicache/FwkLib/EventTest/ETCacheLoader.cs  |    39 +
 .../clicache/FwkLib/EventTest/ETCacheWriter.cs  |    59 +
 .../clicache/FwkLib/EventTest/EventTasks.cs     |     0
 .../clicache/FwkLib/EventTest/EventTests.cs     |  1764 ++
 .../FunctionExecution/FunctionExecution.cs      |   534 +
 .../FunctionExecution/MyResultCollector.cs      |   153 +
 .../src/tests/clicache/FwkLib/FwkLib.csproj.in  |   280 +
 .../src/tests/clicache/FwkLib/FwkTask.cs        |   522 +
 .../src/tests/clicache/FwkLib/FwkTest.cs        |  1635 ++
 .../clicache/FwkLib/PerfTest/DupChecker.cs      |   149 +
 .../clicache/FwkLib/PerfTest/LatencyListener.cs |   151 +
 .../tests/clicache/FwkLib/PerfTest/PerfTasks.cs |   320 +
 .../FwkLib/PerfTest/PerfTestCacheListener.cs    |   226 +
 .../tests/clicache/FwkLib/PerfTest/PerfTests.cs |  1404 ++
 .../clicache/FwkLib/QueryTest/QueryTests.cs     |  1677 ++
 .../clicache/FwkLib/SecurityTest/Security.cs    |   508 +
 .../clicache/FwkLib/SmokePerf/ObjectHelper.cs   |    74 +
 .../tests/clicache/FwkLib/SmokePerf/PerfStat.cs |   286 +
 .../clicache/FwkLib/SmokePerf/SmokePerf.cs      |  1677 ++
 .../clicache/FwkLib/SmokePerf/SmokeTasks.cs     |   826 +
 .../src/tests/clicache/FwkLib/Utils.cs          |  1448 ++
 .../src/tests/clicache/FwkLib/gfcpp.properties  |     3 +
 .../src/tests/clicache/FwkUI/AssemblyInfo.cs    |    40 +
 .../src/tests/clicache/FwkUI/FwkUI.cs           |   756 +
 .../src/tests/clicache/FwkUI/FwkUI.csproj.in    |   134 +
 .../src/tests/clicache/FwkUI/FwkUIHelper.cs     |   658 +
 .../src/tests/clicache/FwkUtil/FwkClient.cs     |   280 +
 .../src/tests/clicache/FwkUtil/FwkData.cs       |   985 ++
 .../tests/clicache/FwkUtil/FwkUtil.csproj.in    |   159 +
 .../clicache/NativeWrapper/AssemblyInfo.cpp     |    46 +
 .../tests/clicache/NativeWrapper/CMakeLists.txt |    25 +
 .../clicache/NativeWrapper/ManagedWrapper.cpp   |    58 +
 .../clicache/NativeWrapper/ManagedWrapper.hpp   |   172 +
 .../tests/clicache/NativeWrapper/NativeType.cpp |    68 +
 .../tests/clicache/NativeWrapper/NativeType.hpp |    29 +
 .../NativeWrapper/NativeWrapper.vcxproj.in      |   204 +
 .../tests/clicache/NewFwkLib/AssemblyInfo.cs    |    40 +
 .../src/tests/clicache/NewFwkLib/CacheHelper.cs |   602 +
 .../src/tests/clicache/NewFwkLib/CacheServer.cs |  4938 ++++++
 .../DeltaTest/DeltaClientValidationListener.cs  |   173 +
 .../clicache/NewFwkLib/DeltaTest/DeltaTest.cs   |   731 +
 .../NewFwkLib/DurableTest/DurableClientTests.cs |   379 +
 .../NewFwkLib/DurableTest/DurableListener.cs    |   246 +
 .../DurableTest/DurablePerfListener.cs          |   125 +
 .../NewFwkLib/EventTest/ETCacheListener.cs      |    73 +
 .../NewFwkLib/EventTest/ETCacheLoader.cs        |    39 +
 .../NewFwkLib/EventTest/ETCacheWriter.cs        |    59 +
 .../clicache/NewFwkLib/EventTest/EventTests.cs  |  1764 ++
 .../FunctionExecution/FunctionExecution.cs      |  1365 ++
 .../FunctionExecution/MyResultCollector.cs      |   159 +
 .../src/tests/clicache/NewFwkLib/FwkTest.cs     |  1514 ++
 .../clicache/NewFwkLib/NewFwkLib.csproj.in      |   335 +
 .../clicache/NewFwkLib/PdxTest/PdxTests.cs      |  3646 +++++
 .../clicache/NewFwkLib/PerfTest/DupChecker.cs   |   122 +
 .../NewFwkLib/PerfTest/LatencyListener.cs       |   124 +
 .../clicache/NewFwkLib/PerfTest/PerfTasks.cs    |   328 +
 .../NewFwkLib/PerfTest/PerfTestCacheListener.cs |   206 +
 .../clicache/NewFwkLib/PerfTest/PerfTests.cs    |  1473 ++
 .../clicache/NewFwkLib/QueryTest/QueryTests.cs  |  1942 +++
 .../NewFwkLib/ResumableTx/ResumableTx.cs        |  1224 ++
 .../clicache/NewFwkLib/ResumableTx/TxInfo.cs    |   150 +
 .../clicache/NewFwkLib/SecurityTest/Security.cs |   508 +
 .../NewFwkLib/SmokePerf/ObjectHelper.cs         |    63 +
 .../clicache/NewFwkLib/SmokePerf/PerfStat.cs    |   285 +
 .../clicache/NewFwkLib/SmokePerf/SmokePerf.cs   |  1570 ++
 .../clicache/NewFwkLib/SmokePerf/SmokeTasks.cs  |   819 +
 .../src/tests/clicache/NewFwkLib/Utils.cs       |  1447 ++
 .../tests/clicache/NewTestObject/ArrayOfByte.cs |   151 +
 .../tests/clicache/NewTestObject/BatchObject.cs |    91 +
 .../src/tests/clicache/NewTestObject/DeltaEx.cs |    96 +
 .../NewTestObject/DeltaFastAssetAccount.cs      |   189 +
 .../clicache/NewTestObject/DeltaPSTObject.cs    |   111 +
 .../clicache/NewTestObject/DeltaTestImpl.cs     |   266 +
 .../tests/clicache/NewTestObject/EqStruct.cs    |   281 +
 .../tests/clicache/NewTestObject/FastAsset.cs   |   107 +
 .../clicache/NewTestObject/FastAssetAccount.cs  |   147 +
 .../clicache/NewTestObject/NoopAuthInit.cs      |    31 +
 .../tests/clicache/NewTestObject/PSTObject.cs   |    92 +
 .../NewTestObject/PdxAutoSerializerObj.cs       |   513 +
 .../tests/clicache/NewTestObject/Portfolio.cs   |   299 +
 .../clicache/NewTestObject/PortfolioPdx.cs      |   288 +
 .../tests/clicache/NewTestObject/Position.cs    |   235 +
 .../tests/clicache/NewTestObject/PositionPdx.cs |   230 +
 .../NewTestObject/SimpleCacheListener.cs        |    73 +
 .../tests/clicache/NewTestObject/TestObject1.cs |    64 +
 .../clicache/NewTestObject/TimeStampdObject.cs  |    46 +
 .../PdxClassLibrary/PdxClassLibrary.csproj.in   |   134 +
 .../tests/clicache/PdxClassLibrary/PdxType.cs   |  1108 ++
 .../PdxClassLibrary/PdxTypesReflectionTest.cs   |   711 +
 .../tests/clicache/PdxClassLibrary/Person.cs    |    10 +
 .../clicache/PdxClassLibrary/PortfolioPdx.cs    |   285 +
 .../clicache/PdxClassLibrary/PositionPdx.cs     |   202 +
 .../PdxClassLibrary/Properties/AssemblyInfo.cs  |    35 +
 .../clicache/PdxClassLibrary/VariousPdxTypes.cs |  1612 ++
 .../PdxVersion1Lib/PdxVersion1Lib.csproj.in     |   123 +
 .../PdxVersion1Lib/Properties/AssemblyInfo.cs   |    35 +
 .../tests/clicache/PdxVersion1Lib/Version1.cs   |  2027 +++
 .../PdxVersion2Lib/PdxVersion2Lib.csproj.in     |   120 +
 .../PdxVersion2Lib/Properties/AssemblyInfo.cs   |    35 +
 .../tests/clicache/PdxVersion2Lib/Version2.cs   |  2109 +++
 .../tests/clicache/PkcsWrapper/CMakeLists.txt   |    31 +
 .../clicache/PkcsWrapper/PkcsAuthInitM.cpp      |    40 +
 .../clicache/PkcsWrapper/PkcsAuthInitM.hpp      |    45 +
 .../clicache/PkcsWrapper/PkcsAuthInitMN.cpp     |    45 +
 .../clicache/PkcsWrapper/PkcsAuthInitMN.hpp     |    55 +
 .../clicache/PkcsWrapper/PkcsWrapper.vcxproj.in |   224 +
 .../tests/clicache/QueryHelper/AssemblyInfo.cpp |    46 +
 .../tests/clicache/QueryHelper/CMakeLists.txt   |    35 +
 .../tests/clicache/QueryHelper/QueryHelper.cs   |   422 +
 .../tests/clicache/QueryHelper/QueryHelperN.cs  |   510 +
 .../clicache/QueryHelper/QueryStringsM.cpp      |   265 +
 .../clicache/QueryHelper/QueryStringsM.hpp      |   191 +
 .../QueryHelper/QueryWrapper.vcxproj.in         |   196 +
 .../SecurityUtil/AuthzCredentialGenerator.cs    |   457 +
 .../SecurityUtil/AuthzCredentialGeneratorN.cs   |   459 +
 .../SecurityUtil/CredentialGenerator.cs         |   247 +
 .../SecurityUtil/CredentialGeneratorN.cs        |   248 +
 .../SecurityUtil/DummyAuthorization3.cs         |    61 +
 .../SecurityUtil/DummyAuthorization3N.cs        |    62 +
 .../SecurityUtil/LdapCredentialGenerator.cs     |   116 +
 .../SecurityUtil/LdapCredentialGeneratorN.cs    |   117 +
 .../SecurityUtil/PKCSCredentialGenerator.cs     |   119 +
 .../SecurityUtil/PKCSCredentialGeneratorN.cs    |   146 +
 .../SecurityUtil/SecurityUtil.csproj.in         |   157 +
 .../SecurityUtil/XmlAuthzCredentialGenerator.cs |   297 +
 .../XmlAuthzCredentialGeneratorN.cs             |   298 +
 .../tests/clicache/TestObject/ArrayOfByte.cs    |   150 +
 .../tests/clicache/TestObject/BatchObject.cs    |    90 +
 .../src/tests/clicache/TestObject/DeltaEx.cs    |    96 +
 .../src/tests/clicache/TestObject/DeltaExN.cs   |    96 +
 .../TestObject/DeltaFastAssetAccount.cs         |   187 +
 .../tests/clicache/TestObject/DeltaPSTObject.cs |   110 +
 .../tests/clicache/TestObject/DeltaTestImpl.cs  |   267 +
 .../tests/clicache/TestObject/DeltaTestImplN.cs |   266 +
 .../src/tests/clicache/TestObject/FastAsset.cs  |   106 +
 .../clicache/TestObject/FastAssetAccount.cs     |   144 +
 .../tests/clicache/TestObject/NoopAuthInit.cs   |    25 +
 .../src/tests/clicache/TestObject/PSTObject.cs  |    91 +
 .../src/tests/clicache/TestObject/Portfolio.cs  |   302 +
 .../src/tests/clicache/TestObject/PortfolioN.cs |   296 +
 .../src/tests/clicache/TestObject/Position.cs   |   234 +
 .../src/tests/clicache/TestObject/PositionN.cs  |   235 +
 .../clicache/TestObject/SimpleCacheListener.cs  |    73 +
 .../clicache/TestObject/SimpleCacheListenerN.cs |    74 +
 .../tests/clicache/TestObject/TestObject1.cs    |    63 +
 .../tests/clicache/TestObject/TestObject1N.cs   |    64 +
 .../clicache/TestObject/TimeStampdObject.cs     |    45 +
 .../src/tests/clicache/UnitTests/AckMixTests.cs |   254 +
 .../tests/clicache/UnitTests/AssemblyInfo.cs    |    40 +
 .../UnitTests/AttributesFactoryTests.cs         |   100 +
 .../UnitTests/AttributesFactoryTestsN.cs        |    98 +
 .../UnitTests/AttributesMutatorTests.cs         |   314 +
 .../UnitTests/AttributesMutatorTestsN.cs        |   320 +
 .../src/tests/clicache/UnitTests/BasicTests.cs  |   185 +
 .../UnitTests/BuiltinCacheableWrappers.cs       |  2344 +++
 .../UnitTests/BuiltinCacheableWrappersN.cs      |  2771 ++++
 .../src/tests/clicache/UnitTests/CacheHelper.cs |  2240 +++
 .../tests/clicache/UnitTests/CacheHelperN.cs    |  2673 +++
 .../tests/clicache/UnitTests/CacheServerMsgs.cs |    48 +
 .../src/tests/clicache/UnitTests/CacheTests.cs  |   164 +
 .../clicache/UnitTests/CacheableWrapper.cs      |   198 +
 .../clicache/UnitTests/CacheableWrapperN.cs     |   259 +
 .../tests/clicache/UnitTests/CachelessTests.cs  |   166 +
 .../tests/clicache/UnitTests/CachelessTestsN.cs |   171 +
 .../src/tests/clicache/UnitTests/DUnitTests.cs  |   222 +
 .../src/tests/clicache/UnitTests/DataIOTests.cs |   231 +
 .../clicache/UnitTests/DefaultCacheable.cs      |   199 +
 .../clicache/UnitTests/DefaultCacheableN.cs     |   244 +
 .../tests/clicache/UnitTests/DistGetTests.cs    |   181 +
 .../tests/clicache/UnitTests/DistOpsSteps.cs    |   975 ++
 .../tests/clicache/UnitTests/DistOpsStepsN.cs   |  2364 +++
 .../tests/clicache/UnitTests/DistOpsTests.cs    |    75 +
 .../UnitTests/DistributedSystemTests.cs         |   126 +
 .../src/tests/clicache/UnitTests/DupListener.cs |   101 +
 .../tests/clicache/UnitTests/DupListenerN.cs    |   107 +
 .../tests/clicache/UnitTests/DurableListener.cs |   167 +
 .../clicache/UnitTests/DurableListenerN.cs      |   189 +
 .../tests/clicache/UnitTests/ExpirationTests.cs |   319 +
 .../clicache/UnitTests/ExpirationTestsN.cs      |   329 +
 .../tests/clicache/UnitTests/LinkageTests.cs    |   146 +
 .../src/tests/clicache/UnitTests/LogTests.cs    |   172 +
 .../src/tests/clicache/UnitTests/NetTests.cs    |   163 +
 .../tests/clicache/UnitTests/OverflowTests.cs   |   460 +
 .../tests/clicache/UnitTests/OverflowTestsN.cs  |   652 +
 .../tests/clicache/UnitTests/PutGetPerfTests.cs |   323 +
 .../src/tests/clicache/UnitTests/PutGetTests.cs |   723 +
 .../tests/clicache/UnitTests/PutGetTestsN.cs    |  1052 ++
 .../clicache/UnitTests/RegionEntryTests.cs      |    95 +
 .../tests/clicache/UnitTests/RegionMapTests.cs  |   178 +
 .../tests/clicache/UnitTests/RegionOperation.cs |    66 +
 .../clicache/UnitTests/RegionOperationN.cs      |    81 +
 .../tests/clicache/UnitTests/RegionWrapper.cs   |   230 +
 .../tests/clicache/UnitTests/RegionWrapperN.cs  |   235 +
 .../clicache/UnitTests/SecurityTestUtil.cs      |   281 +
 .../clicache/UnitTests/SecurityTestUtilN.cs     |   285 +
 .../clicache/UnitTests/SerializationTests.cs    |  1164 ++
 .../clicache/UnitTests/SerializationTestsN.cs   |  1265 ++
 .../src/tests/clicache/UnitTests/Settings.xml   |    33 +
 .../clicache/UnitTests/SystemPropertiesTests.cs |    84 +
 .../UnitTests/SystemPropertiesTestsN.cs         |    93 +
 .../tests/clicache/UnitTests/TallyListener.cs   |   290 +
 .../tests/clicache/UnitTests/TallyListenerN.cs  |   323 +
 .../src/tests/clicache/UnitTests/TallyLoader.cs |    76 +
 .../tests/clicache/UnitTests/TallyLoaderN.cs    |    94 +
 .../tests/clicache/UnitTests/TallyResolverN.cs  |    87 +
 .../src/tests/clicache/UnitTests/TallyWriter.cs |   212 +
 .../tests/clicache/UnitTests/TallyWriterN.cs    |   230 +
 .../tests/clicache/UnitTests/ThinClientCSTXN.cs |   847 +
 .../ThinClientCacheableStringArrayTests.cs      |   260 +
 .../clicache/UnitTests/ThinClientCallbackArg.cs |   573 +
 .../UnitTests/ThinClientCallbackArgN.cs         |   778 +
 .../UnitTests/ThinClientConflationTests.cs      |   381 +
 .../UnitTests/ThinClientConflationTestsN.cs     |   384 +
 .../clicache/UnitTests/ThinClientCqIRTests.cs   |   318 +
 .../clicache/UnitTests/ThinClientCqIRTestsN.cs  |   324 +
 .../clicache/UnitTests/ThinClientCqTests.cs     |   465 +
 .../clicache/UnitTests/ThinClientCqTestsN.cs    |  1175 ++
 .../clicache/UnitTests/ThinClientDeltaTest.cs   |   880 +
 .../clicache/UnitTests/ThinClientDeltaTestN.cs  |   959 ++
 .../clicache/UnitTests/ThinClientDocExamples.cs |  1500 ++
 .../UnitTests/ThinClientDocExamplesN.cs         |  1544 ++
 .../UnitTests/ThinClientDurableCqTestsN.cs      |   416 +
 .../UnitTests/ThinClientDurableTests.cs         |   806 +
 .../UnitTests/ThinClientDurableTestsN.cs        |  1166 ++
 .../ThinClientFunctionExecutionTests.cs         |   759 +
 .../ThinClientFunctionExecutionTestsN.cs        |  2085 +++
 .../UnitTests/ThinClientHARegionTests.cs        |  1361 ++
 .../UnitTests/ThinClientHARegionTestsN.cs       |  1474 ++
 .../UnitTests/ThinClientListenerWriter.cs       |   210 +
 .../UnitTests/ThinClientListenerWriterN.cs      |   313 +
 .../clicache/UnitTests/ThinClientPdxTests.cs    |  8060 +++++++++
 .../clicache/UnitTests/ThinClientPoolTests.cs   |   866 +
 .../clicache/UnitTests/ThinClientPoolTestsN.cs  |   886 +
 .../clicache/UnitTests/ThinClientQueryTests.cs  |  2130 +++
 .../clicache/UnitTests/ThinClientQueryTestsN.cs |  2524 +++
 .../UnitTests/ThinClientRegionInterestTests.cs  |  1544 ++
 .../UnitTests/ThinClientRegionInterestTestsN.cs |  1674 ++
 .../clicache/UnitTests/ThinClientRegionSteps.cs |   540 +
 .../UnitTests/ThinClientRegionStepsN.cs         |   706 +
 .../clicache/UnitTests/ThinClientRegionTests.cs |  2448 +++
 .../UnitTests/ThinClientRegionTestsN.cs         |  3145 ++++
 .../UnitTests/ThinClientSecurityAuthTests.cs    |   836 +
 .../UnitTests/ThinClientSecurityAuthTestsMU.cs  |   844 +
 .../UnitTests/ThinClientSecurityAuthTestsMUN.cs |   843 +
 .../UnitTests/ThinClientSecurityAuthTestsN.cs   |   858 +
 .../ThinClientSecurityAuthzTestBase.cs          |  1042 ++
 .../ThinClientSecurityAuthzTestBaseN.cs         |  1070 ++
 .../UnitTests/ThinClientSecurityAuthzTests.cs   |   794 +
 .../UnitTests/ThinClientSecurityAuthzTestsMU.cs |  1153 ++
 .../ThinClientSecurityAuthzTestsMUN.cs          |  1167 ++
 .../UnitTests/ThinClientSecurityAuthzTestsN.cs  |   789 +
 .../UnitTests/ThinClientStatisticTests.cs       |   274 +
 .../UnitTests/ThinClientStatisticTestsN.cs      |   273 +
 .../UnitTests/ThinClientStringArrayTestsN.cs    |   267 +
 .../src/tests/clicache/UnitTests/Timeouts.xml   |    24 +
 .../clicache/UnitTests/TraderEventListeners.cs  |   432 +
 .../src/tests/clicache/UnitTests/TraderTests.cs |   186 +
 .../src/tests/clicache/UnitTests/UnitTests.cs   |   166 +
 .../clicache/UnitTests/UnitTests.csproj.in      |   767 +
 .../src/tests/clicache/UnitTests/UnitTestsN.cs  |   170 +
 .../cacheserver_notify_subscription_forDoc.xml  |    88 +
 .../cacheserver_with_delta_test_impl.xml        |    21 +
 .../clicache/UnitTests/gfcpp.properties.mixed   |     2 +
 .../UnitTests/gfcpp.properties.nativeclient     |     2 +
 .../tests/clicache/UnitTests/system.properties  |    19 +
 .../clicache/UnitTests/valid_overflowAttr.xml   |   154 +
 .../src/tests/cppcache/BBNamingContext.cpp      |   315 +
 .../src/tests/cppcache/BBNamingContext.hpp      |    36 +
 .../tests/cppcache/BuiltinCacheableWrappers.hpp |  1598 ++
 .../src/tests/cppcache/CMakeLists.txt           |   108 +
 .../src/tests/cppcache/CTestCustom.cmake.in     |     1 +
 .../src/tests/cppcache/CacheHelper.cpp          |  1908 +++
 .../src/tests/cppcache/CacheHelper.hpp          |   266 +
 .../src/tests/cppcache/CacheImplHelper.hpp      |    62 +
 .../src/tests/cppcache/CacheServPoolRedun1.xml  |    23 +
 .../src/tests/cppcache/CacheServPoolRedun2.xml  |    22 +
 .../src/tests/cppcache/CacheServPoolRedun3.xml  |    21 +
 .../src/tests/cppcache/CacheableWrapper.hpp     |   150 +
 .../src/tests/cppcache/DeltaEx.hpp              |   182 +
 .../src/tests/cppcache/GNUmakefile              |   156 +
 .../src/tests/cppcache/InitSmartHeap.cpp        |    16 +
 .../src/tests/cppcache/LibraryCallbacks.cpp     |    54 +
 .../src/tests/cppcache/LocatorHelper.hpp        |   128 +
 .../src/tests/cppcache/MemoryTracker.h          |   144 +
 .../src/tests/cppcache/QueryHelper.hpp          |   354 +
 .../src/tests/cppcache/QueryStrings.hpp         |   443 +
 .../src/tests/cppcache/TallyListener.hpp        |   266 +
 .../src/tests/cppcache/TallyLoader.hpp          |    84 +
 .../src/tests/cppcache/TallyWriter.hpp          |   193 +
 .../src/tests/cppcache/ThinClientCQ.hpp         |    66 +
 .../tests/cppcache/ThinClientCallbackArg.hpp    |   269 +
 .../src/tests/cppcache/ThinClientDistOps.hpp    |  1005 ++
 .../src/tests/cppcache/ThinClientDistOps2.hpp   |   703 +
 .../src/tests/cppcache/ThinClientDurable.hpp    |   592 +
 .../tests/cppcache/ThinClientDurableConnect.hpp |   322 +
 .../cppcache/ThinClientDurableFailover.hpp      |   406 +
 .../tests/cppcache/ThinClientDurableInit.hpp    |   148 +
 .../cppcache/ThinClientDurableInterest.hpp      |   420 +
 .../cppcache/ThinClientDurableReconnect.hpp     |   179 +
 .../src/tests/cppcache/ThinClientFailover.hpp   |   484 +
 .../src/tests/cppcache/ThinClientFailover2.hpp  |   606 +
 .../src/tests/cppcache/ThinClientFailover3.hpp  |   466 +
 .../cppcache/ThinClientFailoverInterest.hpp     |   483 +
 .../cppcache/ThinClientFailoverInterest2.hpp    |   501 +
 .../ThinClientFailoverInterestAllWithCache.hpp  |   675 +
 .../tests/cppcache/ThinClientFailoverRegex.hpp  |   575 +
 .../tests/cppcache/ThinClientGatewayTest.hpp    |   207 +
 .../src/tests/cppcache/ThinClientHeapLRU.hpp    |   259 +
 .../src/tests/cppcache/ThinClientHelper.hpp     |   671 +
 .../src/tests/cppcache/ThinClientInterest1.hpp  |   178 +
 .../src/tests/cppcache/ThinClientInterest2.hpp  |   167 +
 .../src/tests/cppcache/ThinClientInterest3.hpp  |   217 +
 .../cppcache/ThinClientInterest3Cacheless.hpp   |   190 +
 .../tests/cppcache/ThinClientInterestList.hpp   |   490 +
 .../tests/cppcache/ThinClientInterestList2.hpp  |   475 +
 .../tests/cppcache/ThinClientListenerInit.hpp   |   305 +
 .../tests/cppcache/ThinClientListenerWriter.hpp |   698 +
 .../cppcache/ThinClientLocalCacheLoader.hpp     |   255 +
 .../tests/cppcache/ThinClientNotification.hpp   |   561 +
 .../tests/cppcache/ThinClientPdxSerializers.hpp |   288 +
 .../src/tests/cppcache/ThinClientPutAll.hpp     |   893 +
 .../tests/cppcache/ThinClientPutAllTimeout.hpp  |   283 +
 .../cppcache/ThinClientPutAllWithCallBack.hpp   |   894 +
 .../src/tests/cppcache/ThinClientPutGetAll.hpp  |   658 +
 .../ThinClientRIwithlocalRegionDestroy.hpp      |   635 +
 .../src/tests/cppcache/ThinClientRegex.hpp      |   489 +
 .../src/tests/cppcache/ThinClientRegex2.hpp     |   506 +
 .../src/tests/cppcache/ThinClientRegex3.hpp     |   474 +
 .../src/tests/cppcache/ThinClientRemoveAll.hpp  |   480 +
 .../src/tests/cppcache/ThinClientSSL.hpp        |   566 +
 .../cppcache/ThinClientSSLWithPassword.hpp      |   568 +
 .../src/tests/cppcache/ThinClientSecurity.hpp   |   116 +
 .../tests/cppcache/ThinClientSecurityHelper.hpp |   230 +
 .../src/tests/cppcache/ThinClientTXFailover.hpp |   487 +
 .../src/tests/cppcache/ThinClientTasks_C2S2.hpp |   253 +
 .../tests/cppcache/ThinClientTransactions.hpp   |  1212 ++
 .../tests/cppcache/ThinClientTransactionsXA.hpp |  1220 ++
 .../src/tests/cppcache/TimeBomb.hpp             |   123 +
 .../src/tests/cppcache/TraderEventListeners.hpp |   391 +
 .../src/tests/cppcache/buildtest.sh             |    35 +
 .../src/tests/cppcache/cache.xml                |     6 +
 .../src/tests/cppcache/cache4_1.dtd             |   470 +
 .../src/tests/cppcache/cache6_5.dtd             |   861 +
 .../src/tests/cppcache/cache6_6.dtd             |   966 ++
 .../src/tests/cppcache/cache7_0.dtd             |  1003 ++
 .../cppcache/cacheServer_pdxreadserialized.xml  |    20 +
 .../src/tests/cppcache/cache_redundancy.xml     |     5 +
 .../src/tests/cppcache/cacheserver.xml          |    23 +
 .../tests/cppcache/cacheserver1_TradeKey.xml    |    48 +
 .../src/tests/cppcache/cacheserver1_expiry.xml  |    25 +
 .../src/tests/cppcache/cacheserver1_fpr.xml     |    54 +
 .../tests/cppcache/cacheserver1_partitioned.xml |    32 +
 .../cppcache/cacheserver1_partitioned_R1.xml    |    34 +
 .../cacheserver1_partitioned_servergroup.xml    |    31 +
 .../src/tests/cppcache/cacheserver1_pool.xml    |    15 +
 .../src/tests/cppcache/cacheserver1_pr.xml      |    36 +
 .../tests/cppcache/cacheserver1_pr_putall.xml   |    34 +
 .../src/tests/cppcache/cacheserver2.xml         |    17 +
 .../tests/cppcache/cacheserver2_TradeKey.xml    |    48 +
 .../src/tests/cppcache/cacheserver2_fpr.xml     |    55 +
 .../tests/cppcache/cacheserver2_partitioned.xml |    31 +
 .../cppcache/cacheserver2_partitioned_R1.xml    |    33 +
 .../cacheserver2_partitioned_servergroup.xml    |    30 +
 .../src/tests/cppcache/cacheserver2_pool.xml    |    15 +
 .../src/tests/cppcache/cacheserver2_pr.xml      |    37 +
 .../tests/cppcache/cacheserver2_pr_putall.xml   |    33 +
 .../src/tests/cppcache/cacheserver3.xml         |    17 +
 .../tests/cppcache/cacheserver3_TradeKey.xml    |    48 +
 .../src/tests/cppcache/cacheserver3_fpr.xml     |    54 +
 .../tests/cppcache/cacheserver3_partitioned.xml |    32 +
 .../cacheserver3_partitioned_servergroup.xml    |    31 +
 .../src/tests/cppcache/cacheserver3_pool.xml    |    16 +
 .../src/tests/cppcache/cacheserver3_pr.xml      |    36 +
 .../tests/cppcache/cacheserver3_pr_putall.xml   |    34 +
 .../src/tests/cppcache/cacheserver4.xml         |    29 +
 .../tests/cppcache/cacheserver4_pr_putall.xml   |    34 +
 .../tests/cppcache/cacheserverDurableCqs.xml    |    10 +
 .../src/tests/cppcache/cacheserverForPdx.xml    |    32 +
 .../cppcache/cacheserverForPdxWithAuto.xml      |    32 +
 .../src/tests/cppcache/cacheserverMDS1.xml      |    15 +
 .../src/tests/cppcache/cacheserverMDS2.xml      |    14 +
 .../src/tests/cppcache/cacheserverPdx.xml       |    32 +
 .../src/tests/cppcache/cacheserverPdx2.xml      |    32 +
 .../tests/cppcache/cacheserverPdxSerializer.xml |    20 +
 .../cacheserver_concurrency_enabled1.xml        |    14 +
 .../cacheserver_concurrency_enabled2.xml        |    14 +
 .../cacheserver_concurrency_enabled_disk1.xml   |    17 +
 .../cacheserver_concurrency_enabled_disk2.xml   |    17 +
 ...rver_concurrency_enabled_disk_replicate1.xml |    17 +
 ...rver_concurrency_enabled_disk_replicate2.xml |    17 +
 .../tests/cppcache/cacheserver_conflation.xml   |    15 +
 .../src/tests/cppcache/cacheserver_hashcode.xml |    25 +
 .../cppcache/cacheserver_interest_notify.xml    |    18 +
 .../src/tests/cppcache/cacheserver_loader.xml   |    20 +
 .../cacheserver_notify_subscription.xml         |    35 +
 .../cacheserver_notify_subscription2.xml        |    35 +
 .../cacheserver_notify_subscription3.xml        |    22 +
 .../cacheserver_notify_subscription4.xml        |    22 +
 .../cacheserver_notify_subscription5.xml        |   136 +
 .../cacheserver_notify_subscription5N.xml       |   136 +
 .../cacheserver_notify_subscription6.xml        |    44 +
 .../cacheserver_notify_subscriptionBug849.xml   |    32 +
 ...server_notify_subscription_PutAllTimeout.xml |    26 +
 .../cacheserver_pdxinstance_hashcode.xml        |    32 +
 .../tests/cppcache/cacheserver_pool_client.xml  |    41 +
 .../tests/cppcache/cacheserver_remoteoql.xml    |    75 +
 .../tests/cppcache/cacheserver_remoteoql2.xml   |    75 +
 .../tests/cppcache/cacheserver_remoteoql2N.xml  |    75 +
 .../tests/cppcache/cacheserver_remoteoqlN.xml   |    75 +
 .../tests/cppcache/cacheserver_servergroup.xml  |    17 +
 .../tests/cppcache/cacheserver_servergroup2.xml |    17 +
 .../tests/cppcache/cacheserver_with_delta.xml   |    40 +
 .../tests/cppcache/cacheserver_with_deltaAD.xml |    25 +
 .../cacheserver_with_delta_test_impl.xml        |    21 +
 .../src/tests/cppcache/client_Loader.xml        |    13 +
 .../tests/cppcache/client_generics_plugins.xml  |    37 +
 .../src/tests/cppcache/client_pdx.xml           |    24 +
 .../src/tests/cppcache/client_pool.xml          |    26 +
 .../client_server_persistent_transactions.xml   |    13 +
 .../cppcache/client_server_transactions.xml     |    19 +
 .../src/tests/cppcache/comparePerf.pl           |    87 +
 .../src/tests/cppcache/cqqueryfailover.xml      |    91 +
 .../tests/cppcache/func_cacheserver1_pool.xml   |    76 +
 .../tests/cppcache/func_cacheserver2_pool.xml   |    76 +
 .../tests/cppcache/func_cacheserver3_pool.xml   |    68 +
 .../src/tests/cppcache/fw_dunit.cpp             |  1363 ++
 .../src/tests/cppcache/fw_dunit.hpp             |   271 +
 .../src/tests/cppcache/fw_helper.hpp            |   219 +
 .../src/tests/cppcache/fw_perf.hpp              |   270 +
 .../src/tests/cppcache/fw_spawn.hpp             |   131 +
 .../src/tests/cppcache/gateway1.xml             |    37 +
 .../src/tests/cppcache/gateway2.xml             |    37 +
 .../src/tests/cppcache/invalid_cache1.xml       |    10 +
 .../src/tests/cppcache/invalid_cache2.xml       |    11 +
 .../src/tests/cppcache/invalid_cache3.xml       |    11 +
 .../src/tests/cppcache/invalid_cache_pool.xml   |    65 +
 .../src/tests/cppcache/invalid_cache_pool2.xml  |    65 +
 .../src/tests/cppcache/invalid_cache_pool3.xml  |    65 +
 .../src/tests/cppcache/invalid_cache_pool4.xml  |    68 +
 .../tests/cppcache/invalid_overflowAttr1.xml    |    11 +
 .../tests/cppcache/invalid_overflowAttr2.xml    |    16 +
 .../tests/cppcache/invalid_overflowAttr3.xml    |    19 +
 .../keystore/client_keystore.password.pem       |    48 +
 .../tests/cppcache/keystore/client_keystore.pem |    45 +
 .../cppcache/keystore/client_truststore.pem     |    16 +
 .../src/tests/cppcache/keystore/gemfire.pem     |   176 +
 .../tests/cppcache/keystore/gemfire1.keystore   |   Bin 0 -> 1536 bytes
 .../tests/cppcache/keystore/gemfire10.keystore  |   Bin 0 -> 1546 bytes
 .../tests/cppcache/keystore/gemfire11.keystore  |   Bin 0 -> 1546 bytes
 .../tests/cppcache/keystore/gemfire2.keystore   |   Bin 0 -> 1536 bytes
 .../tests/cppcache/keystore/gemfire3.keystore   |   Bin 0 -> 1536 bytes
 .../tests/cppcache/keystore/gemfire4.keystore   |   Bin 0 -> 1536 bytes
 .../tests/cppcache/keystore/gemfire5.keystore   |   Bin 0 -> 1536 bytes
 .../tests/cppcache/keystore/gemfire6.keystore   |   Bin 0 -> 1536 bytes
 .../tests/cppcache/keystore/gemfire7.keystore   |   Bin 0 -> 1536 bytes
 .../tests/cppcache/keystore/gemfire8.keystore   |   Bin 0 -> 1536 bytes
 .../tests/cppcache/keystore/gemfire9.keystore   |   Bin 0 -> 1536 bytes
 .../src/tests/cppcache/keystore/publickeyfile   |   Bin 0 -> 4535 bytes
 .../tests/cppcache/keystore/server_keystore.jks |   Bin 0 -> 2102 bytes
 .../cppcache/keystore/server_truststore.jks     |   Bin 0 -> 1596 bytes
 .../cppcache/multi_get_function_server.xml      |    29 +
 .../src/tests/cppcache/no_cout.hpp              |    84 +
 .../tests/cppcache/regionquery_diffconfig.xml   |    76 +
 .../tests/cppcache/regionquery_diffconfig2.xml  |    76 +
 .../tests/cppcache/regionquery_diffconfig2N.xml |    76 +
 .../cppcache/regionquery_diffconfig2_SG.xml     |    78 +
 .../tests/cppcache/regionquery_diffconfigN.xml  |    76 +
 .../cppcache/regionquery_diffconfig_SG.xml      |    78 +
 .../src/tests/cppcache/remotequery.xml          |    94 +
 .../src/tests/cppcache/remotequery2.xml         |    94 +
 .../src/tests/cppcache/remotequeryN.xml         |    91 +
 .../src/tests/cppcache/serverDurableClient.xml  |    15 +
 .../src/tests/cppcache/system.properties        |    24 +
 .../src/tests/cppcache/test.bat.in              |    33 +
 .../src/tests/cppcache/test.sh.in               |    35 +
 .../tests/cppcache/testAttributesFactory.cpp    |   131 +
 .../tests/cppcache/testAttributesMutator.cpp    |    72 +
 .../src/tests/cppcache/testCache.cpp            |   234 +
 .../src/tests/cppcache/testCacheless.cpp        |   246 +
 .../src/tests/cppcache/testConnect.cpp          |    32 +
 .../tests/cppcache/testCreateAndDestroyPool.cpp |    89 +
 .../src/tests/cppcache/testDataOutput.cpp       |   282 +
 .../src/tests/cppcache/testDunit.cpp            |    85 +
 .../src/tests/cppcache/testEntriesMap.cpp       |   477 +
 .../cppcache/testEntriesMapForVersioning.cpp    |  1277 ++
 .../src/tests/cppcache/testExpiration.cpp       |   388 +
 .../src/tests/cppcache/testFWHelper.cpp         |    19 +
 .../src/tests/cppcache/testFwPerf.cpp           |    70 +
 .../src/tests/cppcache/testHeaders.sh           |    46 +
 .../src/tests/cppcache/testLRUList.cpp          |   182 +
 .../src/tests/cppcache/testLinkage.cpp          |    85 +
 .../src/tests/cppcache/testLogger.cpp           |   344 +
 .../tests/cppcache/testMixedHACPPRegions.cpp    |   467 +
 .../tests/cppcache/testNativeCompareBasic.cpp   |    55 +
 .../tests/cppcache/testOverflowPutGetSqLite.cpp |   704 +
 .../cppcache/testRegionAccessThreadSafe.cpp     |   147 +
 .../src/tests/cppcache/testRegionMap.cpp        |   213 +
 .../tests/cppcache/testRegionTemplateArgs.cpp   |   800 +
 .../src/tests/cppcache/testSerialization.cpp    |   305 +
 .../src/tests/cppcache/testSharedPtr.cpp        |   108 +
 .../src/tests/cppcache/testSpinLock.cpp         |   165 +
 .../src/tests/cppcache/testSystemProperties.cpp |   148 +
 .../cppcache/testThinClientAfterRegionLive.cpp  |   217 +
 .../testThinClientBackwardCompatibility.cpp     |   157 +
 .../tests/cppcache/testThinClientBigValue.cpp   |   368 +
 .../testThinClientCacheableStringArray.cpp      |   200 +
 .../tests/cppcache/testThinClientCacheables.cpp |   307 +
 .../cppcache/testThinClientCacheablesLimits.cpp |   203 +
 .../cppcache/testThinClientCallbackArg.cpp      |     8 +
 .../cppcache/testThinClientClearRegion.cpp      |   157 +
 .../tests/cppcache/testThinClientConflation.cpp |   320 +
 .../testThinClientContainsKeyOnServer.cpp       |    85 +
 .../src/tests/cppcache/testThinClientCq.cpp     |  1400 ++
 .../tests/cppcache/testThinClientCqDelta.cpp    |   292 +
 .../tests/cppcache/testThinClientCqDurable.cpp  |  1173 ++
 .../tests/cppcache/testThinClientCqFailover.cpp |   545 +
 .../cppcache/testThinClientCqHAFailover.cpp     |   588 +
 .../src/tests/cppcache/testThinClientCqIR.cpp   |   517 +
 .../testThinClientDeltaWithNotification.cpp     |   506 +
 .../testThinClientDisconnectionListioner.cpp    |    87 +
 .../tests/cppcache/testThinClientDistOps.cpp    |    30 +
 .../tests/cppcache/testThinClientDistOps2.cpp   |     9 +
 .../tests/cppcache/testThinClientDurable.cpp    |     9 +
 .../cppcache/testThinClientDurableConnect.cpp   |     9 +
 .../cppcache/testThinClientDurableFailover.cpp  |    10 +
 .../cppcache/testThinClientDurableInterest.cpp  |    10 +
 .../cppcache/testThinClientDurableReconnect.cpp |    10 +
 .../testThinClientExecuteFunctionPrSHOP.cpp     |   645 +
 .../tests/cppcache/testThinClientFailover.cpp   |    10 +
 .../tests/cppcache/testThinClientFailover2.cpp  |     9 +
 .../tests/cppcache/testThinClientFailover3.cpp  |    10 +
 .../cppcache/testThinClientFailoverInterest.cpp |     9 +
 .../testThinClientFailoverInterest2.cpp         |     8 +
 ...stThinClientFailoverInterestAllWithCache.cpp |     8 +
 .../cppcache/testThinClientFailoverRegex.cpp    |     9 +
 .../testThinClientFixedPartitionResolver.cpp    |   605 +
 .../src/tests/cppcache/testThinClientGFMOn.cpp  |   225 +
 .../cppcache/testThinClientGatewayTest.cpp      |     9 +
 .../cppcache/testThinClientGetInterests.cpp     |   127 +
 .../tests/cppcache/testThinClientHADistOps.cpp  |   736 +
 .../cppcache/testThinClientHAEventIDMap.cpp     |   617 +
 .../tests/cppcache/testThinClientHAFailover.cpp |   731 +
 .../cppcache/testThinClientHAFailoverRegex.cpp  |   690 +
 .../testThinClientHAMixedRedundancy.cpp         |   567 +
 .../cppcache/testThinClientHAPeriodicAck.cpp    |   600 +
 .../cppcache/testThinClientHAQueryFailover.cpp  |   362 +
 .../tests/cppcache/testThinClientHeapLRU.cpp    |   171 +
 .../cppcache/testThinClientIntResPolKeysInv.cpp |   421 +
 .../tests/cppcache/testThinClientInterest1.cpp  |    11 +
 .../testThinClientInterest1Cacheless.cpp        |   141 +
 .../testThinClientInterest1_Bug1001.cpp         |   274 +
 .../tests/cppcache/testThinClientInterest2.cpp  |    11 +
 .../cppcache/testThinClientInterest2Pooled.cpp  |    10 +
 .../tests/cppcache/testThinClientInterest3.cpp  |    11 +
 .../testThinClientInterest3Cacheless.cpp        |    10 +
 .../cppcache/testThinClientInterestList.cpp     |    11 +
 .../cppcache/testThinClientInterestList2.cpp    |    11 +
 .../cppcache/testThinClientInterestNotify.cpp   |   590 +
 .../cppcache/testThinClientLRUExpiration.cpp    |  1100 ++
 .../testThinClientListenerCallbackArgTest.cpp   |   584 +
 .../cppcache/testThinClientListenerEvents.cpp   |   153 +
 .../cppcache/testThinClientListenerInit.cpp     |    11 +
 .../cppcache/testThinClientListenerWriter.cpp   |    11 +
 .../cppcache/testThinClientLocalCacheLoader.cpp |     8 +
 .../tests/cppcache/testThinClientLocator.cpp    |   124 +
 .../cppcache/testThinClientLocatorFailover.cpp  |   239 +
 .../tests/cppcache/testThinClientMultiDS.cpp    |   401 +
 .../cppcache/testThinClientNotification.cpp     |     9 +
 ...nClientNotificationWithDeltaWithoutcache.cpp |   246 +
 .../cppcache/testThinClientPRPutAllFailover.cpp |   713 +
 .../cppcache/testThinClientPRSingleHop.cpp      |  1419 ++
 .../testThinClientPRSingleHopServerGroup.cpp    |   726 +
 .../testThinClientPartitionResolver.cpp         |   502 +
 .../tests/cppcache/testThinClientPdxEnum.cpp    |   219 +
 .../cppcache/testThinClientPdxInstance.cpp      |  2383 +++
 .../cppcache/testThinClientPdxSerializer.cpp    |  2486 +++
 .../tests/cppcache/testThinClientPdxTests.cpp   |  3928 +++++
 .../cppcache/testThinClientPdxTestsAuto.cpp     |   307 +
 .../cppcache/testThinClientPdxTestsWithAuto.cpp |  3026 ++++
 .../cppcache/testThinClientPoolAttrTest.cpp     |   304 +
 .../testThinClientPoolExecuteFunction.cpp       |  1488 ++
 .../testThinClientPoolExecuteFunctionPrSHOP.cpp |  1197 ++
 .../testThinClientPoolExecuteHAFunction.cpp     |   526 +
 ...estThinClientPoolExecuteHAFunctionPrSHOP.cpp |   489 +
 .../cppcache/testThinClientPoolLocator.cpp      |   230 +
 .../cppcache/testThinClientPoolRedundancy.cpp   |   351 +
 .../cppcache/testThinClientPoolRegInterest.cpp  |    96 +
 .../tests/cppcache/testThinClientPoolServer.cpp |   170 +
 .../src/tests/cppcache/testThinClientPutAll.cpp |    14 +
 .../testThinClientPutAllPRSingleHop.cpp         |   432 +
 .../cppcache/testThinClientPutAllTimeout.cpp    |    10 +
 .../testThinClientPutAllWithCallBckArg.cpp      |    14 +
 .../tests/cppcache/testThinClientPutGetAll.cpp  |     8 +
 .../cppcache/testThinClientPutWithDelta.cpp     |   242 +
 .../testThinClientRIwithlocalRegionDestroy.cpp  |    28 +
 .../src/tests/cppcache/testThinClientRegex.cpp  |     9 +
 .../src/tests/cppcache/testThinClientRegex2.cpp |    11 +
 .../src/tests/cppcache/testThinClientRegex3.cpp |     9 +
 ...nClientRegionQueryDifferentServerConfigs.cpp |   354 +
 .../testThinClientRegionQueryExclusiveness.cpp  |   227 +
 .../testThinClientRemoteQueryFailover.cpp       |   417 +
 .../cppcache/testThinClientRemoteQueryRS.cpp    |   613 +
 .../cppcache/testThinClientRemoteQuerySS.cpp    |   707 +
 .../testThinClientRemoteQueryTimeout.cpp        |   613 +
 .../testThinClientRemoteRegionQuery.cpp         |   605 +
 .../tests/cppcache/testThinClientRemoveAll.cpp  |    14 +
 .../tests/cppcache/testThinClientRemoveOps.cpp  |  1537 ++
 .../src/tests/cppcache/testThinClientSSL.cpp    |    13 +
 .../cppcache/testThinClientSSLWithPassword.cpp  |    13 +
 .../testThinClientSSLWithSecurityAuthz.cpp      |   696 +
 .../testThinClientSecurityAuthentication.cpp    |   585 +
 .../testThinClientSecurityAuthenticationMU.cpp  |   637 +
 .../testThinClientSecurityAuthorization.cpp     |   781 +
 .../testThinClientSecurityAuthorizationMU.cpp   |  1153 ++
 .../testThinClientSecurityCQAuthorization.cpp   |   610 +
 .../testThinClientSecurityCQAuthorizationMU.cpp |   593 +
 .../tests/cppcache/testThinClientSecurityDH.cpp |   570 +
 .../cppcache/testThinClientSecurityDH_MU.cpp    |   600 +
 ...inClientSecurityDurableCQAuthorizationMU.cpp |   711 +
 .../testThinClientSecurityMultiUserTest.cpp     |   592 +
 .../testThinClientSecurityPostAuthorization.cpp |   490 +
 .../tests/cppcache/testThinClientStatistics.cpp |   515 +
 .../tests/cppcache/testThinClientTXFailover.cpp |    10 +
 .../tests/cppcache/testThinClientTicket303.cpp  |   106 +
 .../tests/cppcache/testThinClientTicket304.cpp  |   197 +
 .../tests/cppcache/testThinClientTicket317.cpp  |   120 +
 .../tests/cppcache/testThinClientTracking.cpp   |   261 +
 .../cppcache/testThinClientTransactions.cpp     |    18 +
 .../cppcache/testThinClientTransactionsXA.cpp   |    18 +
 .../cppcache/testThinClientVersionedOps.cpp     |   612 +
 .../cppcache/testThinClientWriterException.cpp  |   272 +
 .../src/tests/cppcache/testTimedSemaphore.cpp   |   134 +
 .../src/tests/cppcache/testUtils.hpp            |   192 +
 .../testXmlCacheCreationWithOverFlow.cpp        |   346 +
 .../cppcache/testXmlCacheCreationWithPools.cpp  |   598 +
 .../cppcache/testXmlCacheCreationWithRefid.cpp  |   271 +
 .../src/tests/cppcache/traderTasks.hpp          |   248 +
 .../src/tests/cppcache/unicast.xml              |   807 +
 .../src/tests/cppcache/valid_cache.xml          |    65 +
 .../src/tests/cppcache/valid_cache_pool.xml     |    68 +
 .../src/tests/cppcache/valid_cache_refid.xml    |    62 +
 .../tests/cppcache/valid_cache_region_refid.xml |    60 +
 .../valid_declarative_cache_creation.xml        |    13 +
 .../src/tests/cppcache/valid_lruExpiration.xml  |   245 +
 .../src/tests/cppcache/valid_overflowAttr.xml   |   103 +
 .../src/tests/fwk/CMakeLists.txt                |    31 +
 geode-client-native/src/tests/fwk/GNUmakefile   |    13 +
 geode-client-native/src/tests/fwk/UdpIpc.cpp    |   255 +
 geode-client-native/src/tests/fwk/UdpIpc.hpp    |    81 +
 .../src/tests/fwklib/CMakeLists.txt             |    38 +
 .../src/tests/fwklib/ClientTask.hpp             |   147 +
 .../src/tests/fwklib/FrameworkTest.cpp          |   567 +
 .../src/tests/fwklib/FrameworkTest.hpp          |   275 +
 geode-client-native/src/tests/fwklib/FwkBB.hpp  |   230 +
 .../src/tests/fwklib/FwkBBClient.cpp            |   247 +
 .../src/tests/fwklib/FwkBBClient.hpp            |   175 +
 .../src/tests/fwklib/FwkBBServer.cpp            |   525 +
 .../src/tests/fwklib/FwkBBServer.hpp            |   212 +
 .../src/tests/fwklib/FwkException.hpp           |    60 +
 .../src/tests/fwklib/FwkExport.hpp              |    22 +
 geode-client-native/src/tests/fwklib/FwkLog.cpp |    76 +
 geode-client-native/src/tests/fwklib/FwkLog.hpp |    89 +
 .../src/tests/fwklib/FwkObjects.cpp             |  1056 ++
 .../src/tests/fwklib/FwkObjects.hpp             |  1717 ++
 .../src/tests/fwklib/FwkStrCvt.cpp              |   162 +
 .../src/tests/fwklib/FwkStrCvt.hpp              |   348 +
 .../src/tests/fwklib/GNUmakefile                |    13 +
 .../src/tests/fwklib/GsRandom.cpp               |   110 +
 .../src/tests/fwklib/GsRandom.hpp               |   222 +
 .../src/tests/fwklib/IpcHandler.cpp             |   262 +
 .../src/tests/fwklib/IpcHandler.hpp             |    79 +
 .../src/tests/fwklib/MersenneTwister.cpp        |   355 +
 .../src/tests/fwklib/MersenneTwister.hpp        |   186 +
 .../src/tests/fwklib/PaceMeter.hpp              |   120 +
 .../src/tests/fwklib/PerfFwk.cpp                |   200 +
 .../src/tests/fwklib/PerfFwk.hpp                |   336 +
 .../src/tests/fwklib/PoolHelper.hpp             |   140 +
 .../src/tests/fwklib/QueryHelper.hpp            |   865 +
 .../src/tests/fwklib/RegionHelper.hpp           |   258 +
 .../src/tests/fwklib/Service.cpp                |    59 +
 .../src/tests/fwklib/Service.hpp                |   155 +
 .../src/tests/fwklib/TaskClient.cpp             |   110 +
 .../src/tests/fwklib/TaskClient.hpp             |   177 +
 geode-client-native/src/tests/fwklib/TcpIpc.cpp |   208 +
 geode-client-native/src/tests/fwklib/TcpIpc.hpp |    63 +
 .../src/tests/fwklib/TestClient.cpp             |   271 +
 .../src/tests/fwklib/TestClient.hpp             |   107 +
 .../src/tests/fwklib/TimeBomb.cpp               |   128 +
 .../src/tests/fwklib/TimeBomb.hpp               |    71 +
 .../src/tests/fwklib/TimeLimit.hpp              |    40 +
 .../src/tests/fwklib/TimeSync.cpp               |   239 +
 .../src/tests/fwklib/TimeSync.hpp               |    83 +
 geode-client-native/src/tests/fwklib/Timer.hpp  |   169 +
 geode-client-native/src/tests/fwklib/UDPIpc.cpp |   438 +
 geode-client-native/src/tests/fwklib/UDPIpc.hpp |   314 +
 .../src/tests/fwklib/testframeworkdox.txt       |    25 +
 .../AutoPdxVersioned1.cpp                       |   467 +
 .../AutoPdxVersioned1.hpp                       |   474 +
 .../AutoPdxVersioned2.cpp                       |   293 +
 .../AutoPdxVersioned2.hpp                       |   362 +
 .../tests/pdxautoserializerclass/CMakeLists.txt |    53 +
 .../tests/pdxautoserializerclass/GNUmakefile    |   154 +
 .../pdxautoserializerclass/PortfolioPdx.cpp     |   191 +
 .../pdxautoserializerclass/PortfolioPdx.hpp     |   128 +
 .../pdxautoserializerclass/PositionPdx.cpp      |   173 +
 .../pdxautoserializerclass/PositionPdx.hpp      |   108 +
 .../tests/pdxautoserializerclass/buildit.bat    |    50 +
 .../src/tests/pdxautoserializerclass/buildit.sh |    92 +
 .../src/tests/security/CMakeLists.txt           |    37 +
 .../src/tests/security/CredentialGenerator.cpp  |    40 +
 .../src/tests/security/CredentialGenerator.hpp  |   237 +
 .../tests/security/DummyCredentialGenerator.hpp |    99 +
 .../security/DummyCredentialGenerator2.hpp      |    98 +
 .../security/DummyCredentialGenerator3.hpp      |    98 +
 .../src/tests/security/GNUmakefile              |    13 +
 .../security/LdapUserCredentialGenerator.hpp    |   109 +
 .../tests/security/NoopCredentialGenerator.hpp  |    60 +
 .../src/tests/security/PkcsAuthInit.cpp         |   202 +
 .../src/tests/security/PkcsAuthInit.hpp         |   100 +
 .../tests/security/PkcsCredentialGenerator.hpp  |   141 +
 .../src/tests/security/Security.cpp             |  1018 ++
 .../src/tests/security/Security.hpp             |   110 +
 .../security/XmlAuthzCredentialGenerator.hpp    |   293 +
 .../src/tests/security/typedefs.hpp             |   118 +
 .../src/tests/testobject/ArrayOfByte.hpp        |   120 +
 .../src/tests/testobject/BatchObject.cpp        |    46 +
 .../src/tests/testobject/BatchObject.hpp        |    93 +
 .../src/tests/testobject/CMakeLists.txt         |    83 +
 .../tests/testobject/DeltaFastAssetAccount.cpp  |    74 +
 .../tests/testobject/DeltaFastAssetAccount.hpp  |   152 +
 .../src/tests/testobject/DeltaPSTObject.cpp     |    58 +
 .../src/tests/testobject/DeltaPSTObject.hpp     |   100 +
 .../src/tests/testobject/DeltaTestImpl.cpp      |   132 +
 .../src/tests/testobject/DeltaTestImpl.hpp      |   136 +
 .../src/tests/testobject/DeltaTestObj.hpp       |    94 +
 .../src/tests/testobject/EqStruct.cpp           |   200 +
 .../src/tests/testobject/EqStruct.hpp           |   153 +
 .../src/tests/testobject/FastAsset.cpp          |    31 +
 .../src/tests/testobject/FastAsset.hpp          |   121 +
 .../src/tests/testobject/FastAssetAccount.cpp   |    61 +
 .../src/tests/testobject/FastAssetAccount.hpp   |   126 +
 .../src/tests/testobject/GNUmakefile            |    13 +
 .../src/tests/testobject/InvalidPdxUsage.cpp    |   799 +
 .../src/tests/testobject/InvalidPdxUsage.hpp    |   780 +
 .../src/tests/testobject/NestedPdxObject.cpp    |   180 +
 .../src/tests/testobject/NestedPdxObject.hpp    |   370 +
 .../src/tests/testobject/NonPdxType.cpp         |   139 +
 .../src/tests/testobject/NonPdxType.hpp         |   580 +
 .../src/tests/testobject/NoopAuthInit.cpp       |    33 +
 .../src/tests/testobject/NoopAuthInit.hpp       |    75 +
 .../src/tests/testobject/PSTObject.cpp          |    53 +
 .../src/tests/testobject/PSTObject.hpp          |    88 +
 .../src/tests/testobject/PdxAutoMegaType.cpp    |   511 +
 .../src/tests/testobject/PdxAutoMegaType.hpp    |   120 +
 .../src/tests/testobject/PdxClassV1.cpp         |   790 +
 .../src/tests/testobject/PdxClassV1.hpp         |   573 +
 .../src/tests/testobject/PdxClassV1WithAuto.cpp |   783 +
 .../src/tests/testobject/PdxClassV1WithAuto.hpp |   575 +
 .../src/tests/testobject/PdxClassV2.cpp         |   827 +
 .../src/tests/testobject/PdxClassV2.hpp         |   604 +
 .../src/tests/testobject/PdxClassV2WithAuto.cpp |   836 +
 .../src/tests/testobject/PdxClassV2WithAuto.hpp |   607 +
 .../src/tests/testobject/PdxType.cpp            |   350 +
 .../src/tests/testobject/PdxType.hpp            |   937 ++
 .../src/tests/testobject/PdxTypeWithAuto.cpp    |   322 +
 .../src/tests/testobject/PdxTypeWithAuto.hpp    |   875 +
 .../src/tests/testobject/PdxVersioned1.cpp      |   438 +
 .../src/tests/testobject/PdxVersioned1.hpp      |   353 +
 .../src/tests/testobject/PdxVersioned2.cpp      |   448 +
 .../src/tests/testobject/PdxVersioned2.hpp      |   358 +
 .../src/tests/testobject/Portfolio.cpp          |   136 +
 .../src/tests/testobject/Portfolio.hpp          |   155 +
 .../src/tests/testobject/PortfolioPdx.cpp       |   192 +
 .../src/tests/testobject/PortfolioPdx.hpp       |   126 +
 .../src/tests/testobject/Position.cpp           |   129 +
 .../src/tests/testobject/Position.hpp           |   110 +
 .../src/tests/testobject/PositionPdx.cpp        |   176 +
 .../src/tests/testobject/PositionPdx.hpp        |   111 +
 .../src/tests/testobject/TestObject1.cpp        |    66 +
 .../src/tests/testobject/TestObject1.hpp        |    64 +
 .../src/tests/testobject/TimestampedObject.hpp  |    44 +
 .../src/tests/testobject/VariousPdxTypes.cpp    |   862 +
 .../src/tests/testobject/VariousPdxTypes.hpp    |   528 +
 .../testobject/VariousPdxTypesWithAuto.cpp      |   860 +
 .../testobject/VariousPdxTypesWithAuto.hpp      |   533 +
 .../src/tests/xml/64bit/csAckMirror.xml         |    10 +
 .../src/tests/xml/64bit/memoryMeasurement.xml   |    96 +
 .../AppDomainTest/clientEventsAppDomainTest.xml |   113 +
 .../clientEventsFailoverAppDomain.xml           |   174 +
 .../clientEventsHAFailoverAppDomain.xml         |   175 +
 .../xml/AppDomainTest/getAllAppDomainTest.xml   |   174 +
 .../perfClientsUpdateAppDomainTest.xml          |   108 +
 .../AppDomainTest/putGetAllAppDomainTest.xml    |   174 +
 .../src/tests/xml/Bugs/1.0RC1/33104.xml         |   204 +
 .../src/tests/xml/Bugs/1.0RC1/33104N.xml        |   204 +
 .../src/tests/xml/Bugs/1.0RC1/33122.xml         |   276 +
 .../src/tests/xml/Bugs/1.0RC1/33165.xml         |    73 +
 .../src/tests/xml/Bugs/1.0RC1/33165AM.xml       |    27 +
 .../src/tests/xml/Bugs/1.0RC1/33165ANM.xml      |    25 +
 .../src/tests/xml/Bugs/1.0RC1/33165L.xml        |    25 +
 .../src/tests/xml/Bugs/1.0RC1/33165NM.xml       |    25 +
 .../src/tests/xml/Bugs/1.0RC1/33165NNM.xml      |    27 +
 .../src/tests/xml/Bugs/1.0RC1/33166.xml         |   177 +
 .../src/tests/xml/Bugs/1.0RC1/33169.xml         |    49 +
 .../src/tests/xml/Bugs/1.0RC1/33183.xml         |    67 +
 .../src/tests/xml/Bugs/1.0RC1/33192.xml         |    80 +
 .../src/tests/xml/Bugs/1.0RC1/33198.xml         |   277 +
 .../src/tests/xml/Bugs/1.0RC1/33242.xml         |   370 +
 .../src/tests/xml/Bugs/1.0RC1/33502.xml         |    52 +
 .../src/tests/xml/Bugs/1.0RC1/34207.xml         |    51 +
 .../src/tests/xml/Bugs/1.0RC1/34419.xml         |   117 +
 .../src/tests/xml/Bugs/1.0RC1/cacheClose.xml    |   236 +
 .../tests/xml/Bugs/1.0RC1/perfTest_bug33789.xml |   161 +
 .../src/tests/xml/Bugs/32152.xml                |  1598 ++
 .../src/tests/xml/Bugs/33201.xml                |    87 +
 .../src/tests/xml/Bugs/34647.xml                |    63 +
 .../src/tests/xml/CqQuery/concCQMTTest.xml      |   109 +
 .../src/tests/xml/CqQuery/cqDurableQS.xml       |   183 +
 .../src/tests/xml/CqQuery/csAckMirror.xml       |    14 +
 .../tests/xml/CqQuery/durableCqFailoverR2.xml   |   208 +
 .../tests/xml/CqQuery/durableTimeoutWithCq.xml  |   147 +
 .../tests/xml/CqQuery/durableWithCqKAFalse.xml  |   148 +
 .../tests/xml/CqQuery/durableWithCqKATrue.xml   |   148 +
 .../src/tests/xml/CqQuery/multRegCQOps.xml      |   127 +
 .../CqQuery/multRegServerFailoverAndCQOps.xml   |   157 +
 .../CqQuery/registerAllKeysGIIValueCqTest.xml   |   205 +
 .../xml/CqQuery/resultSetValidationCQTest.xml   |   139 +
 .../src/tests/xml/CqQuery/serialCQMTTest.xml    |   110 +
 .../src/tests/xml/CqQuery/serialEntryEvent.xml  |   216 +
 .../CqQuery/serialEntryEventWithRegInterest.xml |   216 +
 .../serialMultRegOpsCQListenerWithFeeder.xml    |   236 +
 .../xml/CqQuery/serverFailoverAndCQOps.xml      |   149 +
 .../src/tests/xml/CqQuery/singleRegCQOps.xml    |   120 +
 .../xml/Delta/cacheserver_with_deltaobj.xml     |    22 +
 .../src/tests/xml/Delta/csDeltaEviction.xml     |    33 +
 .../src/tests/xml/Delta/csDeltaNoConflate.xml   |    23 +
 .../src/tests/xml/Delta/csDeltaOverflow.xml     |    25 +
 .../src/tests/xml/Delta/csDeltaPR.xml           |    28 +
 .../xml/Delta/deltaPropogationFailoverForPR.xml |   185 +
 .../deltaPropogationFailoverNoConflation.xml    |   187 +
 .../tests/xml/Delta/deltaPropogationForPR.xml   |   122 +
 .../xml/Delta/deltaPropogationNoConflation.xml  |   148 +
 .../Delta/deltaPropogationWithEvictionForPR.xml |   125 +
 .../xml/Delta/deltaPropogationWithOverFlow.xml  |   181 +
 .../src/tests/xml/Delta/deltaSampleTest.xml     |   106 +
 .../src/tests/xml/DurableClient/csAckMirror.xml |    10 +
 .../xml/DurableClient/csNotifySubsNoLimit.xml   |    14 +
 .../xml/DurableClient/csNotifySubscription.xml  |    14 +
 .../xml/DurableClient/durableFailoverR2.xml     |   257 +
 .../DurableClient/durableNonDurableCrash.xml    |   253 +
 .../DurableClient/durableNonDurableKAFalse.xml  |   218 +
 .../DurableClient/durableNonDurableKATrue.xml   |   221 +
 .../DurableClient/durableNonDurableTimeout.xml  |   221 +
 .../durablePR/csNotifySubsNoLimit.xml           |    12 +
 .../durablePR/csNotifySubscription.xml          |    12 +
 .../durablePR/durableFailoverR2.xml             |   256 +
 .../durablePR/durableNonDurableCrash.xml        |   264 +
 .../durablePR/durableNonDurableKAFalse.xml      |   229 +
 .../durablePR/durableNonDurableKATrue.xml       |   232 +
 .../durablePR/durableNonDurableTimeout.xml      |   233 +
 .../xml/DurableClient/durablePerfEventCount.xml |   136 +
 .../durablePerfPutGetThroughput.xml             |   122 +
 .../DurableClient/durablePerfVariableTest.xml   |   128 +
 .../DurableClient/durablePerfVariableTest2.xml  |   211 +
 .../durablePerfVariableTestWithHLRU.xml         |   222 +
 .../xml/FunctionExecution/FEPRSingleHop.xml     |   193 +
 .../FESingleHopNonOptimized.xml                 |   139 +
 .../FunctionExecution/FESingleHopOptimized.xml  |   139 +
 .../xml/FunctionExecution/csEmptyDataPolicy.xml |    25 +
 .../FunctionExecution/csFEPartitionedRegion.xml |    36 +
 .../xml/FunctionExecution/csPartitionRegion.xml |    32 +
 .../csPartitionRegionForFEHA.xml                |    17 +
 .../xml/FunctionExecution/csReplicatedPR.xml    |    23 +
 .../FunctionExecution/csReplicatedRegion.xml    |    25 +
 .../xml/FunctionExecution/exceptionHandling.xml |   152 +
 .../FunctionExecution/functionExecutionHA.xml   |   122 +
 .../nonPRFunctionExecuteTest.xml                |    97 +
 .../onRegionFunctionExecHAWithResult.xml        |   124 +
 .../onRegionFunctionExecWithOutResult.xml       |   108 +
 .../onRegionFunctionExecWithResult.xml          |   108 +
 .../onServerFunctionExecWithOutResult.xml       |   107 +
 .../onServerFunctionExecWithResult.xml          |   107 +
 .../onServersFunctionExecWithOutResult.xml      |   107 +
 .../onServersFunctionExecWithResult.xml         |   107 +
 .../replicatedRegionExecution.xml               |   109 +
 .../tests/xml/Generics/CqQuery/concCQMTTest.xml |   110 +
 .../tests/xml/Generics/CqQuery/cqDurableQS.xml  |   176 +
 .../tests/xml/Generics/CqQuery/csAckMirror.xml  |    14 +
 .../Generics/CqQuery/durableCqFailoverR2.xml    |   208 +
 .../Generics/CqQuery/durableTimeoutWithCq.xml   |   147 +
 .../Generics/CqQuery/durableWithCqKAFalse.xml   |   148 +
 .../Generics/CqQuery/durableWithCqKATrue.xml    |   148 +
 .../tests/xml/Generics/CqQuery/multRegCQOps.xml |   127 +
 .../CqQuery/multRegServerFailoverAndCQOps.xml   |   157 +
 .../CqQuery/resultSetValidationCQTest.xml       |   140 +
 .../xml/Generics/CqQuery/serialCQMTTest.xml     |   108 +
 .../xml/Generics/CqQuery/serialEntryEvent.xml   |   216 +
 .../CqQuery/serialEntryEventWithRegInterest.xml |   228 +
 .../serialMultRegOpsCQListenerWithFeeder.xml    |   233 +
 .../Generics/CqQuery/serverFailoverAndCQOps.xml |   149 +
 .../xml/Generics/CqQuery/singleRegCQOps.xml     |   120 +
 .../Delta/cacheserver_with_deltaobj.xml         |    22 +
 .../xml/Generics/Delta/csDeltaEviction.xml      |    33 +
 .../xml/Generics/Delta/csDeltaNoConflate.xml    |    23 +
 .../xml/Generics/Delta/csDeltaOverflow.xml      |    25 +
 .../src/tests/xml/Generics/Delta/csDeltaPR.xml  |    28 +
 .../Delta/deltaPropogationFailoverForPR.xml     |   185 +
 .../deltaPropogationFailoverNoConflation.xml    |   187 +
 .../Generics/Delta/deltaPropogationForPR.xml    |   122 +
 .../Delta/deltaPropogationNoConflation.xml      |   148 +
 .../Delta/deltaPropogationWithEvictionForPR.xml |   125 +
 .../Delta/deltaPropogationWithOverFlow.xml      |   181 +
 .../xml/Generics/Delta/deltaSampleTest.xml      |   106 +
 .../xml/Generics/DurableClient/csAckMirror.xml  |    10 +
 .../DurableClient/csNotifySubsNoLimit.xml       |    14 +
 .../DurableClient/csNotifySubscription.xml      |    14 +
 .../DurableClient/durableFailoverR2.xml         |   257 +
 .../DurableClient/durableNonDurableCrash.xml    |   253 +
 .../DurableClient/durableNonDurableKAFalse.xml  |   218 +
 .../DurableClient/durableNonDurableKATrue.xml   |   221 +
 .../DurableClient/durableNonDurableTimeout.xml  |   221 +
 .../durablePR/csNotifySubsNoLimit.xml           |    12 +
 .../durablePR/csNotifySubscription.xml          |    12 +
 .../durablePR/durableFailoverR2.xml             |   256 +
 .../durablePR/durableNonDurableCrash.xml        |   264 +
 .../durablePR/durableNonDurableKAFalse.xml      |   229 +
 .../durablePR/durableNonDurableKATrue.xml       |   232 +
 .../durablePR/durableNonDurableTimeout.xml      |   233 +
 .../DurableClient/durablePerfEventCount.xml     |   136 +
 .../durablePerfPutGetThroughput.xml             |   122 +
 .../DurableClient/durablePerfVariableTest.xml   |   128 +
 .../DurableClient/durablePerfVariableTest2.xml  |   211 +
 .../durablePerfVariableTestWithHLRU.xml         |   212 +
 .../FESingleHopNonOptimized.xml                 |   140 +
 .../FunctionExecution/FESingleHopOptimized.xml  |   140 +
 .../FunctionExecution/csEmptyDataPolicy.xml     |    25 +
 .../FunctionExecution/csPartitionRegion.xml     |    25 +
 .../csPartitionRegionForFEHA.xml                |    17 +
 .../FunctionExecution/csReplicatedPR.xml        |    23 +
 .../FunctionExecution/csReplicatedRegion.xml    |    25 +
 .../FunctionExecution/exceptionHandling.xml     |   151 +
 .../FunctionExecution/functionExecutionHA.xml   |   122 +
 .../onRegionFunctionExecHAWithResult.xml        |   124 +
 .../onRegionFunctionExecWithOutResult.xml       |   108 +
 .../onRegionFunctionExecWithResult.xml          |   108 +
 .../onServerFunctionExecWithOutResult.xml       |   107 +
 .../onServerFunctionExecWithResult.xml          |   107 +
 .../onServersFunctionExecWithOutResult.xml      |   107 +
 .../onServersFunctionExecWithResult.xml         |   107 +
 .../replicatedRegionExecution.xml               |   109 +
 .../CyberTraderInterestListUpdateTest.xml       |   103 +
 .../Native/CyberTraderPerfVariableIntTest2.xml  |   107 +
 .../Native/CyberTraderPerfVariableTest.xml      |   125 +
 .../Native/CyberTraderPerfVariableTest2.xml     |   196 +
 .../CyberTraderPerfVariableTestIntWithHLRU.xml  |   104 +
 .../CyberTraderPerfVariableTestWithHLRU.xml     |   197 +
 .../tests/xml/Generics/Native/clientEvents.xml  |   107 +
 .../Generics/Native/clientEventsFailover.xml    |   163 +
 .../clientQConflationNoServerConflation.xml     |   172 +
 ...entQConflationNoServerConflationFailover.xml |   230 +
 .../clientQConflationServerConflation.xml       |   172 +
 ...lientQConflationServerConflationFailover.xml |   246 +
 .../Generics/Native/clientScalabilityTest.xml   |   146 +
 .../tests/xml/Generics/Native/csAckMirror.xml   |    10 +
 .../xml/Generics/Native/csAckMirrorConflate.xml |    17 +
 .../Generics/Native/csAckMirrorNoConflate.xml   |    17 +
 .../xml/Generics/Native/csAckMirrorQsize.xml    |    10 +
 .../xml/Generics/Native/csAckMirrorSecurity.xml |    10 +
 .../Native/csConflationNotifySubscription.xml   |    14 +
 .../src/tests/xml/Generics/Native/csHlru.xml    |    14 +
 .../src/tests/xml/Generics/Native/csMirror.xml  |    11 +
 .../tests/xml/Generics/Native/csMultiRegion.xml |    18 +
 .../csNoNotifyBySubscriptionServerCache.xml     |    15 +
 .../csNotifyBySubscriptionServerCache.xml       |    15 +
 .../Generics/Native/csNotifySubscription.xml    |    14 +
 .../xml/Generics/Native/csServerEviction.xml    |    14 +
 .../Generics/Native/csServerOverflowToDisk.xml  |    17 +
 .../tests/xml/Generics/Native/failoverTest.xml  |   118 +
 .../tests/xml/Generics/Native/getAllTest.xml    |   158 +
 .../xml/Generics/Native/perfBenchmarkTCR.xml    |   207 +
 .../Generics/Native/perfClientsUpdateTest.xml   |    97 +
 .../Native/perfCyberTraderLatencyPut.xml        |   123 +
 .../Native/perfCyberTraderPutGetThroughput.xml  |   112 +
 .../Generics/Native/perfTCROverflowToDisk.xml   |   113 +
 .../Generics/Native/perfTCRServerEviction.xml   |   111 +
 .../Native/perfTestPutGetDestroyTCR.xml         |   122 +
 .../Native/perfTestPutGetDestroyTCRscaledUp.xml |   162 +
 .../perfTestPutGetDestroy_FullInterestTCR.xml   |   141 +
 ...perfTestPutGetDestroy_PartialInterestTCR.xml |   142 +
 .../tests/xml/Generics/Native/putGetAllTest.xml |   156 +
 .../Generics/Native/regexTestWithFailover.xml   |   185 +
 .../Native/registerAllKeysGIIValueTest.xml      |   180 +
 .../xml/Generics/Native/registerAllKeysTest.xml |   140 +
 .../Native/registerAndUnregisterRegexTest.xml   |   122 +
 .../Native/registerKeysAndRegexTest.xml         |   153 +
 .../registerKeysAndRegexWithReceiveValue.xml    |   285 +
 .../src/tests/xml/Generics/Native/ticket226.xml |    66 +
 .../clientEventsHAFailover_FullInterest.xml     |   168 +
 .../clientEventsHAFailover_PartialInterest.xml  |   171 +
 .../tests/xml/Generics/NativeHA/csAckMirror.xml |    14 +
 .../xml/Generics/NativeHA/csNackMirror.xml      |    14 +
 .../NativeHA/failoverTestHARedundancyMet.xml    |   138 +
 .../NativeHA/failoverTestHARedundancyNotMet.xml |   136 +
 .../Generics/NativeHA/mixedRedundancyTestHA.xml |   146 +
 ...TestPutGetDestroy_FullInterestTCRHA_S2R1.xml |   175 +
 ...TestPutGetDestroy_FullInterestTCRHA_S3R2.xml |   156 +
 ...TestPutGetDestroy_FullInterestTCRHA_S3R3.xml |   156 +
 ...tPutGetDestroy_PartialInterestTCRHA_S2R1.xml |   145 +
 ...tPutGetDestroy_PartialInterestTCRHA_S3R2.xml |   156 +
 ...tPutGetDestroy_PartialInterestTCRHA_S3R3.xml |   156 +
 .../CyberTraderInterestListUpdateTest.xml       |   149 +
 .../CyberTraderPerfVariableIntTest2.xml         |    99 +
 .../NativePR/CyberTraderPerfVariableTest.xml    |   179 +
 .../NativePR/CyberTraderPerfVariableTest2.xml   |   202 +
 .../Generics/NativePR/clientEventsFailover.xml  |   167 +
 .../NativePR/csConflationNotifySubscription.xml |    12 +
 .../Generics/NativePR/csNotifySubscription.xml  |    12 +
 .../NativePR/csNotifySubscriptionSecurity.xml   |    12 +
 .../xml/Generics/NativePR/distributionCheck.xml |   130 +
 .../xml/Generics/NativePR/failoverTest.xml      |   182 +
 .../xml/Generics/NativePR/perfBenchmarkTCR.xml  |   262 +
 .../Generics/NativePR/perfClientsUpdateTest.xml |   142 +
 .../NativePR/perfCyberTraderLatencyPut.xml      |   169 +
 .../perfCyberTraderPutGetThroughput.xml         |   157 +
 .../NativePR/perfTestPutGetDestroyTCR.xml       |   177 +
 .../perfTestPutGetDestroyTCRscaledUp.xml        |   191 +
 .../perfTestPutGetDestroy_FullInterestTCR.xml   |   188 +
 ...perfTestPutGetDestroy_PartialInterestTCR.xml |   187 +
 .../clientEventsFailoverQueryTest.xml           |   207 +
 .../RemoteQuery/clientEventsQueryTest.xml       |   149 +
 .../xml/Generics/RemoteQuery/csAckMirror.xml    |   115 +
 .../RemoteQuery/csNotifySubscription.xml        |    71 +
 .../Generics/RemoteQuery/csServerEviction.xml   |    71 +
 .../RemoteQuery/csServerOverflowToDisk.xml      |    74 +
 .../xml/Generics/RemoteQuery/csWithIndex.xml    |   109 +
 .../RemoteQuery/dataValidationQueryTest.xml     |   144 +
 .../distributedDataValidationQueryTest.xml      |   150 +
 .../RemoteQuery/entryOperationQueryTest.xml     |   122 +
 .../Generics/RemoteQuery/failoverQueryTest.xml  |   149 +
 .../Generics/RemoteQuery/regexAndQueryTest.xml  |   128 +
 .../RemoteQuery/serverEvictionQueryTest.xml     |    85 +
 .../serverOverflowToDiskQueryTest.xml           |   121 +
 .../clientEventsFailoverQueryTest.xml           |   209 +
 .../RemoteQueryPR/clientEventsQueryTest.xml     |   142 +
 .../xml/Generics/RemoteQueryPR/csAckMirror.xml  |    86 +
 .../RemoteQueryPR/csNotifySubscription.xml      |    69 +
 .../Generics/RemoteQueryPR/csServerEviction.xml |    69 +
 .../xml/Generics/RemoteQueryPR/csWithIndex.xml  |   111 +
 .../Generics/RemoteQueryPR/csWithIndexRC2.xml   |   112 +
 .../RemoteQueryPR/csWithOutIndexRC2.xml         |    91 +
 .../RemoteQueryPR/dataValidationQueryTest.xml   |   141 +
 .../distributedDataValidationQueryTest.xml      |   147 +
 .../RemoteQueryPR/entryOperationQueryTest.xml   |   122 +
 .../RemoteQueryPR/failoverQueryTest.xml         |   224 +
 .../RemoteQueryPR/regexAndQueryTest.xml         |   127 +
 .../RemoteQueryPR/serverEvictionQueryTest.xml   |    96 +
 .../tests/xml/Generics/ResumableTx/basicTx.xml  |    81 +
 .../xml/Generics/ResumableTx/concPRFailover.xml |   183 +
 .../xml/Generics/ResumableTx/concPRWithOps.xml  |   155 +
 .../xml/Generics/ResumableTx/concRRFailover.xml |   183 +
 .../xml/Generics/ResumableTx/concRRWithOps.xml  |   156 +
 .../tests/xml/Generics/ResumableTx/csPRTx.xml   |    16 +
 .../src/tests/xml/Generics/ResumableTx/csTx.xml |    11 +
 .../xml/Generics/ResumableTx/resumableTx.list   |     6 +
 .../Generics/ResumableTx/serialPRFailover.xml   |   169 +
 .../Generics/ResumableTx/serialPRWithOps.xml    |   119 +
 .../Generics/ResumableTx/serialRRFailover.xml   |   171 +
 .../Generics/ResumableTx/serialRRWithOps.xml    |   119 +
 .../Native/clientAuthnAndAuthzFailoverTest.xml  |   274 +
 .../Security/Native/clientAuthnAndAuthzTest.xml |   227 +
 .../clientAuthnAndAuthzTestFailoverMU.xml       |   176 +
 .../Native/clientAuthnAndAuthzTestMU.xml        |   100 +
 .../Generics/Security/Native/csAckMirror.xml    |    10 +
 .../Security/Native/csAckMirrorSecurity.xml     |    18 +
 .../Native/csConflationNotifySubscription.xml   |    14 +
 .../xml/Generics/Security/Native/csHlru.xml     |    14 +
 .../xml/Generics/Security/Native/csMirror.xml   |    11 +
 .../Security/Native/csNotifySubscription.xml    |    14 +
 .../Security/Native/csServerEviction.xml        |    14 +
 .../Security/Native/csServerOverflowToDisk.xml  |    17 +
 .../Security/Native/multiUserDurableCQ.xml      |   121 +
 .../clientAuthnAndAuthzFailoverPrMU.xml         |   164 +
 .../clientAuthnAndAuthzFailoverPrTest.xml       |   269 +
 .../NativePR/clientAuthnAndAuthzPrMU.xml        |   102 +
 .../NativePR/clientAuthnAndAuthzPrTest.xml      |   222 +
 .../NativePR/csConflationNotifySubscription.xml |    12 +
 .../Security/NativePR/csNotifySubscription.xml  |    12 +
 .../NativePR/csNotifySubscriptionSecurity.xml   |    20 +
 .../tests/xml/Generics/Security/authz-dummy.xml |    71 +
 .../xml/Generics/Security/authz-dummyMU.xml     |    70 +
 .../tests/xml/Generics/Security/authz-ldap.xml  |    68 +
 .../tests/xml/Generics/Security/authz-pkcs.xml  |    68 +
 .../tests/xml/Generics/Security/authz5_5.dtd    |    89 +
 .../Security/cacheserver/csClientEvents.xml     |    78 +
 .../Security/cacheserver/csOverflow.xml         |    39 +
 .../tests/xml/Generics/Security/csAckMirror.xml |    10 +
 .../src/tests/xml/Generics/cq.list              |    15 +
 .../src/tests/xml/Generics/cstx.list            |    16 +
 .../src/tests/xml/Generics/delta.list           |     6 +
 .../src/tests/xml/Generics/durableCSharp.list   |     8 +
 .../xml/Generics/functionExecutionCsharp.list   |    12 +
 .../src/tests/xml/Generics/hct/csAckMirror.xml  |    10 +
 .../hct/staticInterestPolicyAllKeys.xml         |   132 +
 .../hct/staticInterestPolicyAllKeysLateOps.xml  |   137 +
 .../Generics/hct/staticInterestPolicyList.xml   |   132 +
 .../hct/staticInterestPolicyListLateOps.xml     |   138 +
 .../Generics/hct/staticInterestPolicySingle.xml |   126 +
 .../hct/staticInterestPolicySingleLateOps.xml   |   138 +
 .../src/tests/xml/Generics/nativeNightly.list   |    17 +
 .../src/tests/xml/Generics/nativeNightlyHA.list |    10 +
 .../src/tests/xml/Generics/nativePR.list        |     7 +
 .../Generics/parReg/pdx/CqQuery/csAckMirror.xml |    43 +
 .../parReg/pdx/CqQuery/durableCqFailoverR2.xml  |   208 +
 .../parReg/pdx/CqQuery/durableTimeoutWithCq.xml |   147 +
 .../parReg/pdx/CqQuery/durableWithCqKAFalse.xml |   148 +
 .../parReg/pdx/CqQuery/durableWithCqKATrue.xml  |   148 +
 .../parReg/pdx/CqQuery/multRegCQOps.xml         |   127 +
 .../CqQuery/multRegServerFailoverAndCQOps.xml   |   157 +
 .../pdx/CqQuery/resultSetValidationCQTest.xml   |   140 +
 .../parReg/pdx/CqQuery/serialEntryEvent.xml     |   216 +
 .../serialMultRegOpsCQListenerWithFeeder.xml    |   233 +
 .../pdx/CqQuery/serverFailoverAndCQOps.xml      |   149 +
 .../parReg/pdx/CqQuery/singleRegCQOps.xml       |   120 +
 .../parReg/pdx/Pdx/concAutoSerializer.xml       |   142 +
 .../Generics/parReg/pdx/Pdx/csPRPdxFERegion.xml |    16 +
 .../parReg/pdx/Pdx/csPartitionRegion.xml        |    12 +
 .../Generics/parReg/pdx/Pdx/csPdxInstance.xml   |    13 +
 .../Generics/parReg/pdx/Pdx/csPersistentRgn.xml |    17 +
 .../parReg/pdx/Pdx/csReplicatedPdxRegion.xml    |    16 +
 .../xml/Generics/parReg/pdx/Pdx/pdxFailover.xml |   170 +
 .../parReg/pdx/Pdx/pdxInstanceFactoryTest.xml   |   144 +
 .../Generics/parReg/pdx/Pdx/pdxPRRegionFE.xml   |   124 +
 .../Generics/parReg/pdx/Pdx/pdxPRRegionOps.xml  |   113 +
 .../parReg/pdx/Pdx/pdxPersistentRegionFE.xml    |   122 +
 .../parReg/pdx/Pdx/pdxPutGetFEMerge.xml         |   191 +
 .../Generics/parReg/pdx/Pdx/pdxPutGetMerge.xml  |   174 +
 .../parReg/pdx/Pdx/pdxPutGetMergeWithRI.xml     |   177 +
 .../parReg/pdx/Pdx/pdxPutGetPdxInstance.xml     |   135 +
 .../parReg/pdx/Pdx/pdxReplicatedRegionFE.xml    |   137 +
 .../parReg/pdx/Pdx/pdxReplicatedRegionRI.xml    |   153 +
 .../parReg/pdx/Pdx/serialAutoSerializer.xml     |   135 +
 .../parReg/pdx/Pdx/serialNestedPdxOps.xml       |   135 +
 .../parReg/pdx/Pdx/serialParRegBridgePdx.xml    |   137 +
 .../clientEventsFailoverQueryTest.xml           |   206 +
 .../pdx/RemoteQuery/clientEventsQueryTest.xml   |   148 +
 .../parReg/pdx/RemoteQuery/csAckMirror.xml      |    43 +
 .../pdx/RemoteQuery/csNotifySubscription.xml    |    14 +
 .../Generics/parReg/pdx/RemoteQuery/csPR.xml    |    14 +
 .../parReg/pdx/RemoteQuery/csServerEviction.xml |    15 +
 .../pdx/RemoteQuery/csServerOverflowToDisk.xml  |    19 +
 .../parReg/pdx/RemoteQuery/csWithIndex.xml      |    49 +
 .../pdx/RemoteQuery/dataValidationQueryTest.xml |   144 +
 .../distributedDataValidationQueryTest.xml      |   150 +
 .../pdx/RemoteQuery/entryOperationQueryTest.xml |   122 +
 .../pdx/RemoteQuery/failoverQueryTest.xml       |   146 +
 .../pdx/RemoteQuery/regexAndQueryTest.xml       |   128 +
 .../pdx/RemoteQuery/serverEvictionQueryTest.xml |    85 +
 .../serverOverflowToDiskQueryTest.xml           |   121 +
 .../clientEventsFailoverQueryTest.xml           |   208 +
 .../pdx/RemoteQueryPR/clientEventsQueryTest.xml |   141 +
 .../parReg/pdx/RemoteQueryPR/csAckMirror.xml    |    29 +
 .../pdx/RemoteQueryPR/csNotifySubscription.xml  |    13 +
 .../pdx/RemoteQueryPR/csServerEviction.xml      |    69 +
 .../parReg/pdx/RemoteQueryPR/csWithIndex.xml    |    55 +
 .../parReg/pdx/RemoteQueryPR/csWithIndexRC2.xml |    56 +
 .../pdx/RemoteQueryPR/csWithOutIndexRC2.xml     |    35 +
 .../RemoteQueryPR/dataValidationQueryTest.xml   |   141 +
 .../distributedDataValidationQueryTest.xml      |   147 +
 .../RemoteQueryPR/entryOperationQueryTest.xml   |   122 +
 .../pdx/RemoteQueryPR/failoverQueryTest.xml     |   221 +
 .../pdx/RemoteQueryPR/regexAndQueryTest.xml     |   127 +
 .../RemoteQueryPR/serverEvictionQueryTest.xml   |    96 +
 .../Generics/parReg/pdx/tx/serialEntryEvent.xml |   209 +
 .../parReg/pdx/tx/serialEntryEventPR.xml        |   209 +
 .../parReg/pdx/tx/serverFailoverAndCQOps.xml    |   150 +
 .../Generics/parReg/pdx/tx/singleRegCQOps.xml   |   120 +
 .../parReg/subscription/csAckMirror.xml         |    12 +
 .../Generics/parReg/subscription/csPRegion.xml  |    12 +
 .../staticInterestPolicyAllKeys.xml             |   132 +
 .../staticInterestPolicyAllKeysLateOps.xml      |   137 +
 .../subscription/staticInterestPolicyList.xml   |   132 +
 .../staticInterestPolicyListLateOps.xml         |   138 +
 .../subscription/staticInterestPolicySingle.xml |   126 +
 .../staticInterestPolicySingleLateOps.xml       |   138 +
 .../Generics/parReg/tx/colocatedTxBridge.xml    |   128 +
 .../xml/Generics/parReg/tx/conParRegBridge.xml  |   142 +
 .../xml/Generics/parReg/tx/conParRegBridge1.xml |   129 +
 .../xml/Generics/parReg/tx/conParRegBridge2.xml |   129 +
 .../parReg/tx/conParRegBridgeRRRedundency2.xml  |   216 +
 .../parReg/tx/conParRegBridgeRedundency1.xml    |   201 +
 .../parReg/tx/conParRegBridgeRedundency2.xml    |   216 +
 .../parReg/tx/conParRegBridgeRedundency3.xml    |   216 +
 .../Generics/parReg/tx/concDeltaPRBridge.xml    |   123 +
 .../parReg/tx/concDeltaReplicateBridge.xml      |   149 +
 .../xml/Generics/parReg/tx/csAckMirror.xml      |    10 +
 .../src/tests/xml/Generics/parReg/tx/csPR.xml   |    14 +
 .../xml/Generics/parReg/tx/csPRRedundency1.xml  |    12 +
 .../xml/Generics/parReg/tx/csPRRedundency2.xml  |    12 +
 .../xml/Generics/parReg/tx/csPRRedundency3.xml  |    12 +
 .../Generics/parReg/tx/csPartitionRegion.xml    |    28 +
 .../parReg/tx/csPartitionRegionColo.xml         |    32 +
 .../Generics/parReg/tx/csReplicateRegion.xml    |    12 +
 .../Generics/parReg/tx/functionExecutionHA.xml  |   121 +
 .../tx/onRegionFunctionExecWithOutResult.xml    |   108 +
 .../tx/onRegionFunctionExecWithResult.xml       |   108 +
 .../parReg/tx/replicatedRegionExecution.xml     |   109 +
 .../xml/Generics/parReg/tx/serialEntryEvent.xml |   209 +
 .../Generics/parReg/tx/serialEntryEventPR.xml   |   209 +
 .../tx/serialEntryEventPRWithRegInterest.xml    |   216 +
 .../tx/serialEntryEventWithRegInterest.xml      |   216 +
 .../Generics/parReg/tx/serialParRegBridge.xml   |   138 +
 .../Generics/parReg/tx/serialParRegBridge1.xml  |   125 +
 .../Generics/parReg/tx/serialParRegBridge2.xml  |   125 +
 .../parReg/tx/serverFailoverAndCQOps.xml        |   150 +
 .../xml/Generics/parReg/tx/singleRegCQOps.xml   |   120 +
 .../parReg/tx/staticInterestPolicyAllKeys.xml   |   133 +
 .../tx/staticInterestPolicyAllKeysLateOps.xml   |   138 +
 .../parReg/tx/staticInterestPolicyList.xml      |   133 +
 .../tx/staticInterestPolicyListLateOps.xml      |   139 +
 .../parReg/tx/staticInterestPolicySingle.xml    |   127 +
 .../tx/staticInterestPolicySingleLateOps.xml    |   140 +
 .../src/tests/xml/Generics/pdx.list             |    32 +
 .../src/tests/xml/Generics/pdxNtx.list          |    23 +
 .../src/tests/xml/Generics/perf.list            |    43 +
 .../tests/xml/Generics/remoteQueryNightly.list  |    10 +
 .../xml/Generics/remoteQueryNightlyPR.list      |     8 +
 .../src/tests/xml/Generics/scale.list           |    36 +
 .../src/tests/xml/Generics/securityNightly.list |     9 +
 .../xml/Generics/smoketest/perf/getobject.xml   |   116 +
 .../xml/Generics/smoketest/perf/perf016.xml     |   112 +
 .../xml/Generics/smoketest/perf/perf017.xml     |   111 +
 .../xml/Generics/smoketest/perf/perf061.xml     |    97 +
 .../xml/Generics/smoketest/perf/perf062.xml     |    97 +
 .../xml/Generics/smoketest/perf/perf063.xml     |    97 +
 .../xml/Generics/smoketest/perf/perf064.xml     |    97 +
 .../xml/Generics/smoketest/perf/perf065.xml     |    97 +
 .../xml/Generics/smoketest/perf/perf067.xml     |    97 +
 .../xml/Generics/smoketest/perf/perf068.xml     |    97 +
 .../xml/Generics/smoketest/perf/perf069.xml     |    97 +
 .../xml/Generics/smoketest/perf/perf070.xml     |    97 +
 .../xml/Generics/smoketest/perf/perf071.xml     |    97 +
 .../xml/Generics/smoketest/perf/perf073.xml     |    63 +
 .../xml/Generics/smoketest/perf/perf074.xml     |    59 +
 .../xml/Generics/smoketest/perf/perf075.xml     |    65 +
 .../xml/Generics/smoketest/perf/perf077.xml     |   118 +
 .../xml/Generics/smoketest/perf/perf078.xml     |   118 +
 .../xml/Generics/smoketest/perf/perf079.xml     |   116 +
 .../xml/Generics/smoketest/perf/perf082.xml     |   110 +
 .../xml/Generics/smoketest/perf/perf083.xml     |   110 +
 .../xml/Generics/smoketest/perf/perf090.xml     |   118 +
 .../xml/Generics/smoketest/perf/perf091.xml     |   118 +
 .../xml/Generics/smoketest/perf/perf092.xml     |   115 +
 .../xml/Generics/smoketest/perf/perf096.xml     |    92 +
 .../xml/Generics/smoketest/perf/perf097.xml     |    92 +
 .../xml/Generics/smoketest/perf/perf098.xml     |   121 +
 .../xml/Generics/smoketest/perf/perf100.xml     |    94 +
 .../xml/Generics/smoketest/perf/perf102.xml     |    60 +
 .../xml/Generics/smoketest/perf/perf103.xml     |    59 +
 .../xml/Generics/smoketest/perf/perf104.xml     |    59 +
 .../xml/Generics/smoketest/perf/perf105.xml     |    59 +
 .../xml/Generics/smoketest/perf/perf106.xml     |    84 +
 .../xml/Generics/smoketest/perf/perf107.xml     |    84 +
 .../xml/Generics/smoketest/perf/perf108.xml     |    84 +
 .../xml/Generics/smoketest/perf/perf109.xml     |    84 +
 .../xml/Generics/smoketest/perf/perf110.xml     |    81 +
 .../xml/Generics/smoketest/perf/perf111.xml     |    79 +
 .../xml/Generics/smoketest/perf/perf112.xml     |    97 +
 .../xml/Generics/smoketest/perf/perf113.xml     |   120 +
 .../xml/Generics/smoketest/perf/perf114.xml     |   115 +
 .../xml/Generics/smoketest/perf/perf115.xml     |   115 +
 .../xml/Generics/smoketest/perf/perf148.xml     |   114 +
 .../xml/Generics/smoketest/perf/perf149.xml     |   112 +
 .../xml/Generics/smoketest/perf/perf150.xml     |   132 +
 .../xml/Generics/smoketest/perf/perf152.xml     |   111 +
 .../xml/Generics/smoketest/perf/perf153.xml     |   133 +
 .../xml/Generics/smoketest/perf/perf154.xml     |   133 +
 .../xml/Generics/smoketest/scale/scale047.xml   |   134 +
 .../xml/Generics/smoketest/scale/scale048.xml   |   137 +
 .../xml/Generics/smoketest/scale/scale049.xml   |   136 +
 .../xml/Generics/smoketest/scale/scale050.xml   |   140 +
 .../xml/Generics/smoketest/scale/scale051.xml   |   131 +
 .../xml/Generics/smoketest/scale/scale052.xml   |   139 +
 .../xml/Generics/smoketest/scale/scale053.xml   |   136 +
 .../xml/Generics/smoketest/scale/scale054.xml   |   137 +
 .../xml/Generics/smoketest/scale/scale055.xml   |   136 +
 .../xml/Generics/smoketest/scale/scale056.xml   |   138 +
 .../xml/Generics/smoketest/scale/scale057.xml   |   138 +
 .../xml/Generics/smoketest/scale/scale058.xml   |   133 +
 .../xml/Generics/smoketest/scale/scale059.xml   |   138 +
 .../xml/Generics/smoketest/scale/scale060.xml   |   138 +
 .../xml/Generics/smoketest/scale/scale061.xml   |   136 +
 .../xml/Generics/smoketest/scale/scale062.xml   |   140 +
 .../xml/Generics/smoketest/scale/scale063.xml   |   136 +
 .../xml/Generics/smoketest/scale/scale064.xml   |   139 +
 .../xml/Generics/smoketest/scale/scale065.xml   |   139 +
 .../xml/Generics/smoketest/scale/scale066.xml   |   137 +
 .../xml/Generics/smoketest/scale/scale071.xml   |   149 +
 .../xml/Generics/smoketest/scale/scale072.xml   |   149 +
 .../xml/Generics/smoketest/scale/scale073.xml   |   152 +
 .../xml/Generics/smoketest/scale/scale074.xml   |   146 +
 .../xml/Generics/smoketest/scale/scale075.xml   |   149 +
 .../xml/Generics/smoketest/scale/scale076.xml   |   150 +
 .../xml/Generics/smoketest/scale/scale077.xml   |   147 +
 .../xml/Generics/smoketest/scale/scale078.xml   |   151 +
 .../xml/Generics/smoketest/scale/scale079.xml   |   150 +
 .../xml/Generics/smoketest/scale/scale080.xml   |   151 +
 .../xml/Generics/smoketest/scale/scale081.xml   |   146 +
 .../xml/Generics/smoketest/scale/scale082.xml   |   150 +
 .../xml/Generics/smoketest/scale/scale083.xml   |   153 +
 .../xml/Generics/smoketest/scale/scale084.xml   |   150 +
 .../xml/Generics/smoketest/scale/scale085.xml   |   154 +
 .../xml/Generics/smoketest/scale/scale086.xml   |   154 +
 .../src/tests/xml/Generics/subscription.list    |    18 +
 .../src/tests/xml/Mcast/entryEvent.xml          |   149 +
 .../src/tests/xml/Mcast/entryEventLong.xml      |   179 +
 .../src/tests/xml/Mcast/largeMembership.xml     |   107 +
 .../src/tests/xml/Mcast/mirrorGII.xml           |    52 +
 .../src/tests/xml/Mcast/netSearch.xml           |    97 +
 .../src/tests/xml/Mcast/perfBenchmark.xml       |   153 +
 .../src/tests/xml/Mcast/regionContentTest.xml   |   143 +
 .../src/tests/xml/Mcast/regionEventMT.xml       |   166 +
 .../tests/xml/Misc/Deprecated/dsMemberCount.xml |    47 +
 .../src/tests/xml/Misc/Sockets.xml              |   158 +
 .../tests/xml/Misc/VerifyPeerRegionCount.xml    |    26 +
 .../src/tests/xml/Misc/cacheContentTest.xml     |   124 +
 .../src/tests/xml/Misc/getInitialImage.xml      |    67 +
 .../src/tests/xml/Misc/memoryMeasurement.xml    |   174 +
 .../src/tests/xml/Misc/quickTest.xml            |    85 +
 .../src/tests/xml/Misc/rawLBM.xml               |    45 +
 .../src/tests/xml/Misc/regionContentTest.xml    |   143 +
 .../src/tests/xml/Misc/regionMemory.xml         |  3174 ++++
 .../src/tests/xml/Misc/sampleJavaCS.xml         |    43 +
 .../src/tests/xml/Misc/smallMembership.xml      |    20 +
 .../CyberTraderInterestListUpdateTest.xml       |   209 +
 .../src/tests/xml/MixedMode/bridge_client.xml   |    38 +
 .../xml/MixedMode/bridge_client_cacheless.xml   |    38 +
 .../tests/xml/MixedMode/clientUserObject.xml    |   189 +
 .../tests/xml/MixedMode/clientUserObjectKey.xml |   164 +
 .../src/tests/xml/MixedMode/csAckMirror.xml     |    23 +
 .../tests/xml/MixedMode/perfBenchmarkTCR.xml    |   425 +
 .../clientEventsFailoverQueryTest.xml           |   250 +
 .../clientEventsFailoverQueryTest_CS.xml        |   113 +
 .../xml/MixedModeCS/clientEventsQueryTest.xml   |   208 +
 .../MixedModeCS/clientEventsQueryTest_CS.xml    |    95 +
 .../src/tests/xml/MixedModeCS/failoverTest.xml  |   139 +
 .../tests/xml/MixedModeCS/failoverTest_CS.xml   |    91 +
 .../xml/MixedModeCS/interopDataValidation.xml   |    98 +
 .../MixedModeCS/interopDataValidation_CS.xml    |    75 +
 .../xml/MixedModeCS/interopWithFailover.xml     |   169 +
 .../xml/MixedModeCS/interopWithFailover_CS.xml  |    83 +
 .../tests/xml/MixedModeCS/throughPuts32K.xml    |   339 +
 .../tests/xml/MixedModeCS/throughPuts32K_CS.xml |   195 +
 .../CyberTraderInterestListUpdateTest.xml       |   104 +
 .../xml/Native/CyberTraderPerfVariableTest.xml  |   118 +
 .../xml/Native/CyberTraderPerfVariableTest2.xml |   201 +
 .../CyberTraderPerfVariableTestWithHLRU.xml     |   212 +
 .../src/tests/xml/Native/clientEvents.xml       |   107 +
 .../tests/xml/Native/clientEventsFailover.xml   |   163 +
 .../tests/xml/Native/clientEventsFailoverCB.xml |   344 +
 .../xml/Native/clientEventsFailoverSticky.xml   |   176 +
 .../src/tests/xml/Native/clientEventsHLRU.xml   |    61 +
 .../xml/Native/clientPayloadScalability.xml     |   167 +
 .../clientQConflationNoServerConflation.xml     |   172 +
 ...entQConflationNoServerConflationFailover.xml |   230 +
 .../clientQConflationServerConflation.xml       |   172 +
 ...lientQConflationServerConflationFailover.xml |   246 +
 .../Native/clientScalabilityMultiServerTest.xml |   158 +
 .../tests/xml/Native/clientScalabilityTest.xml  |   146 +
 .../src/tests/xml/Native/conflationTest.xml     |   141 +
 .../src/tests/xml/Native/csAckMirror.xml        |    10 +
 .../tests/xml/Native/csAckMirrorConflate.xml    |    17 +
 .../tests/xml/Native/csAckMirrorNoConflate.xml  |    17 +
 .../src/tests/xml/Native/csAckMirrorQsize.xml   |    10 +
 .../tests/xml/Native/csAckMirrorSecurity.xml    |    10 +
 .../Native/csConflationNotifySubscription.xml   |    14 +
 .../src/tests/xml/Native/csHlru.xml             |    14 +
 .../src/tests/xml/Native/csMirror.xml           |    11 +
 .../src/tests/xml/Native/csMultiRegion.xml      |    18 +
 .../csNoNotifyBySubscriptionServerCache.xml     |    15 +
 .../csNotifyBySubscriptionServerCache.xml       |    15 +
 .../tests/xml/Native/csNotifySubscription.xml   |    14 +
 .../src/tests/xml/Native/csServerEviction.xml   |    14 +
 .../tests/xml/Native/csServerOverflowToDisk.xml |    17 +
 .../src/tests/xml/Native/failoverTest.xml       |   119 +
 .../src/tests/xml/Native/getAllTest.xml         |   157 +
 .../src/tests/xml/Native/perfBenchmarkTCR.xml   |   207 +
 .../tests/xml/Native/perfClientsUpdateTest.xml  |    97 +
 .../xml/Native/perfCyberTraderLatencyPut.xml    |   123 +
 .../Native/perfCyberTraderPutGetThroughput.xml  |   112 +
 .../tests/xml/Native/perfTCROverflowToDisk.xml  |   113 +
 .../tests/xml/Native/perfTCRServerEviction.xml  |   111 +
 .../xml/Native/perfTestPutGetDestroyTCR.xml     |   122 +
 .../Native/perfTestPutGetDestroyTCRscaledUp.xml |   162 +
 .../perfTestPutGetDestroy_FullInterestTCR.xml   |   141 +
 ...perfTestPutGetDestroy_PartialInterestTCR.xml |   142 +
 .../src/tests/xml/Native/putGetAllTest.xml      |   157 +
 .../tests/xml/Native/regexTestWithFailover.xml  |   185 +
 .../xml/Native/registerAllKeysGIIValueTest.xml  |   180 +
 .../tests/xml/Native/registerAllKeysTest.xml    |   140 +
 .../Native/registerAndUnregisterRegexTest.xml   |   122 +
 .../xml/Native/registerKeysAndRegexTest.xml     |   164 +
 .../registerKeysAndRegexWithReceiveValue.xml    |   287 +
 .../src/tests/xml/Native/ticket226.xml          |    66 +
 .../src/tests/xml/Native/verifyKeyCountTest.xml |    92 +
 .../xml/Native/verifyKeyCountWithFailover.xml   |   120 +
 .../src/tests/xml/Native/vmMemory.xml           |   169 +
 .../CyberTraderInterestListUpdateTest.xml       |   110 +
 .../Native43/CyberTraderPerfVariableTest.xml    |   115 +
 .../Native43/CyberTraderPerfVariableTest2.xml   |   208 +
 .../src/tests/xml/Native43/clientEvents.xml     |    90 +
 .../tests/xml/Native43/clientEventsFailover.xml |   131 +
 .../clientScalabilityMultiServerTest.xml        |   118 +
 .../xml/Native43/clientScalabilityTest.xml      |   117 +
 .../src/tests/xml/Native43/conflationTest.xml   |   166 +
 .../src/tests/xml/Native43/csAckMirror.xml      |    20 +
 .../tests/xml/Native43/csAckMirrorConflate.xml  |    20 +
 .../Native43/csConflationNotifySubscription.xml |    20 +
 .../tests/xml/Native43/csNotifySubscription.xml |    20 +
 .../src/tests/xml/Native43/csServerEviction.xml |    20 +
 .../xml/Native43/csServerOverflowToDisk.xml     |    26 +
 .../src/tests/xml/Native43/failoverTest.xml     |    90 +
 .../src/tests/xml/Native43/mixedMode.xml        |    49 +
 .../src/tests/xml/Native43/perfBenchmarkTCR.xml |   201 +
 .../xml/Native43/perfClientsUpdateTest.xml      |    85 +
 .../xml/Native43/perfCyberTraderLatencyPut.xml  |   126 +
 .../perfCyberTraderPutGetThroughput.xml         |   113 +
 .../xml/Native43/perfTCROverflowToDisk.xml      |   129 +
 .../xml/Native43/perfTCRServerEviction.xml      |   127 +
 .../xml/Native43/perfTestPutGetDestroyTCR.xml   |   138 +
 .../perfTestPutGetDestroyTCRscaledUp.xml        |   223 +
 .../perfTestPutGetDestroy_FullInterestTCR.xml   |   178 +
 ...perfTestPutGetDestroy_PartialInterestTCR.xml |   178 +
 .../tests/xml/Native43/registerAllKeysTest.xml  |   166 +
 .../tests/xml/Native43/verifyKeyCountTest.xml   |    97 +
 .../xml/Native43/verifyKeyCountWithFailover.xml |    64 +
 .../clientEventsHAFailover_FullInterest.xml     |   168 +
 .../clientEventsHAFailover_PartialInterest.xml  |   171 +
 .../xml/NativeHA/clientPayloadScalability.xml   |   160 +
 .../src/tests/xml/NativeHA/csAckMirror.xml      |    14 +
 .../src/tests/xml/NativeHA/csNackMirror.xml     |    14 +
 .../xml/NativeHA/failoverTestHAEventIDMap.xml   |   154 +
 .../NativeHA/failoverTestHARedundancyMet.xml    |   138 +
 .../NativeHA/failoverTestHARedundancyNotMet.xml |   136 +
 .../src/tests/xml/NativeHA/latencyPuts10M.xml   |   233 +
 .../src/tests/xml/NativeHA/latencyPuts1K.xml    |   268 +
 .../src/tests/xml/NativeHA/latencyPuts32K.xml   |   268 +
 .../src/tests/xml/NativeHA/latencyPuts5M.xml    |   233 +
 .../src/tests/xml/NativeHA/latencyPuts8K.xml    |   233 +
 .../xml/NativeHA/mixedRedundancyTestHA.xml      |   146 +
 ...TestPutGetDestroy_FullInterestTCRHA_S2R1.xml |   175 +
 ...TestPutGetDestroy_FullInterestTCRHA_S3R2.xml |   156 +
 ...TestPutGetDestroy_FullInterestTCRHA_S3R3.xml |   156 +
 ...tPutGetDestroy_PartialInterestTCRHA_S2R1.xml |   145 +
 ...tPutGetDestroy_PartialInterestTCRHA_S3R2.xml |   156 +
 ...tPutGetDestroy_PartialInterestTCRHA_S3R3.xml |   156 +
 .../src/tests/xml/NativeHA/throughPuts10M.xml   |   214 +
 .../src/tests/xml/NativeHA/throughPuts1K.xml    |   249 +
 .../src/tests/xml/NativeHA/throughPuts32K.xml   |   249 +
 .../src/tests/xml/NativeHA/throughPuts5M.xml    |   214 +
 .../src/tests/xml/NativeHA/throughPuts8K.xml    |   214 +
 .../CyberTraderInterestListUpdateTest.xml       |   149 +
 .../NativePR/CyberTraderPerfVariableTest.xml    |   172 +
 .../NativePR/CyberTraderPerfVariableTest2.xml   |   208 +
 .../src/tests/xml/NativePR/clientEvents.xml     |   130 +
 .../tests/xml/NativePR/clientEventsFailover.xml |   167 +
 .../xml/NativePR/clientPayloadScalability.xml   |   220 +
 .../clientScalabilityMultiServerTest.xml        |   176 +
 .../xml/NativePR/clientScalabilityTest.xml      |   174 +
 .../src/tests/xml/NativePR/conflationTest.xml   |   186 +
 .../NativePR/csConflationNotifySubscription.xml |    12 +
 .../tests/xml/NativePR/csNotifySubscription.xml |    12 +
 .../NativePR/csNotifySubscriptionSecurity.xml   |    12 +
 .../tests/xml/NativePR/distributionCheck.xml    |   130 +
 .../src/tests/xml/NativePR/failoverTest.xml     |   182 +
 .../src/tests/xml/NativePR/perfBenchmarkTCR.xml |   262 +
 .../xml/NativePR/perfClientsUpdateTest.xml      |   142 +
 .../xml/NativePR/perfCyberTraderLatencyPut.xml  |   169 +
 .../perfCyberTraderPutGetThroughput.xml         |   157 +
 .../xml/NativePR/perfTestPutGetDestroyTCR.xml   |   177 +
 .../perfTestPutGetDestroyTCRscaledUp.xml        |   191 +
 .../perfTestPutGetDestroy_FullInterestTCR.xml   |   188 +
 ...perfTestPutGetDestroy_PartialInterestTCR.xml |   187 +
 .../xml/NativePR/regexTestWithFailover.xml      |   205 +
 .../tests/xml/NativePR/registerAllKeysTest.xml  |   185 +
 .../NativePR/registerAndUnregisterRegexTest.xml |   167 +
 .../xml/NativePR/registerKeysAndRegexTest.xml   |   172 +
 .../tests/xml/NativePR/verifyKeyCountTest.xml   |   137 +
 .../xml/NativePR/verifyKeyCountWithFailover.xml |   169 +
 .../NativePerf/MLticket8946perfBenchmark.xml    |    99 +
 .../src/tests/xml/NativePerf/csAckMirror.xml    |    10 +
 .../src/tests/xml/NativePerf/perfBenchmark.xml  |   170 +
 .../src/tests/xml/NativePerf/sockPerf.xml       |   191 +
 .../src/tests/xml/Regression/entryEvent.xml     |   126 +
 .../tests/xml/Regression/entryEvent33Hour.xml   |   128 +
 .../tests/xml/Regression/largeMembership.xml    |   199 +
 .../tests/xml/Regression/latencyBenchmark.xml   |   219 +
 .../src/tests/xml/Regression/mirrorGII.xml      |    71 +
 .../src/tests/xml/Regression/perfBenchmark.xml  |   231 +
 .../src/tests/xml/Regression/regionContent.xml  |   267 +
 .../xml/Regression/regionEventLocalRoots.xml    |    46 +
 .../tests/xml/Regression/regionEventRoots.xml   |   251 +
 .../tests/xml/Regression/regionPeerCount.xml    |   215 +
 .../RemoteQuery/cacheScalabilityQueryTest.xml   |   206 +
 .../clientEventsFailoverQueryTest.xml           |   200 +
 .../xml/RemoteQuery/clientEventsQueryTest.xml   |   144 +
 .../clientScalabilityPayloadQueryTest.xml       |   252 +
 .../RemoteQuery/clientScalabilityQueryTest.xml  |   181 +
 .../src/tests/xml/RemoteQuery/concQuery.xml     |    80 +
 .../src/tests/xml/RemoteQuery/csAckMirror.xml   |   115 +
 .../xml/RemoteQuery/csNotifySubscription.xml    |    71 +
 .../tests/xml/RemoteQuery/csServerEviction.xml  |    71 +
 .../xml/RemoteQuery/csServerOverflowToDisk.xml  |    74 +
 .../src/tests/xml/RemoteQuery/csWithIndex.xml   |   109 +
 .../xml/RemoteQuery/dataValidationQueryTest.xml |   143 +
 .../distributedDataValidationQueryTest.xml      |   149 +
 .../xml/RemoteQuery/entryOperationQueryTest.xml |   124 +
 .../tests/xml/RemoteQuery/failoverQueryTest.xml |   149 +
 .../RemoteQuery/globalEndPointExistenceTest.xml |   107 +
 .../multiServerClientScalabilityQueryTest.xml   |   253 +
 .../RemoteQuery/payloadScalabilityQueryTest.xml |   344 +
 .../tests/xml/RemoteQuery/regexAndQueryTest.xml |   128 +
 .../xml/RemoteQuery/serverEvictionQueryTest.xml |    85 +
 .../serverOverflowToDiskQueryTest.xml           |   121 +
 .../RemoteQueryPR/cacheScalabilityQueryTest.xml |   205 +
 .../clientEventsFailoverQueryTest.xml           |   209 +
 .../xml/RemoteQueryPR/clientEventsQueryTest.xml |   142 +
 .../clientScalabilityPayloadQueryTest.xml       |   251 +
 .../clientScalabilityQueryTest.xml              |   180 +
 .../src/tests/xml/RemoteQueryPR/csAckMirror.xml |    86 +
 .../xml/RemoteQueryPR/csNotifySubscription.xml  |    69 +
 .../xml/RemoteQueryPR/csServerEviction.xml      |    69 +
 .../src/tests/xml/RemoteQueryPR/csWithIndex.xml |   111 +
 .../tests/xml/RemoteQueryPR/csWithIndexRC2.xml  |   112 +
 .../xml/RemoteQueryPR/csWithOutIndexRC2.xml     |    91 +
 .../RemoteQueryPR/dataValidationQueryTest.xml   |   135 +
 .../distributedDataValidationQueryTest.xml      |   141 +
 .../RemoteQueryPR/entryOperationQueryTest.xml   |   124 +
 .../xml/RemoteQueryPR/failoverQueryTest.xml     |   224 +
 .../globalEndPointExistenceTest.xml             |   106 +
 .../multiServerClientScalabilityQueryTest.xml   |   252 +
 .../payloadScalabilityQueryTest.xml             |   343 +
 .../xml/RemoteQueryPR/regexAndQueryTest.xml     |   127 +
 .../RemoteQueryPR/serverEvictionQueryTest.xml   |    96 +
 .../src/tests/xml/RogueWave/latencyPuts2K.xml   |    52 +
 .../src/tests/xml/RogueWave/throughPuts2K.xml   |   120 +
 .../SSL/clientAuthenticationAuthorization.xml   |   178 +
 .../tests/xml/SSL/clientAuthnAndAuthzTest.xml   |   249 +
 .../src/tests/xml/SSL/csAckMirror.xml           |    14 +
 .../xml/SSL/failoverTestHARedundancyNotMet.xml  |   139 +
 .../client500ScaleTestWithHAFailover.xml        |   261 +
 .../src/tests/xml/ScaleTest/csAckMirror.xml     |    14 +
 .../Native/clientAuthnAndAuthzFailoverTest.xml  |   273 +
 .../Security/Native/clientAuthnAndAuthzTest.xml |   227 +
 .../clientAuthnAndAuthzTestFailoverMU.xml       |   176 +
 .../Native/clientAuthnAndAuthzTestMU.xml        |   100 +
 .../tests/xml/Security/Native/clientEvents.xml  |   201 +
 .../Security/Native/clientEventsFailover.xml    |   245 +
 .../xml/Security/Native/clientEventsHLRU.xml    |    74 +
 .../Native/clientPayloadScalability.xml         |   183 +
 .../xml/Security/Native/conflationTest.xml      |   174 +
 .../tests/xml/Security/Native/csAckMirror.xml   |    10 +
 .../xml/Security/Native/csAckMirrorSecurity.xml |    18 +
 .../Native/csConflationNotifySubscription.xml   |    14 +
 .../src/tests/xml/Security/Native/csHlru.xml    |    14 +
 .../src/tests/xml/Security/Native/csMirror.xml  |    11 +
 .../Security/Native/csNotifySubscription.xml    |    14 +
 .../xml/Security/Native/csServerEviction.xml    |    14 +
 .../Security/Native/csServerOverflowToDisk.xml  |    17 +
 .../tests/xml/Security/Native/failoverTest.xml  |   137 +
 .../xml/Security/Native/multiUserDurableCQ.xml  |   121 +
 .../Native/perfCyberTraderLatencyPut.xml        |   148 +
 .../Security/Native/perfTCROverflowToDisk.xml   |   161 +
 .../Security/Native/perfTCRServerEviction.xml   |   159 +
 .../Security/Native/regexTestWithFailover.xml   |   178 +
 .../Native/registerAndUnregisterRegexTest.xml   |   147 +
 .../clientEventsHAFailover_FullInterest.xml     |   241 +
 .../tests/xml/Security/NativeHA/csAckMirror.xml |    14 +
 .../xml/Security/NativeHA/csNackMirror.xml      |    14 +
 .../NativeHA/failoverTestHARedundancyNotMet.xml |   174 +
 .../xml/Security/NativeHA/latencyPuts8K.xml     |   289 +
 .../Security/NativeHA/mixedRedundancyTestHA.xml |   168 +
 .../clientAuthnAndAuthzFailoverPrMU.xml         |   166 +
 .../clientAuthnAndAuthzFailoverPrTest.xml       |   274 +
 .../NativePR/clientAuthnAndAuthzPrMU.xml        |   104 +
 .../NativePR/clientAuthnAndAuthzPrTest.xml      |   227 +
 .../xml/Security/NativePR/clientEvents.xml      |   181 +
 .../Security/NativePR/clientEventsFailover.xml  |   232 +
 .../NativePR/clientPayloadScalability.xml       |   242 +
 .../Security/NativePR/clientScalabilityTest.xml |   242 +
 .../xml/Security/NativePR/conflationTest.xml    |   224 +
 .../NativePR/csConflationNotifySubscription.xml |    12 +
 .../Security/NativePR/csNotifySubscription.xml  |    12 +
 .../NativePR/csNotifySubscriptionSecurity.xml   |    20 +
 .../xml/Security/NativePR/distributionCheck.xml |   160 +
 .../xml/Security/NativePR/failoverTest.xml      |   210 +
 .../NativePR/perfCyberTraderLatencyPut.xml      |   199 +
 .../Security/NativePR/regexTestWithFailover.xml |   231 +
 .../NativePR/registerAndUnregisterRegexTest.xml |   187 +
 .../NativePerf/MLticket8946perfBenchmark.xml    |    99 +
 .../xml/Security/NativePerf/csAckMirror.xml     |    10 +
 .../xml/Security/NativePerf/perfBenchmark.xml   |   170 +
 .../xml/Security/RemoteQuery/csAckMirror.xml    |   101 +
 .../RemoteQuery/csNotifySubscription.xml        |    71 +
 .../Security/RemoteQuery/csServerEviction.xml   |    71 +
 .../RemoteQuery/csServerOverflowToDisk.xml      |    74 +
 .../xml/Security/RemoteQuery/csWithIndex.xml    |   109 +
 .../xml/Security/RemoteQueryPR/csAckMirror.xml  |    86 +
 .../RemoteQueryPR/csNotifySubscription.xml      |    69 +
 .../Security/RemoteQueryPR/csServerEviction.xml |    69 +
 .../xml/Security/RemoteQueryPR/csWithIndex.xml  |   111 +
 .../Security/RemoteQueryPR/csWithIndexRC2.xml   |   112 +
 .../RemoteQueryPR/csWithOutIndexRC2.xml         |    91 +
 .../src/tests/xml/Security/authz-dummy.xml      |    72 +
 .../src/tests/xml/Security/authz-dummyMU.xml    |    71 +
 .../src/tests/xml/Security/authz-ldap.xml       |    69 +
 .../src/tests/xml/Security/authz-pkcs.xml       |    69 +
 .../src/tests/xml/Security/authz5_5.dtd         |    89 +
 .../xml/Security/cacheserver/csClientEvents.xml |    78 +
 .../xml/Security/cacheserver/csOverflow.xml     |    39 +
 .../clientAuthenticationAuthorization.xml       |   177 +
 .../src/tests/xml/Security/csAckMirror.xml      |    10 +
 .../src/tests/xml/Security/ticket226.xml        |    81 +
 .../CyberTraderPerfVariableTestWithHLRU.xml     |   145 +
 .../src/tests/xml/SqLite/csAckMirror.xml        |    10 +
 .../xml/SqLite/entryEventsOverFlowTest.xml      |   118 +
 .../tests/xml/SqLite/putGetAllOverFlowTest.xml  |   118 +
 .../tests/xml/SqLite/regionDestroyOverFlow.xml  |   104 +
 .../src/tests/xml/appdomain.list                |     6 +
 .../src/tests/xml/autoPdxQTx.list               |    13 +
 geode-client-native/src/tests/xml/autopdx.list  |    13 +
 .../xml/cacheserver/cacheSizeClientEvents.xml   |    98 +
 .../src/tests/xml/cacheserver/cacheserver.xml   |    76 +
 .../cacheserver/cacheserverClientsUpdate.xml    |    47 +
 .../xml/cacheserver/cacheserverFeedGet.xml      |    43 +
 .../cacheserver/cacheserverFeederUpdates.xml    |    52 +
 .../xml/cacheserver/cacheserverScalability.xml  |    74 +
 .../tests/xml/cacheserver/csClientEvents.xml    |    78 +
 .../src/tests/xml/cacheserver/csOverflow.xml    |    39 +
 .../tests/xml/cacheserver/failbackfailover.xml  |   103 +
 .../src/tests/xml/cacheserver/getsPerf.xml      |   255 +
 .../src/tests/xml/cacheserver/intelTest1.xml    |    44 +
 .../src/tests/xml/cacheserver/intelTest2.xml    |    65 +
 .../src/tests/xml/cacheserver/intelTest3.xml    |    66 +
 .../src/tests/xml/cacheserver/latencyPuts.xml   |   430 +
 .../xml/cacheserver/longrunClientsUpdate.xml    |    69 +
 .../src/tests/xml/cacheserver/serverGIIhang.xml |   192 +
 .../src/tests/xml/cacheserver/serverMemory.xml  |   103 +
 .../tests/xml/cacheserver/shortClientEvents.xml |    94 +
 .../src/tests/xml/cacheserver/throughPuts.xml   |   166 +
 .../src/tests/xml/clientQConflation.list        |     4 +
 geode-client-native/src/tests/xml/cq.list       |    15 +
 .../src/tests/xml/cron.regression               |    12 +
 .../src/tests/xml/csTx/hct/csAckMirror.xml      |    10 +
 .../csTx/hct/staticInterestPolicyAllKeys.xml    |   133 +
 .../hct/staticInterestPolicyAllKeysLateOps.xml  |   138 +
 .../xml/csTx/hct/staticInterestPolicyList.xml   |   133 +
 .../hct/staticInterestPolicyListLateOps.xml     |   139 +
 .../xml/csTx/hct/staticInterestPolicySingle.xml |   127 +
 .../hct/staticInterestPolicySingleLateOps.xml   |   140 +
 geode-client-native/src/tests/xml/delta.list    |     6 +
 .../src/tests/xml/durableCSharp.list            |     9 +
 .../src/tests/xml/durableNightly.list           |    15 +
 .../src/tests/xml/event/combineEvent.xml        |   285 +
 .../src/tests/xml/event/combineEventLong.xml    |   285 +
 .../src/tests/xml/event/combineEventMT.xml      |   285 +
 .../tests/xml/event/combineEventOverflow.xml    |   208 +
 .../src/tests/xml/event/entryEvent.xml          |   279 +
 .../tests/xml/event/entryEventCacheLoader.xml   |   313 +
 .../src/tests/xml/event/entryEventDone.xml      |   258 +
 .../src/tests/xml/event/entryEventExit.xml      |   258 +
 .../src/tests/xml/event/entryEventIT.xml        |   236 +
 .../src/tests/xml/event/entryEventIlBug.xml     |   125 +
 .../src/tests/xml/event/entryEventLRU.xml       |    59 +
 .../src/tests/xml/event/entryEventLong.xml      |   271 +
 .../src/tests/xml/event/entryEventMT.xml        |   257 +
 .../src/tests/xml/event/entryEventMT100.xml     |   277 +
 .../src/tests/xml/event/entryEventMcast.xml     |   273 +
 .../src/tests/xml/event/entryEventNewTTL.xml    |   280 +
 .../src/tests/xml/event/entryEventOverflow.xml  |   181 +
 .../src/tests/xml/event/entryEventSegv.xml      |   258 +
 .../src/tests/xml/event/entryEventTCR.xml       |    56 +
 .../src/tests/xml/event/entryEventTTL.xml       |   236 +
 .../src/tests/xml/event/entryTest.xml           |   167 +
 .../src/tests/xml/event/netSearch.xml           |   162 +
 .../src/tests/xml/event/quickEntryEvent.xml     |   258 +
 .../src/tests/xml/event/regionEvent.xml         |   248 +
 .../src/tests/xml/event/regionEventLong.xml     |   248 +
 .../src/tests/xml/event/regionEventMT.xml       |   248 +
 .../src/tests/xml/event/regionEventOverflow.xml |   171 +
 .../src/tests/xml/fullNativePR.list             |    20 +
 .../src/tests/xml/functionExecution.list        |    13 +
 .../src/tests/xml/functionExecutionCsharp.list  |    12 +
 geode-client-native/src/tests/xml/fwk.list      |     4 +
 .../src/tests/xml/fwk/BBExercise.xml            |    10 +
 .../src/tests/xml/fwk/CppPerf.xml               |     8 +
 .../src/tests/xml/fwk/TimeResolution.xml        |     8 +
 .../src/tests/xml/fwk/UdpIpc.xml                |    21 +
 .../src/tests/xml/fwk/stopStartCS.xml           |   165 +
 .../src/tests/xml/genericPerf.list              |    43 +
 .../src/tests/xml/gfcpp-cache.xsd               |   132 +
 .../src/tests/xml/hct/csAckMirror.xml           |    10 +
 .../tests/xml/hct/dynamicInterestPolicyList.xml |   139 +
 .../xml/hct/staticInterestPolicyAllKeys.xml     |   132 +
 .../hct/staticInterestPolicyAllKeysLateOps.xml  |   137 +
 .../tests/xml/hct/staticInterestPolicyList.xml  |   132 +
 .../xml/hct/staticInterestPolicyListLateOps.xml |   138 +
 .../xml/hct/staticInterestPolicySingle.xml      |   126 +
 .../hct/staticInterestPolicySingleLateOps.xml   |   139 +
 .../src/tests/xml/mini/clientEventsFailover.xml |   162 +
 .../src/tests/xml/mixedMode.list                |     3 +
 .../src/tests/xml/mixedModeCS.list              |     4 +
 .../src/tests/xml/nativeNightly.list            |    19 +
 .../src/tests/xml/nativeNightlyHA.list          |    10 +
 geode-client-native/src/tests/xml/nativePR.list |     7 +
 geode-client-native/src/tests/xml/oneOff.list   |     2 +
 .../xml/parReg/subscription/csAckMirror.xml     |    12 +
 .../staticInterestPolicyAllKeys.xml             |   132 +
 .../staticInterestPolicyAllKeysLateOps.xml      |   137 +
 .../subscription/staticInterestPolicyList.xml   |   132 +
 .../staticInterestPolicyListLateOps.xml         |   138 +
 .../subscription/staticInterestPolicySingle.xml |   126 +
 .../staticInterestPolicySingleLateOps.xml       |   139 +
 geode-client-native/src/tests/xml/pdx.list      |    13 +
 .../src/tests/xml/pdx/AutoPdx/nestedPdxOps.xml  |   171 +
 .../src/tests/xml/pdx/AutoPdx/pdxFailover.xml   |   169 +
 .../xml/pdx/AutoPdx/pdxInstanceFactoryTest.xml  |   144 +
 .../src/tests/xml/pdx/AutoPdx/pdxPRRegionFE.xml |   123 +
 .../tests/xml/pdx/AutoPdx/pdxPRRegionOps.xml    |   115 +
 .../xml/pdx/AutoPdx/pdxPersistentRegionFE.xml   |   123 +
 .../tests/xml/pdx/AutoPdx/pdxPutGetFEMerge.xml  |   192 +
 .../tests/xml/pdx/AutoPdx/pdxPutGetMerge.xml    |   176 +
 .../xml/pdx/AutoPdx/pdxPutGetMergeWithRI.xml    |   180 +
 .../xml/pdx/AutoPdx/pdxPutGetPdxInstance.xml    |   135 +
 .../xml/pdx/AutoPdx/pdxReplicatedRegionFE.xml   |   140 +
 .../xml/pdx/AutoPdx/pdxReplicatedRegionRI.xml   |   153 +
 .../xml/pdx/AutoPdx/serialNestedPdxOps.xml      |   132 +
 .../src/tests/xml/pdx/CqQuery/csAckMirror.xml   |    43 +
 .../xml/pdx/CqQuery/durableCqFailoverR2.xml     |   209 +
 .../pdx/CqQuery/durableCqFailoverR2AutoPdx.xml  |   209 +
 .../xml/pdx/CqQuery/durableTimeoutWithCq.xml    |   148 +
 .../pdx/CqQuery/durableWithCqAutoPdxKATrue.xml  |   148 +
 .../xml/pdx/CqQuery/durableWithCqKAFalse.xml    |   149 +
 .../xml/pdx/CqQuery/durableWithCqKATrue.xml     |   148 +
 .../src/tests/xml/pdx/CqQuery/multRegCQOps.xml  |   128 +
 .../xml/pdx/CqQuery/multRegCQOpsAutoPdx.xml     |   128 +
 .../CqQuery/multRegServerFailoverAndCQOps.xml   |   158 +
 .../multRegServerFailoverAndCQOpsAutoPdx.xml    |   158 +
 .../resultSetValidationCQAutoPdxTest.xml        |   135 +
 .../pdx/CqQuery/resultSetValidationCQTest.xml   |   135 +
 .../tests/xml/pdx/CqQuery/serialEntryEvent.xml  |   217 +
 ...ialMultRegOpsCQListenerAutoPdxWithFeeder.xml |   234 +
 .../serialMultRegOpsCQListenerWithFeeder.xml    |   234 +
 .../xml/pdx/CqQuery/serverFailoverAndCQOps.xml  |   150 +
 .../tests/xml/pdx/CqQuery/singleRegCQOps.xml    |   121 +
 .../src/tests/xml/pdx/Pdx/csPRPdxFERegion.xml   |    16 +
 .../src/tests/xml/pdx/Pdx/csPartitionRegion.xml |    12 +
 .../src/tests/xml/pdx/Pdx/csPdxInstance.xml     |    13 +
 .../src/tests/xml/pdx/Pdx/csPersistentRgn.xml   |    17 +
 .../tests/xml/pdx/Pdx/csReplicatedPdxRegion.xml |    16 +
 .../src/tests/xml/pdx/Pdx/nestedPdxOps.xml      |   171 +
 .../src/tests/xml/pdx/Pdx/pdxFailover.xml       |   169 +
 .../xml/pdx/Pdx/pdxInstanceFactoryTest.xml      |   144 +
 .../src/tests/xml/pdx/Pdx/pdxPRRegionFE.xml     |   123 +
 .../src/tests/xml/pdx/Pdx/pdxPRRegionOps.xml    |   115 +
 .../tests/xml/pdx/Pdx/pdxPersistentRegionFE.xml |   123 +
 .../src/tests/xml/pdx/Pdx/pdxPutGetFEMerge.xml  |   192 +
 .../src/tests/xml/pdx/Pdx/pdxPutGetMerge.xml    |   176 +
 .../tests/xml/pdx/Pdx/pdxPutGetMergePdxType.xml |   117 +
 .../tests/xml/pdx/Pdx/pdxPutGetMergeWithRI.xml  |   180 +
 .../tests/xml/pdx/Pdx/pdxPutGetPdxInstance.xml  |   135 +
 .../tests/xml/pdx/Pdx/pdxReplicatedRegionFE.xml |   140 +
 .../tests/xml/pdx/Pdx/pdxReplicatedRegionRI.xml |   153 +
 .../tests/xml/pdx/Pdx/serialNestedPdxOps.xml    |   132 +
 .../clientEventsFailoverQueryTest.xml           |   197 +
 .../pdx/RemoteQuery/clientEventsQueryTest.xml   |   139 +
 .../tests/xml/pdx/RemoteQuery/csAckMirror.xml   |    43 +
 .../pdx/RemoteQuery/csNotifySubscription.xml    |    14 +
 .../src/tests/xml/pdx/RemoteQuery/csPR.xml      |    14 +
 .../xml/pdx/RemoteQuery/csServerEviction.xml    |    15 +
 .../pdx/RemoteQuery/csServerOverflowToDisk.xml  |    19 +
 .../tests/xml/pdx/RemoteQuery/csWithIndex.xml   |    49 +
 .../pdx/RemoteQuery/dataValidationQueryTest.xml |   144 +
 .../distributedDataValidationQueryTest.xml      |   146 +
 .../pdx/RemoteQuery/entryOperationQueryTest.xml |   123 +
 .../xml/pdx/RemoteQuery/failoverQueryTest.xml   |   147 +
 .../xml/pdx/RemoteQuery/regexAndQueryTest.xml   |   129 +
 .../pdx/RemoteQuery/serverEvictionQueryTest.xml |    86 +
 .../serverOverflowToDiskQueryTest.xml           |   122 +
 .../clientEventsFailoverQueryTest.xml           |   209 +
 .../clientEventsQueryAutoPdxTest.xml            |   142 +
 .../pdx/RemoteQueryPR/clientEventsQueryTest.xml |   142 +
 .../tests/xml/pdx/RemoteQueryPR/csAckMirror.xml |    29 +
 .../pdx/RemoteQueryPR/csNotifySubscription.xml  |    13 +
 .../xml/pdx/RemoteQueryPR/csServerEviction.xml  |    12 +
 .../tests/xml/pdx/RemoteQueryPR/csWithIndex.xml |    55 +
 .../xml/pdx/RemoteQueryPR/csWithIndexRC2.xml    |    56 +
 .../xml/pdx/RemoteQueryPR/csWithOutIndexRC2.xml |    35 +
 .../dataValidationQueryAutoPdxTest.xml          |   136 +
 .../RemoteQueryPR/dataValidationQueryTest.xml   |   136 +
 .../distributedDataValidationQueryTest.xml      |   142 +
 .../RemoteQueryPR/entryOperationQueryTest.xml   |   123 +
 .../RemoteQueryPR/failoverQueryAutoPdxTest.xml  |   222 +
 .../xml/pdx/RemoteQueryPR/failoverQueryTest.xml |   222 +
 .../xml/pdx/RemoteQueryPR/regexAndQueryTest.xml |   128 +
 .../RemoteQueryPR/serverEvictionQueryTest.xml   |    97 +
 .../src/tests/xml/pdx/tx/serialEntryEvent.xml   |   210 +
 .../src/tests/xml/pdx/tx/serialEntryEventPR.xml |   210 +
 .../xml/pdx/tx/serialEntryEventPRAutoPdx.xml    |   210 +
 .../tests/xml/pdx/tx/serverFailoverAndCQOps.xml |   151 +
 .../pdx/tx/serverFailoverAndCQOpsAutoPdx.xml    |   151 +
 .../src/tests/xml/pdx/tx/singleRegCQOps.xml     |   121 +
 .../tests/xml/pdx/tx/singleRegCQOpsAutoPdx.xml  |   121 +
 geode-client-native/src/tests/xml/pdxQTx.list   |    32 +
 geode-client-native/src/tests/xml/perf.list     |    43 +
 .../src/tests/xml/perf/atomicIncDecTest.xml     |    28 +
 .../src/tests/xml/perf/perfBenchmark.xml        |   306 +
 .../tests/xml/perf/perfBenchmarkOverflow.xml    |   195 +
 .../src/tests/xml/perf/perfBenchmarkPub.xml     |   311 +
 .../tests/xml/perf/perfBenchmarkVaryClients.xml |   661 +
 .../xml/perf/perfBenchmarkVaryClientsOF.xml     |   361 +
 .../tests/xml/perf/perfBenchmarkVaryKeys.xml    |   255 +
 .../xml/perf/perfBenchmarkVaryValueSize.xml     |   255 +
 .../xml/perf/perfBenchmarkVaryValueSizeOF.xml   |   200 +
 .../src/tests/xml/perf/perfByteArrayConcat.xml  |    41 +
 .../src/tests/xml/perf/perfFairQueue.xml        |   106 +
 .../src/tests/xml/perf/perfNodeScale.xml        |    87 +
 .../src/tests/xml/perf/perfTest.xml             |   596 +
 .../tests/xml/perf/perfTestPutGetDestroy.xml    |  1016 ++
 .../tests/xml/perf/perfTestPutGetDestroyOF.xml  |   763 +
 .../src/tests/xml/perf/quickPerfTest.xml        |   484 +
 .../src/tests/xml/precheckin.list               |    10 +
 .../src/tests/xml/remoteQueryNightly.list       |     9 +
 .../src/tests/xml/remoteQueryNightlyPR.list     |     8 +
 .../src/tests/xml/run24Hours.list               |     1 +
 geode-client-native/src/tests/xml/scale.list    |    36 +
 .../src/tests/xml/securityNightly.list          |     9 +
 .../src/tests/xml/shortNightly.list             |    10 +
 .../src/tests/xml/smoketest/ops.spec            |     3 +
 .../tests/xml/smoketest/perf/csAckMirror.xml    |    10 +
 .../xml/smoketest/perf/csAckMirrorForCq.xml     |    28 +
 .../xml/smoketest/perf/csAckMirrorNSFalse.xml   |    10 +
 .../perf/csAckMirrorNSFalseSelector.xml         |    10 +
 .../perf/csAckMirrorNSFalseSelector1.xml        |    10 +
 .../smoketest/perf/csAckMirrorWithOFtoDisk.xml  |    13 +
 .../smoketest/perf/csDeltaPRCloningFalse.xml    |    23 +
 .../perf/csDeltaPRCloningFalseNSTrue.xml        |    24 +
 .../perf/csDeltaReplicateCloningFalse.xml       |    45 +
 .../xml/smoketest/perf/csDpDefaultNSFalse.xml   |    10 +
 .../tests/xml/smoketest/perf/csPRNSFalse.xml    |    12 +
 .../xml/smoketest/perf/csPRNSFalseForQuery.xml  |    46 +
 .../perf/csPRNSFalseForQueryiWithIndex.xml      |    49 +
 .../src/tests/xml/smoketest/perf/csPRNSTrue.xml |    11 +
 .../tests/xml/smoketest/perf/csPRNSTrueRC1.xml  |    12 +
 .../src/tests/xml/smoketest/perf/getobject.xml  |   116 +
 .../src/tests/xml/smoketest/perf/perf016.spec   |     8 +
 .../src/tests/xml/smoketest/perf/perf016.xml    |   112 +
 .../src/tests/xml/smoketest/perf/perf017.xml    |   111 +
 .../src/tests/xml/smoketest/perf/perf020.spec   |     5 +
 .../src/tests/xml/smoketest/perf/perf021.spec   |     5 +
 .../src/tests/xml/smoketest/perf/perf038.spec   |    10 +
 .../src/tests/xml/smoketest/perf/perf061.spec   |     5 +
 .../src/tests/xml/smoketest/perf/perf061.xml    |    97 +
 .../src/tests/xml/smoketest/perf/perf062.xml    |    97 +
 .../src/tests/xml/smoketest/perf/perf063.xml    |    97 +
 .../src/tests/xml/smoketest/perf/perf064.xml    |    97 +
 .../src/tests/xml/smoketest/perf/perf065.xml    |    97 +
 .../src/tests/xml/smoketest/perf/perf067.spec   |     5 +
 .../src/tests/xml/smoketest/perf/perf067.xml    |    97 +
 .../src/tests/xml/smoketest/perf/perf068.xml    |    97 +
 .../src/tests/xml/smoketest/perf/perf069.xml    |    97 +
 .../src/tests/xml/smoketest/perf/perf070.xml    |    97 +
 .../src/tests/xml/smoketest/perf/perf071.xml    |    97 +
 .../src/tests/xml/smoketest/perf/perf073.spec   |    24 +
 .../src/tests/xml/smoketest/perf/perf073.xml    |    63 +
 .../src/tests/xml/smoketest/perf/perf074.xml    |    59 +
 .../src/tests/xml/smoketest/perf/perf075.xml    |    65 +
 .../src/tests/xml/smoketest/perf/perf077.xml    |   118 +
 .../src/tests/xml/smoketest/perf/perf078.xml    |   118 +
 .../src/tests/xml/smoketest/perf/perf079.xml    |   116 +
 .../src/tests/xml/smoketest/perf/perf082.xml    |   110 +
 .../src/tests/xml/smoketest/perf/perf083.xml    |   110 +
 .../src/tests/xml/smoketest/perf/perf088.spec   |     5 +
 .../src/tests/xml/smoketest/perf/perf090.xml    |   118 +
 .../src/tests/xml/smoketest/perf/perf091.xml    |   118 +
 .../src/tests/xml/smoketest/perf/perf092.xml    |   115 +
 .../src/tests/xml/smoketest/perf/perf096.xml    |    92 +
 .../src/tests/xml/smoketest/perf/perf097.xml    |    92 +
 .../src/tests/xml/smoketest/perf/perf098.spec   |    28 +
 .../src/tests/xml/smoketest/perf/perf098.xml    |   121 +
 .../src/tests/xml/smoketest/perf/perf100.xml    |    94 +
 .../src/tests/xml/smoketest/perf/perf102.xml    |    60 +
 .../src/tests/xml/smoketest/perf/perf103.xml    |    59 +
 .../src/tests/xml/smoketest/perf/perf104.xml    |    59 +
 .../src/tests/xml/smoketest/perf/perf105.xml    |    59 +
 .../src/tests/xml/smoketest/perf/perf106.xml    |    84 +
 .../src/tests/xml/smoketest/perf/perf107.xml    |    84 +
 .../src/tests/xml/smoketest/perf/perf108.xml    |    84 +
 .../src/tests/xml/smoketest/perf/perf109.xml    |    84 +
 .../src/tests/xml/smoketest/perf/perf110.xml    |    81 +
 .../src/tests/xml/smoketest/perf/perf111.xml    |    79 +
 .../src/tests/xml/smoketest/perf/perf112.xml    |    97 +
 .../src/tests/xml/smoketest/perf/perf113.xml    |   120 +
 .../src/tests/xml/smoketest/perf/perf114.xml    |   115 +
 .../src/tests/xml/smoketest/perf/perf115.xml    |   115 +
 .../src/tests/xml/smoketest/perf/perf145.spec   |     5 +
 .../src/tests/xml/smoketest/perf/perf148.xml    |   114 +
 .../src/tests/xml/smoketest/perf/perf149.xml    |   112 +
 .../src/tests/xml/smoketest/perf/perf150.spec   |    10 +
 .../src/tests/xml/smoketest/perf/perf150.xml    |   132 +
 .../src/tests/xml/smoketest/perf/perf152.xml    |   111 +
 .../src/tests/xml/smoketest/perf/perf153.xml    |   133 +
 .../src/tests/xml/smoketest/perf/perf154.xml    |   133 +
 .../tests/xml/smoketest/scale/cacheOpens.spec   |    21 +
 .../tests/xml/smoketest/scale/cpuActive.spec    |    20 +
 .../tests/xml/smoketest/scale/createKeys.spec   |    15 +
 .../tests/xml/smoketest/scale/creategets.spec   |     2 +
 .../tests/xml/smoketest/scale/createputs.spec   |     2 +
 .../src/tests/xml/smoketest/scale/creates.spec  |    15 +
 .../xml/smoketest/scale/createupdateEvents.spec |     2 +
 .../xml/smoketest/scale/createupdates.spec      |     2 +
 .../scale/csDeltaCloningFalseUseSelector.xml    |    22 +
 .../scale/csDeltaPRCloningFalseUseSelector.xml  |    23 +
 .../smoketest/scale/csFEPartitionedRegion.xml   |    89 +
 .../smoketest/scale/csFEReplicatedRegion.xml    |    88 +
 .../tests/xml/smoketest/scale/csMirrorDack.xml  |    10 +
 .../smoketest/scale/csMirrorDack5Selector.xml   |    10 +
 .../smoketest/scale/csMirrorDackSelector.xml    |    10 +
 .../xml/smoketest/scale/csPRRC1NoSelector.xml   |    12 +
 .../xml/smoketest/scale/csPRRC1Use5Selector.xml |    12 +
 .../xml/smoketest/scale/csPRRC1UseSelector.xml  |    12 +
 .../tests/xml/smoketest/scale/extragets.spec    |    11 +
 .../tests/xml/smoketest/scale/extraputs.spec    |    11 +
 .../src/tests/xml/smoketest/scale/gets.spec     |    15 +
 .../src/tests/xml/smoketest/scale/memputs.spec  |    15 +
 .../src/tests/xml/smoketest/scale/process.spec  |    10 +
 .../src/tests/xml/smoketest/scale/putgets.spec  |    34 +
 .../src/tests/xml/smoketest/scale/puts.spec     |    15 +
 .../xml/smoketest/scale/putupdateEvents.spec    |     2 +
 .../src/tests/xml/smoketest/scale/scale047.xml  |   134 +
 .../src/tests/xml/smoketest/scale/scale048.xml  |   137 +
 .../src/tests/xml/smoketest/scale/scale049.xml  |   136 +
 .../src/tests/xml/smoketest/scale/scale050.xml  |   140 +
 .../src/tests/xml/smoketest/scale/scale051.xml  |   131 +
 .../src/tests/xml/smoketest/scale/scale052.xml  |   139 +
 .../src/tests/xml/smoketest/scale/scale053.xml  |   136 +
 .../src/tests/xml/smoketest/scale/scale054.xml  |   137 +
 .../src/tests/xml/smoketest/scale/scale055.xml  |   136 +
 .../src/tests/xml/smoketest/scale/scale056.xml  |   138 +
 .../src/tests/xml/smoketest/scale/scale057.xml  |   138 +
 .../src/tests/xml/smoketest/scale/scale058.xml  |   133 +
 .../src/tests/xml/smoketest/scale/scale059.xml  |   138 +
 .../src/tests/xml/smoketest/scale/scale060.xml  |   138 +
 .../src/tests/xml/smoketest/scale/scale061.xml  |   136 +
 .../src/tests/xml/smoketest/scale/scale062.xml  |   140 +
 .../src/tests/xml/smoketest/scale/scale063.xml  |   136 +
 .../src/tests/xml/smoketest/scale/scale064.xml  |   139 +
 .../src/tests/xml/smoketest/scale/scale065.xml  |   139 +
 .../src/tests/xml/smoketest/scale/scale066.xml  |   152 +
 .../src/tests/xml/smoketest/scale/scale071.xml  |   149 +
 .../src/tests/xml/smoketest/scale/scale072.xml  |   149 +
 .../src/tests/xml/smoketest/scale/scale073.xml  |   152 +
 .../src/tests/xml/smoketest/scale/scale074.xml  |   146 +
 .../src/tests/xml/smoketest/scale/scale075.xml  |   149 +
 .../src/tests/xml/smoketest/scale/scale076.xml  |   150 +
 .../src/tests/xml/smoketest/scale/scale077.xml  |   147 +
 .../src/tests/xml/smoketest/scale/scale078.xml  |   151 +
 .../src/tests/xml/smoketest/scale/scale079.xml  |   150 +
 .../src/tests/xml/smoketest/scale/scale080.xml  |   151 +
 .../src/tests/xml/smoketest/scale/scale081.xml  |   146 +
 .../src/tests/xml/smoketest/scale/scale082.xml  |   150 +
 .../src/tests/xml/smoketest/scale/scale083.xml  |   153 +
 .../src/tests/xml/smoketest/scale/scale084.xml  |   150 +
 .../src/tests/xml/smoketest/scale/scale085.xml  |   154 +
 .../src/tests/xml/smoketest/scale/scale086.xml  |   154 +
 .../tests/xml/smoketest/scale/updateEvents.spec |    11 +
 .../src/tests/xml/smoketest/scale/updates.spec  |    15 +
 .../xml/smoketest/scale/updateupdateEvents.spec |    27 +
 geode-client-native/src/tests/xml/ssl.list      |     2 +
 .../src/tests/xml/subscription.list             |    18 +
 .../src/tests/xml/targetedRegression.list       |    49 +
 .../src/tests/xml/testDefinition.xsd            |   228 +
 geode-client-native/tests/GNUmakefile           |    16 +
 .../tests/JavaVsDotNet_perf.html                |    47 +
 .../tests/addLoadTools/CPUHogger.java           |   215 +
 .../tests/addLoadTools/NetworkHoggerClient.java |    44 +
 .../NetworkHoggerServerInteractive.java         |   224 +
 .../addLoadTools/NetworkHoggerUDPClient.java    |    54 +
 .../addLoadTools/NetworkHoggerUDPServer.java    |    58 +
 .../tests/cacheserver/CacheServerTest.cpp       |  3127 ++++
 .../tests/cacheserver/CacheServerTest.hpp       |   413 +
 .../cacheserver/ExpectedRegionContents.hpp      |   360 +
 .../tests/cacheserver/GNUmakefile               |    13 +
 geode-client-native/tests/cppPerf/CppPerf.cpp   |   491 +
 geode-client-native/tests/cppPerf/CppPerf.hpp   |   139 +
 geode-client-native/tests/cppPerf/GNUmakefile   |    13 +
 geode-client-native/tests/delta/DeltaTest.cpp   |   969 ++
 geode-client-native/tests/delta/DeltaTest.hpp   |   263 +
 geode-client-native/tests/delta/GNUmakefile     |    13 +
 .../tests/docExamples/AccountHistory.hpp        |   159 +
 .../tests/docExamples/BankAccount.hpp           |   134 +
 .../tests/docExamples/CacheHelper.hpp           |   463 +
 .../docExamples/Ch_02_NativeClientCache.cpp     |   339 +
 .../docExamples/Ch_02_NativeClientCache.hpp     |    61 +
 .../Ch_04_CacheableKeyBankAccount.cpp           |    86 +
 .../Ch_04_CacheableKeyBankAccount.hpp           |    98 +
 .../tests/docExamples/Ch_04_CppCachingApi.cpp   |   199 +
 .../tests/docExamples/Ch_04_CppCachingApi.hpp   |    38 +
 .../Ch_04_SerializableBankAccount.cpp           |    86 +
 .../Ch_04_SerializableBankAccount.hpp           |    87 +
 .../docExamples/Ch_04_SimpleBankAccount.cpp     |    31 +
 .../docExamples/Ch_04_SimpleBankAccount.hpp     |    37 +
 .../docExamples/Ch_04_UsingCustomClass.cpp      |    70 +
 .../docExamples/Ch_06_SettingProperties.cpp     |    73 +
 .../docExamples/Ch_06_SettingProperties.hpp     |    31 +
 .../tests/docExamples/Ch_07_PreservingData.cpp  |   147 +
 .../tests/docExamples/Ch_07_PreservingData.hpp  |    42 +
 .../tests/docExamples/Ch_08_Security.cpp        |    74 +
 .../tests/docExamples/Ch_08_Security.hpp        |    31 +
 .../tests/docExamples/Ch_09_Portfolio.cpp       |    28 +
 .../tests/docExamples/Ch_09_Portfolio.hpp       |    34 +
 .../tests/docExamples/Ch_09_RemoteQuerying.cpp  |   401 +
 .../tests/docExamples/Ch_09_RemoteQuerying.hpp  |    45 +
 .../docExamples/Ch_10_ContinuousQuerying.cpp    |   199 +
 .../docExamples/Ch_10_ContinuousQuerying.hpp    |   188 +
 .../tests/docExamples/Ch_11_ConnectionPools.cpp |   103 +
 .../tests/docExamples/Ch_11_ConnectionPools.hpp |    36 +
 .../docExamples/Ch_12_FunctionExecution.cpp     |   177 +
 .../docExamples/Ch_12_FunctionExecution.hpp     |    45 +
 .../docExamples/Ch_13_ExampleCacheLoader.cpp    |   112 +
 .../docExamples/Ch_13_ExampleCacheLoader.hpp    |    40 +
 .../tests/docExamples/Ch_13_ExampleObject.hpp   |   189 +
 .../tests/docExamples/Ch_13_User.hpp            |   144 +
 .../tests/docExamples/DataSerialization.cpp     |    96 +
 .../tests/docExamples/DataSerialization.hpp     |    33 +
 .../docExamples/DataSerializationServer.xml     |    17 +
 .../tests/docExamples/DocXmlSnippets.xml        |    40 +
 .../tests/docExamples/DocXmlSnippetsServer.xml  |    54 +
 .../tests/docExamples/Example7_3.xml            |    16 +
 .../tests/docExamples/ExampleTestXml.cpp        |   153 +
 .../tests/docExamples/ExampleTestXml.hpp        |    44 +
 .../tests/docExamples/Example_2_1.xml           |    18 +
 .../tests/docExamples/Example_3_1.xml           |    51 +
 .../tests/docExamples/GNUmakefile               |   119 +
 .../tests/docExamples/UsingCustomClass.xml      |    30 +
 .../cacheserver_notify_subscription.xml         |    40 +
 .../tests/docExamples/change.txt                |   469 +
 .../tests/docExamples/clientRemoteQuery.xml     |    22 +
 .../tests/docExamples/example.xml               |   324 +
 .../tests/docExamples/remoteQuery.xml           |    22 +
 .../tests/docExamples/serverRemoteQuery.xml     |   115 +
 .../tests/docExamples/server_xml.xml            |    34 +
 .../tests/docExamples/tradeOrder.xml            |    33 +
 .../durableClientTest/DurableClientTest.cpp     |   920 ++
 .../durableClientTest/DurableClientTest.hpp     |   228 +
 .../tests/durableClientTest/GNUmakefile         |    12 +
 geode-client-native/tests/event/EventTest.cpp   |  2532 +++
 geode-client-native/tests/event/EventTest.hpp   |   280 +
 geode-client-native/tests/event/GNUmakefile     |    13 +
 .../functionExecution/FunctionExecution.cpp     |  1340 ++
 .../functionExecution/FunctionExecution.hpp     |   424 +
 .../tests/functionExecution/GNUmakefile         |    13 +
 geode-client-native/tests/fwkbin/Client.cpp     |   509 +
 geode-client-native/tests/fwkbin/Client.hpp     |    15 +
 geode-client-native/tests/fwkbin/Driver.cpp     |  1112 ++
 geode-client-native/tests/fwkbin/Driver.hpp     |    15 +
 .../tests/fwkbin/FileProcessor.cpp              |    45 +
 .../tests/fwkbin/FileProcessor.hpp              |    13 +
 geode-client-native/tests/fwkbin/FwkBB.cpp      |    98 +
 geode-client-native/tests/fwkbin/GNUmakefile    |    12 +
 geode-client-native/tests/fwkbin/TimeStr.cpp    |    40 +
 geode-client-native/tests/fwkbin/Validate.cpp   |    47 +
 .../tests/helloWorld/GfHelloWorld.cpp           |    32 +
 .../tests/helloWorld/README.html                |    91 +
 .../tests/helloWorld/buildit.bat                |     7 +
 geode-client-native/tests/helloWorld/buildit.sh |    18 +
 .../tests/helloWorld/gfcpp.properties           |     1 +
 .../tests/javaobject/BankAccount.java           |    95 +
 .../tests/javaobject/BatchObject.java           |   116 +
 .../BridgeClientMembershipListener.java         |    60 +
 .../tests/javaobject/BridgeEventListener.java   |    60 +
 .../javaobject/CacheListenerForConflation.java  |    65 +
 .../javaobject/CacheListenerForQueryIndex.java  |   108 +
 .../javaobject/CacheLoaderForSingleHop.java     |    94 +
 .../javaobject/CacheWriterForSingleHop.java     |   161 +
 .../tests/javaobject/ComparePdxTypes.java       |   220 +
 .../CustomFixedPartitionResolver1.java          |    74 +
 .../CustomFixedPartitionResolver2.java          |    68 +
 .../CustomFixedPartitionResolver3.java          |    62 +
 .../javaobject/CustomPartitionResolver.java     |    33 +
 .../tests/javaobject/DefaultCacheable.java      |   227 +
 .../tests/javaobject/DeltaEx.java               |    71 +
 .../tests/javaobject/DeltaExample.java          |   126 +
 .../tests/javaobject/DeltaFastAssetAccount.java |   241 +
 .../tests/javaobject/DeltaPSTObject.java        |   121 +
 .../tests/javaobject/DeltaTest.java             |    66 +
 .../tests/javaobject/DeltaTestImpl.java         |   406 +
 .../tests/javaobject/DummyAuthorization.java    |   145 +
 .../tests/javaobject/DummyAuthorization2.java   |   116 +
 .../tests/javaobject/DummyAuthorization3.java   |   134 +
 .../tests/javaobject/EqStruct.java              |   280 +
 .../tests/javaobject/ExampleFunction.java       |   230 +
 .../tests/javaobject/ExampleObject.java         |   152 +
 .../javaobject/ExceptionHandlingFunction.java   |    54 +
 .../tests/javaobject/FEOnRegionPrSHOP.java      |    39 +
 .../FEOnRegionPrSHOP_OptimizeForWrite.java      |    73 +
 .../tests/javaobject/FastAsset.java             |   116 +
 .../tests/javaobject/FastAssetAccount.java      |   192 +
 .../tests/javaobject/FireNForget.java           |    59 +
 .../javaobject/FunctionExecutionTimeOut.java    |    72 +
 .../tests/javaobject/GetFunctionExeHA.java      |    54 +
 .../tests/javaobject/GetKeyFunction.java        |    56 +
 .../tests/javaobject/InstantiatorTest.java      |   227 +
 .../tests/javaobject/IterateRegion.java         |    48 +
 .../tests/javaobject/LatestProp.java            |    37 +
 .../tests/javaobject/MigrateVM.java             |   108 +
 .../tests/javaobject/ModPartitionResolver.java  |    34 +
 .../tests/javaobject/ModRoutingObject.java      |    90 +
 .../tests/javaobject/MultiGetFunction.java      |    52 +
 .../tests/javaobject/MultiGetFunction2.java     |    56 +
 .../tests/javaobject/MultiGetFunctionI.java     |    64 +
 .../tests/javaobject/MultiPutFunction.java      |    55 +
 .../tests/javaobject/MultiPutFunctionI.java     |    68 +
 .../tests/javaobject/NoopAccessor.java          |    34 +
 .../tests/javaobject/NoopAuthenticator.java     |    35 +
 .../tests/javaobject/NoopPrincipal.java         |    21 +
 .../javaobject/OnServerHAExceptionFunction.java |    93 +
 .../javaobject/OnServerHAShutdownFunction.java  |    93 +
 .../tests/javaobject/PSTObject.java             |   146 +
 .../tests/javaobject/PdxCacheListener.java      |    86 +
 .../tests/javaobject/PdxDelta.java              |    77 +
 .../tests/javaobject/PdxFunctionTest.java       |    62 +
 .../tests/javaobject/PdxTests/Address.java      |    71 +
 .../tests/javaobject/PdxTests/PdxDeltaEx.java   |    73 +
 .../javaobject/PdxTests/PdxTestsWithAuto.java   |   549 +
 .../tests/javaobject/PdxTests/PdxType.java      |   546 +
 .../tests/javaobject/PdxTests/PdxTypes1.java    |    82 +
 .../tests/javaobject/PdxTests/PdxTypes10.java   |    76 +
 .../tests/javaobject/PdxTests/PdxTypes2.java    |    74 +
 .../tests/javaobject/PdxTests/PdxTypes3.java    |    75 +
 .../tests/javaobject/PdxTests/PdxTypes4.java    |    77 +
 .../tests/javaobject/PdxTests/PdxTypes5.java    |    80 +
 .../tests/javaobject/PdxTests/PdxTypes6.java    |    81 +
 .../tests/javaobject/PdxTests/PdxTypes7.java    |    85 +
 .../tests/javaobject/PdxTests/PdxTypes8.java    |    89 +
 .../tests/javaobject/PdxTests/PdxTypes9.java    |    76 +
 .../tests/javaobject/PdxTests/PdxVersioned.java |   494 +
 .../tests/javaobject/PdxTests/pdxEnumTest.java  |     9 +
 .../javaobject/PdxinstanceHashcodeListener.java |    84 +
 .../tests/javaobject/Portfolio.java             |   275 +
 .../tests/javaobject/Position.java              |   209 +
 .../tests/javaobject/PutAllTimeout.java         |    99 +
 .../tests/javaobject/PutKeyFunction.java        |    61 +
 .../javaobject/RegionOperationsFunction.java    |   254 +
 .../RegionOperationsFunctionOptimized.java      |   212 +
 .../RegionOperationsFunctionOptimizedFalse.java |   208 +
 .../javaobject/RegionOperationsFunctionPdx.java |   322 +
 .../javaobject/RegionOperationsHAFunction.java  |   109 +
 .../RegionOperationsHAFunctionPrSHOP.java       |   111 +
 .../RegionOperationsWithOutResultFunction.java  |   229 +
 .../javaobject/ServerOperationsFunction.java    |   124 +
 .../ServerOperationsWithOutResultFunction.java  |   121 +
 .../tests/javaobject/SimpleCacheListener.java   |   123 +
 .../javaobject/SimpleCacheListenerWithAuto.java |    86 +
 .../tests/javaobject/SingleStrGetFunction.java  |    71 +
 .../tests/javaobject/TestObject1.java           |    68 +
 .../tests/javaobject/TradeKey.java              |   101 +
 .../tests/javaobject/TradeKeyResolver.java      |    35 +
 .../tests/javaobject/TradeOrder.java            |   206 +
 geode-client-native/tests/javaobject/User.java  |    89 +
 .../executeFunction_SendException.java          |    67 +
 .../tests/javaobject/newapi/Portfolio.java      |   275 +
 .../tests/javaobject/newapi/Position.java       |   209 +
 .../tests/mixed/javaclient/CacheRunner.java     |  2714 ++++
 .../mixed/javaclient/ExampleObject-sharing.xml  |    15 +
 .../tests/mixed/javaclient/ExampleObject.java   |   233 +
 .../mixed/javaclient/LoggingCacheCallback.java  |   297 +
 .../mixed/javaclient/LoggingCacheListener.java  |    58 +
 .../mixed/javaclient/LoggingCacheLoader.java    |    67 +
 .../mixed/javaclient/LoggingCacheWriter.java    |    58 +
 .../javaclient/LoggingTransactionListener.java  |    93 +
 .../tests/mixed/javaclient/ObjectBytes.java     |    65 +
 .../tests/mixed/javaclient/ObjectDouble.java    |    62 +
 .../tests/mixed/javaclient/ObjectFloat.java     |    62 +
 .../tests/mixed/javaclient/ObjectInt.java       |    62 +
 .../tests/mixed/javaclient/ObjectLong.java      |    62 +
 .../tests/mixed/javaclient/ObjectShort.java     |    62 +
 .../tests/mixed/javaclient/ObjectString.java    |    62 +
 .../tests/mixed/javaclient/ObjectVector.java    |    69 +
 .../tests/mixed/javaclient/Portfolio.java       |   119 +
 .../tests/mixed/javaclient/Position.java        |    64 +
 .../tests/mixed/javaclient/README               |   220 +
 .../tests/mixed/javaclient/StringLoader.java    |    44 +
 .../tests/mixed/javaclient/User.java            |    88 +
 .../tests/mixed/javaclient/backup_cache.xml     |    35 +
 .../tests/mixed/javaclient/bridge_client.xml    |    52 +
 .../tests/mixed/javaclient/bridge_server.xml    |    22 +
 .../tests/mixed/javaclient/cache.xml            |    31 +
 .../tests/mixed/javaclient/cacheProxy.xml       |    39 +
 .../tests/mixed/javaclient/gemfire.properties   |     9 +
 .../tests/mixed/javaclient/mytest.txt           |    30 +
 .../tests/mixed/javaclient/queryPortfolios.xml  |   294 +
 .../tests/multiusersecurity/GNUmakefile         |    13 +
 .../multiusersecurity/MultiUserSecurity.cpp     |   943 ++
 .../multiusersecurity/MultiUserSecurity.hpp     |   140 +
 geode-client-native/tests/pdxtest/GNUmakefile   |    13 +
 geode-client-native/tests/pdxtest/pdxTests.cpp  |  1802 ++
 geode-client-native/tests/pdxtest/pdxTests.hpp  |   732 +
 .../tests/perfTests/FairQueue1.hpp              |   158 +
 .../tests/perfTests/FairQueue2.hpp              |   165 +
 .../tests/perfTests/FairQueueSol1.hpp           |   137 +
 .../tests/perfTests/FairQueueSol2.hpp           |   151 +
 geode-client-native/tests/perfTests/GNUmakefile |    13 +
 .../tests/perfTests/PerfInternalTest.cpp        |   741 +
 .../tests/perfTests/PerfTasks.hpp               |   259 +
 .../tests/perfTests/PerfTest.cpp                |  2811 ++++
 .../tests/perfTests/PerfTest.hpp                |   513 +
 .../tests/queryTests/GNUmakefile                |    12 +
 .../tests/queryTests/QueryTest.cpp              |  2150 +++
 .../tests/queryTests/QueryTest.hpp              |   190 +
 geode-client-native/tests/scripts/cdb.pl        |    94 +
 geode-client-native/tests/scripts/cron.sample   |     2 +
 .../tests/scripts/cronbeaverton.sh              |    61 +
 .../tests/scripts/cronbeaverton.txt             |     9 +
 geode-client-native/tests/scripts/cronpune.txt  |     9 +
 geode-client-native/tests/scripts/gdb.pl        |    88 +
 .../tests/scripts/genCSFwkReport.sh             |   111 +
 geode-client-native/tests/scripts/genCSV.sh     |    62 +
 .../tests/scripts/genericFunctions.sh           |   203 +
 .../tests/scripts/killJavaServer.sh             |    53 +
 .../tests/scripts/killJavaServers.sh            |    63 +
 .../tests/scripts/nightly-batch.sh              |   145 +
 geode-client-native/tests/scripts/piper.sh      |    44 +
 geode-client-native/tests/scripts/runBatch.sh   |   311 +
 geode-client-native/tests/scripts/runBuild.sh   |   113 +
 .../tests/scripts/runCPPCSDriver.sh             |   103 +
 .../tests/scripts/runCSDriver.sh                |   145 +
 .../tests/scripts/runCSFunctions.sh             |   216 +
 geode-client-native/tests/scripts/runCSTests.sh |   397 +
 geode-client-native/tests/scripts/runDriver.sh  |   181 +
 .../tests/scripts/runDriverFunctions.sh         |  1344 ++
 .../tests/scripts/runPerfTest.sh                |    58 +
 .../tests/scripts/runScalePerf.sh               |    60 +
 .../tests/scripts/setCLITrust.bat               |     1 +
 .../tests/scripts/setupJavaClients.sh           |   150 +
 .../tests/scripts/setupJavaServers.sh           |   245 +
 geode-client-native/tests/scripts/startCSFwk.sh |   128 +
 .../tests/scripts/startClient.sh                |    65 +
 .../tests/scripts/startJavaClients.sh           |    76 +
 .../tests/scripts/startJavaServers.sh           |   218 +
 geode-client-native/tests/scripts/stopAll.sh    |    82 +
 geode-client-native/tests/scripts/stopCS.sh     |    80 +
 geode-client-native/tests/scripts/stopCSFwk.sh  |    34 +
 geode-client-native/tests/scripts/stopClient.sh |    45 +
 .../tests/scripts/stopJavaServers.sh            |    72 +
 .../tests/scripts/stopProcess.sh                |    47 +
 .../tests/scripts/using_runCPPCSDriver          |    40 +
 .../tests/scripts/using_runCSDriver             |   161 +
 .../tests/scripts/using_runDriver               |   166 +
 .../tests/scripts/using_scalePerfDriver         |     6 +
 .../tests/scripts/waitForBBKey.sh               |    26 +
 .../tests/scripts/waitForTask.sh                |    72 +
 geode-client-native/tests/smokeperf/GNUmakefile |    13 +
 .../tests/smokeperf/ObjectHelper.hpp            |    93 +
 .../tests/smokeperf/PerfStat.cpp                |   118 +
 .../tests/smokeperf/PerfStat.hpp                |   233 +
 .../tests/smokeperf/SmokeTasks.hpp              |  1010 ++
 .../tests/smokeperf/Smokeperf.cpp               |  2904 ++++
 .../tests/smokeperf/Smokeperf.hpp               |   363 +
 .../tests/testdb/insertRegressionData.java      |    45 +
 .../tests/tools/CheckSyncMcast.cpp              |   196 +
 geode-client-native/tests/tools/GNUmakefile     |    12 +
 geode-client-native/tests/tools/checkSync.cpp   |   211 +
 geode-client-native/tests/tools/checkTS.cpp     |    60 +
 .../tests/userobject/ExampleObject.hpp          |   190 +
 .../tests/userobject/GNUmakefile                |    13 +
 geode-client-native/tests/userobject/User.hpp   |   136 +
 .../tests/userobject/UserObjectTest.cpp         |   377 +
 .../tests/userobject/UserObjectTest.hpp         |    72 +
 geode-client-native/tests/utils/GNUmakefile     |    13 +
 geode-client-native/tests/utils/Utils.cpp       |  1434 ++
 geode-client-native/tests/utils/Utils.hpp       |    73 +
 geode-client-native/tests/valgrind/nc.supp      |   136 +
 .../valgrind/run_all_tests_with_valgrind.sh     |    10 +
 .../vs_projects_10/antTasks/build_setup.vcxproj |   129 +
 .../antTasks/build_setup.vcxproj.filters        |    20 +
 .../antTasks/extern-compile-cpp-tests.vcxproj   |   128 +
 .../extern-compile-cpp-tests.vcxproj.filters    |    20 +
 .../antTasks/extern-examples.vcxproj            |   128 +
 .../antTasks/extern-examples.vcxproj.filters    |    20 +
 .../antTasks/extern-gfclicache.vcxproj          |   128 +
 .../antTasks/extern-gfclicache.vcxproj.filters  |    20 +
 .../vs_projects_10/antTasks/pack-core.vcxproj   |   128 +
 .../antTasks/pack-core.vcxproj.filters          |    20 +
 .../vs_projects_10/antTasks/pack-tests.vcxproj  |   128 +
 .../antTasks/pack-tests.vcxproj.filters         |    20 +
 geode-client-native/vs_projects_10/bdb.sln      |   152 +
 .../cryptoimpl/cryptoimpl.vcxproj               |   227 +
 .../cryptoimpl/cryptoimpl.vcxproj.filters       |    36 +
 .../BenchmarkHierarchicalClient.csproj          |   121 +
 .../clicache/CacheRunner/CacheRunner.csproj     |   163 +
 .../examples/clicache/CqQuery/CqQuery.csproj    |   135 +
 .../ExecuteFunctions/ExecuteFunctions.csproj    |   119 +
 .../clicache/HelloWorld/HelloWorld.csproj       |   119 +
 .../HierarchicalClient.csproj                   |   120 +
 .../ProductBrowser/ProductBrowser.csproj        |   154 +
 .../clicache/UserObjects/UserObjects.csproj     |   121 +
 .../vs_projects_10/executables.sln              |    89 +
 .../executables/GacInstall.csproj               |   116 +
 .../vs_projects_10/executables/gfcpp.vcxproj    |   175 +
 .../executables/gfcpp.vcxproj.filters           |    42 +
 .../executables/gflicenseutil.vcxproj           |   169 +
 .../executables/gflicenseutil.vcxproj.filters   |    22 +
 .../executables/pdxautoserializer.vcxproj       |   219 +
 .../pdxautoserializer.vcxproj.filters           |   132 +
 geode-client-native/vs_projects_10/fwk.sln      |   482 +
 .../vs_projects_10/fwk/FwkBB.vcxproj            |   175 +
 .../vs_projects_10/fwk/FwkBB.vcxproj.filters    |    22 +
 .../vs_projects_10/fwk/Validate.vcxproj         |   175 +
 .../vs_projects_10/fwk/Validate.vcxproj.filters |    22 +
 .../vs_projects_10/fwk/cacheserver.vcxproj      |   167 +
 .../fwk/cacheserver.vcxproj.filters             |    30 +
 .../vs_projects_10/fwk/client.vcxproj           |   184 +
 .../vs_projects_10/fwk/client.vcxproj.filters   |    27 +
 .../vs_projects_10/fwk/cppPerf.vcxproj          |   184 +
 .../vs_projects_10/fwk/cppPerf.vcxproj.filters  |    27 +
 .../vs_projects_10/fwk/delta.vcxproj            |   185 +
 .../vs_projects_10/fwk/delta.vcxproj.filters    |    27 +
 .../vs_projects_10/fwk/driver.vcxproj           |   184 +
 .../vs_projects_10/fwk/driver.vcxproj.filters   |    27 +
 .../fwk/durableclienttests.vcxproj              |   184 +
 .../fwk/durableclienttests.vcxproj.filters      |    27 +
 .../vs_projects_10/fwk/eventtest.vcxproj        |   184 +
 .../fwk/eventtest.vcxproj.filters               |    27 +
 .../vs_projects_10/fwk/fileprocessor.vcxproj    |   178 +
 .../fwk/fileprocessor.vcxproj.filters           |    27 +
 .../vs_projects_10/fwk/framework.vcxproj        |   198 +
 .../fwk/framework.vcxproj.filters               |   147 +
 .../fwk/functionExecution.vcxproj               |   178 +
 .../fwk/functionExecution.vcxproj.filters       |    27 +
 .../vs_projects_10/fwk/pdxtest.vcxproj          |   185 +
 .../vs_projects_10/fwk/pdxtest.vcxproj.filters  |    27 +
 .../vs_projects_10/fwk/perftest.vcxproj         |   191 +
 .../vs_projects_10/fwk/perftest.vcxproj.filters |    45 +
 .../vs_projects_10/fwk/queryTests.vcxproj       |   184 +
 .../fwk/queryTests.vcxproj.filters              |    27 +
 .../vs_projects_10/fwk/security.vcxproj         |   148 +
 .../vs_projects_10/fwk/security.vcxproj.filters |    39 +
 .../vs_projects_10/fwk/smokeperf.vcxproj        |   188 +
 .../fwk/smokeperf.vcxproj.filters               |    39 +
 .../vs_projects_10/fwk/testobjects.vcxproj      |   267 +
 .../fwk/testobjects.vcxproj.filters             |   300 +
 .../vs_projects_10/fwk/timestr.vcxproj          |   184 +
 .../vs_projects_10/fwk/timestr.vcxproj.filters  |    27 +
 .../vs_projects_10/fwk/userobjects.vcxproj      |   181 +
 .../fwk/userobjects.vcxproj.filters             |    33 +
 .../vs_projects_10/fwk/utils.vcxproj            |   178 +
 .../vs_projects_10/fwk/utils.vcxproj.filters    |    27 +
 .../vs_projects_10/gemfirecpp.sln               |   186 +
 .../gfclicache/gfclicache.vcxproj               |  2044 +++
 .../gfclicache/gfclicache.vcxproj.filters       |  1429 ++
 .../NativeWrapper/NativeWrapper.vcxproj.filters |    32 +
 .../PkcsWrapper/PkcsWrapper.vcxproj.filters     |    35 +
 .../QueryHelper/QueryWrapper.vcxproj.filters    |    26 +
 .../vs_projects_10/gfcppcache/bdbimpl.vcxproj   |   190 +
 .../gfcppcache/bdbimpl.vcxproj.filters          |    39 +
 .../gfcppcache/gfcppcache.vcxproj               |   787 +
 .../gfcppcache/gfcppcache.vcxproj.filters       |  1698 ++
 .../gfcppcache/sqliteimpl.vcxproj               |   190 +
 .../gfcppcache/sqliteimpl.vcxproj.filters       |    33 +
 geode-client-native/vs_projects_10/sqlite.sln   |    26 +
 4019 files changed, 832543 insertions(+)
----------------------------------------------------------------------




[29/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/vsprojects/PdxAutoSerializerC++/PdxAutoSerializerC++.vcxproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/vsprojects/PdxAutoSerializerC++/PdxAutoSerializerC++.vcxproj b/geode-client-native/quickstart/cpp/vsprojects/PdxAutoSerializerC++/PdxAutoSerializerC++.vcxproj
new file mode 100644
index 0000000..97511c7
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/vsprojects/PdxAutoSerializerC++/PdxAutoSerializerC++.vcxproj
@@ -0,0 +1,197 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\PdxAutoSerializer.cpp" />
+    <ClCompile Include="..\..\queryobjects\PortfolioPdxAuto.cpp" />
+    <ClCompile Include="..\..\queryobjects\testobject_PortfolioPdxAutoSerializable.cpp" />
+    <ClCompile Include="..\..\queryobjects\PositionPdxAuto.cpp" />
+    <ClCompile Include="..\..\queryobjects\testobject_PositionPdxAutoSerializable.cpp" />
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{25F90B8E-B520-430D-8120-8E38507E69B8}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>PdxAutoSerializerC</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <LinkIncremental>true</LinkIncremental>
+    <OutDir>$(SolutionDir)\cpp\</OutDir>
+    <TargetName>PdxAutoSerializer</TargetName>
+    <CustomBuildBeforeTargets>Build</CustomBuildBeforeTargets>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <LinkIncremental>true</LinkIncremental>
+    <OutDir>$(SolutionDir)\cpp\</OutDir>
+    <TargetName>PdxAutoSerializer</TargetName>
+    <CustomBuildBeforeTargets>Build</CustomBuildBeforeTargets>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+    <OutDir>$(SolutionDir)\cpp\</OutDir>
+    <TargetName>PdxAutoSerializer</TargetName>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <LinkIncremental>false</LinkIncremental>
+    <OutDir>$(SolutionDir)\cpp\</OutDir>
+    <TargetName>PdxAutoSerializer</TargetName>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>NotSet</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <OutputFile>$(SolutionDir)\cpp\PdxAutoSerializer.exe</OutputFile>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <CustomBuildStep>
+      <Command>
+      </Command>
+    </CustomBuildStep>
+    <PreBuildEvent>
+      <Command>
+      </Command>
+    </PreBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>NotSet</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <OutputFile>$(SolutionDir)\cpp\PdxAutoSerializer.exe</OutputFile>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <CustomBuildStep>
+      <Command>
+      </Command>
+    </CustomBuildStep>
+    <PreBuildEvent>
+      <Command>
+      </Command>
+    </PreBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>NotSet</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <OutputFile>$(SolutionDir)\cpp\PdxAutoSerializer.exe</OutputFile>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PreBuildEvent>
+      <Command>
+      </Command>
+    </PreBuildEvent>
+    <CustomBuildStep>
+      <Command>
+      </Command>
+    </CustomBuildStep>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>NotSet</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <OutputFile>$(SolutionDir)\cpp\PdxAutoSerializer.exe</OutputFile>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PreBuildEvent>
+      <Command>
+      </Command>
+    </PreBuildEvent>
+  </ItemDefinitionGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/vsprojects/PdxAutoSerializerC++/PdxAutoSerializerC++.vcxproj.filters
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/vsprojects/PdxAutoSerializerC++/PdxAutoSerializerC++.vcxproj.filters b/geode-client-native/quickstart/cpp/vsprojects/PdxAutoSerializerC++/PdxAutoSerializerC++.vcxproj.filters
new file mode 100644
index 0000000..2a74008
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/vsprojects/PdxAutoSerializerC++/PdxAutoSerializerC++.vcxproj.filters
@@ -0,0 +1,34 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\PdxAutoSerializer.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\queryobjects\PortfolioPdxAuto.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\queryobjects\PositionPdxAuto.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\queryobjects\PortfolioPdxAutoSerializable.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\queryobjects\PositionPdxAutoSerializable.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+</Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/vsprojects/PdxInstanceC++/PdxInstanceC++.vcxproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/vsprojects/PdxInstanceC++/PdxInstanceC++.vcxproj b/geode-client-native/quickstart/cpp/vsprojects/PdxInstanceC++/PdxInstanceC++.vcxproj
new file mode 100755
index 0000000..281c77a
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/vsprojects/PdxInstanceC++/PdxInstanceC++.vcxproj
@@ -0,0 +1,140 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{6AAD61DD-5658-4384-8B47-CF4FE531CC1C}</ProjectGuid>
+    <RootNamespace>PdxInstanceC</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Configuration)\</IntDir>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">PdxInstance</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">PdxInstance</TargetName>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <Optimization>Disabled</Optimization>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/debug/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\PdxInstance.exe</OutputFile>
+      <TargetMachine>MachineX86</TargetMachine>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <Optimization>Disabled</Optimization>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\PdxInstance.exe</OutputFile>
+      <TargetMachine>MachineX64</TargetMachine>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\PdxInstance.exe</OutputFile>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\PdxInstance.exe</OutputFile>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\PdxInstance.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/vsprojects/PdxRemoteQueryC++/PdxRemoteQueryC++.vcxproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/vsprojects/PdxRemoteQueryC++/PdxRemoteQueryC++.vcxproj b/geode-client-native/quickstart/cpp/vsprojects/PdxRemoteQueryC++/PdxRemoteQueryC++.vcxproj
new file mode 100755
index 0000000..19d17f2
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/vsprojects/PdxRemoteQueryC++/PdxRemoteQueryC++.vcxproj
@@ -0,0 +1,170 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{0E96F8C3-5767-49F2-AEBC-C824F987BD18}</ProjectGuid>
+    <RootNamespace>PdxRemoteQueryC</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Configuration)\</IntDir>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">PdxRemoteQuery</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">PdxRemoteQuery</TargetName>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>BUILD_TESTOBJECT;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <WarningLevel>Level1</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/debug/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\PdxRemoteQuery.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>BUILD_TESTOBJECT;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <WarningLevel>Level1</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\PdxRemoteQuery.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>BUILD_TESTOBJECT;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <WarningLevel>Level1</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\PdxRemoteQuery.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>BUILD_TESTOBJECT;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <WarningLevel>Level1</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\PdxRemoteQuery.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\PdxRemoteQuery.cpp" />
+    <ClCompile Include="..\..\queryobjects\PortfolioPdx.cpp" />
+    <ClCompile Include="..\..\queryobjects\PositionPdx.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/vsprojects/PdxSerializerC++/PdxSerializerC++.vcxproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/vsprojects/PdxSerializerC++/PdxSerializerC++.vcxproj b/geode-client-native/quickstart/cpp/vsprojects/PdxSerializerC++/PdxSerializerC++.vcxproj
new file mode 100755
index 0000000..7e79b2b
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/vsprojects/PdxSerializerC++/PdxSerializerC++.vcxproj
@@ -0,0 +1,140 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{4C437511-DEEA-4C06-9B12-7FEFFF82FBC9}</ProjectGuid>
+    <RootNamespace>PdxSerializerC</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">PdxSerializer</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">PdxSerializer</TargetName>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <Optimization>Disabled</Optimization>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/debug/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\PdxSerializer.exe</OutputFile>
+      <TargetMachine>MachineX86</TargetMachine>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\PdxSerializer.exe</OutputFile>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <Optimization>Disabled</Optimization>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\PdxSerializer.exe</OutputFile>
+      <TargetMachine>MachineX64</TargetMachine>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\PdxSerializer.exe</OutputFile>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\PdxSerializer.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/vsprojects/PoolCqQueryC++/PoolCqQuery.vcxproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/vsprojects/PoolCqQueryC++/PoolCqQuery.vcxproj b/geode-client-native/quickstart/cpp/vsprojects/PoolCqQueryC++/PoolCqQuery.vcxproj
new file mode 100755
index 0000000..488605e
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/vsprojects/PoolCqQueryC++/PoolCqQuery.vcxproj
@@ -0,0 +1,189 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectName>PoolCqQueryC++</ProjectName>
+    <ProjectGuid>{0EA1CB6D-B45E-4597-8A91-D0E621C21512}</ProjectGuid>
+    <RootNamespace>PoolCqQuery</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">PoolCqQuery</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">PoolCqQuery</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">PoolCqQuery</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">PoolCqQuery</TargetName>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>BUILD_TESTOBJECT;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/debug/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\PoolCqQuery.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>BUILD_TESTOBJECT;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\PoolCqQuery.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>BUILD_TESTOBJECT;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\PoolCqQuery.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>BUILD_TESTOBJECT;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\PoolCqQuery.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\PoolCqQuery.cpp" />
+    <ClCompile Include="..\..\queryobjects\Portfolio.cpp" />
+    <ClCompile Include="..\..\queryobjects\Position.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/vsprojects/PoolRemoteQueryC++/PoolRemoteQueryC++.vcxproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/vsprojects/PoolRemoteQueryC++/PoolRemoteQueryC++.vcxproj b/geode-client-native/quickstart/cpp/vsprojects/PoolRemoteQueryC++/PoolRemoteQueryC++.vcxproj
new file mode 100755
index 0000000..0902648
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/vsprojects/PoolRemoteQueryC++/PoolRemoteQueryC++.vcxproj
@@ -0,0 +1,171 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{FAC238B2-AD5D-4D64-A74C-EA5CCEB3B359}</ProjectGuid>
+    <RootNamespace>PoolRemoteQueryC</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Configuration)\</IntDir>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">PoolRemoteQuery</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">PoolRemoteQuery</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">PoolRemoteQuery</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">PoolRemoteQuery</TargetName>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>BUILD_TESTOBJECT;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <WarningLevel>Level1</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/debug/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\PoolRemoteQuery.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>BUILD_TESTOBJECT;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <WarningLevel>Level1</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\PoolRemoteQuery.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>BUILD_TESTOBJECT;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <WarningLevel>Level1</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\PoolRemoteQuery.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>BUILD_TESTOBJECT;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <WarningLevel>Level1</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\PoolRemoteQuery.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\PoolRemoteQuery.cpp" />
+    <ClCompile Include="..\..\queryobjects\Portfolio.cpp" />
+    <ClCompile Include="..\..\queryobjects\Position.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/vsprojects/PoolWithEndpointsC++/PoolWithEndpointsC++.vcxproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/vsprojects/PoolWithEndpointsC++/PoolWithEndpointsC++.vcxproj b/geode-client-native/quickstart/cpp/vsprojects/PoolWithEndpointsC++/PoolWithEndpointsC++.vcxproj
new file mode 100755
index 0000000..bdd1295
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/vsprojects/PoolWithEndpointsC++/PoolWithEndpointsC++.vcxproj
@@ -0,0 +1,165 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{9B1140CE-020B-4F71-A97B-D82D9D83377E}</ProjectGuid>
+    <RootNamespace>PoolWithEndpointsC</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Configuration)\</IntDir>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">PoolWithEndpoints</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">PoolWithEndpoints</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">PoolWithEndpoints</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">PoolWithEndpoints</TargetName>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/debug/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\PoolWithEndpoints.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\PoolWithEndpoints.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\PoolWithEndpoints.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\PoolWithEndpoints.exe</OutputFile>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\PoolWithEndpoints.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/cpp/vsprojects/PutAllGetAllOperationsC++/PutAllGetAllOperationsC++.vcxproj
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/cpp/vsprojects/PutAllGetAllOperationsC++/PutAllGetAllOperationsC++.vcxproj b/geode-client-native/quickstart/cpp/vsprojects/PutAllGetAllOperationsC++/PutAllGetAllOperationsC++.vcxproj
new file mode 100755
index 0000000..45e3531
--- /dev/null
+++ b/geode-client-native/quickstart/cpp/vsprojects/PutAllGetAllOperationsC++/PutAllGetAllOperationsC++.vcxproj
@@ -0,0 +1,144 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectName>PutAllGetAllOperations C++</ProjectName>
+    <ProjectGuid>{A6088E1B-45DE-495A-8E8D-6D3A8DF00DD3}</ProjectGuid>
+    <RootNamespace>PutAllGetAllOperations C++</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)\cpp\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Configuration)\</IntDir>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">PutAllGetAllOperations</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">PutAllGetAllOperations</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">PutAllGetAllOperations</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">PutAllGetAllOperations</TargetName>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>BUILD_TESTOBJECT;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <Optimization>Disabled</Optimization>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/debug/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\PutAllGetAllOperations.exe</OutputFile>
+      <TargetMachine>MachineX86</TargetMachine>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <Optimization>Disabled</Optimization>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/../hidden/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\PutAllGetAllOperations.exe</OutputFile>
+      <TargetMachine>MachineX64</TargetMachine>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>BUILD_TESTOBJECT;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\PutAllGetAllOperations.exe</OutputFile>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <Midl>
+      <TargetEnvironment>X64</TargetEnvironment>
+    </Midl>
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(GFCPP)/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>$(GFCPP)/lib/gfcppcache.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <OutputFile>$(SolutionDir)\cpp\PutAllGetAllOperations.exe</OutputFile>
+      <TargetMachine>MachineX64</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\PutAllGetAllOperations.cpp" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file


[35/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/makefiles/test_executables.gmk
----------------------------------------------------------------------
diff --git a/geode-client-native/makefiles/test_executables.gmk b/geode-client-native/makefiles/test_executables.gmk
new file mode 100755
index 0000000..b622b40
--- /dev/null
+++ b/geode-client-native/makefiles/test_executables.gmk
@@ -0,0 +1,233 @@
+include $(BASEDIR)/makefiles/platform.gmk
+
+ifdef WINDOWS
+    EXE = .exe
+    OBJ = .obj
+else
+    EXE =
+    OBJ = .o
+endif
+# dirs
+
+ifeq ($(VARIANT),FAST)
+  OBJDIR = $(OSBUILDDIR)/tests/objects/$(SUITE)
+#	DESTDIR = $(OSBUILDDIR)/hidden/bin
+else
+  OBJDIR = $(OSBUILDDIR)/tests/objects_g/$(SUITE)
+#	DESTDIR = $(OSBUILDDIR)/hidden/bin/debug
+endif
+
+# objects
+
+DIRS = .
+
+FILES_CPP := $(subst ./,,$(sort $(foreach dir,$(DIRS),$(wildcard $(dir)/*.cpp))))
+SRC_INCLUDES := $(foreach file_include,. $(OSBUILDDIR)/product/include $(OSBUILDDIR)/product/include/gfcpp $(BASEDIR)/src/com/gemstone/gemfire/internal/cppcache/impl $(BASEDIR)/tests/fwklib $(BASEDIR)/tests,-I$(call NATIVEDIR_FUNC,$(file_include)))
+#SRC_INCLUDES := -I. -I$(OSBUILDDIR)/product/include -I$(OSBUILDDIR)/product/include/gfcpp -I$(BASEDIR)/src/com/gemstone/gemfire/internal/cppcache/impl -I$(BASEDIR)/tests/fwklib -I$(BASEDIR)/tests
+
+FILES_EXE = $(foreach src,$(BUILD_EXES),$(OBJDIR)/$(src)$(EXE))
+
+executables: $(FILES_EXE)
+
+ifdef WINDOWS
+#####################
+# WINDOWS
+CXX = cl
+#WARN_OPTIONS = /Wall /WX
+WARN_OPTIONS = 
+WINVER = 0x0500
+SLOW_OPTIONS = /MDd /Od $(CFLAGS$(VCVER)) /RTC1 /Zi -DDEBUG=1 -DASSERT_LEVEL=4
+FAST_OPTIONS = /MD /Ox $(CFLAGS$(VCVER)) -DNDEBUG=1 -DASSERT_LEVEL=1
+CXX_OPTIONS = /nologo $($(VARIANT)_OPTIONS) $(WARN_OPTIONS) /Fd$(OBJDIR)/$(LIBRARY).pdb
+CXX_OPTIONS += /GR /EHac
+CXX_OPTIONS += /DWINVER=0x0500 /D_WIN32_WINNT=0x0500
+CXX_OPTIONS += /Fe$@
+FAST_TP_LIBS = $(ACEDIR)/lib/ACE.lib $(XERCESDIR)/lib/xerces-c.lib 
+SLOW_TP_LIBS = $(ACEDIR)/lib/ACEd.lib $(XERCESDIR)/lib/xerces-c.lib 
+FAST_LIBS_TMP = $($(VARIANT)_TP_LIBS) $(OSBUILDDIR)/product/lib/gfcppcache.lib $(OSBUILDDIR)/framework/lib/framework.lib
+SLOW_LIBS_TMP = $($(VARIANT)_TP_LIBS) $(OSBUILDDIR)/hidden/lib/debug/gfcppcache.lib $(OSBUILDDIR)/framework/lib/debug/framework.lib
+LIBS = $(foreach lib,$($(VARIANT)_LIBS_TMP),$(call NATIVEDIR_FUNC,$(lib)))
+# windows/microsoft libraries.
+LIBS += wsock32.lib netapi32.lib advapi32.lib comdlg32.lib user32.lib gdi32.lib kernel32.lib winspool.lib
+ifeq ($(VCVER),vc8)
+	LIBS += mscoree.lib
+endif
+FAST_LD_OPTIONS =
+SLOW_LD_OPTIONS = -debug
+LIB_PATH = 
+LINK_OPTIONS = /link -OPT:REF -INCREMENTAL:NO -MAP $($(VARIANT)_LD_OPTIONS)
+LIB_OPTIONS = $(LIB_PATH) $(LIBS)
+ifeq ($(VCVER),vc8)
+	MT_COMMAND = mt /nologo -manifest $(call NATIVEDIR_FUNC,$@).manifest -outputresource:$(call NATIVEDIR_FUNC,$@)
+endif
+# 
+#####################
+else
+ifdef LINUX
+#####################
+# LINUX 
+CXX = $(GccCCompiler)
+#WARN_OPTIONS = -Wall -Wno-long-long 
+WARN_OPTIONS = -Wswitch \
+   -Wunused-variable -Wcomments \
+   -Wparentheses -Wsign-compare -Wconversion -Wno-long-long 
+NOT_USED = \
+ -W -Wabi -Woverloaded-virtual -Wundef \
+ -Wpointer-arith -Wold-style-cast -Wcast-qual -Wcast-align -Wwrite-strings \
+ -Wconversion -Wno-long-long -Wdisabled-optimization -Wcomment -Wtrigraphs \
+ -Wimport -Winline -Werror
+
+ifdef USE_SMARTHEAP
+  SMARTHEAP_OPTIONS = -DUSE_SMARTHEAP=1
+  SMARTHEAP_DIR = /export/cplusplus/users/thirdparty/linux/smartheap_7.4
+  SMARTHEAP_LINK = $(SMARTHEAP_DIR)/lib/libsmartheap_mtd.a $(SMARTHEAP_DIR)/lib/libsmartheapC_mtd.a -Bdynamic
+endif
+
+STATICCXX_OPTIONS = $(CFLAGS_MODEL) $(FPIC) -ansi -fno-nonansi-builtins \
+  -ftemplate-depth-17 -D_LINUX \
+  $(SMARTHEAP_OPTIONS) \
+  $($(VARIANT)_OPTIONS) $(WARN_OPTIONS) -D_REENTRANT -D_LARGEFILE64_SOURCE \
+  -D_REENTRANT -o $(subst /tests/objects/fwkbin,/framework/bin/static,$@)
+CXX_OPTIONS = $(CFLAGS_MODEL) $(FPIC) -MD -ansi -fno-nonansi-builtins -ftemplate-depth-17 -D_LINUX \
+  $(SMARTHEAP_OPTIONS) \
+  $($(VARIANT)_OPTIONS) $(WARN_OPTIONS) -D_REENTRANT -D_LARGEFILE64_SOURCE -D_REENTRANT -o $@
+SLOW_OPTIONS = -g -O0 -DDEBUG=1 -DASSERT_LEVEL=4 -fno-inline
+FAST_OPTIONS = -O3 -DNDEBUG=1 -DASSERT_LEVEL=1
+STATICLIBS = -Bsymbolic $(OSBUILDDIR)/product/lib/libgfcppcache.a $(SMARTHEAP_LINK) -ldl -lm -ldl -lpthread -lc -lstdc++ -lxerces-c -lframework -l$(ACELINKNAME)
+LIBS = $(SMARTHEAP_LINK) -ldl -lm -ldl -lpthread -lc -lstdc++ -lxerces-c -lframework -lgfcppcache -l$(ACELINKNAME)
+FAST_LD_OPTIONS =
+SLOW_LD_OPTIONS =
+TP_LIB_PATH = -L$(XERCESDIR)/lib 
+FAST_LIB_PATH = -L$(OSBUILDDIR)/product/lib -L$(OSBUILDDIR)/framework/lib -L$(OSBUILDDIR)/hidden/lib 
+SLOW_LIB_PATH = -L$(OSBUILDDIR)/framework/lib/debug -L$(OSBUILDDIR)/hidden/lib/debug -L$(OSBUILDDIR)/hidden/lib -L$(OSBUILDDIR)/product/lib
+STATICLIB_PATH = $(TP_LIB_PATH) -L$(OSBUILDDIR)/product/lib -L$(OSBUILDDIR)/framework/lib/static -L$(OSBUILDDIR)/hidden/lib
+LIB_PATH = $(TP_LIB_PATH) $($(VARIANT)_LIB_PATH)
+LINK_OPTIONS = $(CFLAGS_MODEL) $($(VARIANT)_LD_OPTIONS)
+STATICLIB_OPTIONS = $(STATICLIB_PATH) $(STATICLIBS)
+LIB_OPTIONS = $(LIB_PATH) $(LIBS)
+#STATICLINK_COMMAND = g++ -o $@_static $(LINK_OPTIONS) $(FILES_O) $(SMARTHEAP_LINK) $(LIB_OPTIONS)
+#LINK_COMMAND = g++ -o $@ $(LINK_OPTIONS) $(FILES_O) $(SMARTHEAP_LINK) $(LIB_OPTIONS)
+# 
+#####################
+else
+ifdef SOLARIS
+#####################
+# SOLARIS 
+UNAME_P := $(shell uname -p)
+  ifeq ($(UNAME_P),sparc)
+    HOSTTYPE_OSTYPE=sparc.Solaris
+  else
+    HOSTTYPE_OSTYPE=x86.Solaris
+  endif
+
+CXX = $(SunCompilerDir)/CC
+WARN_OPTIONS = 
+
+ifdef USE_CPP11
+  CFLAGS_STD = -std=c++11
+else
+# TODO jbarrett ????  CFLAGS_STD = -library=no%Cstd,no%iostream
+endif
+
+STATICCXX_OPTIONS = $(CFLAGS_MODEL) $(CFLAGS_STD) \
+  -mt -KPIC -D_SOLARIS \
+  $(SMARTHEAP_OPTIONS) \
+  $($(VARIANT)_OPTIONS) $(WARN_OPTIONS) -D_REENTRANT -D_LARGEFILE64_SOURCE \
+  -D_RWSTD_MULTI_THREAD -DTHREAD=MULTI \
+  -o $(subst /tests/objects/fwkbin,/framework/bin/static,$@)
+
+CXX_OPTIONS =  $(CFLAGS_MODEL) $(CFLAGS_STD) \
+  -mt -KPIC -D_SOLARIS -xMD \
+  $(SMARTHEAP_OPTIONS) \
+  $($(VARIANT)_OPTIONS) $(WARN_OPTIONS) -D_REENTRANT -D_LARGEFILE64_SOURCE \
+  -D_RWSTD_MULTI_THREAD -DTHREAD=MULTI \
+  -o $@
+
+ifeq ($(HOSTTYPE_OSTYPE), sparc.Solaris)
+  STATICCXX_OPTIONS += -D_SPARC_SOLARIS
+#TODO jbarrett STATICCXX_OPTIONS +=  -dalign
+#TODO jbarrett STATICCXX_OPTIONS += -xmemalign=4s
+
+  CXX_OPTIONS += -D_SPARC_SOLARIS
+#TODO jbarrett CXX_OPTIONS += -xmemalign=4s
+else
+  STATICCXX_OPTIONS += -D_X86_SOLARIS 
+  CXX_OPTIONS += -D_X86_SOLARIS
+endif
+
+SLOW_OPTIONS = -g -O0 -DDEBUG=1 -DASSERT_LEVEL=4
+FAST_OPTIONS = -O3 -DNDEBUG=1 -DASSERT_LEVEL=1
+STATICLIBS = $(OSBUILDDIR)/product/lib/libgfcppcache.a $(SMARTHEAP_LINK) -ldl -lpthread -lc -lxerces-c -lframework -l$(ACELINKNAME) -lrt -lnsl -lsocket -ldemangle
+LIBS = $(SMARTHEAP_LINK) -ldl -lpthread -lc -lxerces-c -lframework -lgfcppcache -l$(ACELINKNAME) -lrt -lnsl -lsocket -ldemangle
+FAST_LD_OPTIONS =
+SLOW_LD_OPTIONS =
+##TP_LIB_PATH = -L$(ACEDIR)/lib -L$(XERCESDIR)/lib 
+TP_LIB_PATH = -L$(XERCESDIR)/lib 
+FAST_LIB_PATH = -L$(OSBUILDDIR)/product/lib -L$(OSBUILDDIR)/framework/lib -L$(OSBUILDDIR)/hidden/lib 
+SLOW_LIB_PATH = -L$(OSBUILDDIR)/framework/lib/debug -L$(OSBUILDDIR)/hidden/lib/debug -L$(OSBUILDDIR)/hidden/lib -L$(OSBUILDDIR)/product/lib
+STATICLIB_PATH = $(TP_LIB_PATH) -L$(OSBUILDDIR)/product/lib -L$(OSBUILDDIR)/framework/lib/static -L$(OSBUILDDIR)/hidden/lib
+LIB_PATH = $(TP_LIB_PATH) $($(VARIANT)_LIB_PATH)
+LINK_OPTIONS = $($(VARIANT)_LD_OPTIONS)
+STATICLIB_OPTIONS = $(STATICLIB_PATH) $(STATICLIBS)
+LIB_OPTIONS = $(LIB_PATH) $(LIBS)
+endif
+endif
+endif
+# -I$(STLPORTDIR)/stlport
+THIRD_PARTY_INCLUDES = -I$(XERCESDIR)/include -I$(ACEDIR)/include
+VERSION_INFO_DEFINES =  \
+                    '-DGEMFIRE_SOURCE_REVISION="$(GEMFIRE_SOURCE_REVISION)"' \
+                    '-DGEMFIRE_SOURCE_REPOSITORY="$(GEMFIRE_SOURCE_REPOSITORY)"'
+STATICCXX_OPTIONS += -DACE_NLOGGING -DACE_NDEBUG -D__ACE_INLINE__ 
+STATICCXX_OPTIONS += $(VERSION_INFO_DEFINES)
+STATICCXX_OPTIONS += $(CPP_OPTIONS)
+STATICCXX_OPTIONS += $(THIRD_PARTY_INCLUDES) $(SRC_INCLUDES)
+CXX_OPTIONS += -DACE_NLOGGING -DACE_NDEBUG -D__ACE_INLINE__ 
+CXX_OPTIONS += $(VERSION_INFO_DEFINES)
+CXX_OPTIONS += $(CPP_OPTIONS)
+CXX_OPTIONS += $(THIRD_PARTY_INCLUDES) $(SRC_INCLUDES)
+
+ifdef WINDOWS
+STATICCXX_COMPILE=
+else
+STATICCXX_COMPILE = XXX $(CXX) $(STATICCXX_OPTIONS) $(CURRENTDIR)/$< $(LINK_OPTIONS) $(STATICLIB_OPTIONS)
+endif
+
+ifeq ($(CPPDEVEL),1)
+  CXX_OPTIONS += -DGF_DEVEL_ASSERTS=1
+endif
+
+CXX_COMPILE = $(CXX) $(CXX_OPTIONS) $(CURRENTDIR)/$< $(LINK_OPTIONS) $(LIB_OPTIONS)
+
+showCompileCommand:
+	@echo "compile command: $(CXX_COMPILE)"
+
+$(OBJDIR)/%$(EXE): %.cpp
+	@echo mkdir -p $(dir $@)
+	@mkdir -p $(dir $@)
+	$(CXX_COMPILE)
+	@echo $(MT_COMMAND)
+	@$(MT_COMMAND)
+	
+	
+##	@echo $(STATICCXX_COMPILE)
+##	@$(STATICCXX_COMPILE)
+# target setup
+
+all: makeslow makefast
+
+makeslow:
+	@$(MAKE) VARIANT=SLOW executables
+
+makefast:
+	@$(MAKE) VARIANT=FAST executables
+
+# dependency checking
+
+-include $(FILES_o:.o=.d)
+
+# phony list targets that are not in the filesystem.
+
+.phony += all showCompileCommand executables
+
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/makefiles/test_library.gmk
----------------------------------------------------------------------
diff --git a/geode-client-native/makefiles/test_library.gmk b/geode-client-native/makefiles/test_library.gmk
new file mode 100755
index 0000000..d3935fc
--- /dev/null
+++ b/geode-client-native/makefiles/test_library.gmk
@@ -0,0 +1,173 @@
+include $(BASEDIR)/makefiles/platform.gmk
+
+# dirs
+
+ifeq ($(VARIANT),FAST)
+  OBJDIR = $(OSBUILDDIR)/tests/objects/$(LIBRARY)
+else
+  OBJDIR = $(OSBUILDDIR)/tests/objects_g/$(LIBRARY)
+endif
+
+# objects
+
+DIRS := $(sort $(shell find . -type d \( -name ".git" -prune -o -print \)))
+
+FILES_CPP := $(subst ./,,$(sort $(foreach dir,$(DIRS),$(wildcard $(dir)/*.cpp))))
+
+SRC_INCLUDES := $(foreach file_include,. $(OSBUILDDIR)/product/include $(OSBUILDDIR)/product/include/gfcpp $(BASEDIR)/src/com/gemstone/gemfire/internal/cppcache/impl $(BASEDIR)/tests/fwklib $(BASEDIR)/tests,-I$(call NATIVEDIR_FUNC,$(file_include)))
+
+FILES_O = $(foreach src,$(FILES_CPP),$(OBJDIR)/$(subst .cpp,$(OBJ),$(src)))
+
+ifdef WINDOWS
+#####################
+# WINDOWS
+#####################
+else
+ifdef LINUX
+#####################
+# LINUX 
+CXX = $(GccCCompiler)
+#WARN_OPTIONS = -Wall -Wconversion -Wno-long-long 
+WARN_OPTIONS = -Wswitch \
+   -Wunused-variable -Wcomments \
+   -Wparentheses -Wsign-compare -Wconversion -Wno-long-long 
+NOT_USED = \
+ -W -Wabi -Woverloaded-virtual -Wundef \
+ -Wpointer-arith -Wold-style-cast -Wcast-qual -Wcast-align -Wwrite-strings \
+ -Wconversion -Wno-long-long -Wdisabled-optimization -Wcomment -Wtrigraphs \
+ -Wimport -Winline -Werror
+SLOW_OPTIONS = -g -O0 -DDEBUG=1 -DASSERT_LEVEL=4 -fno-inline
+FAST_OPTIONS = -O3 -DNDEBUG=1 -DASSERT_LEVEL=1
+CXX_OPTIONS = $(CFLAGS_MODEL) $(FPIC) -MD -c -ansi -fno-nonansi-builtins -ftemplate-depth-17 -D_LINUX \
+  $(WARN_OPTIONS) -D_REENTRANT -D_LARGEFILE64_SOURCE -D_REENTRANT $($(VARIANT)_OPTIONS) -o $@
+LIBS = -ldl -lm -lpthread -lc -lxerces-c $(XTRA_LIBS)
+FAST_LD_OPTIONS =
+SLOW_LD_OPTIONS =
+TP_LIB_PATH = -L$(XERCESDIR)/lib
+FAST_LIB_PATH = $(TP_LIB_PATH) -L$(OSBUILDDIR)/product/lib/ -L$(OSBUILDDIR)/framework/lib/ -L$(OSBUILDDIR)/hidden/lib/
+SLOW_LIB_PATH = $(TP_LIB_PATH) -L$(OSBUILDDIR)/framework/lib/debug/ -L$(OSBUILDDIR)/hidden/lib/debug -L$(OSBUILDDIR)/hidden/lib/ -L$(OSBUILDDIR)/product/lib/
+LIB_PATH = $($(VARIANT)_LIB_PATH) $(XTRA_LIB_PATHS)
+LINK_OPTIONS = $(CFLAGS_MODEL) --shared $($(VARIANT)_LD_OPTIONS)
+LIB_OPTIONS = $(LIB_PATH) $(LIBS)
+LINK_COMMAND = gcc -o $@ $(LINK_OPTIONS) $(FILES_O) $(LIB_OPTIONS)
+# 
+#####################
+else
+ifdef SOLARIS
+#####################
+# SOLARIS 
+  UNAME_P := $(shell uname -p)
+  ifeq ($(UNAME_P),sparc)
+    HOSTTYPE_OSTYPE=sparc.Solaris
+  else
+    HOSTTYPE_OSTYPE=x86.Solaris  
+  endif    
+	
+CXX = $(SunCompilerDir)/CC
+WARN_OPTIONS = 
+NOT_USED = \
+ -W -Wabi -Woverloaded-virtual -Wundef \
+ -Wpointer-arith -Wold-style-cast -Wcast-qual -Wcast-align -Wwrite-strings \
+ -Wconversion -Wno-long-long -Wdisabled-optimization -Wcomment -Wtrigraphs \
+ -Wimport -Winline -Werror
+SLOW_OPTIONS = -g -O0 -DDEBUG=1 -DASSERT_LEVEL=4
+FAST_OPTIONS = -O3 -DNDEBUG=1 -DASSERT_LEVEL=1
+
+ifdef USE_CPP11
+  CFLAGS_STD = -std=c++11 -DUSE_CPP11
+else
+  CFLAGS_STD = -library=Cstd
+endif
+
+CXX_OPTIONS = $(CFLAGS_MODEL) $(CFLAGS_STD) -c \
+  -mt -KPIC -xMD -D_SOLARIS \
+  -D_POSIX_PTHREAD_SEMANTICS \
+  -D_RWSTD_MULTI_THREAD -DTHREAD=MULTI \
+  $(WARN_OPTIONS) -D_REENTRANT -D_LARGEFILE64_SOURCE $($(VARIANT)_OPTIONS) -o $@
+
+ifeq ($(HOSTTYPE_OSTYPE), sparc.Solaris)
+  CXX_OPTIONS += -D_SPARC_SOLARIS
+  # TODO jbarrett - -dalign -D_POSIX_PTHREAD_SEMANTICS \
+  # TODO jbarrett - CXX_OPTIONS += -xmemalign=4s
+else
+  CXX_OPTIONS += -D_X86_SOLARIS
+endif
+  
+LIBS = -ldl -lpthread -lc -lxerces-c -lsocket -lnsl -ldemangle $(XTRA_LIBS)
+FAST_LD_OPTIONS =
+SLOW_LD_OPTIONS =
+TP_LIB_PATH = -L$(XERCESDIR)/lib
+FAST_LIB_PATH = $(TP_LIB_PATH) -L$(OSBUILDDIR)/product/lib/ -L$(OSBUILDDIR)/framework/lib/ -L$(OSBUILDDIR)/hidden/lib/
+SLOW_LIB_PATH = $(TP_LIB_PATH) -L$(OSBUILDDIR)/framework/lib/debug/ -L$(OSBUILDDIR)/hidden/lib/debug -L$(OSBUILDDIR)/hidden/lib/ -L$(OSBUILDDIR)/product/lib/
+LIB_PATH = $($(VARIANT)_LIB_PATH) $(XTRA_LIB_PATHS)
+LINK_OPTIONS = -mt $(CFLAGS_MODEL) -G -KPIC $($(VARIANT)_LD_OPTIONS) $(CFLAGS_STD)
+
+ifdef USE_CPP11
+  LIBS += -lstdc++ -lgcc_s -lCrunG3 
+else
+  LIBS += -lCstd -lCrun
+endif
+
+
+LIB_OPTIONS = $(LIB_PATH) $(LIBS)
+LINK_COMMAND = CC -o $@ $(LINK_OPTIONS) $(FILES_O) $(LIB_OPTIONS)
+# 
+#####################
+endif
+endif
+endif
+THIRD_PARTY_INCLUDES = -I$(ACEDIR)/include -I$(XERCESDIR)/include  
+VERSION_INFO_DEFINES =  \
+                    '-DGEMFIRE_SOURCE_REVISION="$(GEMFIRE_SOURCE_REVISION)"' \
+                    '-DGEMFIRE_SOURCE_REPOSITORY="$(GEMFIRE_SOURCE_REPOSITORY)"'
+CXX_OPTIONS += -DACE_NLOGGING -DACE_NDEBUG -D__ACE_INLINE__ 
+CXX_OPTIONS += $(VERSION_INFO_DEFINES)
+CXX_OPTIONS += $(CPP_OPTIONS)
+CXX_OPTIONS +=  $(XTRA_INCS) $(THIRD_PARTY_INCLUDES) $(SRC_INCLUDES)
+
+ifeq ($(CPPDEVEL),1)
+  CXX_OPTIONS += -DGF_DEVEL_ASSERTS=1
+endif
+
+CXX_COMPILE = $(CXX) $(CXX_OPTIONS)
+
+showCompileCommand:
+	@echo "compile command: $(CXX_COMPILE)"
+
+$(OBJDIR)/%$(OBJ): %.cpp
+	@mkdir -p $(dir $@)
+	@echo $(CURRENTDIR)/$<
+	$(CXX_COMPILE) $(CURRENTDIR)/$<
+
+# target setup
+
+ifeq ($(VARIANT),FAST)
+  LIBFILE = $(OSBUILDDIR)/framework/lib/$(libPrefix)$(LIBRARY)$(libSuffix)
+else
+  LIBFILE = $(OSBUILDDIR)/framework/lib/debug/$(libPrefix)$(LIBRARY)$(libSuffix)
+endif
+
+library: $(LIBFILE)
+
+$(LIBFILE): showCompileCommand $(FILES_O)
+	@mkdir -p $(dir $@)
+	@echo linking...
+	$(LINK_COMMAND)
+	$(MT_COMMAND)
+
+all: makeslow makefast
+
+makeslow:
+	@$(MAKE) VARIANT=SLOW library
+
+makefast:
+	@$(MAKE) VARIANT=FAST library
+
+# dependency checking
+-include $(FILES_o:.o=.d)
+
+# phony list targets that are not in the filesystem.
+
+.phony += all library $(LIBFILE) showCompileCommand
+
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/makefiles/ver_script
----------------------------------------------------------------------
diff --git a/geode-client-native/makefiles/ver_script b/geode-client-native/makefiles/ver_script
new file mode 100644
index 0000000..44aed71
--- /dev/null
+++ b/geode-client-native/makefiles/ver_script
@@ -0,0 +1,6 @@
+{
+  global:
+      *gemfire*;
+  local:
+      *;
+};

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/myBuild.sh.example
----------------------------------------------------------------------
diff --git a/geode-client-native/myBuild.sh.example b/geode-client-native/myBuild.sh.example
new file mode 100755
index 0000000..b83303c
--- /dev/null
+++ b/geode-client-native/myBuild.sh.example
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+thisDir=`basename $BASEDIR`
+echo $thisDir
+
+# should be /export/gcm once pune supports it.
+MY_THIRDPARTY_BASE=/gcm/where/cplusplus/thirdparty
+
+if [ `uname` = "SunOS" ]; then
+  export CPP_THIRDPARTY=${MY_THIRDPARTY_BASE}/solaris
+  export ANT_ARGS="-D/export/scrooge2/users/tkeith/built/$thisDir"
+else
+if [ `uname` = "Linux" ]; then
+  export CPP_THIRDPARTY=${MY_THIRDPARTY_BASE}/linux
+  export ANT_ARGS="-Dosbuild.dir=/export/tiny2/users/tkeith/built/$thisDir"
+else
+  MY_THIRDPARTY_BASE=C:/src/gcm/where/cplusplus
+  export CPP_THIRDPARTY=${MY_THIRDPARTY_BASE}
+  export ANT_ARGS="-Dosbuild.dir=C:/Temp/built/$thisDir"
+fi
+fi
+
+export JAVA_HOME=${CPP_THIRDPARTY}/jdk1.4.2_06
+export ANT_HOME=${CPP_THIRDPARTY}/ant/apache-ant-1.8.4
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/CMakeLists.txt b/geode-client-native/quickstart/CMakeLists.txt
new file mode 100755
index 0000000..9393641
--- /dev/null
+++ b/geode-client-native/quickstart/CMakeLists.txt
@@ -0,0 +1,133 @@
+cmake_minimum_required(VERSION 3.4)
+project(nativeclient.quickstart.cpp)
+
+file(GLOB SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.cpp")
+
+#target_link_libraries(${QUICKSTART_UTILS_LIB}
+#  PRIVATE
+#    ${ACE_STATIC_LIB}
+#  PUBLIC
+#    gfcppcache
+#)
+#add_dependencies(${QUICKSTART_UTILS_LIB} ACE)
+
+# Function to resolve both config and generate stage variables.
+macro(generate_config INPUT TEMP OUTPUT)
+    configure_file(${INPUT} ${TEMP})
+    file(GENERATE OUTPUT ${OUTPUT}
+      INPUT ${TEMP}
+      CONDITION 1
+    )
+endmacro()
+
+macro(add_pdxautoserializer SOURCES_VAR NAMESPACE CLASS HEADER SUFFIX CLASSNAMESTR)
+    set(_OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${NAMESPACE}_${CLASS}${SUFFIX}.cpp)
+    set(_INPUT ${CMAKE_CURRENT_SOURCE_DIR}/${HEADER})
+    add_custom_command(OUTPUT ${_OUTPUT}
+        COMMAND $<TARGET_FILE:pdxautoserializer> --className=${CLASS} --suffix=${SUFFIX} --classNameStr=${CLASSNAMESTR} ${_INPUT} 
+        DEPENDS ${_INPUT}
+    )
+    set(${SOURCES_VAR} ${${SOURCES_VAR}} ${_OUTPUT})
+endmacro()
+include_directories(${CMAKE_CURRENT_SOURCE_DIR})
+
+add_pdxautoserializer(SOURCES PdxAutoTests PdxAutoMegaType PdxAutoMegaType.hpp Serializable "")
+%GFCPP%\bin\pdxautoserializer.exe  --outDir=cpp\queryobjects  cpp\queryobjects\PortfolioPdxAuto.hpp 
+
+# TODO: Switch to the following when we support cmake install of nativeclient
+find_package(CPPCache REQUIRED PATHS .)
+
+set(SAV_CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
+
+foreach(FILE ${SOURCES})
+  string(REGEX REPLACE "\\.cpp" "" QUICKSTART ${FILE})
+  set(QUICKSTARTS ${QUICKSTARTS} ${QUICKSTART})
+  
+  set(EXTRA_SOURCES "")
+  
+  if (${QUICKSTART} STREQUAL "CqQuery") 
+    add_definitions(-DBUILD_TESTOBJECT)
+    set(EXTRA_SOURCES
+      ${CMAKE_CURRENT_SOURCE_DIR}/queryobjects/Portfolio.cpp
+      ${CMAKE_CURRENT_SOURCE_DIR}/queryobjects/Position.cpp)
+    
+  elseif (${QUICKSTART} STREQUAL "DataExpiration")
+    add_definitions(-DBUILD_TESTOBJECT)
+    set(EXTRA_SOURCES
+      ${CMAKE_CURRENT_SOURCE_DIR}/plugins/SimpleCacheListener.cpp)   
+      
+  elseif (${QUICKSTART} STREQUAL "DurableClient")
+    add_definitions(-DBUILD_TESTOBJECT)
+    set(EXTRA_SOURCES
+      ${CMAKE_CURRENT_SOURCE_DIR}/plugins/DurableCacheListener.cpp)  
+      
+  elseif (${QUICKSTART} STREQUAL "LoaderListenerWriter")
+    add_definitions(-DBUILD_TESTOBJECT)
+    set(EXTRA_SOURCES
+      ${CMAKE_CURRENT_SOURCE_DIR}/plugins/SimpleCacheListener.cpp    
+      ${CMAKE_CURRENT_SOURCE_DIR}/plugins/SimpleCacheLoader.cpp   
+      ${CMAKE_CURRENT_SOURCE_DIR}/plugins/SimpleCacheWriter.cpp)   
+     
+  elseif (${QUICKSTART} STREQUAL "PdxAutoSerializer")
+    add_definitions(-DBUILD_TESTOBJECT)
+    set(EXTRA_SOURCES
+      ${CMAKE_CURRENT_SOURCE_DIR}/queryobjects/testobject_PortfolioPdxAutoSerializable.cpp 
+      ${CMAKE_CURRENT_SOURCE_DIR}/queryobjects/testobject_PositionPdxAutoSerializable.cpp 
+   
+      ${CMAKE_CURRENT_SOURCE_DIR}/queryobjects/PortfolioPdxAuto.cpp    
+      ${CMAKE_CURRENT_SOURCE_DIR}/queryobjects/PositionPdxAuto.cpp)
+      add_pdxautoserializer(EXTRA_SOURCES testobject PortfolioPdxAuto PortfolioPdxAuto.hpp Serializable "")   
+    
+  elseif (${QUICKSTART} STREQUAL "PdxRemoteQuery")
+    add_definitions(-DBUILD_TESTOBJECT)
+    set(EXTRA_SOURCES
+      ${CMAKE_CURRENT_SOURCE_DIR}/queryobjects/PortfolioPdx.cpp    
+      ${CMAKE_CURRENT_SOURCE_DIR}/queryobjects/PositionPdx.cpp)  
+    
+  elseif (${QUICKSTART} STREQUAL "PoolCqQuery")
+    add_definitions(-DBUILD_TESTOBJECT)
+    set(EXTRA_SOURCES
+      ${CMAKE_CURRENT_SOURCE_DIR}/queryobjects/Portfolio.cpp    
+      ${CMAKE_CURRENT_SOURCE_DIR}/queryobjects/Position.cpp)  
+    
+  elseif (${QUICKSTART} STREQUAL "PoolRemoteQuery")
+    add_definitions(-DBUILD_TESTOBJECT)
+    set(EXTRA_SOURCES
+      ${CMAKE_CURRENT_SOURCE_DIR}/queryobjects/Portfolio.cpp    
+      ${CMAKE_CURRENT_SOURCE_DIR}/queryobjects/Position.cpp) 
+    
+  elseif (${QUICKSTART} STREQUAL "RemoteQuery")
+    add_definitions(-DBUILD_TESTOBJECT)
+    set(EXTRA_SOURCES
+      ${CMAKE_CURRENT_SOURCE_DIR}/queryobjects/Portfolio.cpp    
+      ${CMAKE_CURRENT_SOURCE_DIR}/queryobjects/Position.cpp)       
+    
+  endif()
+  
+  add_executable(${QUICKSTART} ${FILE} ${EXTRA_SOURCES})
+  
+  set(CMAKE_CXX_FLAGS "${SAV_CMAKE_CXX_FLAGS} /I${NATIVECLIENT_CPPCACHE_INCLUDE_DIR}")
+  #include_directories("${GFCPP_INCLUDE}")
+  
+
+
+  target_link_libraries(${QUICKSTART}
+    PRIVATE
+    PUBLIC "${NATIVECLIENT_CPPCACHE_LIBRARIES}\\gfcppcache")  
+
+  #set(TEST_DIR ${CMAKE_CURRENT_BINARY_DIR}/.tests/${TEST})
+    
+endforeach()
+
+##TODO is this correct for config.h
+#include_directories(${CMAKE_BINARY_DIR}/cppcache)
+#include_directories(${CMAKE_BINARY_DIR}/cppcache/include)
+##TODO this is really odd
+#include_directories(${CMAKE_SOURCE_DIR}/cppcache)
+#include_directories(${CMAKE_SOURCE_DIR}/cppcache/impl)
+##TODO this is really bad that we include the root of tests
+#include_directories(${CMAKE_SOURCE_DIR}/tests)
+##TODO fix dependencies include paths
+#include_directories(${DEPENDENCIES_ACE_DIR}/include)
+
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/GNUmakefile
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/GNUmakefile b/geode-client-native/quickstart/GNUmakefile
new file mode 100644
index 0000000..6d2693d
--- /dev/null
+++ b/geode-client-native/quickstart/GNUmakefile
@@ -0,0 +1,5 @@
+default: all
+
+SUBDIRS = cpp interop
+
+include ./GNUmakefile.common
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/GNUmakefile.common
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/GNUmakefile.common b/geode-client-native/quickstart/GNUmakefile.common
new file mode 100644
index 0000000..d81de84
--- /dev/null
+++ b/geode-client-native/quickstart/GNUmakefile.common
@@ -0,0 +1,70 @@
+BUILD_BITS := __BUILD_BITS__
+USE_CPP11 := __USE_CPP11__
+
+CXXFLAGS += -I$(GFCPP)/include
+CXXLDFLAGS += -L$(GFCPP)/lib
+CXXLIBS += -lpthread -lgfcppcache
+
+OSNAME := $(shell uname)
+ifeq ($(OSNAME),SunOS)
+  CXX = CC
+  # using -xMMD to fix issue with implicit rule to rebuild string from string.cc
+  CXXFLAGS += -xMMD
+  CXXFLAGS += -mt -D_RWSTD_MULTI_THREAD -DTHREAD=MULTI -D_REENTRANT
+  CXXFLAGS += -m$(BUILD_BITS) -xO3
+  CXXLDFLAGS += -m$(BUILD_BITS) -zdefs
+  CXXLIBS += -lrt -lkstat
+  ifeq ($(USE_CPP11),1)
+    CXXFLAGS += -std=c++11
+    CXXLDFLAGS += -std=c++11 
+    CXXLIBS += -lstdc++ -lgcc_s -lCrunG3
+  else
+    CXXLIBS += -lCstd -lCrun
+  endif
+  CXXLIBS += -lc
+else
+ifeq ($(OSNAME),Linux)
+  CXXFLAGS += -MD
+  CXXFLAGS += -D_REENTRANT -O3 -Wall -m$(BUILD_BITS)
+  CXXLDFLAGS += -m$(BUILD_BITS)
+  ifeq ($(USE_CPP11),1)
+    CXXFLAGS += -std=c++11
+  endif
+else
+  $(error "Not Supported Platform")
+endif
+endif
+
+%.o : %.cpp
+	$(CXX) $(CXXFLAGS) -c -o $@ $<
+
+
+.PHONY: all
+all: subdirs subs
+
+
+.PHONY: subdirs $(SUBDIRS) subs $(SUBS)
+
+subdirs: $(SUBDIRS)
+
+$(SUBDIRS):
+	$(MAKE) -C $@ -f GNUmakefile
+
+subs: $(SUBS)
+
+$(SUBS):
+	$(MAKE) -f GNUmakefile.$@
+
+SUBDIRSCLEAN = $(addsuffix .clean,$(SUBDIRS))
+
+SUBSCLEAN = $(addsuffix .clean,$(SUBS))
+        
+.PHONY: clean $(SUBDIRSCLEAN) $(SUBSCLEAN)
+clean: $(SUBDIRSCLEAN) $(SUBSCLEAN)
+        
+$(SUBDIRSCLEAN): %.clean:
+	$(MAKE) -C $* -f GNUmakefile clean
+
+$(SUBSCLEAN): %.clean:
+	$(MAKE) -f GNUmakefile.$* clean
+


[36/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/executeFunction/XMLs/serverExecuteFunctions2.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/executeFunction/XMLs/serverExecuteFunctions2.xml b/geode-client-native/examples/dist/executeFunction/XMLs/serverExecuteFunctions2.xml
new file mode 100755
index 0000000..01bce02
--- /dev/null
+++ b/geode-client-native/examples/dist/executeFunction/XMLs/serverExecuteFunctions2.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+
+
+<!DOCTYPE cache PUBLIC
+  "-//GemStone Systems, Inc.//GemFire Declarative Caching 6.5//EN"
+  "http://www.gemstone.com/dtd/cache6_5.dtd">
+<cache>
+  <cache-server port="40404" notify-by-subscription="true">
+     <group>ServerGroup1</group>
+  </cache-server>
+  <vm-root-region name='partition_region'>
+    <region-attributes  mirror-type="keys-values" data-policy="partition"></region-attributes>
+  </vm-root-region>
+  <function-service>
+    <function>
+      <class-name>javaobject.MultiGetFunctionI</class-name>
+    </function>
+    <function>
+      <class-name>javaobject.MultiPutFunctionI</class-name>
+    </function>
+    <function>
+      <class-name>javaobject.MultiGetFunction</class-name>
+    </function>
+    <function>
+      <class-name>javaobject.MultiPutFunction</class-name>
+    </function>
+    <function>
+      <class-name>javaobject.RegionOperationsFunction</class-name>
+    </function>
+  </function-service>
+</cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/executeFunction/buildit.bat
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/executeFunction/buildit.bat b/geode-client-native/examples/dist/executeFunction/buildit.bat
new file mode 100644
index 0000000..3ec8ac6
--- /dev/null
+++ b/geode-client-native/examples/dist/executeFunction/buildit.bat
@@ -0,0 +1,7 @@
+@echo off
+
+rem GFCPP must be set
+
+cl /MD /Zc:wchar_t /EHsc /GR /wd4996 /D_EXAMPLE /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NON_CONFORMING_SWPRINTFS /DWINVER=0x0500 /I%GFCPP%/include /FeExecuteFunctions.exe ExecuteFunctions.cpp %GFCPP%/lib/gfcppcache.lib
+
+del *.obj

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/executeFunction/buildit.sh
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/executeFunction/buildit.sh b/geode-client-native/examples/dist/executeFunction/buildit.sh
new file mode 100755
index 0000000..4747a62
--- /dev/null
+++ b/geode-client-native/examples/dist/executeFunction/buildit.sh
@@ -0,0 +1,46 @@
+#!/bin/bash
+
+
+if [ -z ${GFCPP:-} ]; then
+  echo GFCPP is not set.
+  exit 1
+fi
+
+echo Building GemFire ExecuteFunction
+
+OPT=-O3
+LIBDIR=lib
+
+platform=`uname`
+is64bit=__IS_64_BIT__
+if [ "$platform" == "SunOS" ]; then
+  if [ $is64bit -eq 1 ]; then
+    ARCH="-xarch=v9"
+  else
+    ARCH="-xarch=v8plus"
+  fi
+  CC=CC
+  CXX_FLAGS="-mt -D_RWSTD_MULTI_THREAD -DTHREAD=MULTI \
+      -D_REENTRANT $OPT $ARCH \
+      -I$GFCPP/include \
+      -L$GFCPP/$LIBDIR \
+      -R$GFCPP/$LIBDIR \
+      -lgfcppcache -lrt -lpthread -lkstat"
+elif [ "$platform" == "Linux" ]; then
+  if [ $is64bit -eq 1 ]; then
+    ARCH="-m64"
+  else
+    ARCH="-m32"
+  fi
+  CC=g++
+  CXX_FLAGS="-D_REENTRANT $OPT -Wall $ARCH \
+      -I$GFCPP/include \
+      -Xlinker -rpath -Xlinker $GFCPP/$LIBDIR -L$GFCPP/$LIBDIR \
+      -lgfcppcache"
+else
+  echo "This script is not supported on this platform."
+  exit 1
+fi
+
+$CC  $CXX_FLAGS \
+    ExecuteFunctions.cpp -o ExecuteFunctions 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/executeFunction/cleanup.bat
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/executeFunction/cleanup.bat b/geode-client-native/examples/dist/executeFunction/cleanup.bat
new file mode 100644
index 0000000..6446ab9
--- /dev/null
+++ b/geode-client-native/examples/dist/executeFunction/cleanup.bat
@@ -0,0 +1,9 @@
+@echo off
+
+echo Deleting GemFire Statistics and Log files...
+
+del /q *.gfs
+del /q gfecs\*.*
+rmdir gfecs
+del /q gfecs2\*.*
+rmdir gfecs2

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/executeFunction/cleanup.sh
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/executeFunction/cleanup.sh b/geode-client-native/examples/dist/executeFunction/cleanup.sh
new file mode 100755
index 0000000..8c28fb2
--- /dev/null
+++ b/geode-client-native/examples/dist/executeFunction/cleanup.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+echo Deleting GemFire Statistics and Log files...
+
+rm -f *.gfs
+rm -f gfecs/*
+rmdir gfecs
+rm -f gfecs2/*
+rmdir gfecs2

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/executeFunction/runExecuteFunctions.bat
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/executeFunction/runExecuteFunctions.bat b/geode-client-native/examples/dist/executeFunction/runExecuteFunctions.bat
new file mode 100644
index 0000000..478fa8a
--- /dev/null
+++ b/geode-client-native/examples/dist/executeFunction/runExecuteFunctions.bat
@@ -0,0 +1,20 @@
+@echo off
+
+rem GFCPP must be set
+
+if not "%GFCPP%"=="" goto startexamples
+
+echo GFCPP is not set.
+goto finished
+
+
+:startexamples
+
+echo.
+echo Running GemFire C++ ExecuteFunctions example
+
+set PATH=%PATH%;%GFCPP%\bin;..\bin;
+
+
+call ExecuteFunctions.exe %1
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/executeFunction/runExecuteFunctions.sh
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/executeFunction/runExecuteFunctions.sh b/geode-client-native/examples/dist/executeFunction/runExecuteFunctions.sh
new file mode 100644
index 0000000..a3c37d3
--- /dev/null
+++ b/geode-client-native/examples/dist/executeFunction/runExecuteFunctions.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+if [ -z ${GFCPP:-} ]; then
+  echo GFCPP is not set.
+  exit 1
+fi
+
+exname='ExecuteFunctions'
+
+echo Running GemFire C++ example ${exname} ...
+
+export PATH="${PATH}:${GEMFIRE}/bin"
+
+${exname} $*
+
+echo Finished example ${exname}.
+
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/executeFunction/startServer.bat
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/executeFunction/startServer.bat b/geode-client-native/examples/dist/executeFunction/startServer.bat
new file mode 100644
index 0000000..706572d
--- /dev/null
+++ b/geode-client-native/examples/dist/executeFunction/startServer.bat
@@ -0,0 +1,34 @@
+@echo off
+
+rem GFCPP must be set
+rem GEMFIRE must be set
+
+
+if not "%GEMFIRE%"=="" goto startexamples
+
+echo GEMFIRE is not set.
+goto finished
+
+
+:startexamples
+
+
+:runexample
+
+echo.
+echo Running GemFire Server
+
+set CLASSPATH=%CLASSPATH%;../javaobject.jar;
+set PATH=%GEMFIRE%\bin;%PATH%;%GEMFIRE%\bin;..\bin;
+
+if not exist gfecs mkdir gfecs
+if not exist gfecs2 mkdir gfecs2
+
+
+
+call cacheserver start cache-xml-file=../XMLs/serverExecuteFunctions.xml mcast-port=35673 -dir=gfecs
+call cacheserver start cache-xml-file=../XMLs/serverExecuteFunctions2.xml mcast-port=35673 -dir=gfecs2
+
+rem pause
+
+:finished

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/executeFunction/startServer.sh
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/executeFunction/startServer.sh b/geode-client-native/examples/dist/executeFunction/startServer.sh
new file mode 100755
index 0000000..091331f
--- /dev/null
+++ b/geode-client-native/examples/dist/executeFunction/startServer.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+if [ -z ${GEMFIRE:-} ]; then
+  echo GEMFIRE is not set.
+  exit 1
+fi
+
+echo Running GemFire Server
+
+export CLASSPATH="${CLASSPATH}:../javaobject.jar"
+export PATH="${PATH}:${GEMFIRE}/bin"
+
+if [ ! -d gfecs ]
+then
+  mkdir gfecs
+fi
+
+if [ ! -d gfecs2 ]
+then
+  mkdir gfecs2
+fi
+
+   cacheserver start cache-xml-file=../XMLs/serverExecuteFunctions.xml mcast-port=35673 -dir=gfecs
+
+   cacheserver start cache-xml-file=../XMLs/serverExecuteFunctions2.xml mcast-port=35673 -dir=gfecs2

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/executeFunction/stopServer.bat
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/executeFunction/stopServer.bat b/geode-client-native/examples/dist/executeFunction/stopServer.bat
new file mode 100644
index 0000000..1ddf398
--- /dev/null
+++ b/geode-client-native/examples/dist/executeFunction/stopServer.bat
@@ -0,0 +1,22 @@
+@echo off
+
+rem GEMFIRE must be set
+
+
+if not "%GEMFIRE%"=="" goto startexamples
+
+echo GEMFIRE is not set.
+goto finished
+
+
+:startexamples
+
+echo.
+echo Stopping GemFire Server
+
+set PATH=%GEMFIRE%\bin;%PATH%;%GEMFIRE%\bin;..\bin;
+
+call cacheserver stop -dir=gfecs
+call cacheserver stop -dir=gfecs2
+:finished
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/executeFunction/stopServer.sh
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/executeFunction/stopServer.sh b/geode-client-native/examples/dist/executeFunction/stopServer.sh
new file mode 100755
index 0000000..f9af1bd
--- /dev/null
+++ b/geode-client-native/examples/dist/executeFunction/stopServer.sh
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+if [ -z ${GEMFIRE:-} ]; then
+  echo GEMFIRE is not set.
+  exit 1
+fi
+
+
+echo Stop GemFire Server
+
+export PATH="${PATH}:${GEMFIRE}/bin"
+
+
+cacheserver stop -dir=gfecs
+
+cacheserver stop -dir=gfecs2
+
+echo Stopped Server
+
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/overview.html
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/overview.html b/geode-client-native/examples/dist/overview.html
new file mode 100755
index 0000000..8e2fee7
--- /dev/null
+++ b/geode-client-native/examples/dist/overview.html
@@ -0,0 +1,15 @@
+<HTML>
+<BODY>
+
+<p>These demonstration programs provide examples of how to use
+GemFire's distributed data caching features.</p>
+
+<P>The {@link cacheRunner} example provides an interactive command
+line utility for experimenting with many of the features of the
+GemFire distributed cache.</P>
+
+<P>The {@link cachetest} example provides an non interactive command
+demonstrating operational throughput under various region configurations.</P>
+
+</BODY>
+</HTML>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/userobjects/AccountHistory.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/userobjects/AccountHistory.cpp b/geode-client-native/examples/dist/userobjects/AccountHistory.cpp
new file mode 100644
index 0000000..f881d02
--- /dev/null
+++ b/geode-client-native/examples/dist/userobjects/AccountHistory.cpp
@@ -0,0 +1,99 @@
+
+#include "AccountHistory.hpp"
+#include "EClassIds.hpp"
+#include <stdio.h>
+
+using namespace gemfire;
+
+AccountHistory::AccountHistory( )
+: Cacheable(),
+  m_history()
+{
+}
+
+/**
+ * @brief serialize this object
+ **/
+void AccountHistory::toData( DataOutput& output ) const
+{
+  size_t itemCount = m_history.size();
+  output.writeInt( (int32_t) itemCount );
+  for( size_t idx = 0; idx < itemCount; idx++ ) {
+    // copy each string to the serialization buffer, including the null
+    // terminating character at the end of the string.
+    output.writeBytes( (int8_t*) m_history[idx].c_str(), m_history[idx].size() + 1 );
+  }
+}
+
+/**
+ * @brief deserialize this object
+ **/
+Serializable* AccountHistory::fromData( DataInput& input )
+{
+  size_t buflen = 1000;
+  char* readbuf = new char[buflen];
+  uint32_t itemCount = 0;
+  uint32_t itemLength = 0;
+
+  input.readInt( (uint32_t*) &itemCount );
+  for( size_t idx = 0; idx < itemCount; idx++ ) {
+    input.readInt( (uint32_t*) &itemLength );
+    // grow the read buffer if an item exceeds the length.
+    if ( buflen <= itemLength ) {
+      buflen = itemLength;
+      delete [] readbuf;
+      readbuf = new char[buflen];
+    }
+    // read from serialization buffer into a character array
+    input.readBytesOnly((uint8_t*) readbuf, itemLength);
+    // and store in the history list of strings.
+    m_history.push_back( readbuf );
+  }
+  return this;
+}
+
+/**
+ * @brief creation function for strings.
+ */
+Serializable* AccountHistory::createDeserializable( )
+{
+  return new AccountHistory();
+}
+
+/**
+ *@brief return the classId of the instance being serialized.
+ * This is used by deserialization to determine what instance
+ * type to create and derserialize into.
+ */
+int32_t AccountHistory::classId( ) const
+{
+  return EClassIds::AccountHistory;
+}
+
+/** Log the state of this in a pretty fashion. */
+void AccountHistory::showAccountHistory( ) const
+{
+  printf( "AccountHistory: \n" );
+  for( size_t idx = 0; idx < m_history.size(); idx++ ) {
+    printf( "  %s\n", m_history[idx].c_str() );
+  }
+}
+
+/** Add a entry to the history. */
+void AccountHistory::addLog( const std::string& entry )
+{
+  m_history.push_back( entry );
+}
+
+uint32_t AccountHistory::objectSize( ) const
+{
+  size_t itemCount = m_history.size();
+  uint32_t size = sizeof(AccountHistory);
+  size += sizeof(itemCount);
+  for( size_t idx = 0; idx < itemCount; idx++ ) {
+    size += sizeof(char) * (m_history[idx].size()+1);
+  }
+  return size;
+
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/userobjects/AccountHistory.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/userobjects/AccountHistory.hpp b/geode-client-native/examples/dist/userobjects/AccountHistory.hpp
new file mode 100644
index 0000000..6add142
--- /dev/null
+++ b/geode-client-native/examples/dist/userobjects/AccountHistory.hpp
@@ -0,0 +1,59 @@
+
+#ifndef __AccountHistory_hpp__
+#define __AccountHistory_hpp__ 1
+
+
+#include <gfcpp/GemfireCppCache.hpp>
+#include <string>
+#include <vector>
+
+class AccountHistory;
+typedef gemfire::SharedPtr< AccountHistory > AccountHistoryPtr;
+
+/** 
+ * Defines a custom type that can be used as a value in a
+ * gemfire region.
+ */
+class AccountHistory : public gemfire::Cacheable
+{
+  private:
+    std::vector< std::string > m_history;
+
+  public:
+
+  AccountHistory( );
+
+   /**
+   *@brief serialize this object
+   **/
+  virtual void toData( gemfire::DataOutput& output ) const;
+
+  /**
+   *@brief deserialize this object
+   **/
+  virtual gemfire::Serializable* fromData( gemfire::DataInput& input );
+  
+  /**
+   * @brief creation function for strings.
+   */
+  static gemfire::Serializable* createDeserializable( );
+
+  /**
+   *@brief return the classId of the instance being serialized.
+   * This is used by deserialization to determine what instance
+   * type to create and derserialize into.
+   */
+  virtual int32_t classId( ) const;
+
+  /** Log the state of this in a pretty fashion. */
+  void showAccountHistory( ) const;
+  
+  /** Add a entry to the history. */
+  void addLog( const std::string& entry );
+  
+  virtual uint32_t objectSize() const;
+   
+};
+
+#endif
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/userobjects/BankAccount.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/userobjects/BankAccount.cpp b/geode-client-native/examples/dist/userobjects/BankAccount.cpp
new file mode 100644
index 0000000..fb7fbfb
--- /dev/null
+++ b/geode-client-native/examples/dist/userobjects/BankAccount.cpp
@@ -0,0 +1,62 @@
+
+#include "BankAccount.hpp"
+#include "EClassIds.hpp"
+#include <stdio.h>
+
+using namespace gemfire;
+
+BankAccount::BankAccount( int customerNum, int accountNum )
+: CacheableKey(),
+  m_customerId( customerNum ),
+  m_accountId( accountNum )
+{
+}
+
+void BankAccount::toData( DataOutput& output ) const
+{
+  // write each field to the DataOutput.
+  output.writeInt( m_customerId );
+  output.writeInt( m_accountId );
+}
+
+Serializable* BankAccount::fromData( DataInput& input )
+{
+  // set each field from the data input.
+  input.readInt( &m_customerId );
+  input.readInt( &m_accountId );
+  return this;
+}
+
+Serializable* BankAccount::createDeserializable( )
+{
+  // Create a new instance that will be initialized later by a call to fromData.
+  return new BankAccount( 0, 0 );
+}
+
+int32_t BankAccount::classId( ) const
+{
+  return EClassIds::BankAccount;
+}
+
+bool BankAccount::operator==( const CacheableKey& other ) const
+{
+  const BankAccount& rhs = static_cast< const BankAccount& >( other );
+  return ( m_customerId == rhs.m_customerId ) 
+    && ( m_accountId == rhs.m_accountId );
+}
+
+uint32_t BankAccount::hashcode( ) const
+{
+  return /* not the best hash.. */ m_customerId + ( m_accountId << 3 );
+}
+
+void BankAccount::showAccountIdentifier( ) const
+{
+  printf( "BankAccount( customer: %d, account: %d )\n", 
+    m_customerId, m_accountId );
+}
+
+uint32_t BankAccount::objectSize( ) const
+{
+  return sizeof(BankAccount) ;
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/userobjects/BankAccount.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/userobjects/BankAccount.hpp b/geode-client-native/examples/dist/userobjects/BankAccount.hpp
new file mode 100644
index 0000000..2a245d8
--- /dev/null
+++ b/geode-client-native/examples/dist/userobjects/BankAccount.hpp
@@ -0,0 +1,72 @@
+
+#ifndef __BankAccount_hpp__
+#define __BankAccount_hpp__ 1
+
+
+#include <gfcpp/GemfireCppCache.hpp>
+
+
+class BankAccount;
+typedef gemfire::SharedPtr< BankAccount > BankAccountPtr;
+
+/**
+ * Defines a custom type that can be used as a key in
+ * a gemfire region.
+ */
+class BankAccount : public gemfire::CacheableKey
+{
+  private:
+
+    int m_customerId; 
+    int m_accountId;
+
+  public:
+
+  BankAccount( int customerNum, int accountNum );
+
+   /**
+   *@brief serialize this object
+   **/
+  virtual void toData( gemfire::DataOutput& output ) const;
+
+  /**
+   *@brief deserialize this object
+   **/
+  virtual gemfire::Serializable* fromData( gemfire::DataInput& input );
+  
+  /**
+   * @brief creation function for strings.
+   */
+  static gemfire::Serializable* createDeserializable( );
+
+  /**
+   *@brief return the classId of the instance being serialized.
+   * This is used by deserialization to determine what instance
+   * type to create and derserialize into.
+   */
+  virtual int32_t classId( ) const;
+
+  /** return true if this key matches other. */
+  virtual bool operator==( const gemfire::CacheableKey& other ) const;
+
+  /** return the hashcode for this key. */
+  virtual uint32_t hashcode( ) const;
+  
+  /** Log the state of this in a pretty fashion. */
+  void showAccountIdentifier( ) const;
+   
+  virtual uint32_t objectSize() const;   
+};
+
+namespace gemfire {
+
+/** overload of gemfire::createKey to pass CacheableInt32Ptr */
+inline CacheableKeyPtr createKey( const BankAccountPtr& value )
+{
+  return value;
+}
+
+}
+
+#endif
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/userobjects/EClassIds.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/userobjects/EClassIds.hpp b/geode-client-native/examples/dist/userobjects/EClassIds.hpp
new file mode 100644
index 0000000..68fe892
--- /dev/null
+++ b/geode-client-native/examples/dist/userobjects/EClassIds.hpp
@@ -0,0 +1,17 @@
+
+#ifndef __EClassIds_hpp__
+#define __EClassIds_hpp__ 1
+
+/** Class that holds the enum with each unique types serialization id. */
+class EClassIds 
+{
+  public:
+  
+  enum {
+    AccountHistory = 0x02,
+    BankAccount = 0x03
+  };
+};
+
+#endif
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/userobjects/ExampleMain.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/userobjects/ExampleMain.cpp b/geode-client-native/examples/dist/userobjects/ExampleMain.cpp
new file mode 100644
index 0000000..b160269
--- /dev/null
+++ b/geode-client-native/examples/dist/userobjects/ExampleMain.cpp
@@ -0,0 +1,68 @@
+
+#include <gfcpp/GemfireCppCache.hpp>
+#include "BankAccount.hpp"
+#include "AccountHistory.hpp"
+
+using namespace gemfire;
+
+/*
+  This example registers types, creates the cache, creates a
+  region, and then puts and gets user defined type BankAccount.
+*/
+int main( int argc, char** argv )
+{
+  // Register the user defined, serializable type.
+  Serializable::registerType( AccountHistory::createDeserializable );
+  Serializable::registerType( BankAccount::createDeserializable );
+
+  // Create a cache.
+  CacheFactoryPtr cacheFactory = CacheFactory::createCacheFactory();
+  CachePtr cachePtr = cacheFactory->setSubscriptionEnabled(true)->create();   
+
+  LOGINFO("Created the GemFire Cache");
+  
+  RegionFactoryPtr regionFactory = cachePtr->createRegionFactory(LOCAL);
+  
+  LOGINFO("Created the RegionFactory");
+
+  // Create the Region programmatically.
+  RegionPtr regionPtr = regionFactory->create("BankAccounts");
+
+  LOGINFO("Created the Region from the Cache");
+
+  // Place some instances of BankAccount cache region.
+  BankAccountPtr baKeyPtr(new BankAccount(2309, 123091));
+  AccountHistoryPtr ahValPtr(new AccountHistory());
+  ahValPtr->addLog( "Created account" );
+
+  regionPtr->put( baKeyPtr, ahValPtr );
+  printf( "Put an AccountHistory in cache keyed with BankAccount.\n" );
+  // Call custom behavior on instance of BankAccount.
+  baKeyPtr->showAccountIdentifier();
+  // Call custom behavior on instance of AccountHistory.
+  ahValPtr->showAccountHistory();
+
+  // Get a value out of the region.
+  AccountHistoryPtr historyPtr = dynCast<AccountHistoryPtr>( regionPtr->get( baKeyPtr ) );
+  if (historyPtr != NULLPTR) {
+    printf( "Found AccountHistory in the cache.\n" );
+    historyPtr->showAccountHistory();
+
+    historyPtr->addLog( "debit $1,000,000." );
+    regionPtr->put( baKeyPtr, historyPtr );
+    printf( "Updated AccountHistory in the cache.\n" );
+  }
+
+  // Look up the history again.
+  historyPtr = dynCast<AccountHistoryPtr>( regionPtr->get( baKeyPtr ) );
+  if (historyPtr != NULLPTR) {
+    printf( "Found AccountHistory in the cache.\n" );
+    historyPtr->showAccountHistory();
+  }
+
+  // Close the cache.
+  cachePtr->close();
+
+  return 0;
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/userobjects/README.html
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/userobjects/README.html b/geode-client-native/examples/dist/userobjects/README.html
new file mode 100644
index 0000000..09fbc23
--- /dev/null
+++ b/geode-client-native/examples/dist/userobjects/README.html
@@ -0,0 +1,107 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"><HTML>
+<HEAD>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+<META NAME="GENERATOR" CONTENT="Adobe FrameMaker 7.0/HTML Export Filter">
+
+<TITLE>userobjects: Pivotal&#8482; GemFire&#174; Native Client C++ Example</TITLE>
+</HEAD>
+<BODY>
+ <IMG SRC="../../../docs/PIVOTAL_GemFire_190x81.png" BORDER="0">
+ <DIV>
+   <h1 align="center"><a name="Top" id="Top"></a>userobjects</h1>
+   <h2 align="center">
+   Pivotal<b><sup><font size=-0>&#8482;</font></sup></b> GemFire<b><sup><font size=-0>&#174;</font></sup></b> Native Client </h2>
+   <h2 align="center">C++ Programming Example</h2>
+</DIV>
+<DIV>
+<H2>
+<br>
+About the userobjects Example </H2>
+<P>The <code>userobjects</code> example demonstrates the native client C++ API for distributing and retrieving custom-defined user types. The example uses <code>gemfire::CacheableKey</code> to define a key type suitable for storage as a value in the cache. See the C++ API documentation for a description of <code>gemfire::CacheableKey</code>. You can also review the example source code in the <code>userobjects</code> directory. </P>
+<P>The <code>userobjects</code> example is located in <code>NativeClient_InstallDir/SampleCode/examples/userobjects</code>.</P>
+<br>
+</DIV>
+
+<DIV>
+<H2>
+<a name="configuring_environment" id="configuring_environment"></a>Configuring the Environment </H2>
+</DIV>
+ <DIV>
+   <p>The following is a list of the environment configuration commands for the <code>userobjects</code> example. Choose the set of commands that are appropriate for your operating system. The text that you type is shown in <strong><code>bold</code></strong>.</p>
+<p><strong>Bourne and Korn shells (sh, ksh, bash)</strong>  </p>
+<blockquote>
+  <p><code>    % <strong>GFCPP=&lt;path to NativeClient_InstallDir directory&gt;; export GFCPP </strong><br>
+    % <strong>PATH=$GFCPP/bin:$PATH; export PATH</strong><br>
+    % <strong>LD_LIBRARY_PATH=$GFCPP/lib; export LD_LIBRARY_PATH</strong></code></p>
+</blockquote>
+<p><strong>Windows</strong></p>
+<blockquote>
+  <p><em>The Windows native client installer sets the required environment configurations for you, so they are listed for reference only.</em></p>
+  <p><code>&gt; GFCPP=&lt;path to NativeClient_InstallDir directory&gt;<br>
+  &gt; PATH=%GFCPP%\bin;%PATH%<br>
+  <br>
+  <br>
+  </code></p>
+</blockquote>
+</DIV>
+
+<DIV>
+<H2>Running userobjects</H2>
+<P>
+Follow these steps to run the <code>userobjects</code> example.  The steps reflect Windows operations, so alter them as needed for your operating system.</P>
+</DIV>
+<DIV>
+<OL>
+<LI CLASS="Numbered-1st">
+  <p>
+Create a session, then configure the session environment according to the steps listed in <a href="#configuring_environment">Configuring the Environment</a><a href="../envsetup.html" target="_blank"></a>.</p>
+</LI>
+<LI CLASS="Numbered-1st">Go to the <code>userobjects</code> example directory.</LI>
+<blockquote>
+  <p><strong> <code>cd NativeClient_InstallDir\SampleCode\examples\userobjects</code></strong></p>
+</blockquote>
+<LI CLASS="Numbered">
+Enter this command to start the example:
+
+  <blockquote>
+   <p><strong>
+     <code>userobjects</code></strong></p>
+   </blockquote>
+ </LI>
+
+<p>The process registers custom serializable types, then connects to the distributed system. It creates a cache and region, then creates a new <code>AccountHistory</code> and puts it in the cache. Next, it gets <code>AccountHistory</code> from the cache and updates it.</p>
+<p>This is the example output:</p>
+<blockquote>
+    <p><code>Put an AccountHistory in cache keyed with BankAccount.<br>
+      BankAccount( customer: 2309, account: 123091 )<br>
+      AccountHistory:<br>
+&nbsp;&nbsp;Created account<br>
+      Found AccountHistory in the cache.<br>
+      AccountHistory:<br>
+&nbsp;&nbsp;Created account<br>
+      Updated AccountHistory in the cache.<br>
+      Found AccountHistory in the cache.<br>
+      AccountHistory:<br>
+&nbsp;&nbsp;Created account<br>
+&nbsp;&nbsp;debit $1,000,000.</code></p>
+  </blockquote>
+  <LI CLASS="Numbered">Close the session by entering <code>exit</code>.</LI>
+</OL>
+<br>
+</DIV>
+<DIV>
+<H2>
+Changing System Parameters</H2>
+<P>
+By default, this product ships configured for multicast membership resolution. If your network environment does not allow multicast, you can configure GemFire for unicast. See the <em>GemFire User's Guide</em> for instructions on configuring TCP transport for membership and discovery. <code><br>
+    <br>
+</code></P>
+</DIV>
+<a href="#Top">Top</a>
+<P>
+<br>
+<p>Copyright (c) 2006-2014 Pivotal Software, Inc. All rights reserved. This product is protected by U.S. and international copyright and intellectual property laws. Pivotal products are covered by one or more patents listed at http://www.pivotal.io/patents. </p>
+</BODY>
+</HTML>
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/userobjects/buildit.bat
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/userobjects/buildit.bat b/geode-client-native/examples/dist/userobjects/buildit.bat
new file mode 100755
index 0000000..4012fe6
--- /dev/null
+++ b/geode-client-native/examples/dist/userobjects/buildit.bat
@@ -0,0 +1,7 @@
+@echo off
+
+echo "GFCPP=%GFCPP%"
+
+cl /MD /Zc:wchar_t /GR /EHsc /wd4996 /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NON_CONFORMING_SWPRINTFS /DWINVER=0x0500 /I%GFCPP%\include /Feuserobjects.exe *.cpp %GFCPP%\lib\gfcppcache.lib
+
+del *.obj

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/dist/userobjects/buildit.sh
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/dist/userobjects/buildit.sh b/geode-client-native/examples/dist/userobjects/buildit.sh
new file mode 100755
index 0000000..1e317d4
--- /dev/null
+++ b/geode-client-native/examples/dist/userobjects/buildit.sh
@@ -0,0 +1,42 @@
+#!/bin/bash
+
+
+if [ -z ${GFCPP:-} ]; then
+  echo set GFCPP...
+  exit 1
+fi
+
+OPT=-O3
+LIBDIR=lib
+
+platform=`uname`
+is64bit=__IS_64_BIT__
+if [ "$platform" == "SunOS" ]; then
+  if [ $is64bit -eq 1 ]; then
+    ARCH="-xarch=v9"
+  else
+    ARCH="-xarch=v8plus"
+  fi
+  CC \
+      -D_REENTRANT $OPT $ARCH \
+      -I$GFCPP/include \
+      -L$GFCPP/$LIBDIR \
+      -R$GFCPP/$LIBDIR \
+      *.cpp -o userobjects -lgfcppcache -lrt -lcollector -lkstat
+elif [ "$platform" == "Linux" ]; then
+  if [ $is64bit -eq 1 ]; then
+    ARCH="-m64"
+  else
+    ARCH="-m32"
+  fi
+  g++ \
+      -D_REENTRANT $OPT -Wall -Werror $ARCH \
+      -I$GFCPP/include \
+      -Xlinker -rpath -Xlinker $GFCPP/$LIBDIR -L$GFCPP/$LIBDIR \
+      *.cpp -o userobjects -lgfcppcache
+else
+  echo "This script is not supported on this platform."
+  exit 1
+fi
+
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/unix_README.html
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/unix_README.html b/geode-client-native/examples/unix_README.html
new file mode 100644
index 0000000..e2e3105
--- /dev/null
+++ b/geode-client-native/examples/unix_README.html
@@ -0,0 +1,41 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"><HTML>
+ <HEAD>
+  <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
+  <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+  <LINK REL="STYLESHEET" HREF="../../docs/DocIndex.css" CHARSET="ISO-8859-1" TYPE="text/css">
+  <TITLE>Pivotal GemFire&#174; Native Client Examples</TITLE>
+  <style type="text/css">
+<!--
+.style1 {font-style: italic}
+.style2 {font-size: medium}
+-->
+  </style>
+</HEAD>
+<BODY bgcolor="#ffffff">
+     <IMG SRC="../../docs/PIVOTAL_GemFire_190x81.png" BORDER="0">
+     <h1 align="left">
+     <FONT size=6><b>Pivotal GemFire<FONT size=6><b><sup><font size=-0>&#174;</font></sup></b></FONT> Native Client C++ Examples </H1></b></FONT>
+     <hr color="#330066" width=650 size="1" align="left">
+     <table border=0 cellspacing=0 cellpadding=5 width=650>
+  <tr>
+    <td valign="top"><strong>C++ Examples</strong></td>
+    <td valign="top"><p><a href="cacheRunner/README.html" target="_blank"><strong>cacheRunner</strong></a></b>: 
+      Shows how to modify and view cache contents, perform queries on cached data, maintain highly available client queues after server failover, and authenticate client credentials.</p>
+      <p><a href="userobjects/README.html" target="_blank"><strong>userobjects</strong></a>: 
+      Demonstrates the native client C++ API for distributing and retrieving custom-defined user types.</p>
+      <p><a href="cqQuery/README.html" target="_blank"><strong>cqQuery</strong></a>: 
+      Demonstrates the native client C++ API for continuous query.</p>
+      <hr color="#330066" width="75%" size="1" align="left">    </td>
+  </tr>
+  <tr>
+  <tr>
+   <td valign="top" width="24%"><a href="../../docs/cppdocs/index.html" target="_blank"><strong>C++ API Reference</strong></a> </td>
+
+   <td valign="top"> 
+		Online C++ API documentation for the native client.
+
+		  <hr color="#330066" width="75%" size="1" align="left">	</td>
+  </tr>
+ </table>
+</BODY>
+</HTML>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/examples/win_README.html
----------------------------------------------------------------------
diff --git a/geode-client-native/examples/win_README.html b/geode-client-native/examples/win_README.html
new file mode 100644
index 0000000..2c737f5
--- /dev/null
+++ b/geode-client-native/examples/win_README.html
@@ -0,0 +1,57 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"><HTML>
+ <HEAD>
+  <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
+  <META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
+  <LINK REL="STYLESHEET" HREF="../../docs/DocIndex.css" CHARSET="ISO-8859-1" TYPE="text/css">
+  <TITLE>Pivotal GemFire&#174; Native Client Examples</TITLE>
+  <style type="text/css">
+<!--
+.style1 {font-style: italic}
+.style2 {font-size: medium}
+-->
+  </style>
+</HEAD>
+<BODY bgcolor="#ffffff">
+     <IMG SRC="../../docs/PIVOTAL_GemFire_190x81.png" BORDER="0">
+     <h1 align="left">
+     <FONT size=6><b>Pivotal GemFire</b><FONT size=6><b><sup><font size=-0>&#174;</font></sup></b></FONT></FONT> Native Client C++ and C# Examples </H1>
+     <hr color="#330066" width=650 size="1" align="left">
+     <table border=0 cellspacing=0 cellpadding=5 width=650>
+  <tr>
+    <td valign="top"><strong>C++ Examples</strong></td>
+    <td valign="top"><p><a href="cacheRunner/README.html" target="_blank"><strong>cacheRunner</strong></a></b>: 
+      Shows how to modify and view cache contents, perform queries on cached data, maintain highly available client queues after server failover, and authenticate client credentials.</p>
+      <p><a href="userobjects/README.html" target="_blank"><strong>userobjects</strong></a>: 
+      Demonstrates the native client C++ API for distributing and retrieving custom-defined user types.</p>
+      <p><a href="cqQuery/README.html" target="_blank"><strong>cqQuery</strong></a>: 
+      Demonstrates the native client C++ API for continuous query.</p>
+      <hr color="#330066" width="75%" size="1" align="left">    </td>
+  </tr>
+    <tr>
+    <td valign="top"><strong>C# Examples</strong></td>
+    <td valign="top"><p><a href="cli_ProductBrowser/README.html" target="_blank"><strong>ProductBrowser</strong></a>: 
+        Presents heterogeneous client access by using both a .NET client and a Java client to interact with a Java cache server and exchange data between the clients.</p>
+      <p><a href="cli_CacheRunner/README.html" target="_blank"><strong>CacheRunner</strong></a></b>: 
+        Shows how to modify and view cache contents, perform queries on cached data, and maintain highly available client queues after server failover.</p>
+      <p><a href="cli_CqQuery/README.html" target="_blank"><strong>CqQuery</strong></a>: Demonstrate the usage of C# continuous query API.
+      <hr color="#330066" width="75%" size="1" align="left">    </td>
+  </tr>
+  <tr>
+   <td valign="top" width="24%"><a href="../../docs/DotNetDocs/index.html" target="_blank"><strong>.NET API Reference</strong></a> </td>
+
+   <td valign="top"> 
+		Online .NET API documentation for the native client.
+
+		  <hr color="#330066" width="75%" size="1" align="left">	</td>
+  </tr>
+  <tr>
+   <td valign="top" width="24%"><a href="../../docs/cppdocs/index.html" target="_blank"><strong>C++ API Reference</strong></a> </td>
+
+   <td valign="top">
+                Online C++ API documentation for the native client.
+
+                  <hr color="#330066" width="75%" size="1" align="left">        </td>
+  </tr>
+ </table>
+</BODY>
+</HTML>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/filehdr.txt
----------------------------------------------------------------------
diff --git a/geode-client-native/filehdr.txt b/geode-client-native/filehdr.txt
new file mode 100644
index 0000000..df54021
--- /dev/null
+++ b/geode-client-native/filehdr.txt
@@ -0,0 +1,12 @@
+
+/*=========================================================================
+ * Copyright (c) XXXX Pivotal Software, Inc. All rights reserved. 
+ * This product is protected by U.S. and international copyright 
+ * and intellectual property laws. Pivotal products are covered by 
+ * one or more patents listed at http://www.pivotal.io/patents.  
+REPLACE XXXX with year of code initial change (new file) or if modification 
+use specific year starting with initial (ie. 1997, 1999, 2008) or 
+range (1997-2014) if changed every year and delete these three lines. 
+ *=========================================================================
+ */
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/gfgrep
----------------------------------------------------------------------
diff --git a/geode-client-native/gfgrep b/geode-client-native/gfgrep
new file mode 100755
index 0000000..c8b1752
--- /dev/null
+++ b/geode-client-native/gfgrep
@@ -0,0 +1,18 @@
+#! /usr/bin/bash
+
+# -w -- whole word
+# -i -- case insensitive
+
+#glimpse=/usr/local/10bin/glimpse
+#glimpse=glimpse
+glimpse=/usr/local/10bin/glimpse41/bin/glimpse
+
+if [ -z ${GFBASE-} ]; then
+	GFBASE=`pwd`
+fi
+if [ ! -d "${GFBASE}/glimpsefiles" ]; then
+	echo "Cannot find glimpsefiles (${GFBASE}/glimpsefiles)."
+	exit 1;
+fi
+
+exec $glimpse -H $GFBASE/glimpsefiles "$@"

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/makefiles/cppcache.gmk
----------------------------------------------------------------------
diff --git a/geode-client-native/makefiles/cppcache.gmk b/geode-client-native/makefiles/cppcache.gmk
new file mode 100755
index 0000000..251e9d8
--- /dev/null
+++ b/geode-client-native/makefiles/cppcache.gmk
@@ -0,0 +1,788 @@
+#=========================================================================
+# Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+# This product is protected by U.S. and international copyright
+# and intellectual property laws. Pivotal products are covered by
+# more patents listed at http://www.pivotal.io/patents.
+#========================================================================
+
+ifdef LIBRARY
+
+ifeq ($(LIBRARY),gfcppcache)
+  CFLAGS_COMMON = -DBUILD_CPPCACHE -DACE_NLOGGING -DACE_NDEBUG -D__ACE_INLINE__
+endif
+
+ifeq ($(CPPDEVEL),1)
+  CFLAGS_COMMON += -DGF_DEVEL_ASSERTS=1
+endif
+
+# default rule
+ifdef WINDIR
+all: bothlibs
+else
+all: makeslow makefast
+endif
+
+ifdef WINDIR
+  WINDOWS = true
+else
+  UNAME := $(shell uname)
+  ifeq ($(UNAME),Linux)
+    LINUX = true
+  else
+    ifeq ($(UNAME),SunOS)
+      SOLARIS = true
+    endif
+  endif
+endif
+
+#ifeq ($(LINUX),true)
+#  MAKE_THREADS = -j16
+#else
+#  ifeq ($(UNAME),SunOS)
+#    MAKE_THREADS = -j8
+#  endif
+#endif
+#ifeq ($(WINDOWS),true)
+#  ifndef WIN_MAKE_THREADS
+#    WIN_MAKE_THREADS = 1
+#  endif
+#endif
+
+makeslow:
+	$(MAKE) $(MAKE_THREADS) VARIANT=slow library
+
+makefast:
+	$(MAKE) $(MAKE_THREADS) VARIANT=fast library
+
+bothlibs:
+	$(MAKE) -j$(WIN_MAKE_THREADS) makeslow makefast
+  
+.PHONY: bothlibs makeslow makefast all jniheaders
+
+endif # LIBRARY
+
+ifeq ($(VARIANT),slow)
+  LIBDIR=$(OSBUILDDIR)/hidden/lib/debug
+  DEBUGSUFFIX = _g
+else
+  LIBDIR=$(OSBUILDDIR)/hidden/lib
+  # DEBUGSUFFIX is empty
+endif
+
+ifdef TESTBUILD
+  OBJDIR=$(OSBUILDDIR)/tests/cpp_objects$(DEBUGSUFFIX)
+
+  GENERATEDDIR=$(OSBUILDDIR)/tests/generated
+  ENHANCEDDIR=$(OSBUILDDIR)/tests/enhanced-classes
+  CLASSESDIR=$(OSBUILDDIR)/tests/classes
+else
+  # src build
+  OBJDIR=$(OSBUILDDIR)/src/cpp_objects$(DEBUGSUFFIX)
+
+  GENERATEDDIR=$(OSBUILDDIR)/src/generated
+  ENHANCEDDIR=$(OSBUILDDIR)/src/enhanced-classes
+  CLASSESDIR=$(OSBUILDDIR)/classes
+endif
+TMPARDIR=$(OSBUILDDIR)/src
+
+BINDIR=$(OSBUILDDIR)/product/bin
+
+ifeq ($(OSNAME),SunOS)
+  UNAME_P := $(shell uname -p)
+  ifeq ($(UNAME_P),sparc)
+    HOSTTYPE_OSTYPE=sparc.Solaris
+    NATIVEINC=solaris
+  else
+    HOSTTYPE_OSTYPE=x86.Solaris
+    NATIVEINC=solaris
+  endif
+else
+  ifeq ($(OSNAME),Linux)
+    HOSTTYPE_OSTYPE=intel.Linux
+    NATIVEINC=linux
+  else
+    HOSTTYPE_OSTYPE=intel.Windows
+    NATIVEINC=win32
+  endif
+endif
+
+CINCLUDES = \
+  -I$(GENERATEDDIR) \
+  -I$(ACE_DIR)/include \
+  -I$(XML)/include/libxml2 \
+  -I$(OPENSSL)/include 
+#  -I$(ZZIP)/product/include
+
+ifndef USE_CPP11
+  CINCLUDES += -I$(STLPORT)/stlport 
+endif
+
+ZZIPLIBDIR = $(ZZIP)/product/lib
+
+INTERNAL_SRC_DIR = $(base)/src/com/gemstone/gemfire/internal
+
+ifdef CPPCACHE_INCLUDES
+  CINCLUDES += $(CPPCACHE_INCLUDES)
+endif
+
+#  FILES_FIRST_c should be the first one in the FILES_o list
+#  FILES_LAST_c must be not be in FILES_o, because we want it linked after
+#   the last object brought in from .a terms within LIBS
+#
+FILES_o = $(patsubst %.c,$(OBJDIR)/%.$(OBJEXT),$(FILES_FIRST_c)) \
+ $(patsubst %.c,$(OBJDIR)/%.$(OBJEXT),$(FILES_c)) \
+ $(patsubst %.cpp,$(OBJDIR)/%.$(OBJEXT),$(FILES_cpp)) \
+ $(patsubst statistics/%.cpp,$(OBJDIR)/statistics/%.$(OBJEXT),$(STATISTICS_FILES_cpp)) \
+ $(patsubst impl/%.cpp,$(OBJDIR)/impl/%.$(OBJEXT),$(IMPL_FILES_cpp)) \
+ $(patsubst %.asm,$(OBJDIR)/%.$(OBJEXT),$(FILES_asm)) \
+ $(patsubst admin/%.cpp,$(OBJDIR)/admin/%.$(OBJEXT),$(ADMIN_FILES_cpp)) \
+ $(patsubst admin/impl/%.cpp,$(OBJDIR)/admin/impl/%.$(OBJEXT),$(ADMIN_IMPL_FILES_cpp))
+
+LAST_o = $(patsubst %.c,$(OBJDIR)/%.$(OBJEXT),$(FILES_LAST_c)) 
+
+# By default NATIVEDIR_FUNC does nothing
+NATIVEDIR_FUNC = $(1)
+UNIXDIR_FUNC = $(1)
+NATIVEPATH_FUNC = $(1)
+
+ifeq ($(OSNAME),SunOS)
+  # JAVA_HOME must be a jdk , jre's do not include javah
+  # JAVA_HOME is set in build.sh, not here
+
+  #  SunCompilerDir is set in build.sh
+  CC  = $(SunCompilerDir)/cc  
+  CXX = $(SunCompilerDir)/CC
+
+  # Notes 
+  # TODO jbarrett -  -xcode=pic13 is small model position-independent (max 2*11 external syms)
+  # TODO jbarrett - -xcode=pic32 is large model position-independent (max 2*30 external syms)
+
+  # GFLIB_MODEL  is defined in build.xml
+  ifeq ($(GFLIB_MODEL),64bit)
+    # 64 bit model
+    CFLAGS_MODEL = -m64
+  else
+    # TODO jbarrett - 32bit model, but require int64 data  to be 8-byte-aligned
+    CFLAGS_MODEL = -m32
+  endif
+
+  CFLAGS_COMMON += -D_REENTRANT $(CFLAGS_EXTRA) \
+     '-DGEMFIRE_PRODUCTNAME="$(GEMFIRE_PRODUCTNAME)"' \
+     '-DGEMFIRE_VERSION="$(GEMFIRE_VERSION)"' \
+     '-DGEMFIRE_BITS="$(GEMFIRE_BITS)"' \
+     '-DGEMFIRE_BUILDID="$(GEMFIRE_BUILDID)"' \
+     '-DGEMFIRE_BUILDDATE="$(GEMFIRE_BUILDDATE)"' \
+     '-DGEMFIRE_BUILDOS="$(GEMFIRE_BUILDOS)"' \
+     '-DGEMFIRE_SOURCE_REVISION="$(GEMFIRE_SOURCE_REVISION)"' \
+     '-DGEMFIRE_SOURCE_REPOSITORY="$(GEMFIRE_SOURCE_REPOSITORY)"' \
+     '-DLICENSE_VERSION="$(LICENSE_VERSION)"'
+
+  ifdef USE_CPP11
+    CFLAGS_STD = -std=c++11
+  else
+    CFLAGS_STD = -library=no%Cstd,no%iostream
+  endif
+  
+  CFLAGS_COMMON += $(CFLAGS_MODEL) -features=rtti 
+  CFLAGS_COMMON += -mt -D_POSIX_PTHREAD_SEMANTICS
+  CFLAGS_COMMON += $(CFLAGS_COMMON_M_ALIGN) -KPIC
+  CFLAGS_COMMON += $(CFLAGS_STD)
+  CFLAGS_COMMON += -xMD
+
+  CFLAGS_slow = -g -DDEBUG -DGF_DEBUG_ASSERTS=1 -KPIC
+  COpt_slow/default = -g 
+  COpt_slow/fast = -O2   # not currently used
+  COpt_slow/debug = -g 
+
+  # if there is no file-specific variable defined
+  #   then COpt_slow/byfile evaluates to value of COpt_slow/default
+  COpt_slow/byfile = $(COpt_slow/$<)$(COpt_slow/default$(COpt_slow/$<))
+
+  #    file-specific optimization controls for slow library
+  # COpt_slow/hostunix.c = $(COpt_slow/debug)
+
+  CFLAGS_fast = -g -xwe
+  ifdef USE_CPP11
+    # -xO4 causes sigaborts on some exceptions thrown due to automatic inlining.
+    COpt_fast/default = -xO3
+    COpt_fast/big_pic = -xO3
+  else
+    COpt_fast/default = -xO4
+    COpt_fast/big_pic = -xO4
+  endif
+  COpt_fast/slower = -xO2
+  COpt_fast/debug = -g
+  COpt_fast/byfile = $(COpt_fast/$(notdir $<))$(COpt_fast/default$(COpt_fast/$(notdir $<)))
+
+  #    file-specific optimization controls for fast library
+  #  for safety compile signal handlers with O2
+  COpt_fast/AttributesFactory.cpp = $(COpt_fast/big_pic)
+  COpt_fast/AttributesMutator.cpp = $(COpt_fast/big_pic)
+  COpt_fast/Cache.cpp = $(COpt_fast/big_pic)
+  COpt_fast/CacheFactory.cpp = $(COpt_fast/big_pic)
+  COpt_fast/CacheAttributes.cpp = $(COpt_fast/big_pic)
+  COpt_fast/CacheAttributesFactory.cpp = $(COpt_fast/big_pic)
+  COpt_fast/CacheCallback.cpp = $(COpt_fast/big_pic)
+  COpt_fast/CacheEvent.cpp = $(COpt_fast/big_pic)
+  COpt_fast/Cacheable.cpp = $(COpt_fast/big_pic)
+  COpt_fast/CacheableToken.cpp = $(COpt_fast/big_pic)
+  COpt_fast/CacheableString.cpp = $(COpt_fast/big_pic)
+  COpt_fast/CacheableKey.cpp = $(COpt_fast/big_pic)
+  COpt_fast/CacheFactory.cpp = $(COpt_fast/big_pic)
+  COpt_fast/CacheListener.cpp = $(COpt_fast/big_pic)
+  COpt_fast/CacheLoader.cpp = $(COpt_fast/big_pic)
+  COpt_fast/CacheStatistics.cpp = $(COpt_fast/big_pic)
+  COpt_fast/CacheWriter.cpp = $(COpt_fast/big_pic)
+  COpt_fast/CqAttributesMutator.cpp = $(COpt_fast/big_pic)
+  COpt_fast/CqAttributesFactory.cpp = $(COpt_fast/big_pic)
+  COpt_fast/CqAttributes.cpp = $(COpt_fast/big_pic)
+  COpt_fast/CqAttributesImpl.cpp = $(COpt_fast/big_pic)
+  COpt_fast/CqState.cpp = $(COpt_fast/big_pic)
+  COpt_fast/CqQuery.cpp = $(COpt_fast/big_pic)
+  COpt_fast/CqListener.cpp = $(COpt_fast/big_pic)
+  COpt_fast/DistributedSystem.cpp = $(COpt_fast/big_pic)
+  COpt_fast/EntryEvent.cpp = $(COpt_fast/big_pic)
+  COpt_fast/Exception.cpp = $(COpt_fast/big_pic)
+  COpt_fast/ExceptionTypes.cpp = $(COpt_fast/big_pic)
+  COpt_fast/ExpirationAction.cpp = $(COpt_fast/big_pic)
+  COpt_fast/ExpirationAttributes.cpp = $(COpt_fast/big_pic)
+  COpt_fast/HostAsm.cpp = $(COpt_fast/big_pic)
+  COpt_fast/InterestResultPolicy.cpp = $(COpt_fast/big_pic)
+  COpt_fast/LoaderHelper.cpp = $(COpt_fast/big_pic)
+  COpt_fast/License.cpp = $(COpt_fast/big_pic)
+  COpt_fast/LicenseFeatureSet.cpp = $(COpt_fast/big_pic)
+  COpt_fast/LicenseSet.cpp = $(COpt_fast/big_pic)
+  COpt_fast/RegionAttributes.cpp = $(COpt_fast/big_pic)
+  COpt_fast/RegionEvent.cpp = $(COpt_fast/big_pic)
+  COpt_fast/RegionEntry.cpp = $(COpt_fast/big_pic)
+  COpt_fast/Region.cpp = $(COpt_fast/big_pic)
+  COpt_fast/ResultSet.cpp = $(COpt_fast/big_pic)
+  COpt_fast/ResultSetImpl.cpp = $(COpt_fast/big_pic)
+  COpt_fast/ScopeType.cpp = $(COpt_fast/big_pic)
+  COpt_fast/SelectResultsIterator.cpp = $(COpt_fast/big_pic)
+  COpt_fast/Serializable.cpp = $(COpt_fast/big_pic)
+  COpt_fast/SerializationHelper.cpp = $(COpt_fast/big_pic)
+  COpt_fast/StatisticsFactory.cpp = $(COpt_fast/big_pic)
+  COpt_fast/StructSet.cpp = $(COpt_fast/big_pic)
+  COpt_fast/StructSetImpl.cpp = $(COpt_fast/big_pic)
+  COpt_fast/UserData.cpp = $(COpt_fast/big_pic)
+  COpt_fast/BridgeLoader.cpp = $(COpt_fast/big_pic)
+  COpt_fast/Blowfish.cpp = $(COpt_fast/big_pic)
+  COpt_fast/MD5.cpp = $(COpt_fast/big_pic)
+  COpt_fast/VectorOfSharedBase.cpp = $(COpt_fast/big_pic)
+  COpt_fast/Version.cpp = $(COpt_fast/big_pic)
+  COpt_fast/Utils.cpp = $(COpt_fast/big_pic)
+  COpt_fast/LocalRegion.cpp = $(COpt_fast/big_pic)
+  COpt_fast/StackTrace.cpp = $(COpt_fast/big_pic)
+  COpt_fast/ProxyCache.cpp = $(COpt_fast/big_pic)
+  COpt_fast/ProxyRegion.cpp = $(COpt_fast/big_pic)
+  COpt_fast/ProxyRemoteQueryService.cpp = $(COpt_fast/big_pic)
+  COpt_fast/UserAttributes.cpp = $(COpt_fast/big_pic)
+  COpt_fast/FunctionServiceImpl.cpp = $(COpt_fast/big_pic)
+  COpt_fast/GetAllServersRequest.cpp = $(COpt_fast/big_pic)
+  COpt_fast/GetAllServersResponse.cpp = $(COpt_fast/big_pic)
+
+  COpt_fast/LocatorImpl.cpp = $(COpt_fast/big_pic)
+  COpt_fast/CacheApplicationImpl.cpp = $(COpt_fast/big_pic)
+  COpt_fast/CacheRegionImpl.cpp = $(COpt_fast/big_pic)
+  COpt_fast/Statistic.cpp = $(COpt_fast/big_pic)
+  COpt_fast/StatisticEvent.cpp = $(COpt_fast/big_pic)
+  COpt_fast/StatisticListener.cpp = $(COpt_fast/big_pic)
+  COpt_fast/StatisticResource.cpp = $(COpt_fast/big_pic)
+  COpt_fast/Struct.cpp = $(COpt_fast/big_pic)
+  COpt_fast/SystemProperties.cpp = $(COpt_fast/big_pic)
+  COpt_fast/LogEvent.cpp = $(COpt_fast/big_pic)
+  COpt_fast/LogListener.cpp = $(COpt_fast/big_pic)
+  COpt_fast/TcrCSVersion.cpp = $(COpt_fast/big_pic)
+  COpt_fast/TcrDistributionManager.cpp = $(COpt_fast/big_pic)
+  COpt_fast/TcrHADistributionManager.cpp = $(COpt_fast/big_pic)
+  COpt_fast/TcrEndpoint.cpp = $(COpt_fast/big_pic)
+  COpt_fast/TcrConnectionManager.cpp = $(COpt_fast/big_pic)
+  COpt_fast/TcrConnection.cpp = $(COpt_fast/big_pic)
+  COpt_fast/TcrMessage.cpp = $(COpt_fast/big_pic)
+  COpt_fast/gfcppBanner.cpp = $(COpt_fast/big_pic)
+  COpt_fast/SpinLock.cpp = $(COpt_fast/big_pic)
+  COpt_fast/dllMain.cpp = $(COpt_fast/big_pic)
+  COpt_fast/TcpConn.cpp = $(COpt_fast/big_pic)
+  COpt_fast/UserPasswordAuthInit.cpp = $(COpt_fast/big_pic)
+  COpt_fast/AdminRegion.cpp = $(COpt_fast/big_pic)
+  COpt_fast/ClientHealthStats.cpp = $(COpt_fast/big_pic)
+  COpt_fast/ThinClientPoolDM.cpp = $(COpt_fast/big_pic)
+  COpt_fast/ServerLocationRequest.cpp = $(COpt_fast/big_pic)
+  COpt_fast/ClientConnectionResponse.cpp = $(COpt_fast/big_pic)
+  COpt_fast/ClientConnectionRequest.cpp = $(COpt_fast/big_pic)
+  COpt_fast/ThinClientLocatorHelper.cpp = $(COpt_fast/big_pic)
+  COpt_fast/ServerLocationResponse.cpp = $(COpt_fast/big_pic)
+  COpt_fast/ServerLocation.cpp = $(COpt_fast/big_pic)
+  COpt_fast/ThinClientBaseDM.cpp = $(COpt_fast/big_pic)
+  COpt_fast/ThinClientPoolRegion.cpp = $(COpt_fast/big_pic)
+  COpt_fast/ThinClientRedundancyManager.cpp = $(COpt_fast/big_pic)
+  COpt_fast/QueueConnectionResponse.cpp = $(COpt_fast/big_pic)
+  COpt_fast/QueueConnectionRequest.cpp = $(COpt_fast/big_pic)
+  COpt_fast/ThinClientHARegion.cpp = $(COpt_fast/big_pic)
+  COpt_fast/ThinClientDistributionManager.cpp = $(COpt_fast/big_pic)
+  COpt_fast/ThinClientCacheDistributionManager.cpp = $(COpt_fast/big_pic)
+  COpt_fast/ThinClientPoolHADM.cpp = $(COpt_fast/big_pic)
+  COpt_fast/CacheImpl.cpp = $(COpt_fast/big_pic)
+  COpt_fast/PoolFactory.cpp = $(COpt_fast/big_pic)
+  COpt_fast/PoolManager.cpp = $(COpt_fast/big_pic)
+  COpt_fast/Pool.cpp = $(COpt_fast/big_pic)
+  COpt_fast/CqAttributesImpl.cpp = $(COpt_fast/big_pic)
+  COpt_fast/CqAttributesMutatorImpl.cpp = $(COpt_fast/big_pic)
+  COpt_fast/CqEventImpl.cpp = $(COpt_fast/big_pic)
+  COpt_fast/CqQueryImpl.cpp = $(COpt_fast/big_pic)
+  COpt_fast/CqQueryVsdStats.cpp = $(COpt_fast/big_pic)
+  COpt_fast/CqService.cpp = $(COpt_fast/big_pic)
+  COpt_fast/FunctionService.cpp = $(COpt_fast/big_pic)
+  COpt_fast/ExecutionImpl.cpp = $(COpt_fast/big_pic)
+  COpt_fast/EventId.cpp = $(COpt_fast/big_pic)
+  COpt_fast/EventIdMap.cpp = $(COpt_fast/big_pic)
+  COpt_fast/MapEntry.cpp = $(COpt_fast/big_pic)
+  COpt_fast/ExpMapEntry.cpp = $(COpt_fast/big_pic)
+  COpt_fast/LRUMapEntry.cpp = $(COpt_fast/big_pic)
+  COpt_fast/LRUExpMapEntry.cpp = $(COpt_fast/big_pic)
+  COpt_fast/TrackedMapEntry.cpp = $(COpt_fast/big_pic)
+  COpt_fast/LRUEntriesMap.cpp = $(COpt_fast/big_pic)
+  COpt_fast/ThinClientPoolStickyDM.cpp = $(COpt_fast/big_pic)
+  COpt_fast/TcrPoolEndPoint.cpp = $(COpt_fast/big_pic)
+  COpt_fast/ThinClientPoolStickyHADM.cpp = $(COpt_fast/big_pic)
+  COpt_fast/ThinClientStickyManager.cpp = $(COpt_fast/big_pic)
+  COpt_fast/RegionConfig.cpp = $(COpt_fast/big_pic)
+  COpt_fast/EntryExpiryHandler.cpp = $(COpt_fast/big_pic)
+  COpt_fast/MapSegment.cpp = $(COpt_fast/big_pic)
+  COpt_fast/PoolXmlCreation.cpp = $(COpt_fast/big_pic)
+  
+  CFLAGSnoop = -g
+
+  COptFlag = $(COpt_$(VARIANT)/byfile)
+  CFLAGS += $(CFLAGS_COMMON) $(CFLAGS_OPT) $(CFLAGS_$(VARIANT)) $(COptFlag) $(CINCLUDES)
+
+  # use -noex to disallow C++ exceptions
+  CXXFLAGS = $(CFLAGS_COMMON) $(CFLAGS_OPT) $(CFLAGS_$(VARIANT)) $(COptFlag) $(CINCLUDES)
+
+  LDFLAGS_MODEL = $(CFLAGS_MODEL)
+  LDFLAGSfast= -mt $(LDFLAGS_MODEL)
+  LDFLAGSslow= -g -mt $(LDFLAGS_MODEL)
+  LDFLAGSnoop= -g -mt $(LDFLAGS_MODEL)
+
+
+  ifeq ($(LIBRARY),gfcppcache)
+    THIRDPARTY_STATICS = $(ACE_STATIC_DIR)/lib/libACE.a $(XML)/lib/libxml2.a
+    LIBS = -ldl -lpthread -lc -L$(LIBDIR) -lm -lsocket -lrt -lnsl -ldemangle -lkstat -lz
+  else
+    THIRDPARTY_STATICS =
+    LIBS = -ldl -lpthread -lc -L$(LIBDIR) -lsocket -lrt -lnsl -ldemangle -lkstat -lz
+  endif
+
+  ifeq ($(GFLIB_MODEL),64bit)
+    PROG_LDFLAGS += $(CFLAGS_MODEL)
+  endif
+
+  ifeq ($(LIBRARY),framework)
+    LIBS += -L$(LIBDIR) $(CFLAGS_STD) -lgfcppcache -lpthread -lrt -lkstat
+  endif
+
+  ifeq ($(VARIANT),slow)
+    LIBS += -L $(LIBDIR)/..
+  endif
+
+  #https://docs.oracle.com/cd/E37069_01/html/E37075/bkamq.html#scrolltoc
+  ifdef USE_CPP11
+    LIB_LDFLAGS_STD = $(CFLAGS_STD) -lstdc++ -lgcc_s -lCrunG3 -lc
+  else
+    LIB_LDFLAGS_STD = $(CFLAGS_STD) -lCstd -lCrun -lc
+  endif
+
+
+  LIB_LDFLAGS = $(LIB_LDFLAGS_STD) $(LIBFLAGS) $(LDFLAGS$(VARIANT))
+  PROG_LDFLAGS = -ldl -lpthread $(LDFLAGS$(VARIANT)) $(EXTRA_PROGLDFLAGS)
+
+  OUT.c = -o $@
+
+  MAKE_RESOURCEDIR=if [ ! -d $(RESOURCEDIR) ]; then mkdir $(RESOURCEDIR) ; fi
+  MAKE_CLASSDIR=if [ ! -d $(CLASSDIR) ]; then mkdir $(CLASSDIR) ; fi; $(MAKE_GENERATEDDIR)
+  MAKE_GENERATEDDIR=if [ ! -d $(GENERATEDDIR) ]; then mkdir $(GENERATEDDIR) ; fi
+  OBJEXT=o
+  MAKE_OBJDIR=if [ ! -d $(OBJDIR) ]; then mkdir -p $(OBJDIR) ; fi
+  MAKE_LIBDIR=if [ ! -d $(LIBDIR) ]; then mkdir -p $(LIBDIR) ; fi
+  #MAKE_DELAYFILE=if [ ! -f $(LIBDIR)/delaycoredump.txt ]; then touch $(LIBDIR)/delaycoredump.txt ; fi
+  MAKE_LOCALBINDIR=if [ ! -d $(LOCALBINDIR) ]; then mkdir -p $(LOCALBINDIR) ; fi
+  OBJLIB=$(LIBDIR)/lib$(LIBRARY).so
+  OBJLIBA=$(LIBDIR)/lib$(LIBRARY).a
+  PROGBIN=$(LOCALBINDIR)/$(PROGRAM)
+  # end Solaris
+else
+ifeq ($(HOSTTYPE_OSTYPE),intel.Linux)
+  # JAVA_HOME must be a jdk , jre's do not include javah
+  # JAVA_HOME is set in build.sh, not here
+
+  #  GccCompiler is set in build.sh
+  CC  = $(GccCCompiler)
+  CXX = $(GccCCompiler)
+
+  ifeq ($(GFLIB_MODEL),64bit)
+    # 64 bit model
+    CFLAGS_MODEL = -m64
+    #avoids issue with ACE static library
+    # relocation R_X86_64_32 against `a local symbol' can not be used when making a
+    # shared object
+    FPIC = -fPIC -DPIC
+  else
+    # 32bit model, but require int64 data  to be 8-byte-aligned
+    CFLAGS_MODEL = -m32
+    FPIC =
+  endif
+
+  # Notes 
+  #  std=iso9899:1990
+  CFLAGS_COMMON += $(CFLAGS_EXTRA) -D_REENTRANT \
+    '-D_LARGEFILE64_SOURCE' \
+    '-DGEMFIRE_PRODUCTNAME="$(GEMFIRE_PRODUCTNAME)"' \
+    '-DGEMFIRE_VERSION="$(GEMFIRE_VERSION)"' \
+    '-DGEMFIRE_BITS="$(GEMFIRE_BITS)"' \
+    '-DGEMFIRE_BUILDID="$(GEMFIRE_BUILDID)"' \
+    '-DGEMFIRE_BUILDDATE="$(GEMFIRE_BUILDDATE)"' \
+    '-DGEMFIRE_BUILDOS="$(GEMFIRE_BUILDOS)"' \
+    '-DGEMFIRE_SOURCE_REVISION="$(GEMFIRE_SOURCE_REVISION)"' \
+    '-DGEMFIRE_SOURCE_REPOSITORY="$(GEMFIRE_SOURCE_REPOSITORY)"' \
+    '-DLICENSE_VERSION="$(LICENSE_VERSION)"'
+
+  CFLAGS_COMMON += $(CFLAGS_MODEL) $(FPIC)
+  CFLAGS_COMMON += -MD
+
+  # removed -Wshadow because of ACE
+  CWarnings = -Wswitch \
+   -Wunused-variable -Wcomments \
+   -Wparentheses -Wsign-compare
+
+  # flags to use only when compiling non-C++ code   
+  nonCPPOpts = -Wimplicit-int -Wmissing-declarations 
+
+  CFLAGS_slow =  -g -DDEBUG -DGF_DEBUG_ASSERTS=1 $(CWarnings) -fno-implement-inlines
+  # COpt_slow/default = -O2
+  COpt_slow/default =
+  COpt_slow/slower =
+  COpt_slow/debug =
+
+  # if there is no file-specific variable defined 
+  #   then COpt_slow/byfile evaluates to value of COpt_slow/default
+  COpt_slow/byfile = $(COpt_slow/$<)$(COpt_slow/default$(COpt_slow/$<))
+
+  #    file-specific optimization controls for slow library
+  COpt_slow/hostsignal_unix.cpp = $(COpt_slow/slower)
+
+  CFLAGSnoop = 
+
+  CFLAGS_fast = -g $(CWarnings) -Wuninitialized
+  # note on  linux fast, can't get line numbers with -O3
+  COpt_fast/default = -O3 -Werror
+  COpt_fast/slower = -O2 -Werror 
+  COpt_fast/debug =
+  COpt_fast/byfile = $(COpt_fast/$<)$(COpt_fast/default$(COpt_fast/$<))
+
+  #    file-specific optimization controls for fast library
+  #  As of Jan, 2003, with gcc 2.96 must use -O2 on signal handlers 
+  COpt_fast/hostsignal_unix.cpp = $(COpt_fast/slower)
+
+  COptFlag = $(COpt_$(VARIANT)/byfile)
+  CFLAGS += $(CFLAGS_COMMON) $(CFLAGS_OPT) $(CFLAGS_$(VARIANT)) $(COptFlag) $(CINCLUDES)
+  CXXFLAGS = $(CFLAGS_COMMON) $(CFLAGS_OPT) $(CFLAGS_$(VARIANT)) $(COptFlag) $(CINCLUDES) -Wreturn-type -Wsign-promo
+
+  LDFLAGSfast= -g
+  LDFLAGSslow= -g
+  LDFLAGSnoop= -g
+
+  ifeq ($(LIBRARY),gfcppcache)
+    THIRDPARTY_STATICS = $(ACE_STATIC_DIR)/lib/libACE.a $(XML)/lib/libxml2.a
+    LIBS = -ldl -lm -lpthread -lc -L$(LIBDIR) -lz -lrt
+  else
+    THIRDPARTY_STATICS =
+    LIBS = -ldl -lm -lpthread -lc -L$(LIBDIR)
+  endif
+
+  ifeq ($(LIBRARY),framework)
+    LIBS += -L $(LIBDIR) -lgfcppcache -lpthread
+  endif
+
+  ifeq ($(VARIANT),slow)
+    LIBS += -L $(LIBDIR)/..
+  endif
+
+# -z defs doesn't work when linking a shared library 
+  LIB_LDFLAGS = -Wl,--warn-once -Wl,--no-as-needed $(LIBFLAGS) $(LDFLAGS$(VARIANT))
+  PROG_LDFLAGS = -ldl -lpthread $(LDFLAGS$(VARIANT)) $(EXTRA_PROGLDFLAGS)
+
+  LIB_LDFLAGS += $(CFLAGS_MODEL) 
+  OUT.c = -o $@
+
+  MAKE_RESOURCEDIR=if [ ! -d $(RESOURCEDIR) ]; then mkdir $(RESOURCEDIR) ; fi
+  MAKE_CLASSDIR=if [ ! -d $(CLASSDIR) ]; then mkdir $(CLASSDIR) ; fi; $(MAKE_GENERATEDDIR)
+  MAKE_GENERATEDDIR=if [ ! -d $(GENERATEDDIR) ]; then mkdir $(GENERATEDDIR) ; fi
+  OBJEXT=o
+  MAKE_OBJDIR=if [ ! -d $(OBJDIR) ]; then mkdir -p $(OBJDIR) ; fi
+  MAKE_LIBDIR=if [ ! -d $(LIBDIR) ]; then mkdir -p $(LIBDIR) ; fi
+  #MAKE_DELAYFILE=if [ ! -f $(LIBDIR)/delaycoredump.txt ]; then touch $(LIBDIR)/delaycoredump.txt ; fi
+  MAKE_LOCALBINDIR=if [ ! -d $(LOCALBINDIR) ]; then mkdir -p $(LOCALBINDIR) ; fi
+  OBJLIB=$(LIBDIR)/lib$(LIBRARY).so
+  OBJLIBA=$(LIBDIR)/lib$(LIBRARY).a
+  PROGBIN=$(LOCALBINDIR)/$(PROGRAM)
+  # end Linux
+
+else
+
+  # begin Win2K
+  ifeq ($(MAKE_MODE),unix)
+    NATIVEDIR_FUNC = '$(strip $(shell cygpath -w "$(1)"))'
+    UNIXDIR_FUNC = $(shell cygpath -u '$(1)')
+    NATIVEPATH_FUNC = '$(strip $(shell cygpath -p -w "$(1)"))'
+    override base := $(call UNIXDIR_FUNC,$(base))
+    override OSBUILDDIR := $(call UNIXDIR_FUNC,$(OSBUILDDIR))
+    # must use a jdk here, jre will not have javah 
+    ifndef JAVA_HOME
+      JAVA_HOME=//n080-fil01/NT_build_resources/java/jdk1.4.1.01
+    else
+      override JAVA_HOME := $(call UNIXDIR_FUNC,$(JAVA_HOME))
+    endif
+  endif
+  CINCLUDES +=  -I$(STACKTRACE)\include
+  CINCLUDES := $(foreach dir,$(subst -I,,$(CINCLUDES)),-I$(call NATIVEDIR_FUNC,$(dir)))
+  
+  # VCINCDIRS should be defined in environment before starting build
+  #  if you do not have VC++ include dirs in system environment variables
+  VCINCLUDES=
+  ifdef VCINCDIRS
+    VCINCLUDES = $(foreach dir,$(subst -I,,$(VCINCDIRS)),-I$(call NATIVEDIR_FUNC,$(dir)))
+  endif
+
+  CC = cl
+  CXX = cl
+  ifeq ($(VCVER),vc8)
+    CFLAGSvc8 = /wd4996 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NON_CONFORMING_SWPRINTFS
+    MT_COMMAND = mt /nologo -manifest $(call NATIVEDIR_FUNC,$@).manifest -outputresource:$(call NATIVEDIR_FUNC,$@) 
+  else
+    ifeq ($(VCVER),vc7)
+      CFLAGSvc7slow = /Ge
+      CFLAGSvc7fast = /G6 /Zd
+    endif
+  endif
+  CFLAGS_COMMON += -nologo /GR /EHac /W3 $(CFLAGS$(VCVER)) /WX /WL\
+     /DWINVER=0x0500 /D_WIN32_WINNT=0x500 \
+     -Fd$(call NATIVEDIR_FUNC,$(OBJDIR)/vc60.pdb) \
+     '-DGEMFIRE_PRODUCTNAME="$(GEMFIRE_PRODUCTNAME)"' \
+     '-DGEMFIRE_VERSION="$(GEMFIRE_VERSION)"' \
+     '-DGEMFIRE_BITS="$(GEMFIRE_BITS)"' \
+     '-DGEMFIRE_BUILDID="$(GEMFIRE_BUILDID)"' \
+     '-DGEMFIRE_BUILDDATE="$(GEMFIRE_BUILDDATE)"' \
+     '-DGEMFIRE_BUILDOS="$(GEMFIRE_BUILDOS)"' \
+     '-DGEMFIRE_SOURCE_REVISION="$(GEMFIRE_SOURCE_REVISION)"' \
+     '-DGEMFIRE_SOURCE_REPOSITORY="$(GEMFIRE_SOURCE_REPOSITORY)"' \
+     '-DLICENSE_VERSION="$(LICENSE_VERSION)"'
+
+  CFLAGSfast = /MD /Ox $(CFLAGS$(VCVER)$(VARIANT))
+  CFLAGSslow = /MDd /Od /Zi $(CFLAGS$(VCVER)$(VARIANT)) /GS /RTC1 -DDEBUG -DGF_DEBUG_ASSERTS=1
+  CFLAGS += $(CFLAGS_COMMON) $(CFLAGS_OPT) $(CFLAGS$(VARIANT)) $(CINCLUDES)
+  LDFLAGSslow = -debug
+  LDFLAGSnoop = -debug
+  LDFLAGSfast = -debug -opt:ref
+
+  # VCLIBDIRS should be defined in environment before starting build
+  #  if you do not have VC++ lib dirs in system environment variables
+  LIBPATH=
+  ifdef VCLIBDIRS
+    LIBPATH += $(foreach dir,$(VCLIBDIRS),/LIBPATH:$(call NATIVEDIR_FUNC,$(dir)))
+  endif
+
+  LIBPATH += /LIBPATH:$(call NATIVEDIR_FUNC,$(STLPORT)/lib) /LIBPATH:$(call NATIVEDIR_FUNC,$(LIBDIR))
+
+  ifeq ($(VARIANT),slow)
+    LIBPATH += /LIBPATH:$(call NATIVEDIR_FUNC,$(LIBDIR)/..) 
+  endif
+
+  ifeq ($(VARIANT),slow)
+    ZZIPLIB=zziplibd.lib
+  else
+    ZZIPLIB=zziplib.lib
+  endif
+
+  LIBPATH +=/LIBPATH:$(call NATIVEDIR_FUNC,$(STACKTRACE)/LIB,$(XML)/lib)
+  LIBPATH +=/LIBPATH:$(call NATIVEDIR_FUNC,$(ZZIP)/product/lib)
+
+  ifdef TESTBUILD
+
+    LIB_LDFLAGS = -dll -entry:_DllMainCRTStartup@12 -OPT:REF -INCREMENTAL:NO -MAP $(LDFLAGS$(VARIANT)) $(LIBPATH)
+  else
+    LIB_LDFLAGS = -dll -entry:DLLMain@12 -OPT:REF -INCREMENTAL:NO -MAP $(LDFLAGS$(VARIANT)) $(LIBPATH)
+  endif
+  PROG_LDFLAGS = -INCREMENTAL:NO -MAP -STACK:1048576 $(LDFLAGS$(VARIANT)) $(EXTRA_PROGLDFLAGS) $(LIBPATH)
+  LOADLIBES = wsock32.lib netapi32.lib advapi32.lib \
+              comdlg32.lib user32.lib gdi32.lib kernel32.lib \
+              winspool.lib dbghelp.lib \
+              libxml2.lib $(ZZIPLIB) zlib.lib
+  
+  ifeq ($(VARIANT),slow)
+    ifeq ($(HOSTTYPE_OSTYPE),intel.Windows)
+      LOADLIBES += ACEd.lib
+    else
+      LOADLIBES += ACE.lib
+    endif
+  else
+    LOADLIBES += ACE.lib
+  endif
+
+  ifeq ($(LIBRARY),framework)
+    LOADLIBES += gfcppcache.lib
+  endif
+
+  COMPILE.cpp=$(COMPILE.c)
+  OUT.c = -Fo$(call NATIVEDIR_FUNC,$@)
+
+  OBJEXT=obj
+  ifeq ($(MAKE_MODE),unix)
+    MAKE_GENERATEDDIR=if [ ! -d $(GENERATEDDIR) ]; then mkdir -p $(GENERATEDDIR) ; fi
+    MAKE_OBJDIR=if [ ! -d $(OBJDIR) ]; then mkdir -p $(OBJDIR) ; fi
+    MAKE_LIBDIR=if [ ! -d $(LIBDIR) ]; then mkdir -p $(LIBDIR) ; fi
+    #MAKE_DELAYFILE=if [ ! -f $(LIBDIR)/delaycoredump.txt ]; then touch $(LIBDIR)/delaycoredump.txt ; fi
+    MAKE_BINDIR=if [ ! -d $(BINDIR) ]; then mkdir -p $(BINDIR) ; fi
+  else
+    MAKE_GENERATEDDIR=if not exist $(GENERATEDDIR) mkdir -p $(GENERATEDDIR)
+    MAKE_OBJDIR=if not exist $(OBJDIR) mkdir $(OBJDIR)
+    MAKE_LIBDIR=if not exist $(LIBDIR) mkdir $(LIBDIR)
+    MAKE_BINDIR=if not exist $(BINDIR) mkdir $(BINDIR)
+  endif
+  OBJLIB=$(LIBDIR)/$(LIBRARY).dll
+  PROGBIN=$(LOCALBINDIR)/$(PROGRAM).exe
+  #end Win2K
+endif
+endif
+
+JAVAH_CLASSES=$(JNI_files)
+JAVAH=$(JAVA_HOME)/bin/javah
+JAVAH_ACTION=$(JAVAH) $(JAVAH_ARGS) $(JAVAH_CLASSES)
+JAVAH_ARGS = -classpath $(call NATIVEPATH_FUNC,$(ENHANCEDDIR):$(CLASSESDIR)) -d $(call NATIVEDIR_FUNC,$(GENERATEDDIR))
+
+ifdef JNI_files
+
+jniheaders:
+	@echo running javah
+	$(MAKE_GENERATEDDIR)
+	$(JAVAH_ACTION)
+
+JAVAH_H = $(foreach class,$(JAVAH_CLASSES),$(GENERATEDDIR)/$(subst .,_,$(class)).h)
+$(JAVAH_H): jniheaders
+
+endif # JNI_files
+
+
+ifdef LIBRARY
+
+library: makedirectories jniheaders $(OBJLIB)
+
+makedirectories:
+	@$(MAKE_LIBDIR)
+	@$(MAKE_OBJDIR)
+	@mkdir -p $(OBJDIR)/admin/impl
+	@mkdir -p $(OBJDIR)/impl
+	@mkdir -p $(OBJDIR)/statistics
+
+
+$(OBJLIB): $(FILES_o) $(LAST_o)
+	$(MAKE_DELAYFILE)
+
+ifeq ($(OSNAME),SunOS)
+
+# the SolarisMapFile.mak consists of
+#  the global section from SolarisMapFile_global.mak
+#  and the local section from SolarisMapFile_local.mak
+
+ifeq ($(LIBRARY),gfcppcache)
+	@echo linking cppcache library $@
+	$(CXX) -G $(LIB_LDFLAGS) -KPIC -o $@ $(LIBS) $(FILES_o) $(LAST_o) $(THIRDPARTY_STATICS)
+#	@echo linking static $(OBJLIBA)
+#	cd $(TMPARDIR) && $(base)/buildfiles/composit-ar.sh rcs $(OBJLIBA) $(THIRDPARTY_STATICS) $(FILES_o) $(LAST_o) 
+endif # LIBRARY
+
+else  # not Solaris
+ifeq ($(HOSTTYPE_OSTYPE),intel.Linux)
+ifeq ($(LIBRARY),gfcppcache)
+	@echo linking cppcache library $@
+	$(CXX) -shared -Wl,--version-script=$(base)/makefiles/ver_script $(LIB_LDFLAGS) -o $@ $(LIBS) $(FILES_o) $(LAST_o) $(THIRDPARTY_STATICS) 
+#	@echo linking static $(OBJLIBA)
+#	cd $(TMPARDIR) && $(base)/buildfiles/composit-ar.sh rcs $(OBJLIBA) $(THIRDPARTY_STATICS) $(FILES_o) $(LAST_o)
+endif
+
+else  # not Linux , so it must be Windows
+	@echo linking dll $@
+	link -out:$(call NATIVEDIR_FUNC,$@) $(LIB_LDFLAGS) $(LOADLIBES) $(foreach obj,$^,$(call NATIVEDIR_FUNC,$(obj))) /MAP
+	$(MT_COMMAND)	
+endif # Linux
+endif # Solaris
+
+$(OBJDIR)/%.$(OBJEXT): %.cpp
+	@echo compiling $(VARIANT) $<
+	$(COMPILE.cpp) $(OUT.c) $(call NATIVEDIR_FUNC,$<)
+
+$(OBJDIR)/statistics/%.$(OBJEXT): statistics/%.cpp
+	@echo compiling $(VARIANT) $<
+	$(COMPILE.cpp) $(OUT.c) $(call NATIVEDIR_FUNC,$<)
+
+$(OBJDIR)/admin/%.$(OBJEXT): admin/%.cpp
+	@echo compiling $(VARIANT) $<
+	$(COMPILE.cpp) $(OUT.c) $(call NATIVEDIR_FUNC,$<)
+
+$(OBJDIR)/admin/impl/%.$(OBJEXT): admin/impl/%.cpp
+	@echo compiling $(VARIANT) $<
+	$(COMPILE.cpp) $(OUT.c) $(call NATIVEDIR_FUNC,$<)
+
+$(OBJDIR)/impl/%.$(OBJEXT): impl/%.cpp
+	@echo compiling $(VARIANT) $<
+	$(COMPILE.cpp) $(OUT.c) $(call NATIVEDIR_FUNC,$<)
+
+$(OBJDIR)/statistics/%.$(OBJEXT): statistics/%.c
+	@echo compiling C3 $<
+	$(COMPILE.c) $(nonCPPOpts) $(OUT.c) $(call NATIVEDIR_FUNC,$<)
+
+$(OBJDIR)/admin/%.$(OBJEXT): admin/%.c
+	@echo compiling C3 $<
+	$(COMPILE.c) $(nonCPPOpts) $(OUT.c) $(call NATIVEDIR_FUNC,$<)
+
+$(OBJDIR)/admin/impl/%.$(OBJEXT): admin/impl/%.c
+	@echo compiling C3 $<
+	$(COMPILE.c) $(nonCPPOpts) $(OUT.c) $(call NATIVEDIR_FUNC,$<)
+
+$(OBJDIR)/impl/%.$(OBJEXT): impl/%.c
+	@echo compiling C3 $<
+	$(COMPILE.c) $(nonCPPOpts) $(OUT.c) $(call NATIVEDIR_FUNC,$<)
+
+ifeq ($(OSNAME),SunOS)
+# Solaris 
+  asArch = $(CFLAGS_MODEL)
+
+  # TODO - Remove after upgrading as on build machine
+  ifeq ($(UNAME_P),sparc)
+    ifeq ($(GFLIB_MODEL),64bit)
+      asArch = -xarch=v9
+    else
+      asArch = -xarch=v8plus
+    endif
+  endif 
+
+$(OBJDIR)/%.$(OBJEXT): %.asm
+	@echo assembling $<
+	@as $(asArch)  -K PIC -L -s -P -o $@ $(call NATIVEDIR_FUNC,$<)
+else
+# Linux
+
+# for now linux asm is 32 bit <<< fix for AMD Opteron
+asArch = -32
+
+$(OBJDIR)/%.$(OBJEXT): %.asm
+	@echo assembling $<
+	@as $(asArch) -o $@ $(call NATIVEDIR_FUNC,$<)
+endif
+
+endif # LIBRARY
+
+showme:
+	@echo $(COMPILE.cpp)
+
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/makefiles/executable.gmk
----------------------------------------------------------------------
diff --git a/geode-client-native/makefiles/executable.gmk b/geode-client-native/makefiles/executable.gmk
new file mode 100644
index 0000000..8f51bef
--- /dev/null
+++ b/geode-client-native/makefiles/executable.gmk
@@ -0,0 +1,74 @@
+#=========================================================================
+# Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+# This product is protected by U.S. and international copyright
+# and intellectual property laws. Pivotal products are covered by
+# more patents listed at http://www.pivotal.io/patents.
+#========================================================================
+
+ifeq ($(HOSTTYPE_OSTYPE),intel.Windows)
+    EXE = .exe
+    OBJ = .obj
+else
+    EXE =
+    OBJ = .o
+endif
+
+PRODDIR_lib = $(PRODDIR)/lib
+
+ifeq ($(HOSTTYPE_OSTYPE),sparc.Solaris)
+  CFLAGS = -mt $(CFLAGS_MODEL) $(CINCL)
+  # TODO jbarrett - CFLAGS += -xmemalign=4s
+  LDFLAGS = $(LDFLAGSfast) $(CFLAGS_MODEL)
+  LIBS += $(ACE_DIR)/lib/libACE.a
+else
+ifeq ($(HOSTTYPE_OSTYPE),x86.Solaris)
+  CFLAGS = -mt $(CFLAGS_MODEL) $(CINCL)
+  LDFLAGS = $(LDFLAGSfast) $(CFLAGS_MODEL)
+  LIBS += $(ACE_DIR)/lib/libACE.a
+else
+ifeq ($(HOSTTYPE_OSTYPE),intel.Linux)
+  CFLAGS = $(CFLAGS_MODEL) $(FPIC) $(CINCL)
+  LDFLAGS = $(LDFLAGSfast) $(CFLAGS_MODEL)
+  LIBS += $(ACE_DIR)/lib/libACE.a
+else
+  CINCL := $(foreach dir,$(subst -I,,$(CINCL)),-I$(call NATIVEDIR_FUNC,$(dir)))
+  CFLAGS = $(CFLAGS_COMMON) $(CINCL)
+  LDFLAGS = $(LFLAGSfast) /LIBPATH:$(call NATIVEDIR_FUNC,$(PRODDIR_lib))
+  ifeq ($(VCVER),vc8)
+    MT_COMMAND = mt /nologo -manifest $(call NATIVEDIR_FUNC,$@).manifest -outputresource:$(call NATIVEDIR_FUNC,$@)
+  endif
+endif
+endif
+endif
+
+# Use CXX (C++ compiler) for all of these compiles to require prototypes 
+# for all functions.
+# Without prototypes, 64 bit code will not be compiled correctly because
+# default function result type of "int" is not the same size as "void*"
+
+$(DESTDIR)/%${OBJ} : %.cpp
+	@echo compiling 1 $<
+	$(CXX) $(CFLAGS) $(VCINCLUDES) -c $(OUT.c) $<
+
+$(DESTDIR)/%${OBJ} : %.c
+	@echo compiling 2 $<
+	$(CXX) $(CFLAGS) $(VCINCLUDES) -c $(OUT.c) $<
+
+$(DESTDIR)/%${OBJ} : $(DESTDIR)/%.c
+	@echo compiling 3 $<
+	$(CXX) $(CFLAGS) $(VCINCLUDES) -c $(OUT.c) $(call NATIVEDIR_FUNC,$<)
+
+$(DESTDIR)/%${EXE} : $(DESTDIR)/%${OBJ}
+	@echo linking $@
+ifeq ($(HOSTTYPE_OSTYPE),intel.Windows)
+	link $(LDFLAGS) $(LIBPATH) -out:$(call NATIVEDIR_FUNC,$@) $(foreach obj,$^,$(call NATIVEDIR_FUNC,$(obj))) $(LDLIBS)
+	$(MT_COMMAND)
+else
+	$(CXX) $(LDFLAGS) -o $@ $^ $(LDLIBS)
+endif
+
+KEEPOBJS= $(DESTDIR)/%${OBJ}
+
+.PRECIOUS: $(KEEPOBJS)
+
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/makefiles/makemapfile.sh
----------------------------------------------------------------------
diff --git a/geode-client-native/makefiles/makemapfile.sh b/geode-client-native/makefiles/makemapfile.sh
new file mode 100755
index 0000000..2459374
--- /dev/null
+++ b/geode-client-native/makefiles/makemapfile.sh
@@ -0,0 +1,23 @@
+#! /bin/bash
+#=========================================================================
+# Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+# This product is protected by U.S. and international copyright
+# and intellectual property laws. Pivotal products are covered by
+# more patents listed at http://www.pivotal.io/patents.
+#========================================================================
+
+GENERATED_DIR=$1
+INTERNAL_SRC_DIR=$2
+
+rm -f $GENERATED_DIR/SolarisMapFile.*
+
+cat $INTERNAL_SRC_DIR/SolarisMapFile_global.mak > $GENERATED_DIR/SolarisMapFile.map
+
+grep -h JNIEXPORT $GENERATED_DIR/*.h > $GENERATED_DIR/SolarisMapFile.jni
+
+sed -e '1,$s+JNIEXPORT.*JNICALL++' < $GENERATED_DIR/SolarisMapFile.jni > $GENERATED_DIR/SolarisMapFile.jni2
+
+sed -e '1,$s+$+;+' < $GENERATED_DIR/SolarisMapFile.jni2 >> $GENERATED_DIR/SolarisMapFile.map
+
+cat $INTERNAL_SRC_DIR/SolarisMapFile_local.mak >> $GENERATED_DIR/SolarisMapFile.map
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/makefiles/merge/README.txt
----------------------------------------------------------------------
diff --git a/geode-client-native/makefiles/merge/README.txt b/geode-client-native/makefiles/merge/README.txt
new file mode 100644
index 0000000..25dfa8b
--- /dev/null
+++ b/geode-client-native/makefiles/merge/README.txt
@@ -0,0 +1,24 @@
+
+# instructions for merging Sun hotspot sources into our VM sources
+
+1. edit mergesetup.csh for the locations of the old and new baselines, etc
+
+2. run do_diff.sh
+
+3. examine the resulting $mergeScript file for
+  unwanted or missing directory additions/removals
+  and unwanted or missing cvs add/remove 
+  edit as required.  You may want to also run dircomp.sh
+
+  for removed files, make sure entries are removed from these hotspot files:
+      includeDB* , vm.dsp
+
+4. chmod +x the file $mergeScript
+
+5. run  do_merge.sh
+
+6. edit vm/hotspot20/build/solaris/makefiles/vm.make  and
+        vm/hotspot20Win/build/win32_i486/makefiles/vm.make
+
+   for the HOTSPOT_BUILD_VERSION to match the output from  
+     java -version   run with Sun's binary release .

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/makefiles/merge/dircomp.pl
----------------------------------------------------------------------
diff --git a/geode-client-native/makefiles/merge/dircomp.pl b/geode-client-native/makefiles/merge/dircomp.pl
new file mode 100755
index 0000000..edabab9
--- /dev/null
+++ b/geode-client-native/makefiles/merge/dircomp.pl
@@ -0,0 +1,171 @@
+#! /usr/bin/perl
+
+# HSBASE is the current baseline
+
+$HSBASE=$ENV{'baselines'}$ENV{'old'}
+
+#  js is the new baseline
+$js=$ENV{'baselines'}$ENV{'new'}
+
+# not yet ready to use, don't know wher find.pl used to be 
+require "find.pl";
+
+# ---------------------------------------------------------------
+# Get the directories from the base release
+%jsNames = ();
+chdir($js) || die "cannot chdir to $js: $!";
+eval 'sub wanted {&wanted_js_dirs;}';
+&find('.');
+
+# Get the directories from our tree.
+%myNames = ();
+chdir("$HSBASE") || die "cannot chdir to $HSBASE : $!";
+eval 'sub wanted {&wanted_js_dirs;}';
+&find('.');
+
+# remove duplicates from both lists
+foreach $each (keys(%myNames)) {
+  next if !defined($jsNames{$each});
+  delete $jsNames{$each};
+  delete $myNames{$each};
+  }
+
+# Now report
+@jsNames = keys(%jsNames);
+@jsNames = sort(@jsNames);
+print "-- Directories in $js but not in $HSBASE :\n";
+if ($#jsNames >= 0) {
+  foreach $each (@jsNames) {
+    print "$each\n";
+    }
+  }
+else {
+  print "  (NONE) \n";
+  }
+@myNames = keys(%myNames);
+@myNames = sort(@myNames);
+print "-- Directories in $HSBASE but not in $js :\n";
+if ($#myNames >= 0) {
+  foreach $each (@myNames) {
+    print "$each\n";
+    }
+  }
+else {
+  print "  (NONE) \n";
+  }
+
+# ---------------------------------------------------------------
+# Now, for the common directories, scrutinize the files
+
+# Get the files from the base release
+%jsNames = ();
+chdir($js) || die "cannot chdir to $js: $!";
+eval 'sub wanted {&wanted_js_files;}';
+&find('.');
+
+# Get the files from our tree.
+%myNames = ();
+chdir("$HSBASE") || die "cannot chdir to $HSBASE $!";
+eval 'sub wanted {&wanted_js_files;}';
+&find('.');
+
+@jsNames = keys(%jsNames);
+@jsNames = sort(@jsNames);
+
+@myNames = keys(%myNames);
+@myNames = sort(@myNames);
+
+# remove duplicates from both lists
+foreach $each (keys(%myNames)) {
+  next if !defined($jsNames{$each});
+  delete $jsNames{$each};
+  delete $myNames{$each};
+  }
+
+# Now report
+print "-- Files in JavaSoft but not in $HSBASE \n";
+if ($#jsNames >= 0) {
+  foreach $each (@jsNames) {
+    print "$each\n";
+    }
+  }
+else {
+  print "  (NONE) \n" ;
+  }
+print "-- Files in $HSBASE but not in JavaSoft:\n";
+if ($#myNames >= 0) {
+  foreach $each (@myNames) {
+    print "$each\n";
+    }
+  }
+else {
+  print "  (NONE) \n" ;
+  }
+
+
+
+# ---------------------------------------------------------------
+
+exit 0;
+
+sub wanted_js_dirs {
+  return if !(($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_));
+  return if ! -d _;
+  $jsNames{$name} = 1;
+  }
+ 
+sub wanted_archbase_dirs {
+  return if !(($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_));
+  return if ! -d _;
+
+  # only CVS directories
+  return if ! -d "$_/CVS";
+
+  # Recognize GemStone specific directories (
+  return if $name =~ m#^\./build/adlc\b#;
+  return if $name =~ m#^\./build/bin\b#;
+  return if $name =~ m#^\./build/debug\b#;
+  return if $name =~ m#^\./build/incls\b#;
+  return if $name =~ m#^\./build/release\b#;
+
+  $myNames{$name} = 1;
+  }
+
+sub wanted_js_files {
+  return if !(($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_));
+  return if ! -f _;
+
+  $jsNames{$name} = 1;
+  }
+
+sub wanted_archbase_files {
+  return if !(($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_));
+  return if ! -f _;
+
+  return if $name =~ m#^.*/CVS/.*#;
+  return if $name =~ m#^.*/CClassHeaders/.*#;
+
+  return if $name =~ m%/\.#.*%;
+  return if $name =~ m%/\.class\.headers\.sparc%;
+  return if $name =~ m#/\.cvsignore\b#;
+  return if $name =~ m#/\.bin\.dirs\b#;
+  return if $name =~ m#/\.classes\.list\b#;
+  return if $name =~ m#/\.lib\.dirs\b#;
+
+  return if $name =~ m#^\./build/ADLCompiler.*#;
+  return if $name =~ m#^\./build/Dependencies*#;
+  return if $name =~ m#^\./build/i486.ad*#;
+  return if $name =~ m#^\./build/includeDB*#;
+  return if $name =~ m#^\./build/includeDB.*#;
+  return if $name =~ m#^\./build/grep*#;
+  return if $name =~ m#^\./build/Makefile*#;
+  return if $name =~ m#^\./build/vm.*#;
+  return if $name =~ m#^\./build/*.txt#;
+
+  return if $name =~ m#^\./src/grep*#;
+  return if $name =~ m#^\./src/*.txt#;
+  return if $name =~ m#^\./src/share/vm/prims/gri*#;
+
+  $myNames{$name} = 1;
+  }
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/makefiles/merge/dircomp.sh
----------------------------------------------------------------------
diff --git a/geode-client-native/makefiles/merge/dircomp.sh b/geode-client-native/makefiles/merge/dircomp.sh
new file mode 100644
index 0000000..e3a6b2f
--- /dev/null
+++ b/geode-client-native/makefiles/merge/dircomp.sh
@@ -0,0 +1,5 @@
+#! /bin/csh
+
+source mergesetup.csh
+
+perl dircomp.pl > dircomp.log

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/makefiles/merge/do_diff.sh
----------------------------------------------------------------------
diff --git a/geode-client-native/makefiles/merge/do_diff.sh b/geode-client-native/makefiles/merge/do_diff.sh
new file mode 100755
index 0000000..99b5e29
--- /dev/null
+++ b/geode-client-native/makefiles/merge/do_diff.sh
@@ -0,0 +1,20 @@
+#! /bin/csh
+
+source mergesetup.csh
+
+pushd $baselines
+gdiff -wBrc $old $new > $gdiffLog
+if ( $status > 1) then
+  echo "gdiff failed";
+  exit 1
+endif
+echo "gdiff ok"
+popd
+
+perl scanHs.pl > $mergeScript
+if ( $status != 0) then
+ echo "perl scanHs.pl failed"
+ exit 1
+endif
+echo "perl scanHs.pl ok"
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/makefiles/merge/do_merge.sh
----------------------------------------------------------------------
diff --git a/geode-client-native/makefiles/merge/do_merge.sh b/geode-client-native/makefiles/merge/do_merge.sh
new file mode 100755
index 0000000..7be416c
--- /dev/null
+++ b/geode-client-native/makefiles/merge/do_merge.sh
@@ -0,0 +1,11 @@
+#! /bin/csh
+
+source mergesetup.csh
+
+$mergeScript >& $mergeScript.log
+chmod -x $mergeScript
+
+egrep -e ': conflicts$' $mergeScript.log > $mergeScript.conflicts
+
+cat $mergeScript.conflicts
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/makefiles/merge/mergeOneFile.sh
----------------------------------------------------------------------
diff --git a/geode-client-native/makefiles/merge/mergeOneFile.sh b/geode-client-native/makefiles/merge/mergeOneFile.sh
new file mode 100755
index 0000000..28e0545
--- /dev/null
+++ b/geode-client-native/makefiles/merge/mergeOneFile.sh
@@ -0,0 +1,20 @@
+#! /bin/sh
+
+old=$1
+new=$2
+target=$3
+f=$4
+
+merge $target/$f $old/$f $new/$f
+status=$?
+
+if [ $status -eq 0 ]; then
+  echo "$f: success"
+fi
+if [ $status -eq 1 ]; then
+  echo "$f: conflicts"
+fi
+if [ $status -eq 2 ]; then
+  echo "$f: trouble"
+fi
+exit $status

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/makefiles/merge/mergesetup.csh
----------------------------------------------------------------------
diff --git a/geode-client-native/makefiles/merge/mergesetup.csh b/geode-client-native/makefiles/merge/mergesetup.csh
new file mode 100644
index 0000000..01c4016
--- /dev/null
+++ b/geode-client-native/makefiles/merge/mergesetup.csh
@@ -0,0 +1,21 @@
+
+# parent of two baselines from JavaSoft
+setenv baselines /avocet2/users/otisa/results/gemfireSrc
+
+# current baseline
+setenv old gemfireLinuxBase
+
+# new baseline 
+setenv new gemfire10maint_21nov
+
+# directory for tools (such as this file) 
+setenv tools $cwd
+
+#  target of the merge ; we will merge changes between old and new into target
+setenv target $cwd/../../
+
+# name of log file produced by gdiff
+setenv gdiffLog $cwd/gdiff_nov21.log
+
+# name of script file produced by scanHs.pl
+setenv mergeScript $cwd/merge_nov21.sh

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/makefiles/merge/scanHs.pl
----------------------------------------------------------------------
diff --git a/geode-client-native/makefiles/merge/scanHs.pl b/geode-client-native/makefiles/merge/scanHs.pl
new file mode 100755
index 0000000..c53c275
--- /dev/null
+++ b/geode-client-native/makefiles/merge/scanHs.pl
@@ -0,0 +1,173 @@
+#! /usr/bin/perl
+#
+#   for removed files, make sure entries are removed from these files:
+#       includeDB* , vm.dsp
+#   then remove all src/* files from the PC and re-copy everything from unix,
+#   on the pc remove all .obj files and incls to ensure full rebuild.
+#
+
+$tools=$ENV{'tools'}; 
+$baselines = $ENV{'baselines'};
+$old = $ENV{'old'};		# existing JavaSoft baseline
+$new = $ENV{'new'};		# new JavaSoft baseline
+$gdiffLog = $ENV{'gdiffLog'};
+
+$target = $ENV{'target'};
+
+open(F, "< $gdiffLog ") || die "cannot open diff log";
+
+# ------------- end of stuff to edit for setup of the merge
+
+select(STDOUT); $| = 1;
+
+#print "#! /usr/bin/bash -xv\n";
+print "#! /usr/bin/bash\n";
+print "old=$baselines/$old\n";
+print "new=$baselines/$new\n";
+print "target=$target\n";
+
+($oldPat = $old) =~ s/\./\\./g;
+($newPat = $new) =~ s/\./\\./g;
+
+%removed_dirs = ();
+
+for (;;) {
+  $line = <F>;
+  last if !defined($line);
+  chop($line);
+
+  if ($line =~ m@^diff -wBrc $oldPat/(\S+).*@) {
+    # exists in both; do a merge
+    $line = $1;
+    if (-l "$old/$line") {
+      print "# link: $line\n";
+      }
+    else {
+      print "echo \"merging $line\"\n";
+      print "$tools/mergeOneFile.sh $baselines/$old $baselines/$new $target $line\n";
+      }
+    next;
+    }
+
+  if ($line =~ m@Binary files $oldPat/(\S+) and .* differ@) {
+    # updated binary distribution
+    $line = $1;
+    if (-l "$old/$line") {
+      print "# link: $line\n";
+      }
+    else {
+      print "echo \"copying $line\"\n";
+      print "cp $baselines/$new/$line $target/$line\n";
+      }
+    next;
+    }
+
+  # created anew; copy over (recursively)
+  if ($line =~ m@^Only in $newPat/(\S*):\s*(.*)@) {
+    $dir = $1;
+    $f = $2;
+    if (-d "$baselines/$new/$dir/$f") {
+      print "echo \"creating directory $dir/$f\"\n";
+      &populate_new_dir("$baselines/$new/$dir", "$target/$dir", $f);
+      }
+    else {
+      print "echo \"creating file $dir/$f\"\n";
+      &create_new_file("$baselines/$new/$dir", "$target/$dir", $f);
+      }
+    next;
+    }
+  # only in old, delete
+  if ($line =~ m@^Only in $oldPat/(\S*):\s*(\S+).*@) {
+    $dir = $1;
+    $f = $2;
+
+    # This message can occur multiple times, we only want the first occurence.
+    next if $removed_dirs{"$dir/$f"};
+    $removed_dirs{"$dir/$f"} = 1;
+
+    print "echo \"SKIP removing $dir/$f\"\n";
+#     if (-d "$old/$dir/$f") {
+#       print "echo \"removing directory $dir/$f\"\n";
+#       print "pushd \$target/$dir\n";
+#       print "cvs remove -f $f\n";;
+#       print "popd\n";
+# 
+#       # directories don't remove very well under CVS.  This file
+#       # is some extra help.  More work needed here....
+#       open(F2, ">>$target/../fix.sh")
+# 	|| die "unable to open $target/../fix.sh: $!";
+#       print F2 "rm -rf jdk/$dir/$f\n";
+#       close F2;
+# 
+#       # these changes must be quickly, but only when we commit the merge.
+#       open(F2, ">>remove.sh") || die "unable to open remove.sh: $!";
+#       print F2 "pushd jdk/$dir; pushd `l2repos`\n";
+#       print F2 "mkdir Attic; chmod 777 Attic\n";
+#       $junk = $f;
+#       $junk =~ s#^([^/]*)/.*#$1#;
+#       print F2 "mv $junk Attic\n";
+#       print F2 "popd; popd\n";
+#       close F2;
+#       }
+#     else {
+#       print "echo \"removing file $dir/$f\"\n";
+#       print "pushd \$target/$dir\n";
+#       print "rm $f\n";
+#       print "cvs remove $f\n";
+#       print "popd\n";
+#       }
+    next;
+    }
+  }
+close F;
+
+sub populate_new_dir {
+  local($oldDir, $newDir, $newName) = @_;
+  local(@dirs, @files);
+
+  # create the new directory
+  print "pushd $newDir\n";
+  print "mkdir $newName\n";
+  print "cvs add $newName\n";
+  print "popd\n";
+
+  # create list of files and directories
+  opendir(THISDIR, "$oldDir/$newName")
+	|| die "opendir $oldDir/$newName failure: $!";
+  for (;;) {
+    $thisFile = readdir THISDIR;
+    last if !defined($thisFile);
+    next if $thisFile eq "." || $thisFile eq "..";
+    next if -l "$oldDir/$newName/$thisFile";	# ignore links
+    if (-d "$oldDir/$newName/$thisFile") {
+      push(@dirs, $thisFile);
+      }
+    else {
+      push(@files, $thisFile);
+      }
+    }
+  closedir(THISDIR);
+
+  foreach (sort(@files)) {
+    &create_new_file("$oldDir/$newName", "$newDir/$newName", $_);
+    }
+  foreach (sort(@dirs)) {
+    &populate_new_dir("$oldDir/$newName", "$newDir/$newName", $_);
+    }
+  }
+
+sub create_new_file {
+  local ($fromDir, $toDir, $newName) = @_;
+
+  ($dev,$ino,$mode,@junk) = stat("$fromDir/$newName");
+  print "cp $fromDir/$newName $toDir/$newName\n";
+  print "pushd $toDir\n";
+  print "chmod u+w $newName\n";
+  if (-B "$fromDir/$newName") {
+    print "cvs add -kb $newName\n";
+    }
+  else {
+    print "cvs add $newName\n";
+    }
+  print "popd\n";
+  }

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/makefiles/platform.gmk
----------------------------------------------------------------------
diff --git a/geode-client-native/makefiles/platform.gmk b/geode-client-native/makefiles/platform.gmk
new file mode 100755
index 0000000..0097153
--- /dev/null
+++ b/geode-client-native/makefiles/platform.gmk
@@ -0,0 +1,98 @@
+# Determine platform
+ifdef WINDIR
+  HOSTTYPE_OSTYPE=intel.Windows
+  WINDOWS = true
+else
+  UNAME := $(shell uname)
+  ifeq ($(UNAME),Linux)
+    HOSTTYPE_OSTYPE=intel.Linux
+    LINUX = true
+  else
+    ifeq ($(UNAME),SunOS)
+	    UNAME_P := $(shell uname -p)
+	    ifeq ($(UNAME_P),sparc)
+        HOSTTYPE_OSTYPE=sparc.Solaris
+        SOLARIS = true
+	    else
+	      HOSTTYPE_OSTYPE=x86.Solaris
+		    SOLARIS = true
+	    endif
+    endif
+  endif
+endif
+
+# common
+
+NATIVEDIR_FUNC = $(1)
+UNIXDIR_FUNC = $(1)
+NATIVEPATH_FUNC = $(1)
+CURRENTDIR := $(shell pwd)
+
+# branch on platform
+
+ifdef WINDOWS
+
+###################
+# WINDOWS
+ifeq ($(VCVER),vc8)
+    CFLAGSvc8 = /wd4996 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NON_CONFORMING_SWPRINTFS
+    MT_COMMAND = mt /nologo -manifest $(call NATIVEDIR_FUNC,$@).manifest -outputresource:$(call NATIVEDIR_FUNC,$@) 
+endif
+NATIVEDIR_FUNC = '$(strip $(shell cygpath -w "$(1)"))'
+UNIXDIR_FUNC = $(shell cygpath -u '$(1)')
+NATIVEPATH_FUNC = '$(strip $(shell cygpath -p -w "$(1)"))'
+
+CURRENTDIR := $(call NATIVEDIR_FUNC,$(CURRENTDIR))
+OBJ = .obj
+libPrefix =
+libSuffix = .dll
+
+# END WINDOWS
+###################
+
+else
+  ifdef LINUX
+
+###################
+# LINUX
+
+OBJ = .o
+libPrefix = lib
+libSuffix = .so
+
+ifeq ($(GFLIB_MODEL),64bit)
+    CFLAGS_MODEL = -m64
+    FPIC = -fPIC
+else
+    CFLAGS_MODEL = -m32
+    FPIC =
+endif
+
+# END LINUX
+###################
+
+  else
+    ifdef SOLARIS
+
+###################
+# SOLARIS
+
+OBJ = .o
+libPrefix = lib
+libSuffix = .so
+
+ifeq ($(GFLIB_MODEL),64bit)
+    CFLAGS_MODEL = -m64
+else
+    CFLAGS_MODEL = -m32
+endif
+
+# END SOLARIS
+###################
+
+    endif
+  endif
+endif
+
+# end of platform branches
+



[22/51] [partial] incubator-geode git commit: Add source for geode c++ and .net clients

Posted by rv...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/runcpp.sh
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/runcpp.sh b/geode-client-native/quickstart/runcpp.sh
new file mode 100755
index 0000000..98ba9ee
--- /dev/null
+++ b/geode-client-native/quickstart/runcpp.sh
@@ -0,0 +1,232 @@
+#!/bin/bash
+
+if [ -z ${GFCPP:-} ]; then
+  echo GFCPP is not set.
+  exit 1
+fi
+if [ -z ${GEMFIRE:-} ]; then
+  echo GEMFIRE is not set.
+  exit 1
+fi
+if [ -z ${OPENSSL:-} ]; then
+  echo Warning: OPENSSL is not set.
+  echo If OpenSSL libraries are not found in default library search path then Security example will fail.
+  echo
+  echo Press Enter to continue
+  read resp
+fi
+
+exname='invalidoption'
+
+if [ -f cpp/$1 ]
+then
+  exname=$1
+else
+  echo Please select a GemFire C++ QuickStart example to run.
+  echo
+  echo 1. BasicOperations
+  echo 2. DataExpiration
+  echo 3. LoaderListenerWriter
+  echo 4. RegisterInterest
+  echo 5. RemoteQuery
+  echo 6. HA Cache
+  echo 7. Exceptions
+  echo 8. DurableClient
+  echo 9. Security
+  echo 10.PutAllGetAllOperations
+  echo 11.Continuous Query
+  echo 12.Execute Functions
+  echo 13.DistributedSystem
+  echo 14.PoolWithEndpoints
+  echo 15.PoolRemoteQuery
+  echo 16.Pool Continuous Query
+  echo 17.Delta
+  echo 18.Multiuser Security
+  echo 19.RefIDExample
+  echo 20.Transactions
+  echo 21.TransactionsXA
+  echo 22.PdxRemoteQuery
+  echo 23.PdxSerializer
+  echo 24.PdxInstance
+  echo 25.PdxAutoSerializer
+  echo 26.Quit
+  echo
+
+  while [ "${exname}" == "invalidoption" ]
+  do
+    read -p "Enter option: " option
+    case "${option}" in
+      "1")
+        exname='BasicOperations'
+      ;;
+      "2")
+        exname='DataExpiration'
+      ;;
+      "3")
+        exname='LoaderListenerWriter'
+      ;;
+      "4")
+        exname='RegisterInterest'
+      ;;
+      "5")
+        exname='RemoteQuery'
+      ;;
+      "6")
+        exname='HACache'
+      ;;
+      "7")
+        exname='Exceptions'
+      ;;
+      "8")
+        exname='DurableClient'
+      ;;
+      "9")
+        exname='Security'
+      ;;
+      "10")
+        exname='PutAllGetAllOperations'
+      ;;  
+      "11")
+        exname='CqQuery'
+      ;;
+      "12")
+              exname='ExecuteFunctions'
+      ;;
+      "13")
+        exname='DistributedSystem'
+      ;;
+      "14")
+        exname='PoolWithEndpoints'
+      ;;  
+      "15")
+        exname='PoolRemoteQuery'
+      ;;
+      "16")
+        exname='PoolCqQuery'
+      ;;
+      "17")
+        exname='Delta'
+      ;;
+      "18")
+        exname='MultiuserSecurity'
+      ;;
+	  "19")
+        exname='RefIDExample'
+      ;;
+	  "20")
+        exname='Transactions'
+		;;
+          "21")
+        exname='TransactionsXA'
+                ;;
+	  "22")
+        exname='PdxRemoteQuery'
+		;;
+	  "23")
+        exname='PdxSerializer'
+		;;
+	  "24")
+        exname='PdxInstance'
+      ;;
+	  "25")
+        exname='PdxAutoSerializer'
+      ;;
+      "26")
+        exname='Quit'
+	exit
+      ;;
+    esac
+  done  
+fi
+
+echo Running GemFire C++ QuickStart example ${exname} ...
+
+export CLASSPATH="${CLASSPATH}:../lib/javaobject.jar:${GEMFIRE}/lib/gfSecurityImpl.jar"
+export PATH="${PATH}:${GEMFIRE}/bin"
+
+if [ ! -d gfecs ]
+then
+  mkdir gfecs
+fi
+
+
+if [ "${exname}" != "Security" ]
+  then
+    if [ "${exname}" != "MultiuserSecurity" ]
+      then
+        if [[ "${exname}" != "PoolRemoteQuery" && "${exname}" != "Delta" ]]
+          then
+            cacheserver start cache-xml-file=../XMLs/server${exname}.xml mcast-port=35673 -dir=gfecs
+        else
+          gemfire start-locator -port=34756 -dir=gfecs 
+          cacheserver start cache-xml-file=../XMLs/server${exname}.xml mcast-port=0 -dir=gfecs locators=localhost:34756
+        fi
+    else
+      cacheserver start cache-xml-file=../XMLs/server${exname}.xml mcast-port=35673 -dir=gfecs security-client-authenticator=templates.security.DummyAuthenticator.create security-authz-xml-uri=../XMLs/authz-dummy.xml security-client-accessor=templates.security.XmlAuthorization.create
+  fi
+else
+   cacheserver start cache-xml-file=../XMLs/server${exname}.xml mcast-port=35673 -dir=gfecs security-client-authenticator=templates.security.PKCSAuthenticator.create security-publickey-filepath=../keystore/publickeyfile security-publickey-pass=gemfire security-authz-xml-uri=../XMLs/authz-pkcs.xml security-client-accessor=templates.security.XmlAuthorization.create
+fi
+
+if [ "${exname}" == "DistributedSystem" ]
+then
+  if [ ! -d gfecs2 ]
+  then
+    mkdir gfecs2
+  fi
+  cacheserver start cache-xml-file=../XMLs/server${exname}2.xml mcast-port=35674 -dir=gfecs2
+fi
+
+
+if [ "${exname}" == "HACache"  ]
+then
+  if [ ! -d gfecs2 ]
+  then
+    mkdir gfecs2
+  fi
+  cacheserver start cache-xml-file=../XMLs/server${exname}2.xml mcast-port=35673 -dir=gfecs2
+fi
+
+if [ "${exname}" == "ExecuteFunctions" ]
+then
+  if [ ! -d gfecs2 ]
+  then
+    mkdir gfecs2
+  fi
+  cacheserver start cache-xml-file=../XMLs/server${exname}2.xml mcast-port=35673 -dir=gfecs2
+fi
+success=0
+if [ "${exname}" != "Security" ]
+then
+  export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${OPENSSL}/lib
+else
+  echo "starting client security less"
+fi
+
+$DEBUGGER cpp/${exname}
+success=$?
+
+cacheserver stop -dir=gfecs
+
+if [[ "${exname}" == "PoolRemoteQuery" || "${exname}" == "Delta" ]]
+   then
+    gemfire stop-locator -port=34756 -dir=gfecs
+fi
+
+if [ "${exname}" == "HACache" -o "${exname}" == "DistributedSystem" ]
+then
+  echo CacheServer 2 stopped
+  cacheserver stop -dir=gfecs2
+fi
+
+if [ "${exname}" == "ExecuteFunctions" ]
+then
+  cacheserver stop -dir=gfecs2
+fi
+
+if [ $success -ne "0" ]; then
+  exit 1
+fi
+
+echo Finished example ${exname}.
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/runcs.bat
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/runcs.bat b/geode-client-native/quickstart/runcs.bat
new file mode 100644
index 0000000..187f58c
--- /dev/null
+++ b/geode-client-native/quickstart/runcs.bat
@@ -0,0 +1,264 @@
+@echo off
+
+rem GFCPP must be set
+rem GEMFIRE must be set
+rem OPENSSL must be set for Security example
+
+if not "%GFCPP%"=="" goto checkGEMFIRE
+
+echo GFCPP is not set.
+goto finished
+
+:checkGEMFIRE
+
+if not "%GEMFIRE%"=="" goto checkOPENSSL
+
+echo GEMFIRE is not set.
+goto finished
+
+:checkOPENSSL
+
+if not "%OPENSSL%"=="" goto startexamples
+
+echo OPENSSL is not set.
+echo If OpenSSL libraries are not found in PATH then Security example will fail.
+
+
+:startexamples
+
+mkdir ..\bin
+copy /V %GFCPP%\bin\GemStone.GemFire.Cache.dll ..\bin\.
+
+set LANG=C#
+set LANGDIR=csharp
+
+if not exist %LANGDIR%\%1.exe goto presentmenu
+
+set exname=%1
+
+:runexample
+
+if not exist %LANGDIR%\%exname%.exe goto presentmenu
+
+echo.
+echo Running GemFire %LANG% QuickStart example %exname% ...
+
+set CLASSPATH=%CLASSPATH%;../lib/javaobject.jar;%GEMFIRE%\lib\gfSecurityImpl.jar
+set PATH=%GEMFIRE%\bin;%PATH%;%GEMFIRE%\bin;%GFCPP%\bin;%OPENSSL%\bin;..\bin;
+
+if not exist gfecs mkdir gfecs
+
+if '%exname%' neq 'Delta' goto notwithlocator
+
+echo locator start
+
+call gemfire start-locator -port=34756 -dir=gfecs
+
+:notwithlocator
+
+if '%exname%' neq 'PoolRemoteQuery' goto skiplocatorstart
+
+echo locator start
+
+call gemfire start-locator -port=34756 -dir=gfecs
+
+:skiplocatorstart
+
+if '%exname%' neq 'HACache' goto skiphadir
+
+if not exist gfecs2 mkdir gfecs2
+
+:skiphadir
+
+if '%exname%' neq 'ExecuteFunctions' goto skipfuncdir
+
+if not exist gfecs2 mkdir gfecs2
+
+:skipfuncdir
+
+if '%exname%' equ 'PoolRemoteQuery' goto startserverwithlocator
+
+if '%exname%' equ 'Delta' goto startserverwithlocator
+
+if '%exname%' equ 'Security' goto startserverforsecurity
+
+if '%exname%' equ 'MultiuserSecurity' goto startserverformultiusersecurity
+
+call cacheserver start cache-xml-file=../XMLs/server%exname%.xml mcast-port=35673 -dir=gfecs
+
+echo cacheServer started
+
+if '%exname%' neq 'HACache' goto skiphastart
+
+call cacheserver start cache-xml-file=../XMLs/server%exname%2.xml mcast-port=35673 -dir=gfecs2
+
+echo cacheServer2 started
+
+:skiphastart
+
+if '%exname%' neq 'ExecuteFunctions' goto skipfuncstart
+
+call cacheserver start cache-xml-file=../XMLs/server%exname%2.xml mcast-port=35673 -dir=gfecs2
+
+echo cacheServer2 started
+
+:skipfuncstart
+
+if '%exname%' neq 'Security' goto :skipsecuritystart 
+
+if '%exname%' neq 'MultiuserSecurity' goto :skipsecuritystart 
+
+:startserverforsecurity
+
+call cacheserver start cache-xml-file=../XMLs/server%exname%.xml mcast-port=35673 -dir=gfecs security-client-authenticator=templates.security.DummyAuthenticator.create security-authz-xml-uri=../XMLs/authz-dummy.xml security-client-accessor=templates.security.XmlAuthorization.create security-client-auth-init=templates.security.UserPasswordAuthInit.create
+
+if '%exname%' neq 'MultiuserSecurity' goto :skipsecuritystart 
+:startserverformultiusersecurity
+call cacheserver start cache-xml-file=../XMLs/server%exname%.xml mcast-port=35673 -dir=gfecs security-client-authenticator=templates.security.DummyAuthenticator.create security-authz-xml-uri=../XMLs/authz-dummy.xml security-client-accessor=templates.security.XmlAuthorization.create
+
+goto :skipsecuritystart
+
+:startserverwithlocator
+
+call cacheserver start cache-xml-file=../XMLs/server%exname%.xml mcast-port=0 -dir=gfecs locators=localhost:34756  
+
+:skipsecuritystart
+
+if '%exname%' neq 'PoolRemoteQuery' goto notstartedserverwithlocator
+
+:notstartedserverwithlocator
+
+if '%exname%' neq 'DistributedSystem' goto skipDSstart
+
+if not exist gfecs2 mkdir gfecs2
+
+call cacheserver start cache-xml-file=../XMLs/server%exname%2.xml mcast-port=35674 -dir=gfecs2
+
+:skipDSstart
+
+call %LANGDIR%\%exname%.exe
+if not "%errorlevel%"=="0" (
+call cacheserver stop -dir=gfecs
+call cacheserver stop -dir=gfecs2
+exit %errorlevel% 
+)
+call cacheserver stop -dir=gfecs
+
+if '%exname%' neq 'HACache' goto skiphastop
+
+call cacheserver stop -dir=gfecs2
+
+:skiphastop
+
+if '%exname%' neq 'ExecuteFunctions' goto skipfuncstop
+
+call cacheserver stop -dir=gfecs2
+
+:skipfuncstop
+
+if '%exname%' neq 'PoolRemoteQuery' goto skiplocatorstop1
+
+call gemfire stop-locator -port=34756 -dir=gfecs
+
+:skiplocatorstop1
+
+if '%exname%' neq 'Delta' goto skiplocatorstop2
+
+call gemfire stop-locator -port=34756 -dir=gfecs
+
+:skiplocatorstop2
+
+if '%exname%' neq 'DistributedSystem' goto skipDSstop
+
+call cacheserver stop -dir=gfecs2
+
+:skipDSstop
+
+if '%exname%' equ 'invalidoption' goto invalidoption
+
+rem echo Please review the example's log output above then
+
+rem pause
+
+goto closeup
+
+:presentmenu
+
+echo.
+echo Please select a GemFire %LANG% QuickStart example to run.
+echo.
+echo 1. BasicOperations
+echo 2. DataExpiration
+echo 3. LoaderListenerWriter
+echo 4. RegisterInterest
+echo 5. RemoteQuery
+echo 6. HA Cache
+echo 7. Exceptions
+echo 8. DurableClient
+echo 9. Security
+echo 10.PutAllGetAllOperations
+echo 11.Continuous Query
+echo 12.DistributedSystem
+echo 13.PoolWithEndpoints
+echo 14.PoolRemoteQuery
+echo 15.ExecuteFunctions
+echo 16.Pool Continuous Query
+echo 17.Delta
+echo 18.MultiuserSecurity
+echo 19.RefIDExample
+echo 20.Transactions
+echo 21.PdxRemoteQuery 
+echo 22.PdxSerializer 
+echo 23.PdxInstance 
+echo 24.Quit
+echo.
+
+:getoption
+
+rem choice /c:123 /n
+
+set /p option=Enter option: 
+
+set exname=invalidoption
+
+if '%option%' equ '1' set exname=BasicOperations
+if '%option%' equ '2' set exname=DataExpiration
+if '%option%' equ '3' set exname=LoaderListenerWriter
+if '%option%' equ '4' set exname=RegisterInterest
+if '%option%' equ '5' set exname=RemoteQuery
+if '%option%' equ '6' set exname=HACache
+if '%option%' equ '7' set exname=Exceptions
+if '%option%' equ '8' set exname=DurableClient
+if '%option%' equ '9' set exname=Security
+if '%option%' equ '10' set exname=PutAllGetAllOperations
+if '%option%' equ '11' set exname=CqQuery
+if '%option%' equ '12' set exname=DistributedSystem
+if '%option%' equ '13' set exname=PoolWithEndpoints
+if '%option%' equ '14' set exname=PoolRemoteQuery
+if '%option%' equ '15' set exname=ExecuteFunctions
+if '%option%' equ '16' set exname=PoolCqQuery
+if '%option%' equ '17' set exname=Delta
+if '%option%' equ '18' set exname=MultiuserSecurity
+if '%option%' equ '19' set exname=RefIDExample
+if '%option%' equ '20' set exname=Transactions
+if '%option%' equ '21' set exname=PdxRemoteQuery
+if '%option%' equ '22' set exname=PdxSerializer
+if '%option%' equ '23' set exname=PdxInstance
+if '%option%' equ '24' goto finished
+
+if '%exname%' equ 'invalidoption' goto invalidoption
+
+goto runexample
+
+:invalidoption
+
+echo Invalid option.
+goto getoption
+
+:closeup
+
+rmdir /Q /S ..\bin
+
+echo Finished example %exname%.
+
+:finished

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/runinterop.bat
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/runinterop.bat b/geode-client-native/quickstart/runinterop.bat
new file mode 100644
index 0000000..e955cc1
--- /dev/null
+++ b/geode-client-native/quickstart/runinterop.bat
@@ -0,0 +1,40 @@
+@echo off
+
+if not exist interop\InteropCPP.exe goto notexist
+if not exist interop\InteropCSHARP.exe goto notexist
+if not exist interop\InteropJAVA.class goto notexist
+
+echo.
+echo Running GemFire QuickStart Interop example ...
+
+set CLASSPATH=%GEMFIRE%\lib\gemfire.jar;./interop
+
+if not exist gfecs mkdir gfecs
+
+call cacheserver start cache-xml-file=../XMLs/serverInterop.xml -dir=gfecs
+
+start /b interop\InteropCPP.exe checkcsharp
+
+start /b interop\InteropCSHARP.exe
+
+start /b java InteropJAVA checkcsharp
+
+rem call cacheserver stop -dir=gfecs
+
+rem echo Please review the example's log output above then
+
+rem pause
+
+goto closeup
+
+:notexist
+
+echo.
+echo Interop example not found, please check whether it is built.
+echo.
+
+:closeup
+
+echo Finished Interop example.
+
+:finished

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/quickstart/runinterop.sh
----------------------------------------------------------------------
diff --git a/geode-client-native/quickstart/runinterop.sh b/geode-client-native/quickstart/runinterop.sh
new file mode 100755
index 0000000..3ec1c0d
--- /dev/null
+++ b/geode-client-native/quickstart/runinterop.sh
@@ -0,0 +1,35 @@
+#!/bin/bash
+
+if [ ! -f interop/InteropCPP ]
+then
+  echo Interop CPP example not found, please check whether it is built.
+  exit 1
+fi
+
+if [ ! -f interop/InteropJAVA.class ]
+then
+  echo Interop Java example not found, please check whether it is built.
+  exit 1
+fi
+
+echo Running GemFire QuickStart Interop example ...
+
+export CLASSPATH="${GEMFIRE}/lib/gemfire.jar:./interop"
+export PATH="${PATH}:${GEMFIRE}/bin"
+
+if [ ! -d gfecs ]
+then
+  mkdir gfecs
+fi
+
+cacheserver start cache-xml-file=../XMLs/serverInterop.xml mcast-port=35673 -dir=gfecs
+
+interop/InteropCPP &
+
+java InteropJAVA &
+
+# cacheserver stop -dir=gfecs
+
+echo Finished Interop example.
+
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/sdk/build-src.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/sdk/build-src.xml b/geode-client-native/sdk/build-src.xml
new file mode 100644
index 0000000..8136a59
--- /dev/null
+++ b/geode-client-native/sdk/build-src.xml
@@ -0,0 +1,154 @@
+
+<!-- An XML include file that contains common Ant target for building
+     source code -->
+
+  <target name="usage"
+          description="Describes how to find out usage information">
+    <echo>
+Builds artifacts developed with the GemFire SDK.
+
+Run "build.sh -projecthelp" for descriptions of available build
+targets.
+    </echo>
+  </target>
+
+  <taskdef classname="com.gemstone.tools.ant.taskdefs.Conditional"
+           name="conditional"> 
+    <classpath>
+      <pathelement location="${basedir}/product/taskdefsV3.jar"/>
+    </classpath>
+  </taskdef>
+
+  <target name="-props">
+    <!-- "Sets Ant properties for this Project" -->
+
+    <property environment="myenv"/>  <!-- Get environment variables -->
+
+    <!-- determine machine and os -->
+    <condition property="gf.os" value="sol">
+      <os name="SunOs"/>
+    </condition>
+    <condition property="gf.os" value="linux">
+      <os name="Linux"/>
+    </condition>
+    <condition property="gf.os" value="win">
+      <os family="windows"/>
+    </condition>
+
+    <!-- Load Ant property files, if present -->
+    <property file="${basedir}/build${gf.os}.properties"/>
+    <available file="${basedir}/build${gf.os}.properties" 
+               property="build.os.exists"/>
+    <conditional if="build.os.exists">
+      <echo message="Loading properties from ${basedir}/build${gf.os}.properties:"/>
+      <concat>
+        <filelist dir="${basedir}" files="build${gf.os}.properties"/>
+      </concat>
+    </conditional>
+
+    <property file="${basedir}/build.properties"/>
+    <available file="${basedir}/build.properties" property="build.props.exists"/>
+    <conditional if="build.props.exists">
+      <echo message="Loading properties from ${basedir}/build.properties:"/>
+      <concat>
+        <filelist dir="${basedir}" files="build.properties"/>
+      </concat>
+    </conditional>
+
+    <property name="build.dir" value="${basedir}/build-artifacts"/>
+    <property name="osbuild.dir" value="${build.dir}/${gf.os}"/>
+    <property name="gemfire.product" 
+              value="${basedir}/product/${gf.os}"/>
+
+    <property name="src.dir" value="${basedir}/src"/>
+    <patternset id="src.files">
+      <include name="com/gemstone/**/*.java"/>
+    </patternset>
+
+    <path id="src.compile.classpath">
+      <pathelement location="${gemfire.product}/lib/gemfire.jar"/>
+      <fileset dir="${src.dir}/lib">
+        <include name="*.jar"/>
+      </fileset>
+    </path>
+    <property name="classes.dir" value="${osbuild.dir}/classes"/>
+
+    <property name="tests.src.dir" value="${basedir}/tests"/>
+    <path id="tests.compile.classpath">
+      <path refid="src.compile.classpath"/>
+      <pathelement location="${classes.dir}"/>      
+      <pathelement location="${tests.src.dir}/lib/test-framework.jar"/>      
+      <pathelement location="${tests.src.dir}/lib/test-framework.jar"/>
+      <fileset dir="${tests.src.dir}/lib">
+        <include name="*.jar"/>
+      </fileset>
+    </path>
+    <property name="tests.classes.dir"
+              value="${osbuild.dir}/tests/classes"/> 
+
+    <property name="last.update.file" value="lastUpdate.txt"/>
+    <property name="jar.name" value="gfApp.jar"/>
+    <property name="app.version" value="1.0alpha"/>
+    <property name="jar.manifest" value="${osbuild.dir}/Manifest.mf"/>
+    <property name="date.pattern" value="MM/dd/yyyy HH:mm:ss z"/>
+    <tstamp>
+       <format pattern="${date.pattern}" property="build.time"/>
+    </tstamp>
+    <property name="product.dir" value="${osbuild.dir}/product"/>
+
+  </target>
+
+  <target name="-compile-java-source">
+    <!-- Does the real work of compiling the Java source code -->
+
+    <mkdir dir="${classes.dir}"/>
+
+    <property name="includeAntRuntime" value="false"/>
+    <property name="deprecation" value="on"/>
+ 
+    <javac debug="on" optimize="off" deprecation="${deprecation}" 
+           verbose="off" nowarn="off"
+           includeAntRuntime="${includeAntRuntime}" 
+           srcdir="${src.dir}"
+           destdir="${classes.dir}">
+      <patternset refid="src.files"/>
+      <classpath refid="src.compile.classpath"/>
+    </javac>
+  </target>
+
+  <target name="update-cvs" depends="-props"
+          description="Updates this CVS checkout and notes the time">
+    <property name="cvs.logfile" value="update-cvs.log"/>
+    <tstamp>
+      <format pattern="${date.pattern}" property="last.update"/>
+    </tstamp>
+    <mkdir dir="${build.dir}"/>
+    <echo file="${build.dir}/${last.update.file}">Source-Date: ${last.update}
+</echo>
+    <propertyfile comment="Build Number File" file="${build.dir}/build.number">
+      <entry default="0" key="build.number" operation="+" type="int"/>
+    </propertyfile>
+
+    <property name="cvs.hist.logfile" value=".cvs-history.log"/>
+    <delete file="${cvs.logfile}" quiet="true"/>
+
+<!--<property name="cvs.command" value="update -dP ${cvs.branch}"/>-->
+    <property name="cvs.command" value="update -dP -A"/>
+    <echo message="Invoking &apos;${cvs.command}&apos; logging to ${cvs.logfile}"/>
+    <cvs append="true" command="${cvs.command}" error="${cvs.logfile}" failonerror="true" output="${cvs.logfile}" quiet="true"/>
+    <exec executable="grep" resultproperty="grepExitStatus">
+      <arg value="^C "/>
+      <arg value="${cvs.logfile}"/>
+    </exec>
+    <condition property="grepFailed">
+      <equals arg1="${grepExitStatus}" arg2="0"/>
+    </condition>
+    <fail if="grepFailed" message="CVS conflicts detected"/>
+
+    <concat append="true" destfile="${cvs.hist.logfile}">==================</concat>
+    <concat append="true" destfile="${cvs.hist.logfile}">
+      <filelist dir="${basedir}" files="build-artifacts/build.number"/>
+      <filelist dir="${basedir}" files="${cvs.logfile}"/>
+    </concat>
+  </target>
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/BUILDING.md
----------------------------------------------------------------------
diff --git a/geode-client-native/src/BUILDING.md b/geode-client-native/src/BUILDING.md
new file mode 100644
index 0000000..ffe263a
--- /dev/null
+++ b/geode-client-native/src/BUILDING.md
@@ -0,0 +1,68 @@
+# Supported Platforms
+* [Mac OS X](#mac-os-x)
+* [Windows](#windows)
+* [Linux](#linux)
+* [Solaris](#solaris)
+
+# Common Tools
+## Required Tools
+* [CMake 4.3](https://cmake.org/) or newer
+* C++11 compiler *(see platform specific requirements)*
+
+## Optional Tools
+* [Doxygen 8.11](http://www.stack.nl/~dimitri/doxygen/download.html) *(If building source documentation)*
+
+
+
+# Mac OS X
+* Mac OS X 10.11 (El Capitan)
+
+## Required Tools
+* [XCode](https://developer.apple.com/xcode/download/)
+* XCode Command Line Developer Tools
+   `$ xcode-select --install` 
+
+## Alternative Tools
+* [CMake GUI](https://cmake.org/files/v3.4/cmake-3.4.3-Darwin-x86_64.dmg)
+* [Doxygen GUI](http://ftp.stack.nl/pub/users/dimitri/Doxygen-1.8.11.dmg)
+
+## Optional Tools
+* [Eclipse CDT 8.8+](https://eclipse.org/cdt/)
+
+
+
+# Windows
+* Windows 8.1 64-bit
+* Windows 10 64-bit
+* Windows Server 2012 64-bit
+* Windows Server 2012 R2 64-bit
+
+## Required Tools
+* [Visual Studio 2013](https://www.visualstudio.com) or newer
+* Cygwin
+
+
+
+# Linux
+* RHEL/CentOS 6
+* RHEL/CentOS 7
+* SLES 11
+* SLES 12
+
+## Required Tools
+* GCC 4.6 or newer
+
+## Optional Tools
+* [Eclipse CDT 8.8+](https://eclipse.org/cdt/)
+
+
+
+# Solaris
+* Solaris 10 SPARC
+* Solaris 10 x86
+* Solaris 11 SPARC
+* Solaris 11 x86
+
+### Required Tools
+* [Solaris Studion 12.4](http://www.oracle.com/technetwork/server-storage/solarisstudio/downloads/index-jsp-141149.html) or newer
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/geode-client-native/src/CMakeLists.txt b/geode-client-native/src/CMakeLists.txt
new file mode 100644
index 0000000..ca4a090
--- /dev/null
+++ b/geode-client-native/src/CMakeLists.txt
@@ -0,0 +1,84 @@
+cmake_minimum_required(VERSION 3.4)
+project(nativeclient)
+
+set(CMAKE_CONFIGURATION_TYPES Debug Release)
+if (NOT CMAKE_BUILD_TYPE)
+  set(CMAKE_BUILD_TYPE Debug)
+endif()
+
+set_property(GLOBAL PROPERTY USE_FOLDERS ON)
+
+# TODO this doesn't seem to have effect
+set(CMAKE_ECLIPSE_VERSION Mars)
+
+#TODO this check is failing to fail properly on solaris with sun CC 5.10
+set(CMAKE_CXX_STANDARD 11)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+
+include(CheckCXXCompilerFlag)
+include(CheckCCompilerFlag)
+
+set(CMAKE_REQUIRED_LIBRARIES -m64)
+check_c_compiler_flag(-m64 CFLAGS_M64_ALLOWED)
+check_cxx_compiler_flag(-m64 CXXFLAGS_M64_ALLOWED)
+set(CMAKE_REQUIRED_LIBRARIES)
+
+check_c_compiler_flag(-mt CFLAGS_mt_ALLOWED)
+
+if (CFLAGS_M64_ALLOWED AND CXXFLAGS_M64_ALLOWED)
+  set(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS} -m64)
+  add_compile_options(-m64)
+#TODO cmake find better way to set linker flags
+  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -m64")
+  set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -m64")
+  set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -m64")
+endif()
+
+if (CFLAGS_mt_ALLOWED)
+  set(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS} -mt)
+  add_compile_options(-mt)
+endif()
+
+#TODO remove this debugging for NMake
+set(CMAKE_VERBOSE_MAKEFILE 0)
+
+if(CMAKE_CXX_COMPILER_ID STREQUAL "SunPro")
+  # Force linker to error on undefined symbols in shared libraries
+  set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -z defs")
+  # TODO cmake find a better way to set runtime libraries
+  # C++11 requires these libraries, treat -std=c++11 as library
+  #TODO look into CMAKE_CXX_STANDARD_LIBRARIES
+  set(RUNTIME_LIBRARIES ${RUNTIME_LIBRARIES} -std=c++11 stdc++ gcc_s CrunG3 c)
+elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+  set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,defs")
+endif()
+if(MSVC)
+    # TODO error on warnings
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4996")
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
+  set(BUILD_CLI 1)
+endif()
+
+find_package(Java 1.8.0.60 REQUIRED COMPONENTS Development)
+
+if ("${CMAKE_AR}" STREQUAL "CMAKE_AR-NOTFOUND")
+  message(FATAL_ERROR "Utility ar not found.")
+endif()
+
+set(GEMFIRE_HOME "" CACHE PATH "Path to GemFire production installation.")
+
+add_subdirectory(dependencies)
+add_subdirectory(cppcache)
+add_subdirectory(cryptoimpl)
+add_subdirectory(dhimpl)
+add_subdirectory(sqliteimpl)
+add_subdirectory(gfcpp)
+add_subdirectory(pdxautoserializer)
+add_subdirectory(tests)
+add_subdirectory(templates/security)
+
+
+if (${BUILD_CLI})
+  add_subdirectory(clicache)
+  add_subdirectory(plugins/SQLiteCLI)
+endif()

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/FindNativeClient.cmake
----------------------------------------------------------------------
diff --git a/geode-client-native/src/FindNativeClient.cmake b/geode-client-native/src/FindNativeClient.cmake
new file mode 100755
index 0000000..bece031
--- /dev/null
+++ b/geode-client-native/src/FindNativeClient.cmake
@@ -0,0 +1,277 @@
+#.rst:
+# FindJava
+# --------
+#
+# Find Java
+#
+# This module finds if Java is installed and determines where the
+# include files and libraries are.  The caller may set variable JAVA_HOME
+# to specify a Java installation prefix explicitly.
+#
+#
+# Specify one or more of the following components as you call this find module. See example below.
+#
+# ::
+#
+#   Runtime     = User just want to execute some Java byte-compiled
+#   Development = Development tools (java, javac, javah and javadoc), includes Runtime component
+#   IdlJ        = idl compiler for Java
+#   JarSigner   = signer tool for jar
+#
+#
+# This module sets the following result variables:
+#
+# ::
+#
+#   Java_JAVA_EXECUTABLE      = the full path to the Java runtime
+#   Java_JAVAC_EXECUTABLE     = the full path to the Java compiler
+#   Java_JAVAH_EXECUTABLE     = the full path to the Java header generator
+#   Java_JAVADOC_EXECUTABLE   = the full path to the Java documention generator
+#   Java_IDLJ_EXECUTABLE      = the full path to the Java idl compiler
+#   Java_JAR_EXECUTABLE       = the full path to the Java archiver
+#   Java_JARSIGNER_EXECUTABLE = the full path to the Java jar signer
+#   Java_VERSION_STRING       = Version of java found, eg. 1.6.0_12
+#   Java_VERSION_MAJOR        = The major version of the package found.
+#   Java_VERSION_MINOR        = The minor version of the package found.
+#   Java_VERSION_PATCH        = The patch version of the package found.
+#   Java_VERSION_TWEAK        = The tweak version of the package found (after '_')
+#   Java_VERSION              = This is set to: $major.$minor.$patch(.$tweak)
+#
+#
+#
+# The minimum required version of Java can be specified using the
+# standard CMake syntax, e.g.  find_package(Java 1.5)
+#
+# NOTE: ${Java_VERSION} and ${Java_VERSION_STRING} are not guaranteed to
+# be identical.  For example some java version may return:
+# Java_VERSION_STRING = 1.5.0_17 and Java_VERSION = 1.5.0.17
+#
+# another example is the Java OEM, with: Java_VERSION_STRING = 1.6.0-oem
+# and Java_VERSION = 1.6.0
+#
+# For these components the following variables are set:
+#
+# ::
+#
+#   Java_FOUND                    - TRUE if all components are found.
+#   Java_INCLUDE_DIRS             - Full paths to all include dirs.
+#   Java_LIBRARIES                - Full paths to all libraries.
+#   Java_<component>_FOUND        - TRUE if <component> is found.
+#
+#
+#
+# Example Usages:
+#
+# ::
+#
+#   find_package(Java)
+#   find_package(Java COMPONENTS Runtime)
+#   find_package(Java COMPONENTS Development)
+
+#=============================================================================
+# Copyright 2002-2009 Kitware, Inc.
+# Copyright 2009-2011 Mathieu Malaterre <ma...@gmail.com>
+#
+# Distributed under the OSI-approved BSD License (the "License");
+# see accompanying file Copyright.txt for details.
+#
+# This software is distributed WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the License for more information.
+#=============================================================================
+# (To distribute this file outside of CMake, substitute the full
+#  License text for the above reference.)
+
+include(${CMAKE_CURRENT_LIST_DIR}/CMakeFindJavaCommon.cmake)
+
+# The HINTS option should only be used for values computed from the system.
+set(_JAVA_HINTS)
+if(_JAVA_HOME)
+  list(APPEND _JAVA_HINTS ${_JAVA_HOME}/bin)
+endif()
+list(APPEND _JAVA_HINTS
+  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\2.0;JavaHome]/bin"
+  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.9;JavaHome]/bin"
+  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.8;JavaHome]/bin"
+  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.7;JavaHome]/bin"
+  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.6;JavaHome]/bin"
+  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.5;JavaHome]/bin"
+  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.4;JavaHome]/bin"
+  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.3;JavaHome]/bin"
+  )
+# Hard-coded guesses should still go in PATHS. This ensures that the user
+# environment can always override hard guesses.
+set(_JAVA_PATHS
+  /usr/lib/java/bin
+  /usr/share/java/bin
+  /usr/local/java/bin
+  /usr/local/java/share/bin
+  /usr/java/j2sdk1.4.2_04
+  /usr/lib/j2sdk1.4-sun/bin
+  /usr/java/j2sdk1.4.2_09/bin
+  /usr/lib/j2sdk1.5-sun/bin
+  /opt/sun-jdk-1.5.0.04/bin
+  /usr/local/jdk-1.7.0/bin
+  /usr/local/jdk-1.6.0/bin
+  )
+find_program(Java_JAVA_EXECUTABLE
+  NAMES java
+  HINTS ${_JAVA_HINTS}
+  PATHS ${_JAVA_PATHS}
+)
+
+if(Java_JAVA_EXECUTABLE)
+    execute_process(COMMAND ${Java_JAVA_EXECUTABLE} -version
+      RESULT_VARIABLE res
+      OUTPUT_VARIABLE var
+      ERROR_VARIABLE var # sun-java output to stderr
+      OUTPUT_STRIP_TRAILING_WHITESPACE
+      ERROR_STRIP_TRAILING_WHITESPACE)
+    if( res )
+      if(var MATCHES "No Java runtime present, requesting install")
+        set_property(CACHE Java_JAVA_EXECUTABLE
+          PROPERTY VALUE "Java_JAVA_EXECUTABLE-NOTFOUND")
+      elseif(${Java_FIND_REQUIRED})
+        message( FATAL_ERROR "Error executing java -version" )
+      else()
+        message( STATUS "Warning, could not run java -version")
+      endif()
+    else()
+      # extract major/minor version and patch level from "java -version" output
+      # Tested on linux using
+      # 1. Sun / Sun OEM
+      # 2. OpenJDK 1.6
+      # 3. GCJ 1.5
+      # 4. Kaffe 1.4.2
+      # 5. OpenJDK 1.7.x on OpenBSD
+      if(var MATCHES "java version \"([0-9]+\\.[0-9]+\\.[0-9_.]+.*)\"")
+        # This is most likely Sun / OpenJDK, or maybe GCJ-java compat layer
+        set(Java_VERSION_STRING "${CMAKE_MATCH_1}")
+      elseif(var MATCHES "java full version \"kaffe-([0-9]+\\.[0-9]+\\.[0-9_]+)\"")
+        # Kaffe style
+        set(Java_VERSION_STRING "${CMAKE_MATCH_1}")
+      elseif(var MATCHES "openjdk version \"([0-9]+\\.[0-9]+\\.[0-9_]+.*)\"")
+        # OpenJDK ver 1.7.x on OpenBSD
+        set(Java_VERSION_STRING "${CMAKE_MATCH_1}")
+      else()
+        if(NOT Java_FIND_QUIETLY)
+          message(WARNING "regex not supported: ${var}. Please report")
+        endif()
+      endif()
+      string( REGEX REPLACE "([0-9]+).*" "\\1" Java_VERSION_MAJOR "${Java_VERSION_STRING}" )
+      string( REGEX REPLACE "[0-9]+\\.([0-9]+).*" "\\1" Java_VERSION_MINOR "${Java_VERSION_STRING}" )
+      string( REGEX REPLACE "[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" Java_VERSION_PATCH "${Java_VERSION_STRING}" )
+      # warning tweak version can be empty:
+      string( REGEX REPLACE "[0-9]+\\.[0-9]+\\.[0-9]+[_\\.]?([0-9]*).*$" "\\1" Java_VERSION_TWEAK "${Java_VERSION_STRING}" )
+      if( Java_VERSION_TWEAK STREQUAL "" ) # check case where tweak is not defined
+        set(Java_VERSION ${Java_VERSION_MAJOR}.${Java_VERSION_MINOR}.${Java_VERSION_PATCH})
+      else()
+        set(Java_VERSION ${Java_VERSION_MAJOR}.${Java_VERSION_MINOR}.${Java_VERSION_PATCH}.${Java_VERSION_TWEAK})
+      endif()
+    endif()
+
+endif()
+
+
+find_program(Java_JAR_EXECUTABLE
+  NAMES jar
+  HINTS ${_JAVA_HINTS}
+  PATHS ${_JAVA_PATHS}
+)
+
+find_program(Java_JAVAC_EXECUTABLE
+  NAMES javac
+  HINTS ${_JAVA_HINTS}
+  PATHS ${_JAVA_PATHS}
+)
+
+find_program(Java_JAVAH_EXECUTABLE
+  NAMES javah
+  HINTS ${_JAVA_HINTS}
+  PATHS ${_JAVA_PATHS}
+)
+
+find_program(Java_JAVADOC_EXECUTABLE
+  NAMES javadoc
+  HINTS ${_JAVA_HINTS}
+  PATHS ${_JAVA_PATHS}
+)
+
+find_program(Java_IDLJ_EXECUTABLE
+  NAMES idlj
+  HINTS ${_JAVA_HINTS}
+  PATHS ${_JAVA_PATHS}
+)
+
+find_program(Java_JARSIGNER_EXECUTABLE
+  NAMES jarsigner
+  HINTS ${_JAVA_HINTS}
+  PATHS ${_JAVA_PATHS}
+)
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+if(Java_FIND_COMPONENTS)
+  set(_JAVA_REQUIRED_VARS)
+  foreach(component ${Java_FIND_COMPONENTS})
+    # User just want to execute some Java byte-compiled
+    If(component STREQUAL "Runtime")
+      list(APPEND _JAVA_REQUIRED_VARS Java_JAVA_EXECUTABLE)
+      if(Java_JAVA_EXECUTABLE)
+        set(Java_Runtime_FOUND TRUE)
+      endif()
+    elseif(component STREQUAL "Development")
+      list(APPEND _JAVA_REQUIRED_VARS Java_JAVA_EXECUTABLE Java_JAVAC_EXECUTABLE
+                                      Java_JAVAH_EXECUTABLE Java_JAVADOC_EXECUTABLE)
+      if(Java_JAVA_EXECUTABLE AND Java_JAVAC_EXECUTABLE
+          AND Java_JAVAH_EXECUTABLE AND Java_JAVADOC_EXECUTABLE)
+        set(Java_Development_FOUND TRUE)
+      endif()
+    elseif(component STREQUAL "IdlJ")
+      list(APPEND _JAVA_REQUIRED_VARS Java_IDLJ_EXECUTABLE)
+      if(Java_IdlJ_EXECUTABLE)
+        set(Java_Extra_FOUND TRUE)
+      endif()
+    elseif(component STREQUAL "JarSigner")
+      list(APPEND _JAVA_REQUIRED_VARS Java_JARSIGNER_EXECUTABLE)
+      if(Java_IDLJ_EXECUTABLE)
+        set(Java_JarSigner_FOUND TRUE)
+      endif()
+    else()
+      message(FATAL_ERROR "Comp: ${component} is not handled")
+    endif()
+  endforeach()
+  list (REMOVE_DUPLICATES _JAVA_REQUIRED_VARS)
+  find_package_handle_standard_args(Java
+    REQUIRED_VARS ${_JAVA_REQUIRED_VARS} HANDLE_COMPONENTS
+    VERSION_VAR Java_VERSION
+    )
+  if(Java_FOUND)
+    foreach(component ${Java_FIND_COMPONENTS})
+      set(Java_${component}_FOUND TRUE)
+    endforeach()
+  endif()
+else()
+  # Check for Development
+  find_package_handle_standard_args(Java
+    REQUIRED_VARS Java_JAVA_EXECUTABLE Java_JAR_EXECUTABLE Java_JAVAC_EXECUTABLE
+                  Java_JAVAH_EXECUTABLE Java_JAVADOC_EXECUTABLE
+    VERSION_VAR Java_VERSION
+    )
+endif()
+
+
+mark_as_advanced(
+  Java_JAVA_EXECUTABLE
+  Java_JAR_EXECUTABLE
+  Java_JAVAC_EXECUTABLE
+  Java_JAVAH_EXECUTABLE
+  Java_JAVADOC_EXECUTABLE
+  Java_IDLJ_EXECUTABLE
+  Java_JARSIGNER_EXECUTABLE
+  )
+
+# LEGACY
+set(JAVA_RUNTIME ${Java_JAVA_EXECUTABLE})
+set(JAVA_ARCHIVE ${Java_JAR_EXECUTABLE})
+set(JAVA_COMPILE ${Java_JAVAC_EXECUTABLE})
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/FindNativeClientCPPCache.cmake
----------------------------------------------------------------------
diff --git a/geode-client-native/src/FindNativeClientCPPCache.cmake b/geode-client-native/src/FindNativeClientCPPCache.cmake
new file mode 100755
index 0000000..ed63420
--- /dev/null
+++ b/geode-client-native/src/FindNativeClientCPPCache.cmake
@@ -0,0 +1,68 @@
+#.rst:
+# FindNativeClientCPPCache
+# ------------------------
+#
+# Try to find the NativeClient cppcache library
+#
+# Once done this will define
+#
+# ::
+#
+#   NATIVECLIENT_CPPCACHE_FOUND - true when cmake has found the NativeClient CPPCache library
+#   NATIVECLIENT_CPPCACHE_INCLUDE_DIR - The NativeClient include directory
+#   NATIVECLIENT_CPPCACHE_LIBRARIES - The libraries needed to use NativeClient CPPCache library
+#   NATIVECLIENT_CPPCACH_DEFINITIONS - Compiler switches required for using NativeClient CPPCache library
+#   NATIVECLIENT_CPPCACH_VERSION_STRING - the version of NativeClient CPPCache library found
+
+#=============================================================================
+# Copyright 2006-2009 Kitware, Inc.
+# Copyright 2006 Alexander Neundorf <ne...@kde.org>
+#
+# Distributed under the OSI-approved BSD License (the "License");
+# see accompanying file Copyright.txt for details.
+#
+# This software is distributed WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the License for more information.
+#=============================================================================
+# (TODO: To distribute this file outside of CMake, substitute the full
+#  License text for the above reference.)
+
+find_path(LIBXML2_INCLUDE_DIR NAMES libxml/xpath.h
+   HINTS
+   ${PC_LIBXML_INCLUDEDIR}
+   ${PC_LIBXML_INCLUDE_DIRS}
+   PATH_SUFFIXES libxml2
+   )
+
+find_library(LIBXML2_LIBRARIES NAMES xml2 libxml2
+   HINTS
+   ${PC_LIBXML_LIBDIR}
+   ${PC_LIBXML_LIBRARY_DIRS}
+   )
+
+find_program(LIBXML2_XMLLINT_EXECUTABLE xmllint)
+
+set( NATIVECLIENT_CPPCACHE_VERSION_STRING "9.0" )
+set( NATIVECLIENT_CPPCACHE_FOUND "YES" )
+set( NATIVECLIENT_CPPCACHE_INCLUDE_DIR  ${CMAKE_CURRENT_BINARY_DIRECTORY}/include ) # TODO: Replace with install directory
+set( NATIVECLIENT_CPPCACHE_LIBRARIES  ${GTK_gtk_LIBRARY}
+                    ${GTK_gdk_LIBRARY}
+                    ${GTK_glib_LIBRARY} )
+elseif(LIBXML2_INCLUDE_DIR AND EXISTS "${LIBXML2_INCLUDE_DIR}/libxml/xmlversion.h")
+    file(STRINGS "${LIBXML2_INCLUDE_DIR}/libxml/xmlversion.h" libxml2_version_str
+         REGEX "^#define[\t ]+LIBXML_DOTTED_VERSION[\t ]+\".*\"")
+
+    string(REGEX REPLACE "^#define[\t ]+LIBXML_DOTTED_VERSION[\t ]+\"([^\"]*)\".*" "\\1"
+           LIBXML2_VERSION_STRING "${libxml2_version_str}")
+    unset(libxml2_version_str)
+endif()
+
+# handle the QUIETLY and REQUIRED arguments and set LIBXML2_FOUND to TRUE if
+# all listed variables are TRUE
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibXml2
+                                  REQUIRED_VARS LIBXML2_LIBRARIES LIBXML2_INCLUDE_DIR
+                                  VERSION_VAR LIBXML2_VERSION_STRING)
+
+mark_as_advanced(LIBXML2_INCLUDE_DIR LIBXML2_LIBRARIES LIBXML2_XMLLINT_EXECUTABLE)

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/bdbimpl/BDBHelper.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/bdbimpl/BDBHelper.cpp b/geode-client-native/src/bdbimpl/BDBHelper.cpp
new file mode 100644
index 0000000..59bdb7a
--- /dev/null
+++ b/geode-client-native/src/bdbimpl/BDBHelper.cpp
@@ -0,0 +1,196 @@
+/*=========================================================================
+ * Copyright (c) 2010-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * one or more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+#include "DBHelper.hpp"
+#include "ExceptionTypes.hpp"
+#include "db_cxx.h"
+#include "db.h"
+#include <stdlib.h>
+
+namespace gemfire {
+
+class BDBHelper : public DBHelper {
+
+  public:
+
+  void createEnvironment(std::string m_gEnvDirectory, size_t m_cacheSizeGb, size_t m_cacheSizeMb);
+
+  void* createNewDB(std::string regionDBFile);
+
+  void* createNewDBNoThrow(std::string regionDBFile);
+
+  void writeToDB(void *dbh,void *keyData,uint32_t keyBufferSize,void *valueData,uint32_t valueBufferSize);
+
+  void readFromDB(void *dbh,void *keyData,uint32_t keyBufferSize,void*& valueData,uint32_t& valueBufferSize);
+
+  void destroy(void *dbHandle,void *keyData,uint32_t keyBufferSize);
+  
+  void closeEnvironment();
+  
+  void closeDB(void *dbh);
+
+  private:
+
+  static DbEnv *m_gDbEnv;
+
+};
+
+DbEnv* BDBHelper::m_gDbEnv=NULL;
+
+void BDBHelper::createEnvironment(std::string m_gEnvDirectory, size_t m_cacheSizeGb, size_t m_cacheSizeMb)
+{
+  try {
+	m_gDbEnv = new DbEnv( 0 );
+	m_gDbEnv->set_alloc(::malloc, ::realloc, ::free);
+	LOGFINE("Cachesize setting..%d,%lu",m_cacheSizeGb,m_cacheSizeMb);
+        m_gDbEnv->set_cachesize(m_cacheSizeGb, m_cacheSizeMb, 0);
+        m_gDbEnv->open(m_gEnvDirectory.c_str(), DB_CREATE | DB_INIT_LOCK | DB_INIT_MPOOL | DB_THREAD, 0);
+  }
+  catch (DbException &envException) {
+    char exceptionMsg[1024];
+    sprintf(exceptionMsg,"Failed to initialize environment: %s",envException.what());
+    LOGERROR("%s",exceptionMsg);
+    throw InitFailedException(exceptionMsg);
+  }
+}
+
+void* BDBHelper::createNewDBNoThrow(std::string regionDBFile)
+{
+  Db *dbHandle = new Db( m_gDbEnv, 0 );
+  dbHandle->set_alloc(::malloc, ::realloc, ::free);
+  try {
+    dbHandle->open(NULL, regionDBFile.c_str(), "region_db", DB_BTREE,  DB_CREATE | DB_THREAD, 0664);
+    LOGINFO("[svc()] Created new database with file: %s",regionDBFile.c_str());
+  }
+  catch (DbException& currDBException) {
+    // Need to log error here, cant throw an exception in this thread.
+    LOGERROR("Berkeley DB Persistence Manager failed to create new DB: %s",currDBException.what());
+    return NULL;
+  }
+
+  return dbHandle;
+}
+
+void* BDBHelper::createNewDB(std::string regionDBFile)
+{
+  try {
+        Db *dbHandle = new Db( m_gDbEnv, 0 );
+        dbHandle->set_alloc(::malloc, ::realloc, ::free);
+	dbHandle->open(NULL, regionDBFile.c_str(), "region_db", DB_BTREE, DB_CREATE | DB_THREAD, 0664);
+    
+	return (void *) dbHandle;
+  }
+  catch (DbException& BDBOpenException) {
+    char exceptionMsg[512];
+    sprintf(exceptionMsg, "Failed to open database. Errno : %d, Message : %s",BDBOpenException.get_errno(),BDBOpenException.what());
+    throw InitFailedException(exceptionMsg);
+  }
+}
+
+void BDBHelper::writeToDB(void *dbh,void *keyData,uint32_t keyBufferSize,void *valueData,uint32_t valueBufferSize)
+{
+  // Create BDB objects for storing serialized key and value.
+  Dbt dbKey(keyData,keyBufferSize);
+  Dbt dbValue(valueData,valueBufferSize);
+
+  // Store key and value in DB.
+  Db *dbHandle = (Db *)dbh;
+
+  try {
+    int putRetVal = dbHandle->put(0,&dbKey,&dbValue,0);
+    if (putRetVal != 0) {
+      LOGERROR("Database write failed. Error = %d",putRetVal);
+      throw DiskFailureException("Disk full, No more space available");
+    }
+  }
+  catch (DbException& bdbPutException) {
+    char exceptionMsg[512];
+    sprintf(exceptionMsg,"Database write failed. Error = %d, Message = %s",bdbPutException.get_errno(),bdbPutException.what());
+    throw DiskFailureException(exceptionMsg);
+  }
+}
+
+void BDBHelper::readFromDB(void *dbh,void *keyData,uint32_t keyBufferSize,void*& valueData,uint32_t& valueBufferSize)
+{
+  // Create BDB objects for retrieving value for given key.
+  Dbt dbKey(keyData,keyBufferSize);
+  Dbt dbValue;
+  Db *dbhandle = (Db*) dbh;
+  // Get serialized data from DB.
+  dbValue.set_flags(DB_DBT_MALLOC);
+
+  int getRetVal;
+
+  try {
+    getRetVal = dbhandle->get(0, &dbKey, &dbValue,0 );
+  }
+  catch (DbException& BDBGetException) {
+    char exceptionMsg[512];
+    sprintf(exceptionMsg,"Database read failed. Error = %d, Message = %s",BDBGetException.get_errno(),BDBGetException.what());
+    throw DiskFailureException(exceptionMsg);
+  }
+
+  if (getRetVal == DB_NOTFOUND)
+    throw EntryNotFoundException("Key not in database.");
+  else if (getRetVal != 0)
+    throw DiskFailureException("Key read exception.");
+
+  // Deserialize object and return value.
+  valueData = dbValue.get_data();
+  valueBufferSize = dbValue.get_size();
+}
+
+void BDBHelper::destroy(void *dbHandle,void *keyData,uint32_t keyBufferSize)
+{
+  try {
+    // Create BDB objects for retrieving value for given key.
+    Dbt dbKey(keyData,keyBufferSize);
+    Db *handle = (Db *) dbHandle;
+
+    int delRetVal = handle->del(NULL,&dbKey,0);
+    if(delRetVal)
+    {
+      LOGINFO("Key could not be deleted: %d",delRetVal);
+      throw DiskFailureException("Key delete failed.");
+    }
+  }
+  catch (DbException &BDBException) {
+    throw DiskFailureException(BDBException.what());
+  }
+}
+
+void BDBHelper::closeEnvironment()
+{
+  if (!m_gDbEnv)
+    return;
+
+  if (m_gDbEnv->close(0)) {
+    throw ShutdownFailedException("Failed to close environment.");
+  }
+  ::delete m_gDbEnv;
+}
+
+void BDBHelper::closeDB(void *dbh)
+{
+  Db *dbhandle = (Db*) dbh;
+  dbhandle->close(DB_NOSYNC);
+  ::delete dbhandle;   
+}
+
+/*
+  DBHelper* getBDBHelper() {
+    return new BDBHelper;
+  }
+*/
+
+extern "C" {
+  DBHelper* getBDBHelper() {
+    return new BDBHelper;
+  }
+}
+
+} // end namespace gemfire

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/bdbimpl/BDBImpl.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/bdbimpl/BDBImpl.cpp b/geode-client-native/src/bdbimpl/BDBImpl.cpp
new file mode 100644
index 0000000..690d2b0
--- /dev/null
+++ b/geode-client-native/src/bdbimpl/BDBImpl.cpp
@@ -0,0 +1,521 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *========================================================================
+ */
+
+#include "BDBImpl.hpp"
+#include "ace/OS_NS_unistd.h"
+#include "ace/OS_NS_sys_stat.h"
+
+namespace gemfire {
+
+  extern "C" DBHelper* getBDBHelper();
+
+};
+
+using namespace gemfire;
+#define MAXFILENAMESIZE 256
+
+namespace {
+  size_t g_default_cache_size_gb = 0;
+  size_t g_default_cache_size_mb = 314572800;
+  uint32_t g_default_paze_size     = 65536;
+  uint32_t g_max_db_file_size      = 512000000;
+  std::string g_default_persistence_directory = "BDBImplRegionData";
+  std::string g_default_env_directory = "BDBImplEnv";
+};
+
+bool BDBImpl::m_isEnvReady=false;
+ACE_Thread_Mutex BDBImpl::m_envReadyLock;
+std::string BDBImpl::m_gEnvDirectory = g_default_env_directory;
+AtomicInc BDBImpl::m_regionCount=0;
+AtomicInc BDBImpl::m_activeDBSize=0;
+
+int bdb_rmdir(const char *);
+
+
+void BDBImpl::init(const RegionPtr& region, PropertiesPtr& diskProperties)
+{
+  // Get db ready to receive data for storage
+  // 1. create DB, DBTable, Keymap
+  // 2. create region directory
+
+  closeFlag=0;
+  m_regionCount++;
+
+  if (region == NULLPTR) {
+    throw InitFailedException("Region passed to init is NULL.");
+  }
+  const char *regionFullPath = region->getFullPath();
+  m_regionName = regionFullPath;
+
+  convertToDirName(m_regionName);
+
+  // Set the default values
+  m_cacheSizeGb = g_default_cache_size_gb;
+  m_cacheSizeMb = g_default_cache_size_mb;
+  m_pageSize    = g_default_paze_size;
+  m_maxDBFileSize = g_max_db_file_size;
+  m_PersistenceDirectory = g_default_persistence_directory + "_" + m_regionName;
+  m_regionEnvDirectory = g_default_env_directory;
+  std::string parentPersistenceDirectory, parentRegionEnvDirectory;
+
+  if (diskProperties != NULLPTR) {
+    CacheableStringPtr cacheSizeGb = diskProperties->find("CacheSizeGb");
+    CacheableStringPtr cacheSizeMb = diskProperties->find("CacheSizeMb");
+    CacheableStringPtr pageSize = diskProperties->find("PageSize");
+    CacheableStringPtr maxFileSize = diskProperties->find("MaxFileSize");
+    CacheableStringPtr persDir = diskProperties->find("PersistenceDirectory");
+    CacheableStringPtr envDir = diskProperties->find("EnvironmentDirectory");
+
+    ACE_TCHAR hname[MAXHOSTNAMELEN];
+    if (ACE_OS::hostname( hname, sizeof(hname)-1) != 0) {
+      throw InitFailedException("Failed to get host name.");
+    }
+    long pid = ACE_OS::getpid();
+    char myDir[512];
+    if (!ACE_OS::snprintf(myDir, sizeof(myDir)-1, "/%s_%ld/", hname, pid)){
+      throw InitFailedException("Failed to create unique directory.");
+    }
+
+    if (cacheSizeGb != NULLPTR) {
+      m_cacheSizeGb = atoi(cacheSizeGb->asChar());
+    }
+    if (cacheSizeMb != NULLPTR) {
+      m_cacheSizeMb = ((unsigned long)atol(cacheSizeMb->asChar()))*(unsigned long)1024*(unsigned long)1024;
+    }
+    if (pageSize != NULLPTR) {
+      m_pageSize = atoi(pageSize->asChar());
+    }
+    if (maxFileSize != NULLPTR) {
+      m_maxDBFileSize = atol(maxFileSize->asChar());
+    }
+    if (persDir != NULLPTR) {
+      parentPersistenceDirectory = persDir->asChar();
+      m_PersistenceDirectory = persDir->asChar() + std::string(myDir);
+    }
+    if (envDir != NULLPTR) {
+      parentRegionEnvDirectory = envDir->asChar();
+      m_regionEnvDirectory = envDir->asChar() + std::string(myDir);
+    }
+  }
+
+  char currWDPath[512];
+  char *wdPath = ACE_OS::getcwd(currWDPath,512);
+
+  // Initialize DB Helper
+
+  m_DBHelper = getBDBHelper();
+
+#ifndef _WIN32
+  if (m_PersistenceDirectory.at(0) != '/') {
+    if (wdPath == NULL) {
+      throw InitFailedException("Failed to get absolute path for persistence directory.");
+    }
+    parentPersistenceDirectory = std::string(wdPath) + "/" + parentPersistenceDirectory;
+    m_PersistenceDirectory = std::string(wdPath) + "/" + m_PersistenceDirectory;
+  }
+
+  if (m_regionEnvDirectory.at(0) != '/') {
+    if (wdPath == NULL) {
+      throw InitFailedException("Failed to get absolute path for environment directory.");
+    }
+    parentRegionEnvDirectory = std::string(wdPath) + "/" + parentRegionEnvDirectory;
+    m_regionEnvDirectory = std::string(wdPath) + "/" + m_regionEnvDirectory;
+  }
+#else
+  if (m_PersistenceDirectory.find(":",0) == std::string::npos) {
+    if (wdPath == NULL) {
+      throw InitFailedException("Failed to get absolute path for persistence directory.");
+    }
+    parentPersistenceDirectory = std::string(wdPath) + "/" + parentPersistenceDirectory;
+    m_PersistenceDirectory = std::string(wdPath) + "/" + m_PersistenceDirectory;
+  }
+
+  if (m_regionEnvDirectory.find(":",0) == std::string::npos) {
+    if (wdPath == NULL) {
+      throw InitFailedException("Failed to get absolute path for persistence environment directory.");
+    }
+    parentRegionEnvDirectory = std::string(wdPath) + "/" + parentRegionEnvDirectory;
+    m_regionEnvDirectory = std::string(wdPath) + "/" + m_regionEnvDirectory;
+  }
+#endif
+
+  LOGINFO("Absolute path for persistence environment directory: %s",m_regionEnvDirectory.c_str());
+  LOGINFO("Absolute path for persistence directory: %s",m_PersistenceDirectory.c_str());
+
+  //ACE_stat fileStat;
+  // Create persistence directory
+  {
+    ACE_Guard<ACE_Thread_Mutex> guard( m_envReadyLock );
+    if (!m_isEnvReady) {
+      // Create and initialize the environment. This is done only once as all regions share the same environment.
+      m_gEnvDirectory = m_regionEnvDirectory;
+      ACE_OS::mkdir(parentRegionEnvDirectory.c_str());
+      ACE_OS::mkdir(m_gEnvDirectory.c_str());
+/*       if (ACE_OS::stat(m_gEnvDirectory.c_str(), &fileStat)) {
+        // Directory creation failure
+        throw InitFailedException("Failed to create environment directory.");
+      }
+ */
+      m_DBHelper->createEnvironment(m_gEnvDirectory,m_cacheSizeGb,m_cacheSizeMb);
+      m_isEnvReady=true;
+
+    } //end if isEnvReady
+  } //end guard
+
+  // Check if persistence directory matches the one which has been initialized.
+  if (m_gEnvDirectory != m_regionEnvDirectory) {
+    throw InitFailedException("Environment directory settings do not match.");
+  }
+
+  // Create persistence directory
+  LOGFINE("Creating persistence directory: %s",m_PersistenceDirectory.c_str());
+  ACE_OS::mkdir(parentPersistenceDirectory.c_str());
+  ACE_OS::mkdir(m_PersistenceDirectory.c_str());
+/*   if (ACE_OS::stat(m_PersistenceDirectory.c_str(), &fileStat)) {
+    // Directory creation failure
+    throw InitFailedException("Failed to create persistence directory.");
+  }
+ */
+  // Create region directory
+  std::string regionDirectory = m_PersistenceDirectory + "/" + m_regionName;
+  ACE_OS::mkdir(regionDirectory.c_str());
+/*   if (ACE_OS::stat(regionDirectory.c_str(), &fileStat)) {
+    // Directory creation failure
+    throw InitFailedException("Failed to create region directory.");
+  }
+ */
+  std::string regionDBFile = regionDirectory + "/file_0.db";
+
+  LOGFINE("Creating persistence region file: %s",regionDBFile.c_str());
+
+  void *dbhandle = m_DBHelper->createNewDB(regionDBFile);
+
+  m_DBHandleVector.push_back(dbhandle);
+  m_currentDBHandle = dbhandle;
+
+  m_currentDBIndex = 0;
+  m_dbFileManager = new DBFileManager(this);
+  m_dbFileManager->activate();
+  LOGFINE("Initialization successful for persistence of region %s", m_regionName.c_str());
+  m_initFlag=true;
+}
+
+void BDBImpl::write(const CacheableKeyPtr&  key, const CacheablePtr&  value, void *& dbHandle)
+{
+  void *handle = dbHandle;
+  bool isUpdate = true;
+
+  if (handle == NULL) {
+    // This guard is required so that the currDBHandle pointer cannot be changed when this write happens.
+    ACE_Guard<ACE_Recursive_Thread_Mutex> guard(m_activeDBMutex);
+    handle = m_currentDBHandle;
+    dbHandle = m_currentDBHandle;
+    isUpdate = false;
+  }
+
+  ACE_Guard<ACE_Recursive_Thread_Mutex> guard(m_activeDBMutex);
+  if (m_currentDBHandle == NULL) {
+    throw DiskFailureException("Disk handle not available");
+  }
+  writeToDB(handle, key, value, isUpdate);
+}
+
+bool BDBImpl::writeAll()
+{
+  // ARB: Do we need this in persistence?
+  return true;
+}
+
+CacheablePtr BDBImpl::read(const CacheableKeyPtr& key, void *& dbHandle)
+{
+
+  CacheablePtr value;
+  value = readFromDB(dbHandle,key);
+
+  return value;
+}
+
+bool BDBImpl::readAll()
+{
+  // ARB: Used in persistence.
+  return true;
+}
+
+//void BDBImpl::invalidate(const CacheableKeyPtr& key)
+//{
+  // ARB: Used in persistence.
+//}
+
+void BDBImpl::destroyRegion()
+{
+  cleanupRegionData();
+}
+
+//int BDBImpl::numEntries() const
+//{
+  // ARB: Used in persistence.
+ // return 0;
+//}
+
+void BDBImpl::destroy(const CacheableKeyPtr& key, void *& dbHandle)
+{
+
+  // Handle of DB that is used to store the key-value pair has been passed as function argument.
+
+  // Serialize key.
+  DataOutput keyDataBuffer;
+  uint32_t keyBufferSize;
+  //SerializationHelper::serialize( key, keyDataBuffer );
+  keyDataBuffer.writeObject( key );
+  // TODO: correct constness instead of casting
+  void* keyData = const_cast<uint8_t*>(keyDataBuffer.getBuffer(&keyBufferSize));
+
+  m_DBHelper->destroy(dbHandle,keyData,keyBufferSize);
+}
+
+BDBImpl::BDBImpl()
+{
+  // Constructor does nothing. Initialization is done in init().
+  m_initFlag = false;
+  m_dbFileManager = NULL;
+  m_cacheSizeGb = 0;
+  m_cacheSizeMb = 0;
+  m_pageSize = 0;
+  m_maxDBFileSize = 0;
+  m_DBHelper = NULL;
+  m_currentDBHandle = NULL;
+  m_currentDBIndex = 0;
+}
+
+void BDBImpl::writeToDB(void *dbhandle, const CacheableKeyPtr& key, const CacheablePtr& value, bool isUpdate)
+{
+  // Serialize key and value.
+  DataOutput keyDataBuffer, valueDataBuffer;
+  uint32_t keyBufferSize, valueBufferSize;
+  //SerializationHelper::serialize( key, keyDataBuffer );
+  //SerializationHelper::serialize( value, valueDataBuffer);
+  keyDataBuffer.writeObject( key );
+  valueDataBuffer.writeObject( value );
+
+  // TODO: correct constness instead of casting
+  void* keyData = const_cast<uint8_t*>(keyDataBuffer.getBuffer(&keyBufferSize));
+  void* valueData = const_cast<uint8_t*>(valueDataBuffer.getBuffer(
+      &valueBufferSize));
+
+  m_DBHelper->writeToDB(dbhandle,keyData,keyBufferSize,valueData,valueBufferSize);
+
+  if (!isUpdate) {
+    m_activeDBSize += keyBufferSize + valueBufferSize;
+  }
+
+}
+
+CacheablePtr BDBImpl::readFromDB(void *dbhandle, const CacheableKeyPtr &key)
+{
+  // Serialize key.
+  DataOutput keyDataBuffer;
+  uint32_t keyBufferSize;
+  //SerializationHelper::serialize( key, keyDataBuffer );
+  keyDataBuffer.writeObject( key );
+  void* keyData = const_cast<uint8_t*>(keyDataBuffer.getBuffer(&keyBufferSize));
+  void *valueData;
+  uint32_t valueBufferSize;
+
+  m_DBHelper->readFromDB(dbhandle,keyData,keyBufferSize,valueData,valueBufferSize);
+
+  // Deserialize object and return value.
+  uint8_t *valueBytes = (uint8_t *)malloc(sizeof(uint8_t)*valueBufferSize);
+  memcpy(valueBytes, valueData, valueBufferSize);
+  DataInput valueDataBuffer(valueBytes, valueBufferSize);
+  //CacheablePtr retValue = static_cast<CacheablePtr>(SerializationHelper::deserialize(valueDataBuffer).ptr());
+  CacheablePtr retValue;
+  valueDataBuffer.readObject( retValue );
+
+  // Free memory for serialized form of Cacheable object.
+  free(valueData);
+  free(valueBytes);
+
+  return retValue;
+}
+
+int BDBImpl::DBFileManager::svc()
+{
+  //char activeDBFileName[MAXFILENAMESIZE];
+  //ACE_stat activeDBFileStat;
+
+  while(m_isRunning) {
+    // sleep for 1 second for testing.
+    ACE_OS::sleep(1);
+
+    //ARB: **Commenting out file size stat method.
+    //std::string fileNamePrefix = m_bdbPersistenceManager->m_PersistenceDirectory + "/" + m_bdbPersistenceManager->m_regionName + "/file_";
+    //sprintf(activeDBFileName,"%s%d.db",fileNamePrefix.c_str(),m_bdbPersistenceManager->m_currentDBIndex);
+    //if (ACE_OS::stat(activeDBFileName,&activeDBFileStat))
+    //{
+    //  throw DiskFailureException("Failed to stat active db file.");
+    //}
+
+    //long activeDBFileSize = activeDBFileStat.st_size;
+    //LOGINFO("ARB:[svc()] activeDBFileSize = %ld",activeDBFileSize);
+    //LOGINFO("ARB:[svc()] m_maxDBFileSize = %ld",m_bdbPersistenceManager->m_maxDBFileSize);
+    //if (activeDBFileSize > m_bdbPersistenceManager->m_maxDBFileSize)
+    //ARB: **end-comment for file size stat method
+
+    uint64_t thresholdSize = ((uint64_t) 60 * (m_bdbPersistenceManager->m_maxDBFileSize/100));
+
+    if (m_bdbPersistenceManager->m_activeDBSize.value() > thresholdSize)
+    {
+
+      char newDBFileName[MAXFILENAMESIZE];
+      int newIndex = m_bdbPersistenceManager->m_currentDBIndex + 1;
+      sprintf(newDBFileName,"file_%d.db",newIndex);
+      std::string regionDBFile = m_bdbPersistenceManager->m_PersistenceDirectory + "/" + m_bdbPersistenceManager->m_regionName + "/" + newDBFileName;
+
+      // Create new db
+      void *dbHandle = m_bdbPersistenceManager->m_DBHelper->createNewDBNoThrow(regionDBFile);
+
+      m_bdbPersistenceManager->m_DBHandleVector.push_back(dbHandle);
+
+      {
+        // Change the active db.
+        //LOGINFO("ARB:[svc()] Changing active db from %d to %d",m_bdbPersistenceManager->m_currentDBIndex,newIndex);
+	     ACE_Guard<ACE_Recursive_Thread_Mutex> guard(m_bdbPersistenceManager->m_activeDBMutex);
+        m_bdbPersistenceManager->m_currentDBIndex = newIndex;
+        m_bdbPersistenceManager->m_currentDBHandle = dbHandle;
+        m_bdbPersistenceManager->m_activeDBSize = 0;
+        if (dbHandle == NULL) {
+         break;
+        }
+        LOGFINEST("BDB:[svc()] %s: Changed active db.",m_bdbPersistenceManager->m_regionName.c_str());
+      }
+
+    } //end if
+  } //end while
+// ARB: must return something for WIN32
+  return 0;
+
+}
+
+void BDBImpl::cleanupRegionData()
+{
+  if (!m_isEnvReady)
+    return;
+
+  if (!m_initFlag)
+    return;
+
+  //ACE_Guard<ACE_Recursive_Thread_Mutex> guard(m_activeDBMutex);
+  // ARB: file manager thread should deactivate gracefully.
+  //LOGINFO("ARB: in cleanupRegionData().. about to set m_isRunning to false..:%s",m_regionName.c_str());
+  if (m_dbFileManager) {
+    m_dbFileManager->m_isRunning = false;
+    //join with thread
+    m_dbFileManager->wait();
+    delete m_dbFileManager;
+  }
+
+  // Close all DBs and global db environment. Remove persistence directory.
+  std::string regionDir = m_PersistenceDirectory + "/" +m_regionName;
+  for (int dbIdx=0;dbIdx<m_currentDBIndex+1;dbIdx++)
+  {
+    void *dbhandle;
+
+    try {
+      dbhandle = m_DBHandleVector.at(dbIdx);
+    }
+    catch (...) {
+      // ARB: invalid vector index
+      continue;
+    }
+    m_DBHelper->closeDB(dbhandle);
+
+    char dbFileName[MAXFILENAMESIZE];
+    sprintf(dbFileName,"file_%d.db",dbIdx);
+    std::string regionDBName = regionDir + "/" + dbFileName;
+    LOGINFO("[cleanupRegionData()] Removing region file: %s",regionDBName.c_str());
+    if (ACE_OS::unlink(regionDBName.c_str())) {
+      throw ShutdownFailedException("Failed to remove region db file.");
+    }
+  }
+
+  // ARB: Need to use ACE_OS::rmdir in future
+  if (bdb_rmdir(regionDir.c_str()))
+  {
+    throw ShutdownFailedException("Failed to remove region directory.");
+  }
+  m_regionCount--;
+  if (m_regionCount.value() == 0) {
+    bdb_rmdir(m_PersistenceDirectory.c_str());
+//    ACE_stat fileStat;
+/*     if (!ACE_OS::stat(m_PersistenceDirectory.c_str(), &fileStat))
+    {
+      throw ShutdownFailedException("Failed to remove persistence directory.");
+    }
+ */  }
+}
+
+void BDBImpl::cleanupPersistenceManager()
+{
+
+  cleanupRegionData();
+
+  ACE_Guard<ACE_Thread_Mutex> guard( m_envReadyLock );
+  if (m_regionCount.value() == 0) {
+    m_DBHelper->closeEnvironment();
+    m_isEnvReady=false;
+
+    //Remove persistence directory
+    //ARB: Cleanup db environment files. Can BDB take care on closing environment? A better way is to delete all files in the environment directory.
+    ACE_OS::unlink((m_gEnvDirectory+"/__db.001").c_str());
+    ACE_OS::unlink((m_gEnvDirectory+"/__db.002").c_str());
+    ACE_OS::unlink((m_gEnvDirectory+"/__db.003").c_str());
+    ACE_OS::unlink((m_gEnvDirectory+"/__db.004").c_str());
+    ACE_OS::unlink((m_gEnvDirectory+"/*").c_str());
+    // ARB: Need to use ACE_OS::rmdir in future
+    if (bdb_rmdir(m_gEnvDirectory.c_str()))
+    {
+      LOGERROR("Failed to remove environment directory %s.", m_gEnvDirectory.c_str());
+    }
+  }
+  delete m_DBHelper;
+}
+
+void BDBImpl::convertToDirName(std::string& regionName)
+{
+  for (size_t strIdx=0;strIdx<regionName.length();strIdx++)
+  {
+    if (regionName.at(strIdx) == '/') {
+      regionName.replace(strIdx,1,"_");
+    }
+  }
+}
+
+// Portable function for directory deletion.
+// Need this as ACE5.4 does not have rmdir()
+// For ACE bug, please refer to: http://deuce.doc.wustl.edu/bugzilla/show_bug.cgi?id=1409
+int bdb_rmdir(const char *directoryPath)
+{
+  return ACE_OS::rmdir( directoryPath );
+}
+
+void BDBImpl::close()
+{
+  LOGINFO("Persistence closing.");
+  if(closeFlag.value()==0) {
+    closeFlag=1;
+    cleanupPersistenceManager();
+  }
+}
+
+extern "C" {
+
+  LIBEXP PersistenceManager* createBDBInstance() {
+    return new BDBImpl;
+  }
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/bdbimpl/BDBImpl.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/bdbimpl/BDBImpl.hpp b/geode-client-native/src/bdbimpl/BDBImpl.hpp
new file mode 100644
index 0000000..cb3e6eb
--- /dev/null
+++ b/geode-client-native/src/bdbimpl/BDBImpl.hpp
@@ -0,0 +1,188 @@
+#ifndef _BDBIMPL_HPP__
+#define _BDBIMPL_HPP__
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *========================================================================
+ */
+
+#include <stdio.h>
+#include <iostream>
+#include <vector>
+#include <map>
+#include <string>
+#include "PersistenceManager.hpp"
+#include "GemfireCppCache.hpp"
+#include "AtomicInc.hpp"
+// ARB:removing-SR
+//#include "impl/SerializationRegistry.hpp"
+// SW:removing SH -- instead use DataOutput/DataInput
+//#include "SerializationHelper.hpp"
+#include <ace/Task.h>
+#include <ace/os_include/os_netdb.h>
+
+#include <cstdlib>
+// ARB: removing db_cxx.h, replacing with DBHelper.
+// #include "db_cxx.h"
+#include "DBHelper.hpp"
+
+/**
+ * @file
+ */
+
+namespace gemfire {
+
+/**
+ * @class Berkeley DB Implementation BDBImpl.hpp
+ * BDB API for overflow.
+ * The BDBImpl class derives from PersistenceManager base class and implements a persistent store with Berkeley DB.
+ *  
+ */
+
+
+class BDBImpl : public PersistenceManager {
+/**
+ * @brief public methods
+ */
+public:
+
+  /**
+   * Initializes the DB for the region. BDB settings are passed via diskProperties argument.
+   * @throws InitfailedException if persistence directory/environment directory initialization fails.
+   */
+  void init(const RegionPtr& regionptr, PropertiesPtr& diskProperties);
+
+  /**
+   * Stores a key-value pair in the BDB implementation. 
+   * @param key the key to write.
+   * @param value the value to write
+   * @throws DiskFailureException if the write fails due to disk failure.
+   */
+  void write(const CacheableKeyPtr&  key, const CacheablePtr&  value, void *& dbHandle);
+
+  /**
+   * Writes the entire region into the BDB implementation.
+   * @throws DiskFailureException if the write fails due to disk fail.
+   */
+  bool writeAll();
+
+  /**
+   * Reads the value for the key from BDB.
+   * @returns value of type CacheablePtr.
+   * @param key is the key for which the value has to be read.
+   * @throws IllegalArgumentException if the key is NULL.
+   * @throws DiskCorruptException if the data to be read is corrupt.
+   */
+ CacheablePtr read(const CacheableKeyPtr& key, void *& dbHandle);
+
+ /**
+  * Read all the keys and values for a region stored in BDB.
+  */
+ bool readAll();
+
+ /**
+  * Invalidates an entry stored in BDB.
+  * @throws IllegalArgumentException if the key is NULL.
+  * @throws RegionDestroyedException is the region is already destroyed.
+  * @throws EntryNotFoundException if the entry is not found on the disk.
+  */
+ //void invalidate(const CacheableKeyPtr& key);
+
+ /**
+  * Destroys an entry stored in BDB. .
+  * @throws IllegalArgumentException if the key is NULL.
+  * @throws RegionDestroyedException is the region is already destroyed.
+  * @throws EntryNotFoundException if the entry is not found on the disk.
+  */
+ void destroy(const CacheableKeyPtr& key, void *& dbHandle);
+
+ /**
+  * Returns number of entries stored in BDB for the region.
+  */
+// ARB: are we removing this method from PersistenceManager? 
+ //int numEntries() const;
+
+ /**
+  * Destroys the region in the BDB implementation. 
+  * @throws RegionDestroyedException is the region is already destroyed.
+  */
+ void destroyRegion();
+
+ /**
+  * Closes the BDB persistence manager implementation.
+  * @throws ShutdownFailedException if clean-up of region and environment files fails..
+  */
+ void close();
+
+ /**
+  * @brief destructor
+  */
+ ~BDBImpl() {
+   LOGDEBUG("calling  ~BDBImpl");
+   if(closeFlag.value()==0) {
+     closeFlag=1;
+     cleanupPersistenceManager();
+   }
+ };
+
+ /**
+  * @brief constructor 
+  */
+ BDBImpl();
+
+ /**
+  * @brief private members
+  */
+
+private:
+
+ /**
+  * BDB Environment. Used for sharing memory pool across dbs.
+  */
+
+ static std::string m_gEnvDirectory;
+ static ACE_Thread_Mutex m_envReadyLock;
+ static bool m_isEnvReady;
+ static AtomicInc m_regionCount;
+ static AtomicInc m_activeDBSize;
+
+ uint32_t m_maxDBFileSize;
+ size_t m_cacheSizeGb;
+ size_t m_cacheSizeMb;
+ uint32_t m_pageSize;
+
+ bool m_initFlag;
+ AtomicInc closeFlag;
+ RegionPtr m_regionPtr;
+ std::string m_regionName;
+ void *m_currentDBHandle;
+ int m_currentDBIndex;
+ ACE_Recursive_Thread_Mutex m_activeDBMutex;
+ std::vector< void * > m_DBHandleVector;
+ std::string m_PersistenceDirectory;
+ std::string m_regionEnvDirectory;
+ DBHelper *m_DBHelper;
+
+ void writeToDB(void *dbhandle, const CacheableKeyPtr& key, const CacheablePtr& value, bool isUpdate);
+ CacheablePtr readFromDB(void *dbhandle, const CacheableKeyPtr &key);
+
+ friend class DBFileManager;
+ class DBFileManager : public ACE_Task_Base {
+  BDBImpl *m_bdbPersistenceManager;
+ public:
+  int svc();
+  bool m_isRunning;
+  DBFileManager(BDBImpl *bdbPersistenceManager) { m_bdbPersistenceManager = bdbPersistenceManager; m_isRunning = true;};
+ };
+
+ DBFileManager* m_dbFileManager;
+ void cleanupPersistenceManager();
+ void cleanupRegionData();
+ void convertToDirName(std::string& regionName);
+};
+
+}
+#endif //_BDBIMPL_HPP__
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/bdbimpl/DBHelper.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/bdbimpl/DBHelper.hpp b/geode-client-native/src/bdbimpl/DBHelper.hpp
new file mode 100644
index 0000000..0e34d0b
--- /dev/null
+++ b/geode-client-native/src/bdbimpl/DBHelper.hpp
@@ -0,0 +1,47 @@
+/*=========================================================================
+ * Copyright (c) 2010-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * one or more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+#ifndef _DBHELPER_HPP__
+#define _DBHELPER_HPP__
+
+#include <string>
+#ifndef _WIN32
+#include <inttypes.h>
+#else
+// ARB: typedef uint32_t appropriately for Windows
+typedef unsigned int uint32_t;
+#endif
+
+
+namespace gemfire {
+
+class DBHelper {
+
+  public:
+
+    virtual void createEnvironment(std::string m_gEnvDirectory, size_t m_cacheSizeGb, size_t m_cacheSizeMb) {};
+
+    virtual void* createNewDB(std::string regionDBFile) {return NULL;};
+
+    virtual void* createNewDBNoThrow(std::string regionDBFile) {return NULL;};
+
+    virtual void writeToDB(void *dbh,void *keyData,uint32_t keyBufferSize,void *valueData,uint32_t valueBufferSize) {};
+
+    virtual void readFromDB(void *dbh,void *keyData,uint32_t keyBufferSize,void*& valueData,uint32_t& valueBufferSize) {};
+
+    virtual void destroy(void *dbHandle,void *keyData,uint32_t keyBufferSize) {};
+
+    virtual void closeEnvironment() {};
+
+    virtual void closeDB(void *dbh) {};
+
+    virtual ~DBHelper() {};
+};
+
+}
+
+#endif // _DBHELPER_HPP_

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/bdbimpl/GNUmakefile
----------------------------------------------------------------------
diff --git a/geode-client-native/src/bdbimpl/GNUmakefile b/geode-client-native/src/bdbimpl/GNUmakefile
new file mode 100644
index 0000000..1f4c9d2
--- /dev/null
+++ b/geode-client-native/src/bdbimpl/GNUmakefile
@@ -0,0 +1,73 @@
+ifndef base
+  base=../../../../../../..
+endif
+
+include $(base)/makefiles/platform.gmk
+OBJDIR=$(OSBUILDDIR)/src/bdb_objects
+LIBDIR=$(OSBUILDDIR)/product/lib/$(ARCH).$(OSNAME)
+LIBDIR=$(OSBUILDDIR)/product/lib
+LIBRARY = $(LIBDIR)/$(libPrefix)BDBImpl$(libSuffix)
+
+default: $(LIBRARY)
+
+all: directories
+	$(MAKE) VARIANT=fast
+
+.PHONY: all
+.PHONY: directories
+
+LIBS=$(ACE_DIR)/lib/libACE.a -lgfcppcache -ldb_cxx
+LIB_PATH = -L$(LIBDIR) -L$(BDB)/lib
+INCLUDE=-I. -I$(ACE_DIR)/include -I$(base)/src/com/gemstone/gemfire/internal/cppcache -I$(base)/src/com/gemstone/gemfire/internal/cppcache/impl -I$(BDB)/include
+OUT.c = -o $@
+FILES_cpp := $(wildcard *.cpp)
+FILES_o := $(foreach item, $(subst .cpp,$(OBJ),$(FILES_cpp)),$(OBJDIR)/$(item))
+
+ifeq ($(HOSTTYPE_OSTYPE),$(filter $(HOSTTYPE_OSTYPE),sparc.Solaris x86.Solaris))
+  CXX=CC
+  LIBS += -lrt -lsocket -lm -lnsl
+  CFLAGS_COMMON = -mt -KPIC -D_REENTRANT -D_RWSTD_MULTI_THREAD -DTHREAD=MULTI -D_SOLARIS $(INCLUDE) -c
+  # using -xMMD to fix issue with implicit rule to rebuild string from string.cc
+  CFLAGS_COMMON += -xMMD
+  LD_FLAGS = -KPIC -mt $(CFLAGS_MODEL) -G -Bdynamic -z defs
+  ifdef USE_CPP11
+    CFLAGS_COMMON += -std=c++11
+    LD_FLAGS += -std=c++11
+    LIBS += -lstdc++ -lgcc_s -lCrunG3 
+  else
+    LIBS += -lCstd -lCrun 
+  endif
+  LIBS += -lc
+
+ifeq ($(HOSTTYPE_OSTYPE),sparc.Solaris)
+  CFLAGS_COMMON += -D_SPARC_SOLARIS
+else
+ifeq ($(HOSTTYPE_OSTYPE),x86.Solaris)
+  CFLAGS_COMMON += -D_X86_SOLARIS
+endif
+endif
+else
+ifeq ($(HOSTTYPE_OSTYPE),intel.Linux)
+  CXX=g++
+  CFLAGS_COMMON = -D_REENTRANT -D_LINUX $(INCLUDE) $(FPIC) -c -MD
+  LD_FLAGS = $(CFLAGS_MODEL) -shared
+endif
+endif
+CFLAGS_fast=-O3 $(CFLAGS_COMMON)
+CFLAGS_slow=-O0 -g $(CFLAGS_COMMON)
+
+COMPILE.cpp = $(CXX) $(CFLAGS_MODEL) $(CFLAGS_$(VARIANT))
+
+$(OBJDIR)/%$(OBJ): %.cpp
+	@echo compiling $(VARIANT) $<
+	$(COMPILE.cpp) $(OUT.c) $(call NATIVEDIR_FUNC,$<)
+
+$(LIBRARY): $(FILES_o)
+	$(CXX) $(LD_FLAGS) -o $@ $(FILES_o) $(LIB_PATH) $(LIBS)
+
+directories: $(call UNIXDIR_FUNC,$(OBJDIR))
+
+@mkdir -p $(call UNIXDIR_FUNC,$(OBJDIR)):
+	@mkdir -p $(call UNIXDIR_FUNC,$(OBJDIR))
+
+-include $(FILES_o:.o=.d)

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/cclient/Makefile
----------------------------------------------------------------------
diff --git a/geode-client-native/src/cclient/Makefile b/geode-client-native/src/cclient/Makefile
new file mode 100644
index 0000000..0c57e6f
--- /dev/null
+++ b/geode-client-native/src/cclient/Makefile
@@ -0,0 +1,22 @@
+SUBDIRS=src sample
+ARCH=32
+MFLAGS=ARCH=$(ARCH)
+FILES=src/gf_client.h src/libgfcclient.so
+
+all: all_subdirs
+	mkdir -p dist
+	cp $(FILES) dist
+
+clean: clean_subdirs
+	rm -fr dist
+
+all_subdirs:
+	@for i in $(SUBDIRS); do \
+        echo "make all in $$i..."; \
+        (cd $$i; $(MAKE) $(MFLAGS) all); done
+ 
+clean_subdirs:
+	@for i in $(SUBDIRS); do \
+        echo "Clearing in $$i..."; \
+        (cd $$i; $(MAKE) $(MFLAGS) clean); done
+ 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/cclient/README
----------------------------------------------------------------------
diff --git a/geode-client-native/src/cclient/README b/geode-client-native/src/cclient/README
new file mode 100644
index 0000000..388e268
--- /dev/null
+++ b/geode-client-native/src/cclient/README
@@ -0,0 +1,34 @@
+Operating instructions:
+This is first cut of C client for Gemfire cache. 
+Source code is in src directory. There is a sample programe in sample
+directory, which demonstrates basic usage of the library. There is a
+Makefile provided which builds the library, as well as sample program.
+To run the sample program, execute runit.sh in sample directory.
+Befure executing runit.sh GEMFIRE and GFCCLIENT environment variables 
+have to be set. GEMFIRE should contain path to Gemfire installation 
+and GFCCLIENT should contain path to C client dist library (which is
+created while building using Makefile).
+
+NOTES:
+1. gf_connect function returns a CONTEXT pointer which should be passed
+    while doing any operation. 
+2. A CONTEXT pointer should not be used to perform multiple operations
+    simultaneously
+3. A program can maintain a pool of CONTEXT pointers, and any thread can
+    borrow the pointer and return it when done.
+4. There is a gf_ping function in the API. Idle timeout at the server is 
+    60 seconds certain interval, otherwise it closes the socket. A program
+    should call gf_ping function periodically in a separate thread.
+2. gf_disconnect frees up the CONTEXT pointer
+
+
+Troubleshooting:
+Write now, client does not have any logging. For troubleshooting,
+server logs have to be analysed. To enable all logs in the server,
+'log-level=all' has to be passed as command line arguments while 
+starting the server. In samples directory, 'runit.sh' contains the
+command for starting the server with all logging enabled.
+
+Contact information:
+Ankur Srivastava <an...@vmware.com>
+Vishal Rao <ra...@vmware.com>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/cclient/sample/Makefile
----------------------------------------------------------------------
diff --git a/geode-client-native/src/cclient/sample/Makefile b/geode-client-native/src/cclient/sample/Makefile
new file mode 100644
index 0000000..a779606
--- /dev/null
+++ b/geode-client-native/src/cclient/sample/Makefile
@@ -0,0 +1,25 @@
+CC=gcc
+ARCH=32
+CFLAGS=-m$(ARCH) -Wall -g3
+INCLUDES=-I../src
+LFLAGS=-m$(ARCH) -L../src
+LIBS=-lgfcclient
+NAME=sample
+
+SRCS=sample.c
+OBJS=sample.o
+
+.c.o:
+	$(CC) $(CFLAGS) $(INCLUDES) -c $<  -o $@
+
+.PHONY: clean
+
+all: $(NAME)
+
+$(NAME): $(OBJS) 
+	$(CC) -o $(NAME) $(OBJS) $(LFLAGS) $(LIBS)
+
+clean:
+	$(RM) *.o *~ $(NAME)
+
+sample.o: ../src/gf_client.h

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/cclient/sample/runit.sh
----------------------------------------------------------------------
diff --git a/geode-client-native/src/cclient/sample/runit.sh b/geode-client-native/src/cclient/sample/runit.sh
new file mode 100755
index 0000000..45b2c79
--- /dev/null
+++ b/geode-client-native/src/cclient/sample/runit.sh
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+if [ -z ${GFCCLIENT:-} ]; then
+    echo GFCCLIENT is not set.
+    exit 1
+fi
+if [ -z ${GEMFIRE:-} ]; then
+    echo GEMFIRE is not set.
+    exit 1
+fi
+
+
+export LD_LIBRARY_PATH=$GFCCLIENT:$LD_LIBRARY_PATH
+$GEMFIRE/bin/cacheserver start cache-xml-file=sampleserver.xml log-level=all
+./sample
+$GEMFIRE/bin/cacheserver stop
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/cclient/sample/sample.c
----------------------------------------------------------------------
diff --git a/geode-client-native/src/cclient/sample/sample.c b/geode-client-native/src/cclient/sample/sample.c
new file mode 100644
index 0000000..7ae54a7
--- /dev/null
+++ b/geode-client-native/src/cclient/sample/sample.c
@@ -0,0 +1,85 @@
+#include <gf_client.h>
+#include <stdio.h>
+
+void printByteArray(int8_t* arr, int32_t len)
+{
+    int32_t i = 0;
+    for(i = 0; i < len; i++)
+    {
+        printf("%d", arr[i]);
+    }
+}
+
+
+int main(int argc, char** argv)
+{
+    int resultcode = NO_ERROR;
+    char* key = "key";
+    int8_t data[] = {1,2,3,4};
+    int8_t returnData[4];
+    CONTEXT* context = gf_connect("localhost", "40404", &resultcode);
+    if(resultcode == NO_ERROR)
+    {
+        printf("Connection successful.\n");
+        if(context != NULL) {
+            resultcode = NO_ERROR;
+            printf("Sending ping message... ");
+            gf_ping(context, &resultcode);
+            if(resultcode == NO_ERROR)
+            {
+                printf("successful.\n");
+            } else {
+                printf("failed. Error code: %d\n", resultcode);
+            }
+
+            resultcode = NO_ERROR;
+            printf("Sending put with key=%s, and value=", key);
+            printByteArray(data, 4);
+            printf("... ");
+            gf_put(context, key, data, 4, &resultcode);
+            if(resultcode == NO_ERROR)
+            {
+                printf("successful.\n");
+            } else {
+                printf("failed. Error code: %d\n", resultcode);
+            }
+
+            resultcode = NO_ERROR;
+            printf("Sending get message with key=%s... ", key);
+            gf_get(context, "key",returnData, 1024, &resultcode);
+            if(resultcode == NO_ERROR)
+            {
+                printf("successful. got '");
+                printByteArray(returnData, 4);
+                printf("'.\n");
+            } else {
+                printf("failed. Error code: %d\n", resultcode);
+            }
+
+            resultcode = NO_ERROR;
+            printf("Sending destroy with key=%s... ", key);
+            gf_destroy(context, "key", &resultcode);
+            if(resultcode == NO_ERROR)
+            {
+                printf("successful.\n");
+            } else {
+                printf("failed. Error code: %d\n", resultcode);
+            }
+
+            resultcode = NO_ERROR;
+            printf("disconnecting... ");
+            gf_disconnect(context, &resultcode);
+            if(resultcode == NO_ERROR)
+            {
+                printf("successful.\n");
+            } else {
+                printf("failed. Error code: %d\n", resultcode);
+            }
+        }
+    } else {
+        printf("Connection failure. Error Code: %d\n", resultcode);
+    }
+
+    return 0;
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/cclient/sample/sampleserver.xml
----------------------------------------------------------------------
diff --git a/geode-client-native/src/cclient/sample/sampleserver.xml b/geode-client-native/src/cclient/sample/sampleserver.xml
new file mode 100644
index 0000000..ebb05da
--- /dev/null
+++ b/geode-client-native/src/cclient/sample/sampleserver.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+
+<!-- serverBasicOperations.xml
+     Configures a server to for clients at port 40404.
+-->
+
+<!DOCTYPE cache PUBLIC
+  "-//GemStone Systems, Inc.//GemFire Declarative Caching 6.5//EN"
+  "http://www.gemstone.com/dtd/cache6_5.dtd">
+<cache>
+  <cache-server port="40404"/>
+  <region name="ROOT-REGION">
+    <region-attributes scope="distributed-no-ack" data-policy="replicate"/>
+  </region>
+</cache>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/cclient/src/Makefile
----------------------------------------------------------------------
diff --git a/geode-client-native/src/cclient/src/Makefile b/geode-client-native/src/cclient/src/Makefile
new file mode 100644
index 0000000..fedbccc
--- /dev/null
+++ b/geode-client-native/src/cclient/src/Makefile
@@ -0,0 +1,27 @@
+CC=gcc
+ARCH=32
+CFLAGS=-m$(ARCH) -Wall -g3 -fPIC	
+INCLUDES=
+LFLAGS=-m$(ARCH) -shared
+LIBS=
+NAME=libgfcclient.so
+
+SRCS=data_io.c gf_client.c
+OBJS=data_io.o gf_client.o
+
+.c.o:
+	$(CC) $(CFLAGS) $(INCLUDES) -c $<  -o $@
+
+.PHONY: clean
+
+all: $(NAME)
+
+$(NAME): $(OBJS) 
+	$(CC) -o $(NAME) $(OBJS) $(LFLAGS) $(LIBS)
+
+clean:
+	$(RM) *.o *~ $(NAME)
+
+
+data_io.o: data_io.h
+gf_client.o: data_io.h gf_client.h