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

[08/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/StatisticsFactory.hpp
----------------------------------------------------------------------
diff --git a/clicache/src/StatisticsFactory.hpp b/clicache/src/StatisticsFactory.hpp
new file mode 100644
index 0000000..efce9c5
--- /dev/null
+++ b/clicache/src/StatisticsFactory.hpp
@@ -0,0 +1,273 @@
+/*
+ * 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/statistics/StatisticsFactory.hpp>
+#include <geode/statistics/StatisticsType.hpp>
+#include <geode/statistics/StatisticDescriptor.hpp>
+#include <geode/statistics/Statistics.hpp>
+#include "end_native.hpp"
+
+using namespace System;
+
+namespace Apache
+{
+  namespace Geode
+  {
+    namespace Client
+    {
+
+      ref class StatisticDescriptor;
+      ref class StatisticsType;
+      ref class Statistics;
+
+      /// <summary>
+      /// Instances of this interface provide methods that create instances
+      /// of <see cref="StatisticDescriptor" /> and <see cref="StatisticsType" />.
+      /// Every <see cref="StatisticsFactory" /> is also a type factory.
+      /// </summary>
+      /// <para>
+      /// A <c>StatisticsFactory</c> can create a <see cref="StatisticDescriptor" />
+      /// statistic of three numeric types:
+      /// <c>int</c>, <c>long</c>, and <c>double</c>.  A
+      /// statistic (<c>StatisticDescriptor</c>) can either be a
+      /// <I>gauge</I> meaning that its value can increase and decrease or a
+      /// <I>counter</I> meaning that its value is strictly increasing.
+      /// Marking a statistic as a counter allows the Geode Manager Console
+      /// to properly display a statistics whose value "wraps around" (that
+      /// is, exceeds its maximum value).
+      /// </para>
+      public ref class StatisticsFactory sealed
+      {
+      protected:
+        StatisticsFactory(){}
+        StatisticsFactory(StatisticsFactory^){}
+      public:
+        /// <summary>
+        /// Return a pre-existing statistics factory. Typically configured through
+        /// creation of a distributed system.
+        /// </summary>
+        //static StatisticsFactory^ GetExistingInstance();
+
+        /// <summary>
+        /// Creates and returns an int counter  <see cref="StatisticDescriptor" />
+        /// with the given <c>name</c>, <c>description</c>,
+        /// <c>units</c>, and with larger values indicating better performance.
+        /// </summary>
+        virtual StatisticDescriptor^ CreateIntCounter(String^ name, String^ description, String^ units, bool largerBetter);
+
+        /// <summary>
+        /// Creates and returns an int counter  <see cref="StatisticDescriptor" />
+        /// with the given <c>name</c>, <c>description</c>,
+        /// <c>units</c>.
+        /// </summary>
+        virtual StatisticDescriptor^ CreateIntCounter(String^ name, String^ description, String^ units);
+
+        /// <summary>
+        /// Creates and returns an long counter  <see cref="StatisticDescriptor" />
+        /// with the given <c>name</c>, <c>description</c>,
+        /// <c>units</c>, and with larger values indicating better performance.
+        /// </summary>
+        virtual StatisticDescriptor^ CreateLongCounter(String^ name, String^ description, String^ units, bool largerBetter);
+
+        /// <summary>
+        /// Creates and returns an long counter  <see cref="StatisticDescriptor" />
+        /// with the given <c>name</c>, <c>description</c>,
+        /// <c>units</c>.
+        /// </summary>
+        virtual StatisticDescriptor^ CreateLongCounter(String^ name, String^ description, String^ units);
+
+        /// <summary>
+        /// Creates and returns an double counter  <see cref="StatisticDescriptor" />
+        /// with the given <c>name</c>, <c>description</c>,
+        /// <c>units</c>, and with larger values indicating better performance.
+        /// </summary>
+
+        virtual StatisticDescriptor^ CreateDoubleCounter(String^ name, String^ description, String^ units, bool largerBetter);
+
+        /// <summary>
+        /// Creates and returns an double counter  <see cref="StatisticDescriptor" />
+        /// with the given <c>name</c>, <c>description</c>,
+        /// <c>units</c>.
+        /// </summary>
+        virtual StatisticDescriptor^ CreateDoubleCounter(String^ name, String^ description, String^ units);
+
+        /// <summary>
+        /// Creates and returns an int gauge  <see cref="StatisticDescriptor" />
+        /// with the given <c>name</c>, <c>description</c>,
+        /// <c>units</c>, and with smaller values indicating better performance.
+        /// </summary>
+        virtual StatisticDescriptor^ CreateIntGauge(String^ name, String^ description, String^ units, bool largerBetter);
+
+        /// <summary>
+        /// Creates and returns an int gauge  <see cref="StatisticDescriptor" />
+        /// with the given <c>name</c>, <c>description</c>,
+        /// <c>units</c>.
+        /// </summary>
+        virtual StatisticDescriptor^ CreateIntGauge(String^ name, String^ description, String^ units);
+
+        /// <summary>
+        /// Creates and returns an long gauge <see cref="StatisticDescriptor" />
+        /// with the given <c>name</c>, <c>description</c>,
+        /// <c>units</c>, and with smaller values indicating better performance.
+        /// </summary>
+        virtual StatisticDescriptor^ CreateLongGauge(String^ name, String^ description, String^ units, bool largerBetter);
+
+        /// <summary>
+        /// Creates and returns an long gauge <see cref="StatisticDescriptor" />
+        /// with the given <c>name</c>, <c>description</c>,
+        /// <c>units</c>.
+        /// </summary>
+        virtual StatisticDescriptor^ CreateLongGauge(String^ name, String^ description, String^ units);
+
+        /// <summary>
+        /// Creates and returns an double gauge <see cref="StatisticDescriptor" />
+        /// with the given <c>name</c>, <c>description</c>,
+        /// <c>units</c>, and with smaller values indicating better performance.
+        /// </summary>
+        virtual StatisticDescriptor^ CreateDoubleGauge(String^ name, String^ description, String^ units, bool largerBetter);
+
+        /// <summary>
+        /// Creates and returns an double gauge <see cref="StatisticDescriptor" />
+        /// with the given <c>name</c>, <c>description</c>,
+        /// <c>units</c>.
+        /// </summary>
+        virtual StatisticDescriptor^ CreateDoubleGauge(String^ name, String^ description, String^ units);
+
+        /// <summary>
+        /// Creates and returns a <see cref="StatisticsType" /> 
+        /// with the given <c>name</c>, <c>description</c>,and <see cref="StatisticDescriptor" />
+        /// </summary>
+        /// <exception cref="IllegalArgumentException">
+        /// if a type with the given <c>name</c> already exists.
+        /// </exception>
+        virtual StatisticsType^ CreateType(String^ name, String^ description,
+                                           array<StatisticDescriptor^>^ stats, System::Int32 statsLength);
+
+        /// <summary>
+        /// Finds and returns an already created <see cref="StatisticsType" /> 
+        /// with the given <c>name</c>. Returns <c>null</c> if the type does not exist.
+        /// </summary>
+        virtual StatisticsType^ FindType(String^ name);
+
+        /// <summary>
+        /// Creates and returns a <see cref="Statistics" /> instance of the given <see cref="StatisticsType" /> type, <c>textId</c>, and with default ids.
+        /// </summary>
+        /// <para>
+        /// The created instance may not be <see cref="Statistics#isAtomic" /> atomic.
+        /// </para>
+        virtual Statistics^ CreateStatistics(StatisticsType^ type);
+
+        /// <summary>
+        /// Creates and returns a <see cref="Statistics" /> instance of the given <see cref="StatisticsType" /> type, <c>textId</c>, and with a default numeric id.
+        /// </summary>
+        /// <para>
+        /// The created instance may not be <see cref="Statistics#isAtomic" /> atomic.
+        /// </para>
+        virtual Statistics^ CreateStatistics(StatisticsType^ type, String^ textId);
+
+        /// <summary>
+        /// Creates and returns a <see cref="Statistics" /> instance of the given <see cref="StatisticsType" /> type, <c>textId</c>, and <c>numericId</c>.
+        /// </summary>
+        /// <para>
+        /// The created instance may not be <see cref="Statistics#isAtomic" /> atomic.
+        /// </para>
+        virtual Statistics^ CreateStatistics(StatisticsType^ type, String^ textId, System::Int64 numericId);
+
+        /// <summary>
+        /// Creates and returns a <see cref="Statistics" /> instance of the given <see cref="StatisticsType" /> type, <c>textId</c>, and with default ids.
+        /// </summary>
+        /// <para>
+        /// The created instance will be <see cref="Statistics#isAtomic" /> atomic.
+        /// </para>
+        virtual Statistics^ CreateAtomicStatistics(StatisticsType^ type);
+
+        /// <summary>
+        /// Creates and returns a <see cref="Statistics" /> instance of the given <see cref="StatisticsType" /> type, <c>textId</c>, and with a default numeric id.
+        /// </summary>
+        /// <para>
+        /// The created instance will be <see cref="Statistics#isAtomic" /> atomic.
+        /// </para>
+        virtual Statistics^ CreateAtomicStatistics(StatisticsType^ type, String^ textId);
+
+        /// <summary>
+        /// Creates and returns a <see cref="Statistics" /> instance of the given <see cref="StatisticsType" /> type, <c>textId</c>, and <c>numericId</c>.
+        /// </summary>
+        /// <para>
+        /// The created instance will be <see cref="Statistics#isAtomic" /> atomic.
+        /// </para>
+        virtual Statistics^ CreateAtomicStatistics(StatisticsType^ type, String^ textId, System::Int64 numericId);
+
+        /// <summary>
+        /// Return the first instance that matches the type, or NULL
+        /// </summary>
+        virtual Statistics^ FindFirstStatisticsByType(StatisticsType^ type);
+
+        /// <summary>
+        /// Returns a name that can be used to identify the manager
+        /// </summary>
+        virtual property String^ Name
+        {
+          virtual String^ get();
+        }
+
+        /// <summary>
+        /// Returns a numeric id that can be used to identify the manager
+        /// </summary>
+        virtual property System::Int64 ID
+        {
+          virtual System::Int64 get();
+        }
+
+      internal:
+        /// <summary>
+        /// Internal factory function to wrap a native object pointer inside
+        /// this managed class, with null pointer check.
+        /// </summary>
+        /// <param name="nativeptr">native object pointer</param>
+        /// <returns>
+        /// the managed wrapper object, or null if the native pointer is null.
+        /// </returns>
+        inline static StatisticsFactory^ Create(
+          apache::geode::statistics::StatisticsFactory* nativeptr)
+        {
+          return __nullptr == nativeptr ? nullptr :
+            gcnew StatisticsFactory( nativeptr );
+        }
+
+      private:
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline StatisticsFactory(apache::geode::statistics::StatisticsFactory* nativeptr)
+          : m_nativeptr( nativeptr )
+        {
+        }
+
+        apache::geode::statistics::StatisticsFactory* m_nativeptr;
+      };
+    }  // namespace Client
+  }  // namespace Geode
+}  // namespace Apache
+
+

http://git-wip-us.apache.org/repos/asf/geode-native/blob/6cbd424f/clicache/src/StatisticsType.cpp
----------------------------------------------------------------------
diff --git a/clicache/src/StatisticsType.cpp b/clicache/src/StatisticsType.cpp
new file mode 100644
index 0000000..117f7ee
--- /dev/null
+++ b/clicache/src/StatisticsType.cpp
@@ -0,0 +1,85 @@
+/*
+ * 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 "geode_includes.hpp"
+#include "StatisticsType.hpp"
+#include "StatisticDescriptor.hpp"
+
+#include "impl/ManagedString.hpp"
+#include "ExceptionTypes.hpp"
+#include "impl/SafeConvert.hpp"
+
+
+namespace Apache
+{
+  namespace Geode
+  {
+    namespace Client
+    {
+
+      String^ StatisticsType::Name::get()
+      {
+        return ManagedString::Get( m_nativeptr->getName() );
+      }
+
+      String^ StatisticsType::Description::get()
+      {
+        return ManagedString::Get( m_nativeptr->getDescription() );
+      }
+
+      array<StatisticDescriptor^>^ StatisticsType::Statistics::get()
+      {
+        _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+
+          apache::geode::statistics::StatisticDescriptor ** nativedescriptors = m_nativeptr->getStatistics();
+          array<StatisticDescriptor^>^ descriptors = gcnew array<StatisticDescriptor^>(m_nativeptr->getDescriptorsCount());
+          for (int item = 0; item < m_nativeptr->getDescriptorsCount(); item++)
+          {
+            descriptors[item] = StatisticDescriptor::Create(nativedescriptors[item]);
+          }
+          return descriptors;
+
+        _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+      }
+
+      System::Int32 StatisticsType::NameToId( String^ name )
+      {
+        ManagedString mg_name( name );
+        _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+          return m_nativeptr->nameToId(mg_name.CharPtr);
+        _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+      }
+
+      StatisticDescriptor^ StatisticsType::NameToDescriptor( String^ name )
+      {
+        ManagedString mg_name( name );
+        _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+          return StatisticDescriptor::Create(m_nativeptr->nameToDescriptor(mg_name.CharPtr));
+        _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+      }
+
+      System::Int32 StatisticsType::DescriptorsCount::get()
+      {
+        return m_nativeptr->getDescriptorsCount();
+    }  // namespace Client
+  }  // namespace Geode
+}  // namespace Apache
+
+ } //namespace 
+

http://git-wip-us.apache.org/repos/asf/geode-native/blob/6cbd424f/clicache/src/StatisticsType.hpp
----------------------------------------------------------------------
diff --git a/clicache/src/StatisticsType.hpp b/clicache/src/StatisticsType.hpp
new file mode 100644
index 0000000..6644b34
--- /dev/null
+++ b/clicache/src/StatisticsType.hpp
@@ -0,0 +1,144 @@
+/*
+ * 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/statistics/StatisticsType.hpp>
+#include <geode/statistics/StatisticDescriptor.hpp>
+#include "end_native.hpp"
+
+using namespace System;
+
+namespace Apache
+{
+  namespace Geode
+  {
+    namespace Client
+    {
+      ref class StatisticDescriptor;
+
+      /// <summary>
+      /// This class is used to describe a logical collection of StatisticDescriptors.These descriptions
+      /// are used to create an instance of <see cref="Statistics" /> class.
+      /// </summary>
+      /// <para>
+      /// To get an instance of this interface use an instance of
+      /// <see cref="StatisticsFactory" /> class.
+      /// </para>
+      public ref class StatisticsType sealed
+      {
+      public:
+        /// <summary>
+        /// Returns the name of this statistics type.
+        /// </summary>
+        virtual property String^ Name
+        {
+          virtual String^ get( );
+        }
+
+        /// <summary>
+        /// Returns a description of this statistics type.
+        /// </summary>
+        virtual property String^ Description
+        {
+          virtual String^ get( );
+        }
+
+        /// <summary>
+        /// Returns descriptions of the statistics that this statistics type
+        /// gathers together.
+        /// </summary>
+        virtual property array<StatisticDescriptor^>^ Statistics
+        {
+          virtual array<StatisticDescriptor^>^ get( );
+        }
+
+        /// <summary>
+        /// Returns the id of the statistic with the given name in this
+        /// statistics instance.
+        /// </summary>
+        /// <param name="name">the statistic name</param>
+        /// <returns>the id of the statistic with the given name</returns>
+        /// <exception cref="IllegalArgumentException">
+        /// if no statistic named <c>name</c> exists in this
+        /// statistic instance.
+        /// </exception>
+        virtual System::Int32 NameToId(String^ name);
+
+        /// <summary>
+        /// Returns the descriptor of the statistic with the given name in this
+        /// statistics instance.
+        /// </summary>
+        /// <param name="name">the statistic name</param>
+        /// <returns>the descriptor of the statistic with the given name</returns>
+        /// <exception cref="IllegalArgumentException">
+        /// if no statistic named <c>name</c> exists in this
+        /// statistic instance.
+        /// </exception>
+        virtual StatisticDescriptor^ NameToDescriptor(String^ name);
+
+        /// <summary>
+        /// Returns the total number of statistics descriptors in the type.
+        /// </summary>
+        virtual property System::Int32 DescriptorsCount
+        {
+          virtual System::Int32 get( );
+        }
+
+      internal:
+        /// <summary>
+        /// Internal factory function to wrap a native object pointer inside
+        /// this managed class, with null pointer check.
+        /// </summary>
+        /// <param name="nativeptr">native object pointer</param>
+        /// <returns>
+        /// the managed wrapper object, or null if the native pointer is null.
+        /// </returns>
+        inline static StatisticsType^ Create(
+          apache::geode::statistics::StatisticsType* nativeptr )
+        {
+          return __nullptr == nativeptr ? nullptr :
+            gcnew StatisticsType( nativeptr );
+        }
+
+        apache::geode::statistics::StatisticsType* GetNative()
+        {
+          return m_nativeptr;
+        }
+
+      private:
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline StatisticsType( apache::geode::statistics::StatisticsType* nativeptr )
+          : m_nativeptr( nativeptr )
+        {
+        }
+
+        apache::geode::statistics::StatisticsType* m_nativeptr;
+
+      };
+    }  // namespace Client
+  }  // namespace Geode
+}  // namespace Apache
+
+

http://git-wip-us.apache.org/repos/asf/geode-native/blob/6cbd424f/clicache/src/Struct.cpp
----------------------------------------------------------------------
diff --git a/clicache/src/Struct.cpp b/clicache/src/Struct.cpp
new file mode 100644
index 0000000..213703f
--- /dev/null
+++ b/clicache/src/Struct.cpp
@@ -0,0 +1,117 @@
+/*
+ * 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 "geode_includes.hpp"
+#include "begin_native.hpp"
+#include <geode/Struct.hpp>
+#include "end_native.hpp"
+
+#include "Struct.hpp"
+#include "StructSet.hpp"
+#include "ExceptionTypes.hpp"
+#include "impl/SafeConvert.hpp"
+
+using namespace System;
+
+namespace Apache
+{
+  namespace Geode
+  {
+    namespace Client
+    {
+      namespace native = apache::geode::client;
+
+      Object^ Struct::default::get(size_t index)
+      {
+        try
+        {
+          return (Serializable::GetManagedValueGeneric<Object^>(
+            static_cast<native::Struct*>(m_nativeptr->get())->operator[](static_cast<System::Int32>(index))));
+        }
+        finally
+        {
+          GC::KeepAlive(m_nativeptr);
+        }
+      }
+
+      Object^ Struct::default::get(String^ fieldName)
+      {
+        ManagedString mg_fieldName(fieldName);
+        try
+        {
+          return (Serializable::GetManagedValueGeneric<Object^>(
+            static_cast<native::Struct*>(m_nativeptr->get())->operator[](mg_fieldName.CharPtr)));
+        }
+        finally
+        {
+          GC::KeepAlive(m_nativeptr);
+        }
+      }
+
+      StructSet<Object^>^ Struct::Set::get()
+      {
+        try
+        {
+          return StructSet</*TResult*/Object^>::Create(
+            static_cast<native::Struct*>(m_nativeptr->get())->getStructSet());
+        }
+        finally
+        {
+          GC::KeepAlive(m_nativeptr);
+        }
+      }
+
+
+      bool Struct/*<TResult>*/::HasNext()
+      {
+        try
+        {
+          return static_cast<native::Struct*>(m_nativeptr->get())->hasNext();
+        }
+        finally
+        {
+          GC::KeepAlive(m_nativeptr);
+        }
+      }
+
+      size_t Struct/*<TResult>*/::Length::get()
+      {
+        try
+        {
+          return static_cast<native::Struct*>(m_nativeptr->get())->length();
+        }
+        finally
+        {
+          GC::KeepAlive(m_nativeptr);
+        }
+      }
+
+      Object^ Struct/*<TResult>*/::Next()
+      {
+        try
+        {
+          return (Serializable::GetManagedValueGeneric<Object^>(
+            static_cast<native::Struct*>(m_nativeptr->get())->next()));
+        }
+        finally
+        {
+          GC::KeepAlive(m_nativeptr);
+        }
+      }
+    }  // namespace Client
+  }  // namespace Geode
+}  // namespace Apache

http://git-wip-us.apache.org/repos/asf/geode-native/blob/6cbd424f/clicache/src/Struct.hpp
----------------------------------------------------------------------
diff --git a/clicache/src/Struct.hpp b/clicache/src/Struct.hpp
new file mode 100644
index 0000000..9b43820
--- /dev/null
+++ b/clicache/src/Struct.hpp
@@ -0,0 +1,148 @@
+/*
+ * 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 "Serializable.hpp"
+#include "begin_native.hpp"
+#include <geode/Struct.hpp>
+#include "end_native.hpp"
+
+
+using namespace System;
+
+namespace Apache
+{
+  namespace Geode
+  {
+    namespace Client
+    {
+
+      generic<class TResult>
+      ref class StructSet;
+
+      /// <summary>
+      /// Encapsulates a row of query struct set.
+      /// </summary>
+      /// <remarks>
+      /// A Struct has a StructSet as its parent. It contains the field values
+      /// returned after executing a Query obtained from a QueryService which in turn
+      /// is obtained from a Cache.
+      /// </remarks>
+      //generic<class TResult>
+      public ref class Struct sealed
+        : public Apache::Geode::Client::Serializable
+      {
+      public:
+
+        /// <summary>
+        /// Get the field value for the given index number.
+        /// </summary>
+        /// <returns>
+        /// The value of the field or null if index is out of bounds.
+        /// </returns>
+        property /*Apache::Geode::Client::IGeodeSerializable^*//*TResult*/ Object^ GFINDEXER( size_t )
+        {
+          /*Apache::Geode::Client::IGeodeSerializable^*/ /*TResult*/ Object^ get( size_t index );
+        }
+
+        /// <summary>
+        /// Get the field value for the given field name.
+        /// </summary>
+        /// <returns>The value of the field.</returns>
+        /// <exception cref="IllegalArgumentException">
+        /// if the field name is not found.
+        /// </exception>
+        property /*Apache::Geode::Client::IGeodeSerializable^*//*TResult*/Object^ GFINDEXER( String^ )
+        {
+          /*Apache::Geode::Client::IGeodeSerializable^*//*TResult*/Object^ get( String^ fieldName );
+        }
+
+        /// <summary>
+        /// Get the parent <c>StructSet</c> of this <c>Struct</c>.
+        /// </summary>
+        /// <returns>
+        /// A reference to the parent <c>StructSet</c> of this <c>Struct</c>.
+        /// </returns>
+        property Apache::Geode::Client::StructSet</*TResult*/Object^>^ Set
+        {
+          Apache::Geode::Client::StructSet</*TResult*/Object^>^ get( );
+        }
+
+        /// <summary>
+        /// Check whether another field value is available to iterate over
+        /// in this <c>Struct</c>.
+        /// </summary>
+        /// <returns>true if available otherwise false.</returns>
+        bool HasNext( );
+
+        /// <summary>
+        /// Get the number of field values available.
+        /// </summary>
+        /// <returns>the number of field values available.</returns>
+        property size_t Length
+        {
+          size_t get( );
+        }
+
+        /// <summary>
+        /// Get the next field value item available in this <c>Struct</c>.
+        /// </summary>
+        /// <returns>
+        /// A reference to the next item in the <c>Struct</c>
+        /// or null if no more available.
+        /// </returns>
+        /*Apache::Geode::Client::IGeodeSerializable^*//*TResult*/Object^ Next( );
+
+
+      private:
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline Apache::Geode::Client::Struct/*<TResult>*/( apache::geode::client::SerializablePtr nativeptr )
+          : Apache::Geode::Client::Serializable( nativeptr ) { }
+
+        inline Apache::Geode::Client::Struct/*<TResult>*/(  )
+          : Apache::Geode::Client::Serializable( std::shared_ptr<apache::geode::client::Serializable>(apache::geode::client::Struct::createDeserializable())) { }
+
+      internal:
+
+        /// <summary>
+        /// Factory function to register wrapper
+        /// </summary>
+        inline static Apache::Geode::Client::IGeodeSerializable^ /*Struct^*/ /*<TResult>*/ Create( ::apache::geode::client::SerializablePtr obj )
+        {
+          return ( obj != nullptr ?
+            gcnew Apache::Geode::Client::Struct/*<TResult>*/( obj ) : nullptr );
+          /*return ( obj != nullptr ?
+            gcnew Struct( obj ) : nullptr );*/
+        }
+
+        inline static Apache::Geode::Client::IGeodeSerializable^ CreateDeserializable( )
+        {
+          return gcnew Apache::Geode::Client::Struct/*<TResult>*/(  ) ;
+          //return gcnew Struct(  ) ;
+        }
+      };
+    }  // namespace Client
+  }  // namespace Geode
+}  // namespace Apache
+ //namespace 

http://git-wip-us.apache.org/repos/asf/geode-native/blob/6cbd424f/clicache/src/StructSet.cpp
----------------------------------------------------------------------
diff --git a/clicache/src/StructSet.cpp b/clicache/src/StructSet.cpp
new file mode 100644
index 0000000..ef134e8
--- /dev/null
+++ b/clicache/src/StructSet.cpp
@@ -0,0 +1,130 @@
+/*
+ * 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 "geode_includes.hpp"
+#include "StructSet.hpp"
+#include "SelectResultsIterator.hpp"
+#include "ExceptionTypes.hpp"
+#include "impl/SafeConvert.hpp"
+
+using namespace System;
+
+namespace Apache
+{
+  namespace Geode
+  {
+    namespace Client
+    {
+
+      generic<class TResult>
+      bool StructSet<TResult>::IsModifiable::get( )
+      {
+        try
+        {
+          return m_nativeptr->get()->isModifiable( );
+        }
+        finally
+        {
+          GC::KeepAlive(m_nativeptr);
+        }
+      }
+
+      generic<class TResult>
+      System::Int32 StructSet<TResult>::Size::get( )
+      {
+        try
+        {
+          return m_nativeptr->get()->size( );
+        }
+        finally
+        {
+          GC::KeepAlive(m_nativeptr);
+        }
+      }
+
+      generic<class TResult>
+      TResult StructSet<TResult>::default::get( size_t index )
+      {
+        try
+        {
+          return Serializable::GetManagedValueGeneric<TResult>((m_nativeptr->get()->operator[](static_cast<System::Int32>(index))));
+        }
+        finally
+        {
+          GC::KeepAlive(m_nativeptr);
+        }
+      }
+
+      generic<class TResult>
+      SelectResultsIterator<TResult>^ StructSet<TResult>::GetIterator( )
+      {
+        try
+        {
+          return SelectResultsIterator<TResult>::Create(std::make_unique<apache::geode::client::SelectResultsIterator>(m_nativeptr->get()->getIterator()));
+        }
+        finally
+        {
+          GC::KeepAlive(m_nativeptr);
+        }
+      }
+
+      generic<class TResult>
+      System::Collections::Generic::IEnumerator<TResult>^ StructSet<TResult>::GetEnumerator( )
+      {
+        return GetIterator( );
+      }
+
+      generic<class TResult>
+      System::Collections::IEnumerator^ StructSet<TResult>::GetIEnumerator( )
+      {
+        return GetIterator( );
+      }
+
+      generic<class TResult>
+      size_t StructSet<TResult>::GetFieldIndex( String^ fieldName )
+      {
+        ManagedString mg_fieldName( fieldName );
+
+        _GF_MG_EXCEPTION_TRY2/* due to auto replace */
+
+          try
+          {
+            return m_nativeptr->get()->getFieldIndex( mg_fieldName.CharPtr );
+          }
+          finally
+          {
+            GC::KeepAlive(m_nativeptr);
+          }
+
+        _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */
+      }
+
+      generic<class TResult>
+      String^ StructSet<TResult>::GetFieldName(size_t index)
+      {
+        try
+        {
+          return ManagedString::Get(m_nativeptr->get()->getFieldName(static_cast<System::Int32> (index)).c_str());
+        }
+        finally
+        {
+          GC::KeepAlive(m_nativeptr);
+        }
+      }
+    }  // namespace Client
+  }  // namespace Geode
+}  // namespace Apache

http://git-wip-us.apache.org/repos/asf/geode-native/blob/6cbd424f/clicache/src/StructSet.hpp
----------------------------------------------------------------------
diff --git a/clicache/src/StructSet.hpp b/clicache/src/StructSet.hpp
new file mode 100644
index 0000000..ae81b76
--- /dev/null
+++ b/clicache/src/StructSet.hpp
@@ -0,0 +1,171 @@
+/*
+ * 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/StructSet.hpp>
+#include "end_native.hpp"
+
+#include "native_shared_ptr.hpp"
+#include "ICqResults.hpp"
+
+
+using namespace System;
+
+namespace Apache
+{
+  namespace Geode
+  {
+    namespace Client
+    {
+
+      namespace native = apache::geode::client;
+      interface class IGeodeSerializable;
+
+      generic<class TResult>
+      ref class SelectResultsIterator;
+
+      /// <summary>
+      /// Encapsulates a query struct set.
+      /// </summary>
+      generic<class TResult>
+      public ref class StructSet sealed
+        : public ICqResults<TResult>
+      {
+      public:
+
+        /// <summary>
+        /// True if this <c>StructSet</c> is modifiable.
+        /// </summary>
+        /// <returns>returns false always at this time.</returns>
+        virtual property bool IsModifiable
+        {
+          virtual bool get( );
+        }
+
+        /// <summary>
+        /// The size of the <c>StructSet</c>.
+        /// </summary>
+        /// <returns>
+        /// the number of items in the <c>StructSet</c>.
+        /// </returns>
+        virtual property System::Int32 Size
+        {
+          virtual System::Int32 get( );
+        }
+
+        /// <summary>
+        /// Index operator to directly access an item in the <c>StructSet</c>.
+        /// </summary>
+        /// <exception cref="IllegalArgumentException">
+        /// if the index is out of bounds.
+        /// </exception>
+        /// <returns>Item at the given index.</returns>
+        virtual property /*Apache::Geode::Client::IGeodeSerializable^*/TResult GFINDEXER( size_t )
+        {
+          virtual /*Apache::Geode::Client::IGeodeSerializable^*/TResult get( size_t index );
+        }
+
+        /// <summary>
+        /// Get a <c>SelectResultsIterator</c> with which to iterate
+        /// over the items in the <c>StructSet</c>.
+        /// </summary>
+        /// <returns>
+        /// The <c>SelectResultsIterator</c> with which to iterate.
+        /// </returns>
+        virtual SelectResultsIterator<TResult>^ GetIterator( );
+
+        /// <summary>
+        /// Get the index number of the specified field name
+        /// in the <c>StructSet</c>.
+        /// </summary>
+        /// <param name="fieldName">
+        /// the field name for which the index is required.
+        /// </param>
+        /// <returns>the index number of the specified field name.</returns>
+        /// <exception cref="IllegalArgumentException">
+        /// if the field name is not found.
+        /// </exception>
+        size_t GetFieldIndex( String^ fieldName );
+
+        /// <summary>
+        /// Get the field name of the <c>StructSet</c> from the
+        /// specified index number.
+        /// </summary>
+        /// <param name="index">
+        /// the index number of the field name to get.
+        /// </param>
+        /// <returns>
+        /// the field name from the specified index number or null if not found.
+        /// </returns>
+        String^ GetFieldName( size_t index );
+
+
+        // Region: IEnumerable<IGeodeSerializable^> Members
+
+        /// <summary>
+        /// Returns an enumerator that iterates through the <c>StructSet</c>.
+        /// </summary>
+        /// <returns>
+        /// A <c>System.Collections.Generic.IEnumerator</c> that
+        /// can be used to iterate through the <c>StructSet</c>.
+        /// </returns>
+        virtual System::Collections::Generic::IEnumerator</*Apache::Geode::Client::IGeodeSerializable^*/TResult>^
+          GetEnumerator( );
+
+        // End Region: IEnumerable<IGeodeSerializable^> Members
+
+
+      internal:
+
+        /// <summary>
+        /// Internal factory function to wrap a native object pointer inside
+        /// this managed class with null pointer check.
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        /// <returns>
+        /// The managed wrapper object; null if the native pointer is null.
+        /// </returns>
+        inline static StructSet<TResult>^ Create(native::StructSetPtr nativeptr)
+        {
+          return __nullptr == nativeptr ? nullptr :
+            gcnew StructSet<TResult>( nativeptr );
+        }
+
+
+      private:
+
+        virtual System::Collections::IEnumerator^ GetIEnumerator( ) sealed
+          = System::Collections::IEnumerable::GetEnumerator;
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline StructSet(native::StructSetPtr nativeptr)
+        {
+          m_nativeptr = gcnew native_shared_ptr<native::StructSet>(nativeptr);
+        }
+
+        native_shared_ptr<native::StructSet>^ m_nativeptr; 
+      };
+    }  // namespace Client
+  }  // namespace Geode
+}  // namespace Apache
+ //namespace 

http://git-wip-us.apache.org/repos/asf/geode-native/blob/6cbd424f/clicache/src/SystemProperties.cpp
----------------------------------------------------------------------
diff --git a/clicache/src/SystemProperties.cpp b/clicache/src/SystemProperties.cpp
new file mode 100644
index 0000000..8683548
--- /dev/null
+++ b/clicache/src/SystemProperties.cpp
@@ -0,0 +1,220 @@
+/*
+ * 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 "SystemProperties.hpp"
+#include "impl/SafeConvert.hpp"
+
+using namespace System;
+
+namespace Apache
+{
+  namespace Geode
+  {
+    namespace Client
+    {
+      namespace native = apache::geode::client;
+
+      void SystemProperties::LogSettings( )
+      {
+        m_nativeptr->logSettings( );
+      }
+
+      System::Int32 SystemProperties::StatisticsSampleInterval::get( )
+      {
+        return m_nativeptr->statisticsSampleInterval( );
+      }
+
+      bool SystemProperties::StatisticsEnabled::get( )
+      {
+        return m_nativeptr->statisticsEnabled( );
+      }
+
+      String^ SystemProperties::StatisticsArchiveFile::get( )
+      {
+        return ManagedString::Get( m_nativeptr->statisticsArchiveFile( ) );
+      }
+
+      String^ SystemProperties::LogFileName::get( )
+      {
+        return ManagedString::Get( m_nativeptr->logFilename( ) );
+      }
+
+      LogLevel SystemProperties::GFLogLevel::get( )
+      {
+        return static_cast<LogLevel>( m_nativeptr->logLevel( ) );
+      }
+
+      bool SystemProperties::HeapLRULimitEnabled::get( )
+      {
+        return m_nativeptr->heapLRULimitEnabled( );
+      }
+      
+      size_t SystemProperties::HeapLRULimit::get( )
+      {
+        return m_nativeptr->heapLRULimit( );
+      }
+      
+      System::Int32 SystemProperties::HeapLRUDelta::get( )
+      {
+        return m_nativeptr->heapLRUDelta( );
+      }
+      
+      System::Int32 SystemProperties::MaxSocketBufferSize::get( )
+      {
+        return m_nativeptr->maxSocketBufferSize( );
+      }
+      
+      System::Int32 SystemProperties::PingInterval::get( )
+      {
+        return m_nativeptr->pingInterval( );
+      }
+      
+      System::Int32 SystemProperties::RedundancyMonitorInterval::get( )
+      {
+        return m_nativeptr->redundancyMonitorInterval( );
+      }
+      
+      System::Int32 SystemProperties::NotifyAckInterval::get( )
+      {
+        return m_nativeptr->notifyAckInterval( );
+      }
+      
+      System::Int32 SystemProperties::NotifyDupCheckLife::get( )
+      {
+        return m_nativeptr->notifyDupCheckLife( );
+      }
+      
+      bool SystemProperties::DebugStackTraceEnabled::get( )
+      {
+        return m_nativeptr->debugStackTraceEnabled( );
+      }
+
+      bool SystemProperties::CrashDumpEnabled::get( )
+      {
+        return m_nativeptr->crashDumpEnabled();
+      }
+
+      bool SystemProperties::AppDomainEnabled::get( )
+      {
+        return m_nativeptr->isAppDomainEnabled();
+      }
+
+      String^ SystemProperties::Name::get( )
+      {
+        return ManagedString::Get( m_nativeptr->name( ) );
+      }
+
+      String^ SystemProperties::CacheXmlFile::get( )
+      {
+        return ManagedString::Get( m_nativeptr->cacheXMLFile( ) );
+      }
+
+      System::Int32 SystemProperties::LogFileSizeLimit::get( )
+      {
+        return m_nativeptr->logFileSizeLimit( );
+      }
+
+	  System::Int32 SystemProperties::LogDiskSpaceLimit::get( )
+      {
+		  return m_nativeptr->logDiskSpaceLimit( );
+      }
+
+      System::Int32 SystemProperties::StatsFileSizeLimit::get( )
+      {
+        return m_nativeptr->statsFileSizeLimit( );
+      }
+
+	  System::Int32 SystemProperties::StatsDiskSpaceLimit::get( )
+      {
+		  return m_nativeptr->statsDiskSpaceLimit( );
+      }
+
+      System::UInt32 SystemProperties::MaxQueueSize::get( )
+      {
+        return m_nativeptr->maxQueueSize( );
+      }
+
+      bool SystemProperties::SSLEnabled::get( )
+      {
+        return m_nativeptr->sslEnabled();
+      }
+
+      String^ SystemProperties::SSLKeyStore::get()
+      {
+        return ManagedString::Get(m_nativeptr->sslKeyStore());
+      }
+
+      String^ SystemProperties::SSLTrustStore::get()
+      {
+        return ManagedString::Get(m_nativeptr->sslTrustStore());
+      }
+      
+      // adongre
+      String^ SystemProperties::SSLKeystorePassword::get()
+      {
+        return ManagedString::Get(m_nativeptr->sslKeystorePassword());
+      }
+
+
+      bool SystemProperties::IsSecurityOn::get( )
+      {
+        return m_nativeptr->isSecurityOn( );
+      }
+
+      Properties<String^, String^>^ SystemProperties::GetSecurityProperties::get( )
+      {
+        return Properties<String^, String^>::Create(m_nativeptr->getSecurityProperties());
+      }
+
+      String^ SystemProperties::DurableClientId::get( )
+      {
+        return ManagedString::Get( m_nativeptr->durableClientId( ) );
+      }
+
+      System::UInt32 SystemProperties::DurableTimeout::get( )
+      {
+        return m_nativeptr->durableTimeout( );
+      }
+
+      System::UInt32 SystemProperties::ConnectTimeout::get( )
+      {
+        return m_nativeptr->connectTimeout( );
+      }
+
+      String^ SystemProperties::ConflateEvents::get( )
+      {
+        return ManagedString::Get( m_nativeptr->conflateEvents( ) );
+      }
+
+      System::UInt32 SystemProperties::SuspendedTxTimeout::get( )
+      {
+        return m_nativeptr->suspendedTxTimeout( );
+      }
+
+      bool SystemProperties::ReadTimeoutUnitInMillis::get( )
+      {
+        return m_nativeptr->readTimeoutUnitInMillis( );
+      }
+
+       bool SystemProperties::OnClientDisconnectClearPdxTypeIds::get( )
+      {
+        return m_nativeptr->onClientDisconnectClearPdxTypeIds( );
+    }  // namespace Client
+  }  // namespace Geode
+}  // namespace Apache
+
+}

http://git-wip-us.apache.org/repos/asf/geode-native/blob/6cbd424f/clicache/src/SystemProperties.hpp
----------------------------------------------------------------------
diff --git a/clicache/src/SystemProperties.hpp b/clicache/src/SystemProperties.hpp
new file mode 100644
index 0000000..507035b
--- /dev/null
+++ b/clicache/src/SystemProperties.hpp
@@ -0,0 +1,428 @@
+/*
+ * 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/SystemProperties.hpp>
+#include "end_native.hpp"
+
+#include "Log.hpp"
+#include "Properties.hpp"
+
+using namespace System;
+
+namespace Apache
+{
+  namespace Geode
+  {
+    namespace Client
+    {
+      namespace native = apache::geode::client;
+
+      /// <summary>
+      /// A class for internal use, that encapsulates the properties that can be
+      /// set through <see cref="DistributedSystem.Connect" />
+      /// or a geode.properties file.
+      /// </summary>
+      public ref class SystemProperties sealed
+      {
+      public:
+
+        /// <summary>
+        /// Prints all settings to the process log.
+        /// </summary>
+        void LogSettings();
+
+        /// <summary>
+        /// Returns the sampling interval, that is,
+        /// how often the statistics thread writes to disk, in seconds.
+        /// </summary>
+        /// <returns>the statistics sampling interval</returns>
+        property System::Int32 StatisticsSampleInterval
+        {
+          System::Int32 get();
+        }
+
+        /// <summary>
+        /// True if statistics are enabled (archived).
+        /// </summary>
+        /// <returns>true if enabled</returns>
+        property bool StatisticsEnabled
+        {
+          bool get();
+        }
+
+        /// <summary>
+        /// Returns the name of the statistics archive file.
+        /// </summary>
+        /// <returns>the filename</returns>
+        property String^ StatisticsArchiveFile
+        {
+          String^ get();
+        }
+
+        /// <summary>
+        /// Returns the name of the message log file.
+        /// </summary>
+        /// <returns>the filename</returns>
+        property String^ LogFileName
+        {
+          String^ get();
+        }
+
+        /// <summary>
+        /// Returns the message logging level.
+        /// </summary>
+        /// <returns>the log level</returns>
+        property LogLevel GFLogLevel
+        {
+          LogLevel get();
+        }
+
+        /// <summary>
+        /// Returns  a boolean that specifies if heapLRULimit has been enabled for the
+        /// process. If enabled, the HeapLRULimit specifies the maximum amount of memory
+        /// that values in a cache can use to store data before overflowing to disk or
+        /// destroying entries to ensure that the server process never runs out of
+        /// memory
+        /// </summary>
+        /// <returns>true if enabled</returns>
+        property bool HeapLRULimitEnabled
+        {
+          bool get();
+        }
+
+        /// <summary>
+        /// Returns  the HeapLRULimit value (in bytes), the maximum memory that values
+        /// in a cache can use to store data before overflowing to disk or destroying
+        /// entries to ensure that the server process never runs out of memory due to
+        /// cache memory usage
+        /// </summary>
+        /// <returns>the HeapLRULimit value</returns>
+        property size_t HeapLRULimit
+        {
+          size_t get();
+        }
+
+        /// <summary>
+        /// Returns  the HeapLRUDelta value (a percent value). This specifies the
+        /// percentage of entries the system will evict each time it detects that
+        /// it has exceeded the HeapLRULimit. Defaults to 10%
+        /// </summary>
+        /// <returns>the HeapLRUDelta value</returns>
+        property System::Int32 HeapLRUDelta
+        {
+          System::Int32 get();
+        }
+
+        /// <summary>
+        /// Returns  the maximum socket buffer size to use
+        /// </summary>
+        /// <returns>the MaxSocketBufferSize value</returns>
+        property System::Int32 MaxSocketBufferSize
+        {
+          System::Int32 get();
+        }
+
+        /// <summary>
+        /// Returns  the time between two consecutive ping to servers
+        /// </summary>
+        /// <returns>the PingInterval value</returns>
+        property System::Int32 PingInterval
+        {
+          System::Int32 get();
+        }
+
+        /// <summary>
+        /// Returns  the time between two consecutive checks for redundancy for HA
+        /// </summary>
+        /// <returns>the RedundancyMonitorInterval value</returns>
+        property System::Int32 RedundancyMonitorInterval
+        {
+          System::Int32 get();
+        }
+
+        /// <summary>
+        /// Returns the periodic notify ack interval
+        /// </summary>
+        /// <returns>the NotifyAckInterval value</returns>
+        property System::Int32 NotifyAckInterval
+        {
+          System::Int32 get();
+        }
+
+        /// <summary>
+        /// Returns the expiry time of an idle event id map entry for duplicate notification checking
+        /// </summary>
+        /// <returns>the NotifyDupCheckLife value</returns>
+        property System::Int32 NotifyDupCheckLife
+        {
+          System::Int32 get();
+        }
+
+        /// <summary>
+        /// True if the stack trace is enabled.
+        /// </summary>
+        /// <returns>true if enabled</returns>
+        property bool DebugStackTraceEnabled
+        {
+          bool get();
+        }
+
+        /// <summary>
+        /// True if the crash dump generation for unhandled fatal exceptions
+        /// is enabled. If "log-file" property has been specified then they are
+        /// created in the same directory as the log file, and having the same
+        /// prefix as log file. By default crash dumps are created in the
+        /// current working directory and have the "geode_cpp" prefix.
+        ///
+        /// The actual dump file will have timestamp and process ID
+        /// in the full name.
+        /// </summary>
+        /// <returns>true if enabled</returns>
+        property bool CrashDumpEnabled
+        {
+          bool get();
+        }
+
+        /// <summary>
+        /// Whether client is running in multiple AppDomain or not.
+        /// Default value is "false".
+        /// </summary>
+        /// <returns>true if enabled</returns>
+        property bool AppDomainEnabled
+        {
+          bool get();
+        }
+
+        /// <summary>
+        /// Returns the system name.
+        /// </summary>
+        /// <returns>the name</returns>
+        property String^ Name
+        {
+          String^ get();
+        }
+
+        /// <summary>
+        /// Returns the name of the "cache.xml" file.
+        /// </summary>
+        /// <returns>the filename</returns>
+        property String^ CacheXmlFile
+        {
+          String^ get();
+        }
+
+        /// <summary>
+        /// Returns the maximum log file size, in bytes, or 0 if unlimited.
+        /// </summary>
+        /// <returns>the maximum limit</returns>
+        property System::Int32 LogFileSizeLimit
+        {
+          System::Int32 get();
+        }
+
+        /// <summary>
+        /// Returns the maximum log Disk size, in bytes, or 0 if unlimited.
+        /// </summary>
+        /// <returns>the maximum limit</returns>
+        property System::Int32 LogDiskSpaceLimit
+        {
+          System::Int32 get();
+        }
+
+        /// <summary>
+        /// Returns the maximum statistics file size, in bytes, or 0 if unlimited.
+        /// </summary>
+        /// <returns>the maximum limit</returns>
+        property System::Int32 StatsFileSizeLimit
+        {
+          System::Int32 get();
+        }
+
+        /// <summary>
+        /// Returns the maximum statistics Disk size, in bytes, or 0 if unlimited.
+        /// </summary>
+        /// <returns>the maximum limit</returns>
+        property System::Int32 StatsDiskSpaceLimit
+        {
+          System::Int32 get();
+        }
+
+        /// <summary>
+        /// Returns the max queue size for notification messages
+        /// </summary>
+        /// <returns>the max queue size</returns>
+        property System::UInt32 MaxQueueSize
+        {
+          System::UInt32 get();
+        }
+
+        /// <summary>
+        /// True if ssl connection support is enabled.
+        /// </summary>
+        /// <returns>true if enabled</returns>
+        property bool SSLEnabled
+        {
+          bool get();
+        }
+
+        /// <summary>
+        /// Returns the SSL private keystore file path.
+        /// </summary>
+        /// <returns>the SSL private keystore file path</returns>
+        property String^ SSLKeyStore
+        {
+          String^ get();
+        }
+
+        /// <summary>
+        /// Returns the SSL public certificate trust store file path.
+        /// </summary>
+        /// <returns>the SSL public certificate trust store file path</returns>
+        property String^ SSLTrustStore
+        {
+          String^ get();
+        }
+
+        // adongre
+        /// <summary>
+        /// Returns the client keystore password..
+        /// </summary>
+        /// <returns>Returns the client keystore password.</returns>
+        property String^ SSLKeystorePassword
+        {
+          String^ get();
+        }
+
+        /// <summary>
+        /// True if client needs to be authenticated
+        /// </summary>
+        /// <returns>true if enabled</returns>
+        property bool IsSecurityOn
+        {
+          bool get();
+        }
+
+        /// <summary>
+        /// Returns all the security properties
+        /// </summary>
+        /// <returns>the security properties</returns>
+        //generic <class TPropKey, class TPropValue>
+        property Properties<String^, String^>^ GetSecurityProperties {
+          Properties<String^, String^>^ get();
+        }
+
+        /// <summary>
+        /// Returns the durable client's ID.
+        /// </summary>
+        /// <returns>the durable client ID</returns>
+        property String^ DurableClientId
+        {
+          String^ get();
+        }
+
+        /// <summary>
+        /// Returns the durable client's timeout.
+        /// </summary>
+        /// <returns>the durable client timeout</returns>
+        property System::UInt32 DurableTimeout
+        {
+          System::UInt32 get();
+        }
+
+        /// <summary>
+        /// Returns the connect timeout used for server and locator handshakes.
+        /// </summary>
+        /// <returns>the connect timeout used for server and locator handshakes</returns>
+        property System::UInt32 ConnectTimeout
+        {
+          System::UInt32 get();
+        }
+
+        /// <summary>
+        /// Returns the conflate event's option
+        /// </summary>
+        /// <returns>the conflate event option</returns>
+        property String^ ConflateEvents
+        {
+          String^ get();
+        }
+
+        /// <summary>
+        /// Returns the timeout after which suspended transactions are rolled back.
+        /// </summary>
+        /// <returns>the timeout for suspended transactions</returns>
+        property System::UInt32 SuspendedTxTimeout
+        {
+          System::UInt32 get();
+        }
+
+        /// <summary>
+        /// This can be called to know whether read timeout unit is in milli second.
+        /// </summary>
+        /// <returns>true if enabled or false by default.</returns>
+        property bool ReadTimeoutUnitInMillis
+        {
+          bool get();
+        }
+        /// <summary>
+        /// True if app want to clear pdx types ids on client disconnect
+        /// </summary>
+        /// <returns>true if enabled</returns>
+        property bool OnClientDisconnectClearPdxTypeIds
+        {
+          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">native object pointer</param>
+        /// <returns>
+        /// the managed wrapper object, or null if the native pointer is null.
+        /// </returns>
+        inline static SystemProperties^ Create(
+          native::SystemProperties* nativeptr)
+        {
+          return (nativeptr != nullptr ?
+                  gcnew SystemProperties(nativeptr) : nullptr);
+        }
+
+
+      private:
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline SystemProperties(native::SystemProperties* nativeptr)
+          : m_nativeptr(nativeptr)
+        {
+        }
+
+        native::SystemProperties* m_nativeptr;
+      };
+    }  // namespace Client
+  }  // namespace Geode
+}  // namespace Apache
+

http://git-wip-us.apache.org/repos/asf/geode-native/blob/6cbd424f/clicache/src/TransactionEvent.cpp
----------------------------------------------------------------------
diff --git a/clicache/src/TransactionEvent.cpp b/clicache/src/TransactionEvent.cpp
new file mode 100644
index 0000000..d4d694c
--- /dev/null
+++ b/clicache/src/TransactionEvent.cpp
@@ -0,0 +1,79 @@
+/*
+ * 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
+//#include "geode_includes.hpp"
+#include "TransactionEvent.hpp"
+#include "Log.hpp"
+#include "impl/SafeConvert.hpp"
+#include "TransactionId.hpp"
+#include "Cache.hpp"
+#include "EntryEvent.hpp"
+#include "Cache.hpp"
+
+
+using namespace System;
+using namespace Apache::Geode::Client;
+
+
+namespace Apache
+{
+  namespace Geode
+  {
+    namespace Client
+    {
+
+      generic<class TKey, class TValue>
+      Cache^ TransactionEvent<TKey, TValue>::Cache::get( )
+      {
+        apache::geode::client::CachePtr & nativeptr(
+          NativePtr->getCache( ) );
+
+				return Apache::Geode::Client::Cache::Create(
+          nativeptr.get() );
+      }
+      
+      generic<class TKey, class TValue>
+			Apache::Geode::Client::TransactionId^ TransactionEvent<TKey, TValue>::TransactionId::get( )
+      {
+        apache::geode::client::TransactionIdPtr & nativeptr(
+          NativePtr->getTransactionId( ) );
+
+				return Apache::Geode::Client::TransactionId::Create(
+          nativeptr.get() );
+      }
+    
+      generic<class TKey, class TValue>
+      array<EntryEvent<TKey, TValue>^>^ TransactionEvent<TKey, TValue>::Events::get( )
+      {
+        apache::geode::client::VectorOfEntryEvent vee;
+        vee = NativePtr->getEvents();
+        array<EntryEvent<TKey, TValue>^>^ events =
+          gcnew array<EntryEvent<TKey, TValue>^>( vee.size( ) );
+        // Loop through the unmanaged event objects to convert them to the managed generic objects. 
+        for( System::Int32 index = 0; index < vee.size( ); index++ )
+        {
+          apache::geode::client::EntryEventPtr& nativeptr( vee[ index ] );
+          EntryEvent<TKey, TValue> entryEvent( nativeptr.get() );
+          events[ index ] = (%entryEvent);
+        }
+        return events;
+    }  // namespace Client
+  }  // namespace Geode
+}  // namespace Apache
+
+ } //namespace 
+#endif

http://git-wip-us.apache.org/repos/asf/geode-native/blob/6cbd424f/clicache/src/TransactionEvent.hpp
----------------------------------------------------------------------
diff --git a/clicache/src/TransactionEvent.hpp b/clicache/src/TransactionEvent.hpp
new file mode 100644
index 0000000..80680c2
--- /dev/null
+++ b/clicache/src/TransactionEvent.hpp
@@ -0,0 +1,88 @@
+/*
+ * 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 <cppcache/TransactionEvent.hpp>
+
+//#include "TransactionId.hpp"
+//#include "Cache.hpp"
+
+using namespace System;
+
+namespace Apache
+{
+  namespace Geode
+  {
+    namespace Client
+    {
+
+				ref class TransactionId;
+				ref class Cache;
+
+				generic<class TKey, class TValue>
+        ref class EntryEvent;
+
+        /// <summary>
+        /// This class encapsulates events that occur for an transaction in a cache.
+        /// </summary>
+        generic<class TKey, class TValue>
+        public ref class TransactionEvent sealed
+          : public Internal::UMWrap<apache::geode::client::TransactionEvent>
+        {
+        public:
+          /// <summary>
+          /// Gets the transaction id for this transaction.
+          /// </summary>
+					property Apache::Geode::Client::TransactionId^ TransactionId
+          {
+						Apache::Geode::Client::TransactionId^ get( );
+          }
+
+        	/// <summary>
+          /// Returns an ordered list of every event for this transaction.
+	        /// The event order is consistent with the order in which the operations were
+	        /// performed during the transaction.
+          /// </summary>
+          property array<EntryEvent<TKey, TValue>^>^ Events
+          {
+            array<EntryEvent<TKey, TValue>^>^ get( );
+          }
+          
+          /// <summary>
+          /// Gets the Cache for this transaction event
+          /// </summary>
+					property Apache::Geode::Client::Cache^ Cache
+          {
+            Apache::Geode::Client::Cache^ get( );
+          }
+
+        internal:
+          /// <summary>
+          /// Internal constructor to wrap a native object pointer
+          /// </summary>
+          /// <param name="nativeptr">The native object pointer</param>
+          inline TransactionEvent( apache::geode::client::TransactionEvent* nativeptr )
+            : UMWrap( nativeptr, false ) { }
+        };
+    }  // namespace Client
+  }  // namespace Geode
+}  // namespace Apache
+ //namespace 
+#endif

http://git-wip-us.apache.org/repos/asf/geode-native/blob/6cbd424f/clicache/src/TransactionId.hpp
----------------------------------------------------------------------
diff --git a/clicache/src/TransactionId.hpp b/clicache/src/TransactionId.hpp
new file mode 100644
index 0000000..29ceeb8
--- /dev/null
+++ b/clicache/src/TransactionId.hpp
@@ -0,0 +1,71 @@
+/*
+ * 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/TransactionId.hpp>
+#include "end_native.hpp"
+
+
+
+using namespace System;
+
+namespace Apache
+{
+  namespace Geode
+  {
+    namespace Client
+    {
+        namespace native = apache::geode::client;
+
+        /// <summary>
+        /// This class encapsulates Id of a transaction.
+        /// </summary>
+        public ref class TransactionId sealed
+        {
+        internal:
+
+          inline static TransactionId^ Create(native::TransactionIdPtr nativeptr )
+          {
+          return __nullptr == nativeptr ? nullptr :
+            gcnew TransactionId( nativeptr );
+          }
+
+          std::shared_ptr<native::TransactionId> GetNative()
+          {
+            return m_nativeptr->get_shared_ptr();
+          }
+
+        private:
+
+          /// <summary>
+          /// Private constructor to wrap a native object pointer
+          /// </summary>
+          /// <param name="nativeptr">The native object pointer</param>
+          inline TransactionId( native::TransactionIdPtr nativeptr )
+          {
+            m_nativeptr = gcnew native_shared_ptr<native::TransactionId>(nativeptr);
+          }
+
+          native_shared_ptr<native::TransactionId>^ m_nativeptr;   
+        };
+    }  // namespace Client
+  }  // namespace Geode
+}  // namespace Apache
+ //namespace 

http://git-wip-us.apache.org/repos/asf/geode-native/blob/6cbd424f/clicache/src/TransactionListenerAdapter.hpp
----------------------------------------------------------------------
diff --git a/clicache/src/TransactionListenerAdapter.hpp b/clicache/src/TransactionListenerAdapter.hpp
new file mode 100644
index 0000000..7f1f86f
--- /dev/null
+++ b/clicache/src/TransactionListenerAdapter.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 "ITransactionListener.hpp"
+
+
+namespace Apache
+{
+  namespace Geode
+  {
+    namespace Client
+    {
+
+      /// <summary>
+      /// Utility class that implements all methods in <c>ITransactionListener</c>
+      /// with empty implementations. Applications can subclass this class
+      /// and only override the methods for the events of interest.
+      /// </summary>
+      generic<class TKey, class TValue>
+      public ref class TransactionListenerAdapter
+        : public Apache::Geode::Client::ITransactionListener<TKey, TValue>
+      {
+      public:
+        virtual void AfterCommit(Apache::Geode::Client::TransactionEvent<TKey, TValue>^ te)
+        {
+        }
+
+	      virtual void AfterFailedCommit(Apache::Geode::Client::TransactionEvent<TKey, TValue>^ te)
+        {
+        }
+
+	      virtual void AfterRollback(Apache::Geode::Client::TransactionEvent<TKey, TValue>^ te)
+        {
+        }
+    
+        virtual void Close()
+        {
+        }
+      };
+    }  // namespace Client
+  }  // namespace Geode
+}  // namespace Apache
+
+#endif

http://git-wip-us.apache.org/repos/asf/geode-native/blob/6cbd424f/clicache/src/TransactionWriterAdapte.hpp
----------------------------------------------------------------------
diff --git a/clicache/src/TransactionWriterAdapte.hpp b/clicache/src/TransactionWriterAdapte.hpp
new file mode 100644
index 0000000..04d4183
--- /dev/null
+++ b/clicache/src/TransactionWriterAdapte.hpp
@@ -0,0 +1,48 @@
+/*
+ * 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 "ITransactionWriter.hpp"
+
+
+namespace Apache
+{
+  namespace Geode
+  {
+    namespace Client
+    {
+
+      /// <summary>
+      /// Utility class that implements all methods in <c>ITransactionWriter</c>
+      /// with empty implementations.
+      /// </summary>
+      generic<class TKey, class TValue>
+      public ref class TransactionWriterAdapter
+        : public Apache::Geode::Client::ITransactionWriter<TKey, TValue>
+      {
+      public:
+        virtual 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/UserFunctionExecutionException.cpp
----------------------------------------------------------------------
diff --git a/clicache/src/UserFunctionExecutionException.cpp b/clicache/src/UserFunctionExecutionException.cpp
new file mode 100644
index 0000000..306919e
--- /dev/null
+++ b/clicache/src/UserFunctionExecutionException.cpp
@@ -0,0 +1,96 @@
+/*
+ * 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 "UserFunctionExecutionException.hpp"
+#include "CacheableString.hpp"
+
+using namespace System;
+
+namespace Apache
+{
+  namespace Geode
+  {
+    namespace Client
+    {
+
+      // IGeodeSerializable methods
+
+      void UserFunctionExecutionException::ToData(DataOutput^ output)
+      {
+        throw gcnew IllegalStateException("UserFunctionExecutionException::ToData is not intended for use.");
+      }
+
+      IGeodeSerializable^ UserFunctionExecutionException::FromData(DataInput^ input)
+      {
+        throw gcnew IllegalStateException("UserFunctionExecutionException::FromData is not intended for use.");
+        return this;
+      }
+
+      System::UInt32 UserFunctionExecutionException::ObjectSize::get()
+      {
+        _GF_MG_EXCEPTION_TRY2
+          throw gcnew IllegalStateException("UserFunctionExecutionException::ObjectSize is not intended for use.");
+        try
+        {
+          return m_nativeptr->get()->objectSize();
+        }
+        finally
+        {
+          GC::KeepAlive(m_nativeptr);
+        }
+
+        _GF_MG_EXCEPTION_CATCH_ALL2
+      }
+
+      String^ UserFunctionExecutionException::Message::get()
+      {
+        _GF_MG_EXCEPTION_TRY2
+
+        try
+        {
+          auto value = m_nativeptr->get()->getMessage();
+          return CacheableString::GetString(value.get());
+        }
+        finally
+        {
+          GC::KeepAlive(m_nativeptr);
+        }
+
+        _GF_MG_EXCEPTION_CATCH_ALL2
+      }
+
+      String^ UserFunctionExecutionException::Name::get()
+      {
+        _GF_MG_EXCEPTION_TRY2
+
+        try
+        {
+          auto value = m_nativeptr->get()->getName();
+          return CacheableString::GetString(value.get());
+        }
+        finally
+        {
+          GC::KeepAlive(m_nativeptr);
+        }
+
+        _GF_MG_EXCEPTION_CATCH_ALL2
+      }
+    }  // namespace Client
+  }  // namespace Geode
+}  // namespace Apache
+

http://git-wip-us.apache.org/repos/asf/geode-native/blob/6cbd424f/clicache/src/UserFunctionExecutionException.hpp
----------------------------------------------------------------------
diff --git a/clicache/src/UserFunctionExecutionException.hpp b/clicache/src/UserFunctionExecutionException.hpp
new file mode 100644
index 0000000..dd9e74d
--- /dev/null
+++ b/clicache/src/UserFunctionExecutionException.hpp
@@ -0,0 +1,143 @@
+/*
+ * 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/UserFunctionExecutionException.hpp>
+#include "end_native.hpp"
+
+#include "native_shared_ptr.hpp"
+#include "IGeodeSerializable.hpp"
+#include "DataInput.hpp"
+#include "DataOutput.hpp"
+
+using namespace System;
+
+namespace Apache
+{
+  namespace Geode
+  {
+    namespace Client
+    {
+      namespace native = apache::geode::client;
+
+      /// <summary>
+      /// UserFunctionExecutionException class is used to encapsulate geode sendException in case of Function execution. 
+      /// </summary>
+      public ref class UserFunctionExecutionException sealed
+        : public IGeodeSerializable
+      {
+      public:
+        // IGeodeSerializable members
+
+        /// <summary>
+        /// Serializes this object.
+        /// Users should not implement/call this api as it is only intended for internal use.
+        /// </summary>
+        /// <param name="output">
+        /// the DataOutput stream to use for serialization
+        /// </param>
+        /// <exception cref="IllegalStateException">
+        /// If this api is called from User code.
+        /// </exception>
+        virtual void ToData(DataOutput^ output);
+
+        /// <summary>
+        /// Deserializes this object.
+        /// Users should not implement/call this api as it is only intended for internal use.
+        /// </summary>
+        /// <param name="input">
+        /// the DataInput stream to use for reading data
+        /// </param>
+        /// <exception cref="IllegalStateException">
+        /// If this api is called from User code.
+        /// </exception>
+        /// <returns>the deserialized object</returns>
+        virtual IGeodeSerializable^ FromData(DataInput^ input);
+
+        /// <summary>
+        /// Returns the classId of this class for serialization.
+        /// Users should not implement/call this api as it is only intended for internal use.
+        /// </summary>
+        /// <exception cref="IllegalStateException">
+        /// If this api is called from User code.
+        /// </exception>
+        /// <returns>classId of this class</returns>
+        /// <seealso cref="IGeodeSerializable.ClassId" />
+        virtual property System::UInt32 ClassId
+        {
+          inline virtual System::UInt32 get()
+          {
+            throw gcnew IllegalStateException("UserFunctionExecutionException::ClassId is not intended for use.");
+            return 0;
+          }
+        }
+
+        /// <summary>
+        /// return the size of this object in bytes
+        /// Users should not implement/call this api as it is only intended for internal use.
+        /// </summary>
+        /// <exception cref="IllegalStateException">
+        /// If this api is called from User code.
+        /// </exception>
+        virtual property System::UInt32 ObjectSize
+        {
+          virtual System::UInt32 get();
+        }
+
+        // End: IGeodeSerializable members   
+
+        /// <summary>
+        /// return as String the Exception message returned from geode sendException api.          
+        /// </summary>
+        /// <returns>the String Exception Message</returns>
+        property String^ Message
+        {
+          String^ get();
+        }
+
+        /// <summary>
+        /// return as String the Exception name returned from geode sendException api.          
+        /// </summary>
+        /// <returns>the String Exception Name</returns>
+        property String^ Name
+        {
+          String^ get();
+        }
+
+      internal:
+
+        /// <summary>
+        /// Private constructor to wrap a native object pointer.
+        /// </summary>
+        /// <param name="nativeptr">The native object pointer</param>
+        inline UserFunctionExecutionException(apache::geode::client::UserFunctionExecutionExceptionPtr nativeptr)
+				{
+          m_nativeptr = gcnew native_shared_ptr<native::UserFunctionExecutionException>(nativeptr);
+        }
+        
+        native_shared_ptr<native::UserFunctionExecutionException>^ m_nativeptr;   
+      };
+    }  // namespace Client
+  }  // namespace Geode
+}  // namespace Apache
+
+

http://git-wip-us.apache.org/repos/asf/geode-native/blob/6cbd424f/clicache/src/Utils.cpp
----------------------------------------------------------------------
diff --git a/clicache/src/Utils.cpp b/clicache/src/Utils.cpp
new file mode 100644
index 0000000..e293b52
--- /dev/null
+++ b/clicache/src/Utils.cpp
@@ -0,0 +1,77 @@
+/*
+ * 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 "gfcli/Utils.hpp"
+#include "begin_native.hpp"
+#include <Utils.hpp>
+#include "end_native.hpp"
+
+namespace Apache
+{
+  namespace Geode
+  {
+    namespace Client
+    {
+
+    MethodInfo^ Utils::LoadMethod( String^ assemblyName,
+      String^ typeName, String^ methodName)
+    {
+      Type^ loadType;
+
+      loadType = Type::GetType( typeName + ',' + assemblyName, false, true );
+      if (loadType != nullptr)
+      {
+        return loadType->GetMethod( methodName, BindingFlags::Public |
+          BindingFlags::Static | BindingFlags::IgnoreCase );
+      }
+      return nullptr;
+    }
+
+    MethodInfo^ Utils::LoadMethodFrom( String^ assemblyPath,
+      String^ typeName, String^ methodName)
+    {
+      String^ assemblyName;
+      Type^ loadType;
+
+      assemblyName = System::IO::Path::GetFileNameWithoutExtension(
+        assemblyPath );
+      loadType = Type::GetType( typeName + ',' + assemblyName, false, true );
+      if (loadType == nullptr)
+      {
+        Assembly^ assmb = Assembly::LoadFrom( assemblyPath );
+        if (assmb != nullptr)
+        {
+          loadType = assmb->GetType(typeName, false, true);
+        }
+      }
+      if (loadType != nullptr)
+      {
+        return loadType->GetMethod( methodName, BindingFlags::Public |
+          BindingFlags::Static | BindingFlags::IgnoreCase );
+      }
+      return nullptr;
+    }
+
+    System::Int32 Utils::LastError::get( )
+    {
+       return apache::geode::client::Utils::getLastError( );
+    }  // namespace Client
+  }  // namespace Geode
+}  // namespace Apache
+
+}

http://git-wip-us.apache.org/repos/asf/geode-native/blob/6cbd424f/clicache/src/begin_native.hpp
----------------------------------------------------------------------
diff --git a/clicache/src/begin_native.hpp b/clicache/src/begin_native.hpp
new file mode 100644
index 0000000..5ee5877
--- /dev/null
+++ b/clicache/src/begin_native.hpp
@@ -0,0 +1,41 @@
+/*
+ * 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.
+ */
+
+#if defined(__begin_native__hpp__)
+#error Including begin_native.hpp mulitple times without end_native.hpp
+#endif
+#define __begin_native__hpp__
+
+#pragma push_macro("_ALLOW_KEYWORD_MACROS")
+#undef _ALLOW_KEYWORD_MACROS
+#define _ALLOW_KEYWORD_MACROS
+
+#pragma push_macro("nullptr")
+#undef nullptr
+#define nullptr __nullptr
+
+#pragma warning(push)
+
+// Disable XML warnings
+#pragma warning(disable: 4635)
+#pragma warning(disable: 4638)
+#pragma warning(disable: 4641)
+
+// Disable native code generation warning
+#pragma warning(disable: 4793)
+
+#pragma managed(push, off)

http://git-wip-us.apache.org/repos/asf/geode-native/blob/6cbd424f/clicache/src/end_native.hpp
----------------------------------------------------------------------
diff --git a/clicache/src/end_native.hpp b/clicache/src/end_native.hpp
new file mode 100644
index 0000000..8a8a4ae
--- /dev/null
+++ b/clicache/src/end_native.hpp
@@ -0,0 +1,25 @@
+/*
+ * 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 managed(pop)
+
+#pragma warning(pop)
+
+#pragma pop_macro("nullptr")
+#pragma pop_macro("_ALLOW_KEYWORD_MACROS")
+
+#undef __begin_native__hpp__
\ No newline at end of file