You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by jb...@apache.org on 2017/08/11 23:52:31 UTC

[15/52] [partial] geode-native git commit: GEODE-3165: Reogranized sources relative to the root for better CMake IDE integration.

http://git-wip-us.apache.org/repos/asf/geode-native/blob/6cbd424f/clicache/src/IRegionService.hpp
----------------------------------------------------------------------
diff --git a/clicache/src/IRegionService.hpp b/clicache/src/IRegionService.hpp
new file mode 100644
index 0000000..51f4049
--- /dev/null
+++ b/clicache/src/IRegionService.hpp
@@ -0,0 +1,128 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#pragma once
+
+#include "geode_defs.hpp"
+//#include "geode_includes.hpp"
+#include "QueryService.hpp"
+#include "Region.hpp"
+
+using namespace System;
+using namespace System::Collections::Generic;
+
+
+
+namespace Apache
+{
+  namespace Geode
+  {
+    namespace Client
+    {
+
+      interface class IPdxInstanceFactory;
+      /// <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>
+      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>
+        generic<class TKey, class TValue>
+        IRegion<TKey, TValue>^ 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>
+        generic<class TKey, class TResult>
+        Client::QueryService<TKey, TResult>^ 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>
+        generic<class TKey, class TValue>
+        array<IRegion<TKey, TValue>^>^ RootRegions( );
+
+        /// <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>
+        IPdxInstanceFactory^ CreatePdxInstanceFactory(String^ className);
+      };
+    }  // namespace Client
+  }  // namespace Geode
+}  // namespace Apache
+

http://git-wip-us.apache.org/repos/asf/geode-native/blob/6cbd424f/clicache/src/IResultCollector.hpp
----------------------------------------------------------------------
diff --git a/clicache/src/IResultCollector.hpp b/clicache/src/IResultCollector.hpp
new file mode 100644
index 0000000..3d97f27
--- /dev/null
+++ b/clicache/src/IResultCollector.hpp
@@ -0,0 +1,80 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#pragma once
+
+#include "geode_defs.hpp"
+
+using namespace System;
+namespace Apache
+{
+  namespace Geode
+  {
+    namespace Client
+    {
+
+      interface class IGeodeSerializable;
+      /*
+      generic<class TKey>
+      ref class ResultCollector;
+      */
+
+      /// <summary>
+      /// collect function execution results, can be overriden 
+      /// </summary>
+      generic<class TResult>
+      public interface class IResultCollector
+      {
+      public:
+
+        /// <summary>
+        /// add result from a single function execution
+        /// </summary>
+        void AddResult(TResult rs);
+
+        /// <summary>
+        /// get result 
+        /// </summary>
+        System::Collections::Generic::ICollection<TResult>^  GetResult();
+
+        /// <summary>
+        /// get result 
+        /// </summary>
+        System::Collections::Generic::ICollection<TResult>^  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>
+        //generic<class TKey>
+        void EndResults();
+
+        /// <summary>
+        ///Geode 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>
+        //generic<class TKey>
+        void ClearResults(/*bool*/);
+
+      };
+    }  // namespace Client
+  }  // namespace Geode
+}  // namespace Apache
+

http://git-wip-us.apache.org/repos/asf/geode-native/blob/6cbd424f/clicache/src/ISelectResults.hpp
----------------------------------------------------------------------
diff --git a/clicache/src/ISelectResults.hpp b/clicache/src/ISelectResults.hpp
new file mode 100644
index 0000000..68feff8
--- /dev/null
+++ b/clicache/src/ISelectResults.hpp
@@ -0,0 +1,81 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#pragma once
+
+#include "geode_defs.hpp"
+#include "begin_native.hpp"
+#include <geode/SelectResults.hpp>
+#include "end_native.hpp"
+
+
+#include "IGeodeSerializable.hpp"
+
+using namespace System;
+
+namespace Apache
+{
+  namespace Geode
+  {
+    namespace Client
+    {
+
+      generic<class TResult>
+      ref class SelectResultsIterator;
+
+      /// <summary>
+      /// Interface to encapsulate a select query result set.
+      /// </summary>
+      generic<class TResult>
+      public interface class ISelectResults
+        : public System::Collections::Generic::IEnumerable</*IGeodeSerializable^*/TResult>
+      {
+      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 System::Int32 Size
+        {
+          System::Int32 get( );
+        }
+
+        /// <summary>
+        /// Get an object at the given index.
+        /// </summary>
+        property /*Apache::Geode::Client::IGeodeSerializable^*/TResult GFINDEXER( size_t )
+        {
+          /*Apache::Geode::Client::IGeodeSerializable^*/TResult get( size_t index );
+        }
+
+        /// <summary>
+        /// Get an iterator for the result set.
+        /// </summary>
+        Apache::Geode::Client::SelectResultsIterator<TResult>^ GetIterator( );
+      };
+    }  // namespace Client
+  }  // namespace Geode
+}  // namespace Apache
+

http://git-wip-us.apache.org/repos/asf/geode-native/blob/6cbd424f/clicache/src/ISubscriptionService.hpp
----------------------------------------------------------------------
diff --git a/clicache/src/ISubscriptionService.hpp b/clicache/src/ISubscriptionService.hpp
new file mode 100644
index 0000000..1c91efd
--- /dev/null
+++ b/clicache/src/ISubscriptionService.hpp
@@ -0,0 +1,627 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#pragma once
+
+#include "geode_defs.hpp"
+#include "ExceptionTypes.hpp"
+
+using namespace System;
+namespace Apache
+{
+  namespace Geode
+  {
+    namespace Client
+    {
+
+      generic<class TKey>
+      /// <summary>
+      /// This generic interface class provides all Register Interest API's for 
+      /// geode's generic non local region (Region<TKey, TValue>).
+      /// Region<TKey, TValue> class implements all methods of this interface class.
+      /// LocalRegion<TKey, TValue> class does not implement this interface class.
+      /// </summary>
+      public interface class ISubscriptionService
+      {
+      public:
+
+        /// <summary>
+        /// Registers a collection of keys for getting updates from the server.
+        /// Valid only for a Native Client region when client notification
+        /// ( <see cref="AttributesFactory.SetClientNotificationEnabled" /> ) is true.
+        /// </summary>
+        /// <param name="keys">a collection of keys</param>
+        /// <exception cref="IllegalArgumentException">
+        /// If the collection of keys is empty.
+        /// </exception>
+        /// <exception cref="IllegalStateException">
+        /// If already registered interest for all keys.
+        /// </exception>
+        /// <exception cref="CacheServerException">
+        /// If an exception is received from the Java cache server.
+        /// </exception>
+        /// <exception cref="NotConnectedException">
+        /// if not connected to the Geode 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 destroy is pending.
+        /// </exception>
+        /// <exception cref="UnsupportedOperationException">
+        /// If the region is not a Native Client region or
+        /// <see cref="AttributesFactory.SetClientNotificationEnabled" /> is false.
+        /// </exception>
+        /// <exception cref="TimeoutException">
+        /// if the operation timed out
+        /// </exception>
+        /// <exception cref="UnknownException">For other exceptions.</exception>
+        void RegisterKeys(System::Collections::Generic::ICollection<TKey>^ keys);
+
+        /// <summary>
+        /// Registers a collection of keys for getting updates from the server.
+        /// Valid only for a Native Client region when client notification
+        /// ( <see cref="AttributesFactory.SetClientNotificationEnabled" /> ) is true.
+        /// Should only be called for durable clients and with cache server version 5.5 onwards.
+        /// </summary>
+        /// <param name="keys">a collection of keys</param>
+        /// <param name="isDurable">whether the registration should be durable</param>
+        /// <param name="getInitialValues">
+        /// true to populate the cache with values of the keys
+        /// that were registered on the server
+        /// </param>
+        /// <exception cref="IllegalArgumentException">
+        /// If the collection of keys is empty.
+        /// </exception>
+        /// <exception cref="IllegalStateException">
+        /// If already registered interest for all keys.
+        /// </exception>
+        /// <exception cref="CacheServerException">
+        /// If an exception is received from the Java cache server.
+        /// </exception>
+        /// <exception cref="NotConnectedException">
+        /// if not connected to the Geode 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 destroy is pending.
+        /// </exception>
+        /// <exception cref="UnsupportedOperationException">
+        /// If the region is not a Native Client region or
+        /// <see cref="AttributesFactory.SetClientNotificationEnabled" /> is false.
+        /// </exception>
+        /// <exception cref="TimeoutException">
+        /// if the operation timed out
+        /// </exception>
+        /// <exception cref="UnknownException">For other exceptions.</exception>
+        void RegisterKeys(System::Collections::Generic::ICollection<TKey>^ keys, bool isDurable, bool getInitialValues);
+
+        /// <summary>
+        /// Registers a collection of keys for getting updates from the server.
+        /// Valid only for a Native Client region when client notification
+        /// ( <see cref="AttributesFactory.SetClientNotificationEnabled" /> ) is true.
+        /// Should only be called for durable clients and with cache server version 5.5 onwards.
+        /// </summary>
+        /// <param name="keys">a collection of keys</param>
+        /// <param name="isDurable">whether the registration should be durable</param>
+        /// <param name="getInitialValues">
+        /// true to populate the cache with values of the keys
+        /// that were registered on the server
+        /// </param>
+        /// <param name="receiveValues">
+        /// whether to act like notify-by-subscription is true
+        /// </param>
+        /// <exception cref="IllegalArgumentException">
+        /// If the collection of keys is empty.
+        /// </exception>
+        /// <exception cref="IllegalStateException">
+        /// If already registered interest for all keys.
+        /// </exception>
+        /// <exception cref="CacheServerException">
+        /// If an exception is received from the Java cache server.
+        /// </exception>
+        /// <exception cref="NotConnectedException">
+        /// if not connected to the Geode system because the client cannot
+        /// establish usable connections to any of the servers given to it.
+        /// </exception>
+        /// <exception cref="RegionDestroyedException">
+        /// If region destroy is pending.
+        /// </exception>
+        /// <exception cref="UnsupportedOperationException">
+        /// If the region is not a Native Client region or
+        /// <see cref="AttributesFactory.SetClientNotificationEnabled" /> is false.
+        /// </exception>
+        /// <exception cref="TimeoutException">
+        /// if the operation timed out
+        /// </exception>
+        /// <exception cref="UnknownException">For other exceptions.</exception>
+        void RegisterKeys(System::Collections::Generic::ICollection<TKey>^ keys, bool isDurable, bool getInitialValues, bool receiveValues);
+
+        /// <summary>
+        /// Unregisters a collection of keys to stop getting updates for them.
+        /// Valid only for a Native Client region when client notification
+        /// ( <see cref="AttributesFactory.SetClientNotificationEnabled" /> ) is true.
+        /// </summary>
+        /// <param name="keys">the collection of keys</param>
+        /// <exception cref="IllegalArgumentException">
+        /// If the collection of keys is empty.
+        /// </exception>
+        /// <exception cref="IllegalStateException">
+        /// If no keys were previously registered.
+        /// </exception>
+        /// <exception cref="CacheServerException">
+        /// If an exception is received from the Java cache server.
+        /// </exception>
+        /// <exception cref="NotConnectedException">
+        /// if not connected to the Geode 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 destroy is pending.
+        /// </exception>
+        /// <exception cref="UnsupportedOperationException">
+        /// If the region is not a Native Client region or
+        /// <see cref="AttributesFactory.SetClientNotificationEnabled" /> is false.
+        /// </exception>
+        /// <exception cref="TimeoutException">
+        /// if the operation timed out
+        /// </exception>
+        /// <exception cref="UnknownException">For other exceptions.</exception>
+        void UnregisterKeys(System::Collections::Generic::ICollection<TKey>^ keys);
+
+        /// <summary>
+        /// Register interest for all the keys of the region to get
+        /// updates from the server.
+        /// Valid only for a Native Client region when client notification
+        /// ( <see cref="AttributesFactory.SetClientNotificationEnabled" /> ) is true.
+        /// </summary>
+        /// <exception cref="CacheServerException">
+        /// If an exception is received from the Java cache server.
+        /// </exception>
+        /// <exception cref="NotConnectedException">
+        /// if not connected to the Geode 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 destroy is pending.
+        /// </exception>
+        /// <exception cref="UnsupportedOperationException">
+        /// If the region is not a Native Client region or
+        /// <see cref="AttributesFactory.SetClientNotificationEnabled" /> is false.
+        /// </exception>
+        /// <exception cref="TimeoutException">
+        /// if the operation timed out
+        /// </exception>
+        /// <exception cref="UnknownException">For other exceptions.</exception>
+        void RegisterAllKeys();
+
+        /// <summary>
+        /// Register interest for all the keys of the region to get
+        /// updates from the server.
+        /// Valid only for a Native Client region when client notification
+        /// ( <see cref="AttributesFactory.SetClientNotificationEnabled" /> ) is true.
+        /// Should only be called for durable clients and with cache server version 5.5 onwards.
+        /// </summary>
+        /// <param name="isDurable">whether the registration should be durable</param>
+        /// <exception cref="CacheServerException">
+        /// If an exception is received from the Java cache server.
+        /// </exception>
+        /// <exception cref="NotConnectedException">
+        /// if not connected to the Geode 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 destroy is pending.
+        /// </exception>
+        /// <exception cref="UnsupportedOperationException">
+        /// If the region is not a Native Client region or
+        /// <see cref="AttributesFactory.SetClientNotificationEnabled" /> is false.
+        /// </exception>
+        /// <exception cref="TimeoutException">
+        /// if the operation timed out
+        /// </exception>
+        /// <exception cref="UnknownException">For other exceptions.</exception>
+        void RegisterAllKeys(bool isDurable);
+
+        /// <summary>
+        /// Register interest for all the keys of the region to get
+        /// updates from the server.
+        /// Valid only for a Native Client region when client notification
+        /// ( <see cref="AttributesFactory.SetClientNotificationEnabled" /> ) is true.
+        /// Should only be called for durable clients and with cache server version 5.5 onwards.
+        /// </summary>
+        /// <param name="isDurable">whether the registration should be durable</param>
+        /// <param name="resultKeys">
+        /// if non-null then all keys on the server are returned
+        /// </param>
+        /// <param name="getInitialValues">
+        /// true to populate the cache with values of all the keys
+        /// from the server
+        /// </param>
+        /// <exception cref="CacheServerException">
+        /// If an exception is received from the Java cache server.
+        /// </exception>
+        /// <exception cref="NotConnectedException">
+        /// if not connected to the Geode 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 destroy is pending.
+        /// </exception>
+        /// <exception cref="UnsupportedOperationException">
+        /// If the region is not a Native Client region or
+        /// <see cref="AttributesFactory.SetClientNotificationEnabled" /> is false.
+        /// </exception>
+        /// <exception cref="TimeoutException">
+        /// if the operation timed out
+        /// </exception>
+        /// <exception cref="UnknownException">For other exceptions.</exception>
+        void RegisterAllKeys(bool isDurable,
+                             System::Collections::Generic::ICollection<TKey>^ resultKeys,
+                             bool getInitialValues);
+
+        /// <summary>
+        /// Register interest for all the keys of the region to get
+        /// updates from the server.
+        /// Valid only for a Native Client region when client notification
+        /// ( <see cref="AttributesFactory.SetClientNotificationEnabled" /> ) is true.
+        /// Should only be called for durable clients and with cache server version 5.5 onwards.
+        /// </summary>
+        /// <param name="isDurable">whether the registration should be durable</param>
+        /// <param name="resultKeys">
+        /// if non-null then all keys on the server are returned
+        /// </param>
+        /// <param name="getInitialValues">
+        /// true to populate the cache with values of all the keys
+        /// from the server
+        /// </param>
+        /// <param name="receiveValues">
+        /// whether to act like notify-by-subscription is true
+        /// </param>
+        /// <exception cref="CacheServerException">
+        /// If an exception is received from the Java cache server.
+        /// </exception>
+        /// <exception cref="NotConnectedException">
+        /// if not connected to the Geode system because the client cannot
+        /// establish usable connections to any of the servers given to it.
+        /// </exception>
+        /// <exception cref="RegionDestroyedException">
+        /// If region destroy is pending.
+        /// </exception>
+        /// <exception cref="UnsupportedOperationException">
+        /// If the region is not a Native Client region or
+        /// <see cref="AttributesFactory.SetClientNotificationEnabled" /> is false.
+        /// </exception>
+        /// <exception cref="TimeoutException">
+        /// if the operation timed out
+        /// </exception>
+        /// <exception cref="UnknownException">For other exceptions.</exception>
+        void RegisterAllKeys(bool isDurable,
+                             System::Collections::Generic::ICollection<TKey>^ resultKeys,
+                             bool getInitialValues,
+                             bool receiveValues);
+
+        /// <summary>
+        /// get the interest list on this client
+        /// </summary>
+        System::Collections::Generic::ICollection<TKey>^ GetInterestList();
+
+        /// <summary>
+        /// get the list of interest regular expressions on this client
+        /// </summary>
+        System::Collections::Generic::ICollection<String^>^ GetInterestListRegex();
+
+        /// <summary>
+        /// Unregister interest for all the keys of the region to stop
+        /// getting updates for them.
+        /// Valid only for a Native Client region when client notification
+        /// ( <see cref="AttributesFactory.SetClientNotificationEnabled" /> ) is true.
+        /// </summary>
+        /// <exception cref="IllegalStateException">
+        /// If not previously registered all keys.
+        /// </exception>
+        /// <exception cref="CacheServerException">
+        /// If an exception is received from the Java cache server.
+        /// </exception>
+        /// <exception cref="NotConnectedException">
+        /// if not connected to the Geode 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 destroy is pending.
+        /// </exception>
+        /// <exception cref="UnsupportedOperationException">
+        /// If the region is not a Native Client region or
+        /// <see cref="AttributesFactory.SetClientNotificationEnabled" /> is false.
+        /// </exception>
+        /// <exception cref="TimeoutException">
+        /// if the operation timed out
+        /// </exception>
+        /// <exception cref="UnknownException">For other exceptions.</exception>
+        void UnregisterAllKeys();
+
+        /// <summary>
+        /// Register interest for the keys of the region that match the
+        /// given regular expression to get updates from the server.
+        /// Valid only for a Native Client region when client notification
+        /// ( <see cref="AttributesFactory.SetClientNotificationEnabled" /> ) is true.
+        /// </summary>
+        /// <exception cref="IllegalArgumentException">
+        /// If the regular expression string is empty.
+        /// </exception>
+        /// <exception cref="CacheServerException">
+        /// If an exception is received from the Java cache server.
+        /// </exception>
+        /// <exception cref="NotConnectedException">
+        /// if not connected to the Geode 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="RegionDestroyedException">
+        /// If region destroy is pending.
+        /// </exception>
+        /// <exception cref="UnsupportedOperationException">
+        /// If the region is not a Native Client region or
+        /// <see cref="AttributesFactory.SetClientNotificationEnabled" /> is false.
+        /// </exception>
+        /// <exception cref="TimeoutException">
+        /// if the operation timed out
+        /// </exception>
+        /// <exception cref="UnknownException">For other exceptions.</exception>
+        void RegisterRegex(String^ regex);
+
+        /// <summary>
+        /// Register interest for the keys of the region that match the
+        /// given regular expression to get updates from the server.
+        /// Valid only for a Native Client region when client notification
+        /// ( <see cref="AttributesFactory.SetClientNotificationEnabled" /> ) is true.
+        /// Should only be called for durable clients and with cache server version 5.5 onwards.
+        /// </summary>
+        /// <param name="regex">the regular expression to register</param>
+        /// <param name="isDurable">whether the registration should be durable</param>
+        /// <exception cref="IllegalArgumentException">
+        /// If the regular expression string is empty.
+        /// </exception>
+        /// <exception cref="CacheServerException">
+        /// If an exception is received from the Java cache server.
+        /// </exception>
+        /// <exception cref="NotConnectedException">
+        /// if not connected to the Geode 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="RegionDestroyedException">
+        /// If region destroy is pending.
+        /// </exception>
+        /// <exception cref="UnsupportedOperationException">
+        /// If the region is not a Native Client region or
+        /// <see cref="AttributesFactory.SetClientNotificationEnabled" /> is false.
+        /// </exception>
+        /// <exception cref="TimeoutException">
+        /// if the operation timed out
+        /// </exception>
+        /// <exception cref="UnknownException">For other exceptions.</exception>
+        void RegisterRegex(String^ regex, bool isDurable);
+
+        /// <summary>
+        /// Register interest for the keys of the region that match the
+        /// given regular expression to get updates from the server.
+        /// Valid only for a Native Client region when client notification
+        /// ( <see cref="AttributesFactory.SetClientNotificationEnabled" /> ) is true.
+        /// Should only be called for durable clients and with cache server version 5.5 onwards.
+        /// </summary>
+        /// <param name="regex">the regular expression to register</param>
+        /// <param name="isDurable">whether the registration should be durable</param>
+        /// <param name="resultKeys">
+        /// if non-null then the keys that match the regular expression
+        /// on the server are returned
+        ///</param>
+        /// <exception cref="IllegalArgumentException">
+        /// If the regular expression string is empty.
+        /// </exception>
+        /// <exception cref="CacheServerException">
+        /// If an exception is received from the Java cache server.
+        /// </exception>
+        /// <exception cref="NotConnectedException">
+        /// if not connected to the Geode 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="RegionDestroyedException">
+        /// If region destroy is pending.
+        /// </exception>
+        /// <exception cref="UnsupportedOperationException">
+        /// If the region is not a Native Client region or
+        /// <see cref="AttributesFactory.SetClientNotificationEnabled" /> is false.
+        /// </exception>
+        /// <exception cref="TimeoutException">
+        /// if the operation timed out
+        /// </exception>
+        /// <exception cref="UnknownException">For other exceptions.</exception>
+        void RegisterRegex(String^ regex, bool isDurable,
+                           System::Collections::Generic::ICollection<TKey>^ resultKeys);
+
+        /// <summary>
+        /// Register interest for the keys of the region that match the
+        /// given regular expression to get updates from the server.
+        /// Valid only for a Native Client region when client notification
+        /// ( <see cref="AttributesFactory.SetClientNotificationEnabled" /> ) is true.
+        /// Should only be called for durable clients and with cache server version 5.5 onwards.
+        /// </summary>
+        /// <param name="regex">the regular expression to register</param>
+        /// <param name="isDurable">whether the registration should be durable</param>
+        /// <param name="resultKeys">
+        /// if non-null then the keys that match the regular expression
+        /// on the server are returned
+        ///</param>
+        /// <param name="getInitialValues">
+        /// true to populate the cache with values of the keys
+        /// that were registered on the server
+        /// </param>
+        /// <exception cref="IllegalArgumentException">
+        /// If the regular expression string is empty.
+        /// </exception>
+        /// <exception cref="CacheServerException">
+        /// If an exception is received from the Java cache server.
+        /// </exception>
+        /// <exception cref="NotConnectedException">
+        /// if not connected to the Geode 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="RegionDestroyedException">
+        /// If region destroy is pending.
+        /// </exception>
+        /// <exception cref="UnsupportedOperationException">
+        /// If the region is not a Native Client region or
+        /// <see cref="AttributesFactory.SetClientNotificationEnabled" /> is false.
+        /// </exception>
+        /// <exception cref="TimeoutException">
+        /// if the operation timed out
+        /// </exception>
+        /// <exception cref="UnknownException">For other exceptions.</exception>
+        void RegisterRegex(String^ regex, bool isDurable,
+                           System::Collections::Generic::ICollection<TKey>^ resultKeys, bool getInitialValues);
+
+        /// <summary>
+        /// Register interest for the keys of the region that match the
+        /// given regular expression to get updates from the server.
+        /// Valid only for a Native Client region when client notification
+        /// ( <see cref="AttributesFactory.SetClientNotificationEnabled" /> ) is true.
+        /// Should only be called for durable clients and with cache server version 5.5 onwards.
+        /// </summary>
+        /// <param name="regex">the regular expression to register</param>
+        /// <param name="isDurable">whether the registration should be durable</param>
+        /// <param name="resultKeys">
+        /// if non-null then the keys that match the regular expression
+        /// on the server are returned
+        ///</param>
+        /// <param name="getInitialValues">
+        /// true to populate the cache with values of the keys
+        /// that were registered on the server
+        /// </param>
+        /// <param name="receiveValues">
+        /// whether to act like notify-by-subscription is true
+        /// </param>
+        /// <exception cref="IllegalArgumentException">
+        /// If the regular expression string is empty.
+        /// </exception>
+        /// <exception cref="CacheServerException">
+        /// If an exception is received from the Java cache server.
+        /// </exception>
+        /// <exception cref="NotConnectedException">
+        /// if not connected to the Geode system because the client cannot
+        /// establish usable connections to any of the servers given to it.
+        /// </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="RegionDestroyedException">
+        /// If region destroy is pending.
+        /// </exception>
+        /// <exception cref="UnsupportedOperationException">
+        /// If the region is not a Native Client region or
+        /// <see cref="AttributesFactory.SetClientNotificationEnabled" /> is false.
+        /// </exception>
+        /// <exception cref="TimeoutException">
+        /// if the operation timed out
+        /// </exception>
+        /// <exception cref="UnknownException">For other exceptions.</exception>
+        void RegisterRegex(String^ regex, bool isDurable,
+                           System::Collections::Generic::ICollection<TKey>^ resultKeys, bool getInitialValues, bool receiveValues);
+
+        /// <summary>
+        /// Unregister interest for the keys of the region that match the
+        /// given regular expression to stop getting updates for them.
+        /// The regular expression must have been registered previously using
+        /// a <c>RegisterRegex</c> call.
+        /// Valid only for a Native Client region when client notification
+        /// ( <see cref="AttributesFactory.SetClientNotificationEnabled" /> ) is true.
+        /// </summary>
+        /// <exception cref="IllegalArgumentException">
+        /// If the regular expression string is empty.
+        /// </exception>
+        /// <exception cref="IllegalStateException">
+        /// If this regular expression has not been registered by a previous
+        /// call to <c>RegisterRegex</c>.
+        /// </exception>
+        /// <exception cref="CacheServerException">
+        /// If an exception is received from the Java cache server.
+        /// </exception>
+        /// <exception cref="NotConnectedException">
+        /// if not connected to the Geode 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 destroy is pending.
+        /// </exception>
+        /// <exception cref="UnsupportedOperationException">
+        /// If the region is not a Native Client region or
+        /// <see cref="AttributesFactory.SetClientNotificationEnabled" /> is false.
+        /// </exception>
+        /// <exception cref="TimeoutException">
+        /// if the operation timed out
+        /// </exception>
+        /// <exception cref="UnknownException">For other exceptions.</exception>
+        void UnregisterRegex(String^ regex);
+
+      };
+    }  // namespace Client
+  }  // namespace Geode
+}  // namespace Apache
+

http://git-wip-us.apache.org/repos/asf/geode-native/blob/6cbd424f/clicache/src/ITransactionListener.hpp
----------------------------------------------------------------------
diff --git a/clicache/src/ITransactionListener.hpp b/clicache/src/ITransactionListener.hpp
new file mode 100644
index 0000000..a4db8cf
--- /dev/null
+++ b/clicache/src/ITransactionListener.hpp
@@ -0,0 +1,83 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#ifdef CSTX_COMMENTED
+#pragma once
+
+#include "geode_defs.hpp"
+#include "TransactionEvent.hpp"
+
+
+namespace Apache
+{
+  namespace Geode
+  {
+    namespace Client
+    {
+
+      /// <summary>
+      /// An application plug-in that can be installed for getting events for 
+      /// cache transactions. 
+      /// </summary>
+      /// <seealso cref="CacheTransactionManager.AddListener" />
+      generic<class TKey, class TValue>
+      public interface class ITransactionListener
+      {
+      public:
+        
+        /// <summary>
+        /// Called after a successful commit of a transaction.
+        /// </summary>
+        /// <param name="te">the transaction event</param>
+        /// <seealso cref="CacheTransactionManager.Commit" />
+        void AfterCommit(TransactionEvent<TKey, TValue>^ te);
+
+	      /// <summary>
+        /// Called after an unsuccessful commit operation.
+        /// </summary>
+        /// <param name="te">the transaction event</param>
+        /// <seealso cref="CacheTransactionManager.Commit" />
+        void AfterFailedCommit(TransactionEvent<TKey, TValue>^ te);
+
+	      /// <summary>
+        /// Called after an explicit rollback of a transaction.
+        /// </summary>
+        /// <param name="te">the transaction event</param>
+        /// <seealso cref="CacheTransactionManager.Commit" />
+        /// <seealso cref="CacheTransactionManager.Rollback" />
+        void AfterRollback(TransactionEvent<TKey, TValue>^ te);
+    
+        /// <summary>
+        /// alled when the region containing this callback is closed or destroyed, when
+        /// the cache is closed, or when a callback is removed from a region
+        /// using an <code>AttributesMutator</code>.
+	      /// Implementations should cleanup any external
+	      /// resources such as database connections. Any runtime exceptions this method
+	      /// throws will be logged.
+	      /// It is possible for this method to be called multiple times on a single
+	      /// callback instance, so implementations must be tolerant of this.
+	      /// </summary>
+        /// <seealso cref="Cache.Close" />
+        /// <seealso cref="Region.Close" />
+        /// <seealso cref="Region.LocalDestroyRegion" />
+        /// <seealso cref="Region.DestroyRegion" />
+        void Close();
+      };
+    }  // namespace Client
+  }  // namespace Geode
+}  // namespace Apache
+
+#endif

http://git-wip-us.apache.org/repos/asf/geode-native/blob/6cbd424f/clicache/src/ITransactionWriter.hpp
----------------------------------------------------------------------
diff --git a/clicache/src/ITransactionWriter.hpp b/clicache/src/ITransactionWriter.hpp
new file mode 100644
index 0000000..3874d0d
--- /dev/null
+++ b/clicache/src/ITransactionWriter.hpp
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#ifdef CSTX_COMMENTED
+#pragma once
+
+#include "geode_defs.hpp"
+#include "TransactionEvent.hpp"
+
+
+namespace Apache
+{
+  namespace Geode
+  {
+    namespace Client
+    {
+
+      /// <summary>
+      /// A callback that is allowed to veto a transaction. Only one TransactionWriter can exist
+      /// per cache, and only one TransactionWriter will be fired in the
+      /// entire distributed system for each transaction.
+      /// This writer can be used to update a backend data source before the Geode 
+      /// cache is updated during commit. If the backend update fails, the implementer 
+      /// can throw a {<c>TransactionWriterException</c>} to veto the transaction.
+      /// </summary>
+      /// <seealso cref="CacheTransactionManager.SetWriter" />
+      generic<class TKey, class TValue>
+      public interface class ITransactionWriter
+      {
+      public:
+        /// <summary>
+        /// Called before the transaction has finished committing, but after conflict checking.
+        /// Provides an opportunity for implementors to cause transaction abort by throwing a
+        /// TransactionWriterException
+        /// </summary>
+        /// <param name="te">the transaction event</param>
+        /// <exception cref="TransactionWriterException">
+        /// in the event that the transaction should be rolled back
+        /// </exception>
+        /// <seealso cref="CacheTransactionManager.Commit" />
+        void BeforeCommit(TransactionEvent<TKey, TValue>^ te);
+
+      };
+    }  // namespace Client
+  }  // namespace Geode
+}  // namespace Apache
+
+#endif

http://git-wip-us.apache.org/repos/asf/geode-native/blob/6cbd424f/clicache/src/IWritablePdxInstance.hpp
----------------------------------------------------------------------
diff --git a/clicache/src/IWritablePdxInstance.hpp b/clicache/src/IWritablePdxInstance.hpp
new file mode 100755
index 0000000..160ffb8
--- /dev/null
+++ b/clicache/src/IWritablePdxInstance.hpp
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#pragma once
+
+using namespace System;
+namespace Apache
+{
+  namespace Geode
+  {
+    namespace Client
+    {
+
+				/// <summary>
+	      /// WritablePdxInstance is a <see cref="IPdxInstance" /> that also supports field modification 
+        /// using the <see cref="SetField" />method. 
+        /// To get a WritablePdxInstance call <see cref="IPdxInstance.CreateWriter" />.
+ 				/// </summary>
+				public interface class IWritablePdxInstance
+				{
+        public:
+          /// <summary>
+          ///Set the existing named field to the given value.
+          ///The setField method has copy-on-write semantics.
+          /// So for the modifications to be stored in the cache the WritablePdxInstance 
+          ///must be put into a region after setField has been called one or more times.
+          /// </summary>
+          ///
+          ///<param name="fieldName"> name of the field whose value will be set </param>
+          ///<param name="value"> value that will be assigned to the field </param>
+          ///<exception cref="IllegalStateException"/> if the named field does not exist
+          ///or if the type of the value is not compatible with the field </exception>
+          
+          void SetField(String^ fieldName, Object^ value);
+				};
+    }  // namespace Client
+  }  // namespace Geode
+}  // namespace Apache
+

http://git-wip-us.apache.org/repos/asf/geode-native/blob/6cbd424f/clicache/src/LocalRegion.cpp
----------------------------------------------------------------------
diff --git a/clicache/src/LocalRegion.cpp b/clicache/src/LocalRegion.cpp
new file mode 100644
index 0000000..1313558
--- /dev/null
+++ b/clicache/src/LocalRegion.cpp
@@ -0,0 +1,1005 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "begin_native.hpp"
+#include "geode/Region.hpp"
+#include "geode/Cache.hpp"
+#include "end_native.hpp"
+
+#include "LocalRegion.hpp"
+#include "Cache.hpp"
+#include "CacheStatistics.hpp"
+#include "AttributesMutator.hpp"
+#include "RegionEntry.hpp"
+#include "impl/AuthenticatedCache.hpp"
+#include "impl/SafeConvert.hpp"
+
+using namespace System;
+
+namespace Apache
+{
+  namespace Geode
+  {
+    namespace Client
+    {
+
+      generic<class TKey, class TValue>
+      TValue LocalRegion<TKey, TValue>::Get(TKey key, Object^ callbackArg)
+      {
+        native::CacheableKeyPtr keyptr = Serializable::GetUnmanagedValueGeneric<TKey>( key, m_nativeptr->get()->getCache().get() );
+        auto nativeptr= this->getRegionEntryValue(keyptr);
+        if (nativeptr == nullptr)
+        {
+          throw gcnew KeyNotFoundException("The given key was not present in the region");
+        }
+        TValue returnVal = Serializable::GetManagedValueGeneric<TValue>( nativeptr );
+        return returnVal;        
+      }     
+
+      generic<class TKey, class TValue>
+      apache::geode::client::SerializablePtr LocalRegion<TKey, TValue>::getRegionEntryValue(apache::geode::client::CacheableKeyPtr& keyptr)
+      {
+        _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+          try
+          {
+            if (auto entryPtr = m_nativeptr->get()->getEntry(keyptr)) {
+              return entryPtr->getValue();
+            }
+            else {
+              return nullptr;
+            }
+          }
+          finally
+          {
+            GC::KeepAlive(m_nativeptr);
+          }
+        _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+      }
+
+      generic<class TKey, class TValue>
+      void LocalRegion<TKey, TValue>::Put(TKey key, TValue value, Object^ callbackArg)
+      {
+        _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+
+        try
+        {
+          native::CacheableKeyPtr keyptr = Serializable::GetUnmanagedValueGeneric<TKey>( key, m_nativeptr->get()->getCache().get() );
+          native::CacheablePtr valueptr = Serializable::GetUnmanagedValueGeneric<TValue>( value, m_nativeptr->get()->getCache().get() );        
+          native::UserDataPtr callbackptr = Serializable::GetUnmanagedValueGeneric<Object^>( callbackArg, m_nativeptr->get()->getCache().get() );
+          m_nativeptr->get()->localPut( keyptr, valueptr, callbackptr );
+        }
+        finally
+        {
+          GC::KeepAlive(m_nativeptr);
+        }
+
+        _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+      }
+
+      generic<class TKey, class TValue>
+      TValue LocalRegion<TKey, TValue>::default::get(TKey key)
+      { 
+        native::CacheableKeyPtr keyptr = Serializable::GetUnmanagedValueGeneric<TKey>( key, m_nativeptr->get()->getCache().get() );
+        auto nativeptr = this->getRegionEntryValue(keyptr);
+        if (nativeptr == nullptr)
+        {
+          throw gcnew KeyNotFoundException("The given key was not present in the region");
+        }
+        TValue returnVal = Serializable::GetManagedValueGeneric<TValue>( nativeptr );
+        return returnVal;
+      }
+
+      generic<class TKey, class TValue>      
+      void LocalRegion<TKey, TValue>::default::set(TKey key, TValue value)
+      {
+        _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+
+        try
+        {
+          native::CacheableKeyPtr keyptr = Serializable::GetUnmanagedValueGeneric<TKey>( key, m_nativeptr->get()->getCache().get() );
+          native::CacheablePtr valueptr = Serializable::GetUnmanagedValueGeneric<TValue>( value, m_nativeptr->get()->getCache().get() );
+          m_nativeptr->get()->localPut( keyptr, valueptr );
+        }
+        finally
+        {
+          GC::KeepAlive(m_nativeptr);
+        }
+
+        _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+      }
+
+      generic<class TKey, class TValue>
+      System::Collections::Generic::IEnumerator<KeyValuePair<TKey,TValue>>^ 
+        LocalRegion<TKey, TValue>::GetEnumerator()
+      {
+        apache::geode::client::VectorOfRegionEntry vc;
+
+        _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+
+          try
+          {
+            m_nativeptr->get()->entries( vc, false );
+          }
+          finally
+          {
+            GC::KeepAlive(m_nativeptr);
+          }
+
+        _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ 
+
+        auto toArray = gcnew array<KeyValuePair<TKey,TValue>>(static_cast<int>(vc.size()));
+        for( System::Int32 index = 0; index < vc.size( ); index++ )
+        {
+          auto nativeptr = vc[ index ];  
+          TKey key = Serializable::GetManagedValueGeneric<TKey> (nativeptr->getKey());
+          TValue val = Serializable::GetManagedValueGeneric<TValue> (nativeptr->getValue());
+          toArray[ index ] = KeyValuePair<TKey,TValue>(key, val);           
+        }                      
+        return ((System::Collections::Generic::IEnumerable<KeyValuePair<TKey,TValue>>^)toArray)->GetEnumerator();
+      }
+
+      generic<class TKey, class TValue>
+      System::Collections::IEnumerator^ 
+        LocalRegion<TKey, TValue>::GetEnumeratorOld()
+      {
+        apache::geode::client::VectorOfRegionEntry vc;
+
+        _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+
+          try
+          {
+            m_nativeptr->get()->entries( vc, false );
+          }
+          finally
+          {
+            GC::KeepAlive(m_nativeptr);
+          }
+
+        _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+
+        auto toArray = gcnew array<Object^>(static_cast<int>(vc.size()));
+        for( System::Int32 index = 0; index < vc.size( ); index++ )
+        {
+          auto nativeptr = vc[ index ];                       
+          TKey key = Serializable::GetManagedValueGeneric<TKey> (nativeptr->getKey());
+          TValue val = Serializable::GetManagedValueGeneric<TValue> (nativeptr->getValue());            
+          toArray[ index ] = KeyValuePair<TKey,TValue>(key, val);           
+        }
+        return ((System::Collections::Generic::IEnumerable<Object^>^)toArray)->GetEnumerator();        
+      }
+
+
+      generic<class TKey, class TValue>
+      bool LocalRegion<TKey, TValue>::AreValuesEqual(apache::geode::client::CacheablePtr& val1, apache::geode::client::CacheablePtr& val2)
+      {
+        if ( val1 == nullptr && val2 == nullptr )
+        {
+          return true;
+        }
+        else if ((val1 == nullptr && val2 != nullptr) || (val1 != nullptr && val2 == nullptr))
+        {
+          return false;
+        }
+        else if( val1 != nullptr && val2 != nullptr )
+        {
+          if (val1->classId() != val2->classId() || val1->typeId() != val2->typeId())
+          {
+            return false;
+          }
+          std::unique_ptr<apache::geode::client::DataOutput> out1 = m_nativeptr->get_shared_ptr()->getCache()->createDataOutput();
+          std::unique_ptr<apache::geode::client::DataOutput> out2 = m_nativeptr->get_shared_ptr()->getCache()->createDataOutput();
+          val1->toData(*out1);
+          val2->toData(*out2);
+          if ( out1->getBufferLength() != out2->getBufferLength() )
+          {
+            return false;
+          }
+          else if (memcmp(out1->getBuffer(), out2->getBuffer(), out1->getBufferLength()) != 0)
+          {
+            return false;
+          }
+          return true;
+        }
+        return false;
+      }
+
+      generic<class TKey, class TValue> 
+      bool LocalRegion<TKey, TValue>::Contains(KeyValuePair<TKey,TValue> keyValuePair) 
+      { 
+        auto keyptr = Serializable::GetUnmanagedValueGeneric<TKey>( keyValuePair.Key, m_nativeptr->get()->getCache().get() ); 
+        auto nativeptr = this->getRegionEntryValue(keyptr);
+        //This means that key is not present.
+        if (nativeptr == nullptr) {
+          return false;
+        }        
+        TValue value = Serializable::GetManagedValueGeneric<TValue>(nativeptr);
+        return ((Object^)value)->Equals(keyValuePair.Value);
+      } 
+
+      generic<class TKey, class TValue>
+      bool LocalRegion<TKey, TValue>::ContainsKey(TKey key)
+      {
+        _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+
+        try
+        {
+          auto keyptr = Serializable::GetUnmanagedValueGeneric<TKey>( key, m_nativeptr->get()->getCache().get() );          
+          return m_nativeptr->get()->containsKey(keyptr);
+        }
+        finally
+        {
+          GC::KeepAlive(m_nativeptr);
+        }
+
+        _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+      }
+
+      generic<class TKey, class TValue>
+      bool LocalRegion<TKey, TValue>::TryGetValue(TKey key, TValue %val)
+      {        
+        auto keyptr = Serializable::GetUnmanagedValueGeneric<TKey>( key, m_nativeptr->get()->getCache().get() );
+        auto nativeptr = this->getRegionEntryValue(keyptr);
+        if (nativeptr == nullptr) {            
+          val = TValue();
+          return false;
+        }
+        else {
+          val = Serializable::GetManagedValueGeneric<TValue>( nativeptr );
+          return true;
+        }          
+      }      
+
+      generic<class TKey, class TValue>
+      System::Collections::Generic::ICollection<TKey>^ LocalRegion<TKey, TValue>::Keys::get()
+      {
+        _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+
+        apache::geode::client::VectorOfCacheableKey vc;
+        try
+        {
+          m_nativeptr->get()->keys(vc);
+        }
+        finally
+        {
+          GC::KeepAlive(m_nativeptr);
+        }
+
+        auto keyarr =  gcnew array<TKey>( static_cast<int>(vc.size( )) );
+        for( System::Int32 index = 0; index < vc.size( ); index++ )
+        {            
+          auto& nativeptr = vc[ index ];
+          keyarr[ index ] = Serializable::GetManagedValueGeneric<TKey>(nativeptr);
+        }
+        auto collectionlist = (System::Collections::Generic::ICollection<TKey>^)keyarr;
+        return collectionlist;
+
+        _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+      }
+
+      generic<class TKey, class TValue>
+      System::Collections::Generic::ICollection<TValue>^ LocalRegion<TKey, TValue>::Values::get()
+      {
+        _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+
+          apache::geode::client::VectorOfCacheable vc;
+          try
+          {
+            m_nativeptr->get()->values( vc );
+          }
+          finally
+          {
+            GC::KeepAlive(m_nativeptr);
+          }
+
+          //List<TValue>^ collectionlist = gcnew List<TValue>(vc.size());
+          auto valarr = gcnew array<TValue>( static_cast<int>(vc.size( )) );
+          for( System::Int32 index = 0; index < vc.size( ); index++ )
+          {
+            auto& nativeptr = vc[ index ];            
+            valarr[ index ] = Serializable::GetManagedValueGeneric<TValue>(nativeptr);
+          }
+          auto collectionlist = (System::Collections::Generic::ICollection<TValue>^)valarr;
+          return collectionlist;
+
+        _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+      }
+
+      generic<class TKey, class TValue>
+      void LocalRegion<TKey, TValue>::Add(TKey key, TValue value)
+      {
+        _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+
+          try
+          {
+            native::CacheableKeyPtr keyptr = Serializable::GetUnmanagedValueGeneric<TKey>( key, m_nativeptr->get()->getCache().get() );
+            native::CacheablePtr valueptr = Serializable::GetUnmanagedValueGeneric<TValue>( value, m_nativeptr->get()->getCache().get() );
+            m_nativeptr->get()->localCreate( keyptr, valueptr );
+          }
+          finally
+          {
+            GC::KeepAlive(m_nativeptr);
+          }
+
+        _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+      }
+
+      generic<class TKey, class TValue>
+      void LocalRegion<TKey, TValue>::Add(KeyValuePair<TKey, TValue> keyValuePair)
+      {
+        _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+
+          try
+          {
+            native::CacheableKeyPtr keyptr = Serializable::GetUnmanagedValueGeneric<TKey>( keyValuePair.Key, m_nativeptr->get()->getCache().get() );
+            native::CacheablePtr valueptr = Serializable::GetUnmanagedValueGeneric<TValue>( keyValuePair.Value, m_nativeptr->get()->getCache().get() );
+            m_nativeptr->get()->localCreate( keyptr, valueptr );
+          }
+          finally
+          {
+            GC::KeepAlive(m_nativeptr);
+          }
+
+       _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+      }
+
+      generic<class TKey, class TValue>
+      void LocalRegion<TKey, TValue>::Add(TKey key, TValue value, Object^ callbackArg)
+      {
+          _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+
+          try
+          {
+            native::CacheableKeyPtr keyptr = Serializable::GetUnmanagedValueGeneric<TKey>( key, m_nativeptr->get()->getCache().get() );
+            native::CacheablePtr valueptr = Serializable::GetUnmanagedValueGeneric<TValue>( value, m_nativeptr->get()->getCache().get() );          
+            native::UserDataPtr callbackptr = Serializable::GetUnmanagedValueGeneric<Object^>( callbackArg, m_nativeptr->get()->getCache().get() );
+            m_nativeptr->get()->localCreate( keyptr, valueptr, callbackptr );
+          }
+          finally
+          {
+            GC::KeepAlive(m_nativeptr);
+          }
+
+         _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+      }
+
+      generic<class TKey, class TValue>
+      bool LocalRegion<TKey, TValue>::Remove(TKey key)
+      {
+        _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+    
+          try
+          {
+            native::CacheableKeyPtr keyptr = Serializable::GetUnmanagedValueGeneric<TKey>(key, m_nativeptr->get()->getCache().get());
+            m_nativeptr->get()->localDestroy(keyptr);
+            return true;
+          }
+          catch (apache::geode::client::EntryNotFoundException /*ex*/)
+          {
+            return false;
+          }
+          finally
+          {
+            GC::KeepAlive(m_nativeptr);
+          }
+
+        _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+        
+      }
+
+      generic<class TKey, class TValue>
+      bool LocalRegion<TKey, TValue>::Remove( TKey key, Object^ callbackArg )
+      {
+         _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+           try
+           {
+             native::CacheableKeyPtr keyptr = Serializable::GetUnmanagedValueGeneric<TKey>(key, m_nativeptr->get()->getCache().get());
+             native::UserDataPtr callbackptr = Serializable::GetUnmanagedValueGeneric<Object^>(callbackArg, m_nativeptr->get()->getCache().get());
+             m_nativeptr->get()->localDestroy(keyptr, callbackptr);
+             return true;
+           }
+           catch (apache::geode::client::EntryNotFoundException /*ex*/)
+           {
+             return false;
+           }
+           finally
+           {
+             GC::KeepAlive(m_nativeptr);
+           }
+        _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+      }
+
+      generic<class TKey, class TValue>
+      bool LocalRegion<TKey, TValue>::Remove(KeyValuePair<TKey,TValue> keyValuePair)
+      {
+        _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+
+          try
+          {
+            native::CacheableKeyPtr keyptr = Serializable::GetUnmanagedValueGeneric<TKey>( keyValuePair.Key, m_nativeptr->get()->getCache().get() );
+            native::CacheablePtr valueptr = Serializable::GetUnmanagedValueGeneric<TValue>( keyValuePair.Value, m_nativeptr->get()->getCache().get() );
+            return m_nativeptr->get()->localRemove(keyptr, valueptr);
+          }
+          finally
+          {
+            GC::KeepAlive(m_nativeptr);
+          }
+
+         _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+      }
+
+      generic<class TKey, class TValue>
+      bool LocalRegion<TKey, TValue>::Remove(TKey key, TValue value, Object^ callbackArg)
+      {
+        _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+
+          try
+          {
+            native::CacheableKeyPtr keyptr = Serializable::GetUnmanagedValueGeneric<TKey>(key, m_nativeptr->get()->getCache().get());
+            native::CacheablePtr valueptr = Serializable::GetUnmanagedValueGeneric<TValue>(value, m_nativeptr->get()->getCache().get());
+            native::UserDataPtr callbackptr = Serializable::GetUnmanagedValueGeneric<Object^>(callbackArg, m_nativeptr->get()->getCache().get());
+            return m_nativeptr->get()->localRemove(keyptr, valueptr, callbackptr);
+          }
+          finally
+          {
+            GC::KeepAlive(m_nativeptr);
+          }
+
+         _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+      }
+
+      generic<class TKey, class TValue>
+      void LocalRegion<TKey, TValue>::InvalidateRegion()
+      {
+        _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+
+          InvalidateRegion( nullptr );
+
+        _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+      }
+
+      generic<class TKey, class TValue>
+      void LocalRegion<TKey, TValue>::InvalidateRegion(Object^ callbackArg)
+      {
+        _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+                    
+          try
+          {
+            native::UserDataPtr callbackptr = Serializable::GetUnmanagedValueGeneric<Object^>( callbackArg, m_nativeptr->get()->getCache().get() );
+            m_nativeptr->get()->localInvalidateRegion( callbackptr );
+          }
+          finally
+          {
+            GC::KeepAlive(m_nativeptr);
+          }
+      
+        _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+      }
+
+      generic<class TKey, class TValue>
+      void LocalRegion<TKey, TValue>::DestroyRegion()
+      {
+        _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+
+          DestroyRegion( nullptr );
+
+        _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+      }
+
+      generic<class TKey, class TValue>
+      void LocalRegion<TKey, TValue>::DestroyRegion(Object^ callbackArg)
+      {
+        _GF_MG_EXCEPTION_TRY2/* due to auto replace */          
+          try
+          {
+            native::UserDataPtr callbackptr = Serializable::GetUnmanagedValueGeneric<Object^>( callbackArg, m_nativeptr->get()->getCache().get() );
+            m_nativeptr->get()->localDestroyRegion( callbackptr );
+          }
+          finally
+          {
+            GC::KeepAlive(m_nativeptr);
+          }
+        _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+      }
+
+      generic<class TKey, class TValue>
+      void LocalRegion<TKey, TValue>::Invalidate(TKey key)
+      {
+        _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+
+         Invalidate(key, nullptr);
+
+        _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+
+      }
+
+      generic<class TKey, class TValue>
+      void LocalRegion<TKey, TValue>::Invalidate(TKey key, Object^ callbackArg)
+      {
+        _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+
+          try
+          {
+            native::CacheableKeyPtr keyptr = Serializable::GetUnmanagedValueGeneric<TKey>( key, m_nativeptr->get()->getCache().get() );          
+            native::UserDataPtr callbackptr = Serializable::GetUnmanagedValueGeneric<Object^>( callbackArg, m_nativeptr->get()->getCache().get() );            
+            m_nativeptr->get()->localInvalidate( keyptr, callbackptr );
+          }
+          finally
+          {
+            GC::KeepAlive(m_nativeptr);
+          }
+
+        _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+      }
+
+      generic<class TKey, class TValue>
+      void LocalRegion<TKey, TValue>::PutAll(System::Collections::Generic::IDictionary<TKey, TValue>^ map)
+      {
+        throw gcnew System::NotSupportedException;
+      }
+
+      generic<class TKey, class TValue>
+      void LocalRegion<TKey, TValue>::PutAll(System::Collections::Generic::IDictionary<TKey, TValue>^ map, int timeout)
+      {
+        throw gcnew System::NotSupportedException;
+      }
+
+      generic<class TKey, class TValue>
+      void LocalRegion<TKey, TValue>::PutAll(System::Collections::Generic::IDictionary<TKey, TValue>^ map, int timeout, Object^ callbackArg)
+      {
+        throw gcnew System::NotSupportedException;
+      }
+
+      generic<class TKey, class TValue>
+      void LocalRegion<TKey, TValue>::GetAll(System::Collections::Generic::ICollection<TKey>^ keys, 
+        System::Collections::Generic::IDictionary<TKey, TValue>^ values, 
+        System::Collections::Generic::IDictionary<TKey, System::Exception^>^ exceptions)
+      {
+        throw gcnew System::NotSupportedException;      
+      }
+
+      generic<class TKey, class TValue>
+      void LocalRegion<TKey, TValue>::GetAll(System::Collections::Generic::ICollection<TKey>^ keys, 
+        System::Collections::Generic::IDictionary<TKey, TValue>^ values, 
+        System::Collections::Generic::IDictionary<TKey, System::Exception^>^ exceptions, 
+        bool addToLocalCache)
+      {    
+        throw gcnew System::NotSupportedException;
+      }
+
+      generic<class TKey, class TValue>
+      void LocalRegion<TKey, TValue>::GetAll(System::Collections::Generic::ICollection<TKey>^ keys, 
+        System::Collections::Generic::IDictionary<TKey, TValue>^ values, 
+        System::Collections::Generic::IDictionary<TKey, System::Exception^>^ exceptions, 
+        bool addToLocalCache, Object^ callbackArg)
+      {    
+        throw gcnew System::NotSupportedException;
+      }
+      
+      generic<class TKey, class TValue>
+      void LocalRegion<TKey, TValue>::RemoveAll(System::Collections::Generic::ICollection<TKey>^ keys)
+      {
+        throw gcnew System::NotSupportedException;
+      }
+      
+      generic<class TKey, class TValue>
+      void LocalRegion<TKey, TValue>::RemoveAll(System::Collections::Generic::ICollection<TKey>^ keys,
+            Object^ callbackArg)
+      {
+        throw gcnew System::NotSupportedException;
+      }
+
+      generic<class TKey, class TValue>
+      String^ LocalRegion<TKey, TValue>::Name::get()
+      { 
+        try
+        {
+          return ManagedString::Get( m_nativeptr->get()->getName( ) );
+        }
+        finally
+        {
+          GC::KeepAlive(m_nativeptr);
+        } 
+      } 
+
+      generic<class TKey, class TValue>
+      String^ LocalRegion<TKey, TValue>::FullPath::get()
+      { 
+        try
+        {
+          return ManagedString::Get( m_nativeptr->get()->getFullPath( ) );
+        }
+        finally
+        {
+          GC::KeepAlive(m_nativeptr);
+        } 
+      } 
+
+      generic<class TKey, class TValue>
+      IRegion<TKey, TValue>^ LocalRegion<TKey, TValue>::ParentRegion::get()
+      {
+        _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+
+          try
+          {
+            auto parentRegion = m_nativeptr->get()->getParentRegion( );
+            auto region = Region<TKey, TValue>::Create( parentRegion );
+            if (region == nullptr) {
+              return nullptr;
+            }
+            return region->GetLocalView();
+          }
+          finally
+          {
+            GC::KeepAlive(m_nativeptr);
+          }
+        _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+      }
+
+      generic<class TKey, class TValue>
+      Apache::Geode::Client::RegionAttributes<TKey, TValue>^ LocalRegion<TKey, TValue>::Attributes::get()
+      { 
+        _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+
+        try
+        {
+          return Apache::Geode::Client::RegionAttributes<TKey, TValue>::Create(m_nativeptr->get()->getAttributes());
+        }
+        finally
+        {
+          GC::KeepAlive(m_nativeptr);
+        }
+
+        _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+      } 
+
+      generic<class TKey, class TValue>      
+      AttributesMutator<TKey, TValue>^ LocalRegion<TKey, TValue>::AttributesMutator::get()
+      {
+        _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+
+          try
+          {
+            return Apache::Geode::Client::AttributesMutator<TKey, TValue>::Create(m_nativeptr->get()->getAttributesMutator());
+          }
+          finally
+          {
+            GC::KeepAlive(m_nativeptr);
+          }
+
+        _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+      }
+
+      generic<class TKey, class TValue>
+			Apache::Geode::Client::CacheStatistics^ LocalRegion<TKey, TValue>::Statistics::get()
+      {
+        _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+
+          try
+          {
+            return Apache::Geode::Client::CacheStatistics::Create(m_nativeptr->get()->getStatistics());
+          }
+          finally
+          {
+            GC::KeepAlive(m_nativeptr);
+          }
+
+        _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+      }
+
+      generic<class TKey, class TValue>
+      IRegion<TKey, TValue>^ LocalRegion<TKey, TValue>::GetSubRegion( String^ path )
+      {
+        _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+
+          try
+          {
+            ManagedString mg_path(path);
+            auto nativeptr = m_nativeptr->get()->getSubregion(mg_path.CharPtr);
+            auto region = Region<TKey, TValue>::Create(nativeptr);
+            if (region == nullptr) {
+              return nullptr;
+            }
+            return region->GetLocalView();
+          }
+          finally
+          {
+            GC::KeepAlive(m_nativeptr);
+          }
+
+        _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+      }
+
+      generic<class TKey, class TValue>
+      IRegion<TKey, TValue>^ LocalRegion<TKey, TValue>::CreateSubRegion( String^ subRegionName, 
+        Apache::Geode::Client::RegionAttributes<TKey, TValue>^ attributes)
+      {
+        _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+
+          try
+          {
+            ManagedString mg_subregionName(subRegionName);
+            return Region<TKey, TValue>::Create(m_nativeptr->get()->createSubregion(
+              mg_subregionName.CharPtr, __nullptr))->GetLocalView();
+          }
+          finally
+          {
+            GC::KeepAlive(m_nativeptr);
+          }
+
+        _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+
+      }
+
+      generic<class TKey, class TValue>
+      System::Collections::Generic::ICollection<IRegion<TKey, TValue>^>^ LocalRegion<TKey, TValue>::SubRegions( bool recursive )
+      {
+        _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+
+          apache::geode::client::VectorOfRegion vsr;
+          try
+          {
+            m_nativeptr->get()->subregions( recursive, vsr );
+          }
+          finally
+          {
+            GC::KeepAlive(m_nativeptr);
+          }
+          array<IRegion<TKey, TValue>^>^ subRegions =
+            gcnew array<IRegion<TKey, TValue>^>( static_cast<int>(vsr.size( )) );
+
+          for( System::Int32 index = 0; index < vsr.size( ); index++ )
+          {
+            auto nativeptr = vsr[ index ];
+            subRegions[ index ] = Region<TKey, TValue>::Create( nativeptr )->GetLocalView();
+          }
+          auto collection = (System::Collections::Generic::ICollection<IRegion<TKey, TValue>^>^)subRegions;
+          return collection;
+
+        _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+      }
+
+      generic<class TKey, class TValue>
+      RegionEntry<TKey, TValue>^ LocalRegion<TKey, TValue>::GetEntry( TKey key )
+      {
+        _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+
+          try
+          {
+            native::CacheableKeyPtr keyptr = Serializable::GetUnmanagedValueGeneric<TKey>(key, m_nativeptr->get()->getCache().get());
+            auto nativeptr = m_nativeptr->get()->getEntry(keyptr);
+            return RegionEntry<TKey, TValue>::Create(nativeptr);
+          }
+          finally
+          {
+            GC::KeepAlive(m_nativeptr);
+          }
+ 
+        _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+      }
+
+      generic<class TKey, class TValue>
+      System::Collections::Generic::ICollection<RegionEntry<TKey, TValue>^>^ LocalRegion<TKey, TValue>::GetEntries(bool recursive)
+      {
+         _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+
+          apache::geode::client::VectorOfRegionEntry vc;
+          try
+          {
+            m_nativeptr->get()->entries( vc, recursive );
+          }
+          finally
+          {
+            GC::KeepAlive(m_nativeptr);
+          }          
+          auto entryarr = gcnew array<RegionEntry<TKey, TValue>^>( static_cast<int>(vc.size( )) );
+
+          for( System::Int32 index = 0; index < vc.size( ); index++ )
+          {
+            auto nativeptr = vc[ index ] ;
+            entryarr[ index ] = RegionEntry<TKey, TValue>::Create( nativeptr );
+          }
+          auto collection = (System::Collections::Generic::ICollection<RegionEntry<TKey, TValue>^>^)entryarr;
+          return collection;
+
+         _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+        
+      }
+
+      generic<class TKey, class TValue>
+      IRegionService^ LocalRegion<TKey, TValue>::RegionService::get()
+      {        
+        _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+
+          try
+          {
+            auto regionService = m_nativeptr->get()->getRegionService();
+            if (auto realCache = std::dynamic_pointer_cast<apache::geode::client::Cache>(regionService))
+            {
+              return Apache::Geode::Client::Cache::Create(realCache);
+            }
+            else
+            {
+              return Apache::Geode::Client::AuthenticatedCache::Create(regionService);
+            }
+          }
+          finally
+          {
+            GC::KeepAlive(m_nativeptr);
+          }
+          
+        _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+      }
+
+      generic<class TKey, class TValue>
+      bool LocalRegion<TKey, TValue>::ContainsValueForKey( TKey key )
+      {
+         _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+
+           try
+           {
+             return m_nativeptr->get()->containsValueForKey(Serializable::GetUnmanagedValueGeneric<TKey>(key, m_nativeptr->get()->getCache().get()));
+           }
+           finally
+           {
+             GC::KeepAlive(m_nativeptr);
+           }
+
+         _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+      }
+
+      generic<class TKey, class TValue>
+      int LocalRegion<TKey, TValue>::Count::get()
+      {
+        try
+        {
+          return m_nativeptr->get()->size();
+        }
+        finally
+        {
+          GC::KeepAlive(m_nativeptr);
+        }
+      }
+
+      generic<class TKey, class TValue>
+      void LocalRegion<TKey, TValue>::Clear()
+      {
+        Clear(nullptr);
+      }
+
+      generic<class TKey, class TValue>
+      void LocalRegion<TKey, TValue>::Clear(Object^ callbackArg)
+      {
+        _GF_MG_EXCEPTION_TRY2/* due to auto replace */        
+          try
+          {
+            m_nativeptr->get()->localClear(Serializable::GetUnmanagedValueGeneric<Object^>( callbackArg, m_nativeptr->get()->getCache().get() ) );
+          }
+          finally
+          {
+            GC::KeepAlive(m_nativeptr);
+          }
+        _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+      }
+
+
+      generic<class TKey, class TValue>
+      void LocalRegion<TKey, TValue>::CopyTo(array<KeyValuePair<TKey,TValue>>^ toArray,
+        int startIdx)
+      {
+        if (toArray == nullptr)
+        {
+          throw gcnew System::ArgumentNullException;            
+        }
+        if (startIdx < 0)
+        {
+          throw gcnew System::ArgumentOutOfRangeException;
+        }
+
+        _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+
+        apache::geode::client::VectorOfRegionEntry vc;
+        try
+        {
+          m_nativeptr->get()->entries( vc, false );
+        }
+        finally
+        {
+          GC::KeepAlive(m_nativeptr);
+        }        
+
+        if (toArray->Rank > 1 || (vc.size() > (toArray->Length - startIdx)))
+        {
+          throw gcnew System::ArgumentException;
+        }          
+
+        for( System::Int32 index = 0; index < vc.size( ); index++ )
+        {
+          apache::geode::client::RegionEntryPtr nativeptr =  vc[ index ];                       
+          TKey key = Serializable::GetManagedValueGeneric<TKey> (nativeptr->getKey());
+          TValue val = Serializable::GetManagedValueGeneric<TValue> (nativeptr->getValue());            
+          toArray[ startIdx ] = KeyValuePair<TKey,TValue>(key, val);
+          ++startIdx;
+        }               
+
+        _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+      }
+
+      generic<class TKey, class TValue>
+      bool LocalRegion<TKey, TValue>::IsDestroyed::get()
+      {
+        try
+        {
+          return m_nativeptr->get()->isDestroyed();
+        }
+        finally
+        {
+          GC::KeepAlive(m_nativeptr);
+        }
+      }
+      
+      generic<class TKey, class TValue>
+      generic<class TResult>
+      ISelectResults<TResult>^ LocalRegion<TKey, TValue>::Query( String^ predicate )
+      {
+        throw gcnew System::NotSupportedException;
+      }
+
+      generic<class TKey, class TValue>
+      generic<class TResult>
+      ISelectResults<TResult>^ LocalRegion<TKey, TValue>::Query( String^ predicate, System::UInt32 timeout )
+      {
+        throw gcnew System::NotSupportedException;
+      }
+
+      generic<class TKey, class TValue>
+      bool LocalRegion<TKey, TValue>::ExistsValue( String^ predicate )
+      {
+        throw gcnew System::NotSupportedException;
+      }
+
+      generic<class TKey, class TValue>
+      bool LocalRegion<TKey, TValue>::ExistsValue( String^ predicate, System::UInt32 timeout )
+      {
+        throw gcnew System::NotSupportedException;
+      }
+
+      generic<class TKey, class TValue>
+      Object^ LocalRegion<TKey, TValue>::SelectValue( String^ predicate )
+      {
+        throw gcnew System::NotSupportedException;
+      }
+
+      generic<class TKey, class TValue>
+      Object^ LocalRegion<TKey, TValue>::SelectValue( String^ predicate, System::UInt32 timeout )
+      {
+        throw gcnew System::NotSupportedException;
+      }
+
+      generic<class TKey, class TValue>
+      ISubscriptionService<TKey>^ LocalRegion<TKey, TValue>::GetSubscriptionService()
+      {
+        throw gcnew System::NotSupportedException;
+      }
+
+      generic<class TKey, class TValue>
+      IRegion<TKey, TValue>^ LocalRegion<TKey, TValue>::GetLocalView()
+      {
+        throw gcnew System::NotSupportedException;
+      }
+    }  // namespace Client
+  }  // namespace Geode
+}  // namespace Apache