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:20 UTC

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

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;
+      }
+
+    }
+  }
+}