You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by rv...@apache.org on 2016/05/19 15:14:20 UTC
[13/51] [partial] incubator-geode git commit: Add source for geode
c++ and .net clients
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/PoolM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/PoolM.hpp b/geode-client-native/src/clicache/PoolM.hpp
new file mode 100755
index 0000000..0b07f66
--- /dev/null
+++ b/geode-client-native/src/clicache/PoolM.hpp
@@ -0,0 +1,281 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/Pool.hpp"
+#include "impl/NativeWrapper.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+ namespace GemFire
+ {
+ namespace Cache
+ {
+ ref class QueryService;
+ ref class Cache;
+ ref class Properties;
+
+ /// <summary>
+ /// A pool of connections.
+ /// </summary>
+ /// <remarks>
+ /// A pool of connections from a GemFire client to a set of GemFire servers.
+ /// </remarks>
+ [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+ public ref class Pool sealed
+ : public Internal::SBWrap<gemfire::Pool>
+ {
+ public:
+
+ /// <summary>
+ /// Get the name of the pool
+ /// </summary>
+ property String^ Name
+ {
+ String^ get( );
+ }
+
+ /// <summary>
+ /// Returns the connection timeout of this pool.
+ /// </summary>
+ property Int32 FreeConnectionTimeout
+ {
+ Int32 get( );
+ }
+
+ /// <summary>
+ /// Returns the load conditioning interval of this pool.
+ /// </summary>
+ property Int32 LoadConditioningInterval
+ {
+ Int32 get( );
+ }
+
+ /// <summary>
+ /// Returns the socket buffer size of this pool.
+ /// </summary>
+ property Int32 SocketBufferSize
+ {
+ Int32 get( );
+ }
+
+ /// <summary>
+ /// Returns the read timeout of this pool.
+ /// </summary>
+ property Int32 ReadTimeout
+ {
+ Int32 get( );
+ }
+
+ /// <summary>
+ /// Get the minimum connections for this pool.
+ /// </summary>
+ property Int32 MinConnections
+ {
+ Int32 get( );
+ }
+
+ /// <summary>
+ /// Get the maximum connections for this pool.
+ /// </summary>
+ property Int32 MaxConnections
+ {
+ Int32 get( );
+ }
+
+ /// <summary>
+ /// Get the Idle connection timeout for this pool.
+ /// </summary>
+ property Int32 IdleTimeout
+ {
+ Int32 get( );
+ }
+
+ /// <summary>
+ /// Get the ping interval for this pool.
+ /// </summary>
+ property Int32 PingInterval
+ {
+ Int32 get( );
+ }
+
+ /// <summary>
+ /// Get the statistic interval for this pool.
+ /// </summary>
+ property Int32 StatisticInterval
+ {
+ Int32 get( );
+ }
+
+ /// <summary>
+ /// Get the retry attempts for this pool.
+ /// </summary>
+ property Int32 RetryAttempts
+ {
+ Int32 get( );
+ }
+
+ /// <summary>
+ /// Returns the true if a server-to-client subscriptions are enabled on this pool.
+ /// </summary>
+ property Boolean SubscriptionEnabled
+ {
+ Boolean get( );
+ }
+
+ /// <summary>
+ /// Returns the true if a pr-single-hop is set to true on this pool.
+ /// </summary>
+ property Boolean PRSingleHopEnabled
+ {
+ Boolean get( );
+ }
+
+ /// <summary>
+ /// Returns the subscription redundancy level of this pool.
+ /// </summary>
+ property Int32 SubscriptionRedundancy
+ {
+ Int32 get( );
+ }
+
+ /// <summary>
+ /// Returns the subscription message tracking timeout of this pool.
+ /// </summary>
+ property Int32 SubscriptionMessageTrackingTimeout
+ {
+ Int32 get( );
+ }
+
+ /// <summary>
+ /// Returns the subscription ack interval of this pool.
+ /// </summary>
+ property Int32 SubscriptionAckInterval
+ {
+ Int32 get( );
+ }
+
+ /// <summary>
+ /// Returns the server group of this pool.
+ /// </summary>
+ property String^ ServerGroup
+ {
+ String^ get( );
+ }
+
+ /// <summary>
+ /// Returns an unmodifiable list of locators
+ /// this pool is using. Each locator is either one
+ /// added explicitly when the pool was created or
+ /// were discovered using the explicit locators.
+ /// </summary>
+ /// <remarks>
+ /// If a pool has no locators then it can not discover servers or locators at runtime.
+ /// </remarks>
+ property array< String^ >^ Locators
+ {
+ array< String^ >^ get( );
+ }
+
+ /// <summary>
+ /// Returns an unmodifiable list of
+ /// servers this pool is using. These servers were added
+ /// explicitly when the pool was created.
+ property array< String^ >^ Servers
+ {
+ array< String^ >^ get( );
+ }
+
+ /// <summary>
+ /// Returns the true if ThreadLocalConnections are enabled on this pool.
+ /// </summary>
+ property Boolean ThreadLocalConnections
+ {
+ Boolean get( );
+ }
+
+ /// <summary>
+ /// Returns <code>true</code> if multiuser authentication is enabled on this pool.
+ /// <summary>
+ property bool MultiuserAuthentication
+ {
+ bool get( );
+ }
+ /// <summary>
+ /// Destroys this pool closing any connections it produced.
+ /// </summary>
+ /// <param name="keepAlive">
+ /// whether the server should keep the durable client's
+ /// subscriptions alive for the timeout period
+ /// </param>
+ /// <exception cref="IllegalStateException">
+ /// if the pool is still in use
+ /// </exception>
+ void Destroy( Boolean keepAlive );
+
+ /// <summary>
+ /// Destroys this pool closing any connections it produced.
+ /// </summary>
+ /// <exception cref="IllegalStateException">
+ /// if the pool is still in use
+ /// </exception>
+ void Destroy( );
+
+ /// <summary>
+ /// Indicates whether this Pool has been
+ /// destroyed.
+ /// </summary>
+ property Boolean Destroyed
+ {
+ Boolean get( );
+ }
+
+ /// <summary>
+ /// Returns the QueryService for this Pool.
+ /// </summary>
+ /// <remarks>
+ /// The query operations performed using this QueryService will be executed
+ /// on the servers that are associated with this pool.
+ /// To perform Query operation on the local cache obtain the QueryService
+ /// instance from the Cache.
+ /// </remarks>
+ GemStone::GemFire::Cache::QueryService^ GetQueryService();
+
+ internal:
+ /// <summary>
+ /// Internal factory function to wrap a native object pointer inside
+ /// this managed class with null pointer check.
+ /// </summary>
+ /// <param name="nativeptr">The native object pointer</param>
+ /// <returns>
+ /// The managed wrapper object; null if the native pointer is null.
+ /// </returns>
+ inline static Pool^ Create( gemfire::Pool* nativeptr )
+ {
+ return ( nativeptr != nullptr ?
+ gcnew Pool( nativeptr ) : nullptr );
+ }
+
+ private:
+
+ /// <summary>
+ /// Private constructor to wrap a native object pointer
+ /// </summary>
+ /// <param name="nativeptr">The native object pointer</param>
+ inline Pool( gemfire::Pool* nativeptr )
+ : SBWrap( nativeptr ) { }
+ };
+
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/PoolManagerM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/PoolManagerM.cpp b/geode-client-native/src/clicache/PoolManagerM.cpp
new file mode 100755
index 0000000..75ee5b5
--- /dev/null
+++ b/geode-client-native/src/clicache/PoolManagerM.cpp
@@ -0,0 +1,72 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_includes.hpp"
+#include "RegionM.hpp"
+#include "PoolM.hpp"
+#include "PoolManagerM.hpp"
+#include "PoolFactoryM.hpp"
+#include "CacheableStringM.hpp"
+#include "impl/ManagedString.hpp"
+#include "impl/SafeConvert.hpp"
+#include "ExceptionTypesM.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+ namespace GemFire
+ {
+ namespace Cache
+ {
+ PoolFactory^ PoolManager::CreateFactory()
+ {
+ return PoolFactory::Create(gemfire::PoolManager::createFactory().ptr());
+ }
+
+ const Dictionary<String^, Pool^>^ PoolManager::GetAll()
+ {
+ gemfire::HashMapOfPools pools = gemfire::PoolManager::getAll();
+ Dictionary<String^, Pool^>^ result = gcnew Dictionary<String^, Pool^>();
+ for (gemfire::HashMapOfPools::Iterator iter = pools.begin(); iter != pools.end(); ++iter)
+ {
+ String^ key = CacheableString::GetString(iter.first().ptr());
+ Pool^ val = Pool::Create(iter.second().ptr());
+ result->Add(key, val);
+ }
+ return result;
+ }
+
+ Pool^ PoolManager::Find(String^ name)
+ {
+ ManagedString mg_name( name );
+ gemfire::PoolPtr pool = gemfire::PoolManager::find(mg_name.CharPtr);
+ return Pool::Create(pool.ptr());
+ }
+
+ Pool^ PoolManager::Find(Region^ region)
+ {
+ return Pool::Create(gemfire::PoolManager::find(gemfire::RegionPtr(GetNativePtr<gemfire::Region>(region))).ptr());
+ }
+
+ void PoolManager::Close(Boolean KeepAlive)
+ {
+ gemfire::PoolManager::close(KeepAlive);
+ }
+
+ void PoolManager::Close()
+ {
+ gemfire::PoolManager::close();
+ }
+ }
+ }
+}
+
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/PoolManagerM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/PoolManagerM.hpp b/geode-client-native/src/clicache/PoolManagerM.hpp
new file mode 100755
index 0000000..f474e64
--- /dev/null
+++ b/geode-client-native/src/clicache/PoolManagerM.hpp
@@ -0,0 +1,69 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/PoolManager.hpp"
+#include "impl/NativeWrapper.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+ namespace GemFire
+ {
+ namespace Cache
+ {
+ ref class Pool;
+ ref class PoolFactory;
+ ref class Region;
+
+ /// <summary>
+ /// This interface provides for the configuration and creation of instances of PoolFactory.
+ /// </summary>
+ [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+ public ref class PoolManager STATICCLASS
+ {
+ public:
+
+ /// <summary>
+ /// Creates a new PoolFactory which is used to configure and create Pools.
+ /// </summary>
+ static PoolFactory^ CreateFactory();
+
+ /// <summary>
+ /// Returns a map containing all the pools in this manager.
+ /// The keys are pool names and the values are Pool instances.
+ /// </summary>
+ static const Dictionary<String^, Pool^>^ GetAll();
+
+ /// <summary>
+ /// Find by name an existing connection pool.
+ /// </summary>
+ static Pool^ Find(String^ name);
+
+ /// <summary>
+ /// Find the pool used by the given region.
+ /// </summary>
+ static Pool^ Find(Region^ region);
+
+ /// <summary>
+ /// Destroys all created pools.
+ /// </summary>
+ static void Close(Boolean KeepAlive);
+
+ /// <summary>
+ /// Destroys all created pools.
+ /// </summary>
+ static void Close();
+ };
+ }
+ }
+}
+
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/PropertiesM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/PropertiesM.cpp b/geode-client-native/src/clicache/PropertiesM.cpp
new file mode 100644
index 0000000..a2efcdb
--- /dev/null
+++ b/geode-client-native/src/clicache/PropertiesM.cpp
@@ -0,0 +1,525 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "PropertiesM.hpp"
+#include "impl/ManagedVisitor.hpp"
+#include "impl/ManagedString.hpp"
+#include "impl/SafeConvert.hpp"
+#include "ExceptionTypesM.hpp"
+
+
+using namespace System;
+
+
+namespace GemStone
+{
+ namespace GemFire
+ {
+ namespace Cache
+ {
+ // Visitor class to get string representations of a property object
+ ref class PropertyToString
+ {
+ private:
+
+ String^ m_str;
+
+ public:
+
+ inline PropertyToString( ) : m_str( "{" )
+ { }
+
+ void Visit( GemStone::GemFire::Cache::ICacheableKey^ key, IGFSerializable^ value )
+ {
+ if ( m_str->Length > 1 ) {
+ m_str += ",";
+ }
+ m_str += key->ToString( ) + "=" + value;
+ }
+
+ virtual String^ ToString( ) override
+ {
+ return m_str;
+ }
+ };
+
+
+ String^ Properties::Find( String^ key)
+ {
+ ManagedString mg_key( key );
+
+ _GF_MG_EXCEPTION_TRY
+
+ gemfire::CacheableStringPtr value = NativePtr->find( mg_key.CharPtr );
+ return CacheableString::GetString( value.ptr( ) );
+
+ _GF_MG_EXCEPTION_CATCH_ALL
+ }
+
+ IGFSerializable^ Properties::Find( GemStone::GemFire::Cache::ICacheableKey^ key)
+ {
+ CacheableString^ cStr = dynamic_cast<CacheableString ^>(key);
+
+ if ( key != nullptr) {
+ _GF_MG_EXCEPTION_TRY
+
+ gemfire::CacheableStringPtr csPtr;
+
+ CacheableString::GetCacheableString(cStr->Value, csPtr);
+
+ gemfire::CacheablePtr& value = NativePtr->find( csPtr );
+
+ return ConvertCacheableString(value);
+
+ _GF_MG_EXCEPTION_CATCH_ALL
+ }
+ else {
+ gemfire::CacheableKeyPtr keyptr( SafeMKeyConvert( key ) );
+
+ _GF_MG_EXCEPTION_TRY
+
+ gemfire::CacheablePtr& value = NativePtr->find( keyptr );
+ return SafeUMSerializableConvert( value.ptr( ) );
+
+ _GF_MG_EXCEPTION_CATCH_ALL
+ }
+ }
+
+ IGFSerializable^ Properties::ConvertCacheableString(gemfire::CacheablePtr& value)
+ {
+ gemfire::CacheableString * cs = dynamic_cast<gemfire::CacheableString *>( value.ptr() );
+ if ( cs == NULL) {
+ return SafeUMSerializableConvert( value.ptr( ) );
+ }
+ else {
+ if(cs->typeId() == (int8_t)gemfire::GemfireTypeIds::CacheableASCIIString
+ || cs->typeId() == (int8_t)gemfire::GemfireTypeIds::CacheableASCIIStringHuge) {
+ String^ str = gcnew String(cs->asChar());
+ return CacheableString::Create(str);
+ }
+ else {
+ String^ str = gcnew String(cs->asWChar());
+ return CacheableString::Create(str);
+ }
+ }
+ }
+
+ IGFSerializable^ Properties::Find( CacheableKey^ key)
+ {
+ CacheableString^ cStr = dynamic_cast<CacheableString ^>(key);
+
+ if ( key != nullptr) {
+ _GF_MG_EXCEPTION_TRY
+
+ gemfire::CacheableStringPtr csPtr;
+
+ CacheableString::GetCacheableString(cStr->Value, csPtr);
+
+ gemfire::CacheablePtr& value = NativePtr->find( csPtr );
+
+ return ConvertCacheableString(value);
+
+ _GF_MG_EXCEPTION_CATCH_ALL
+ }
+ else {
+ gemfire::CacheableKeyPtr keyptr(
+ (gemfire::CacheableKey*)GetNativePtr<gemfire::Cacheable>( key ) );
+
+ _GF_MG_EXCEPTION_TRY
+
+ gemfire::CacheablePtr& value = NativePtr->find( keyptr );
+ return SafeUMSerializableConvert( value.ptr( ) );
+
+ _GF_MG_EXCEPTION_CATCH_ALL
+ }
+ }
+
+ void Properties::Insert( String^ key, String^ value)
+ {
+ ManagedString mg_key( key );
+ ManagedString mg_value( value );
+
+ _GF_MG_EXCEPTION_TRY
+
+ NativePtr->insert( mg_key.CharPtr, mg_value.CharPtr );
+
+ _GF_MG_EXCEPTION_CATCH_ALL
+ }
+
+ void Properties::Insert( String^ key, const int32_t value)
+ {
+ //TODO::hitesh
+ ManagedString mg_key( key );
+
+ _GF_MG_EXCEPTION_TRY
+
+ NativePtr->insert( mg_key.CharPtr, value );
+
+ _GF_MG_EXCEPTION_CATCH_ALL
+ }
+
+ void Properties::Insert( GemStone::GemFire::Cache::ICacheableKey^ key, IGFSerializable^ value)
+ {
+ CacheableString^ cStr = dynamic_cast<CacheableString ^>(key);
+ if (cStr != nullptr) {
+ _GF_MG_EXCEPTION_TRY
+ gemfire::CacheableKeyPtr keyptr(ConvertCacheableStringKey(cStr));
+ CacheableString^ cValueStr = dynamic_cast<CacheableString ^>(value);
+
+ if (cValueStr != nullptr) {
+ gemfire::CacheablePtr valueptr(ConvertCacheableStringKey(cValueStr));
+ NativePtr->insert( keyptr, valueptr );
+ }
+ else {
+ gemfire::CacheablePtr valueptr( SafeMSerializableConvert( value ) );
+ NativePtr->insert( keyptr, valueptr );
+ }
+ _GF_MG_EXCEPTION_CATCH_ALL
+ }
+ else {
+ gemfire::CacheableKeyPtr keyptr( SafeMKeyConvert( key ) );
+ gemfire::CacheablePtr valueptr( SafeMSerializableConvert( value ) );
+
+ _GF_MG_EXCEPTION_TRY
+
+ NativePtr->insert( keyptr, valueptr );
+
+ _GF_MG_EXCEPTION_CATCH_ALL
+ }
+ }
+
+ void Properties::Insert( CacheableKey^ key, IGFSerializable^ value)
+ {
+ CacheableString^ cStr = dynamic_cast<CacheableString ^>(key);
+ if (cStr != nullptr) {
+ _GF_MG_EXCEPTION_TRY
+ gemfire::CacheableKeyPtr keyptr(ConvertCacheableStringKey(cStr));
+ CacheableString^ cValueStr = dynamic_cast<CacheableString ^>(value);
+
+ if (cValueStr != nullptr) {
+ gemfire::CacheablePtr valueptr(ConvertCacheableStringKey(cValueStr));
+ NativePtr->insert( keyptr, valueptr );
+ }
+ else {
+ gemfire::CacheablePtr valueptr( SafeMSerializableConvert( value ) );
+ NativePtr->insert( keyptr, valueptr );
+ }
+ _GF_MG_EXCEPTION_CATCH_ALL
+ }
+ else {
+ gemfire::CacheableKeyPtr keyptr(
+ (gemfire::CacheableKey*)GetNativePtr<gemfire::Cacheable>( key ) );
+ gemfire::CacheablePtr valueptr( SafeMSerializableConvert( value ) );
+
+ _GF_MG_EXCEPTION_TRY
+
+ NativePtr->insert( keyptr, valueptr );
+
+ _GF_MG_EXCEPTION_CATCH_ALL
+ }
+ }
+
+ gemfire::CacheableKey * Properties::ConvertCacheableStringKey(CacheableString^ cStr)
+ {
+ gemfire::CacheableStringPtr csPtr;
+ CacheableString::GetCacheableString(cStr->Value, csPtr);
+
+ return csPtr.ptr();
+ }
+
+ void Properties::Insert( GemStone::GemFire::Cache::ICacheableKey^ key, Serializable^ value)
+ {
+ CacheableString^ cStr = dynamic_cast<CacheableString ^>(key);
+ if (cStr != nullptr) {
+ _GF_MG_EXCEPTION_TRY
+ gemfire::CacheableKeyPtr keyptr(ConvertCacheableStringKey(cStr));
+ CacheableString^ cValueStr = dynamic_cast<CacheableString ^>(value);
+
+ if (cValueStr != nullptr) {
+ gemfire::CacheablePtr valueptr(ConvertCacheableStringKey(cValueStr));
+ NativePtr->insert( keyptr, valueptr );
+ }
+ else {
+ gemfire::CacheablePtr valueptr(
+ GetNativePtr<gemfire::Cacheable>( value ) );
+ NativePtr->insert( keyptr, valueptr );
+ }
+ _GF_MG_EXCEPTION_CATCH_ALL
+ }
+ else {
+ gemfire::CacheableKeyPtr keyptr( SafeMKeyConvert( key ) );
+ gemfire::CacheablePtr valueptr(
+ GetNativePtr<gemfire::Cacheable>( value ) );
+
+ _GF_MG_EXCEPTION_TRY
+
+ NativePtr->insert( keyptr, valueptr );
+
+ _GF_MG_EXCEPTION_CATCH_ALL
+ }
+ }
+
+ void Properties::Insert( CacheableKey^ key, Serializable^ value)
+ {
+ CacheableString^ cStr = dynamic_cast<CacheableString ^>(key);
+ if (cStr != nullptr) {
+ _GF_MG_EXCEPTION_TRY
+ gemfire::CacheableKeyPtr keyptr(ConvertCacheableStringKey(cStr));
+ CacheableString^ cValueStr = dynamic_cast<CacheableString ^>(value);
+
+ if (cValueStr != nullptr) {
+ gemfire::CacheablePtr valueptr(ConvertCacheableStringKey(cValueStr));
+ NativePtr->insert( keyptr, valueptr );
+ }
+ else {
+ gemfire::CacheablePtr valueptr(
+ GetNativePtr<gemfire::Cacheable>( value ) );
+ NativePtr->insert( keyptr, valueptr );
+ }
+ _GF_MG_EXCEPTION_CATCH_ALL
+ }
+ else {
+ gemfire::CacheableKeyPtr keyptr(
+ (gemfire::CacheableKey*)GetNativePtr<gemfire::Cacheable>( key ) );
+ gemfire::CacheablePtr valueptr(
+ GetNativePtr<gemfire::Cacheable>( value ) );
+
+ _GF_MG_EXCEPTION_TRY
+
+ NativePtr->insert( keyptr, valueptr );
+
+ _GF_MG_EXCEPTION_CATCH_ALL
+ }
+ }
+
+ void Properties::Remove( String^ key)
+ {
+ ManagedString mg_key( key );
+
+ _GF_MG_EXCEPTION_TRY
+
+ NativePtr->remove( mg_key.CharPtr );
+
+ _GF_MG_EXCEPTION_CATCH_ALL
+ }
+
+ void Properties::Remove( GemStone::GemFire::Cache::ICacheableKey^ key)
+ {
+ CacheableString^ cStr = dynamic_cast<CacheableString ^>(key);
+ if (cStr != nullptr) {
+ _GF_MG_EXCEPTION_TRY
+
+ gemfire::CacheableKeyPtr keyptr(ConvertCacheableStringKey(cStr));
+
+ NativePtr->remove( keyptr );
+
+ _GF_MG_EXCEPTION_CATCH_ALL
+ }
+ else {
+ gemfire::CacheableKeyPtr keyptr( SafeMKeyConvert( key ) );
+
+ _GF_MG_EXCEPTION_TRY
+
+ NativePtr->remove( keyptr );
+
+ _GF_MG_EXCEPTION_CATCH_ALL
+ }
+ }
+
+ void Properties::Remove( CacheableKey^ key)
+ {
+ CacheableString^ cStr = dynamic_cast<CacheableString ^>(key);
+ if (cStr != nullptr) {
+ _GF_MG_EXCEPTION_TRY
+
+ gemfire::CacheableKeyPtr keyptr(ConvertCacheableStringKey(cStr));
+
+ NativePtr->remove( keyptr );
+
+ _GF_MG_EXCEPTION_CATCH_ALL
+ }
+ else {
+ gemfire::CacheableKeyPtr keyptr(
+ (gemfire::CacheableKey*)GetNativePtr<gemfire::Cacheable>( key ) );
+
+ _GF_MG_EXCEPTION_TRY
+
+ NativePtr->remove( keyptr );
+
+ _GF_MG_EXCEPTION_CATCH_ALL
+ }
+ }
+
+ void Properties::ForEach( PropertyVisitor^ visitor )
+ {
+ if (visitor != nullptr)
+ {
+ gemfire::ManagedVisitor mg_visitor( visitor );
+
+ _GF_MG_EXCEPTION_TRY
+
+ NativePtr->foreach( mg_visitor );
+
+ _GF_MG_EXCEPTION_CATCH_ALL
+ }
+ }
+
+ uint32_t Properties::Size::get( )
+ {
+ _GF_MG_EXCEPTION_TRY
+
+ return NativePtr->getSize( );
+
+ _GF_MG_EXCEPTION_CATCH_ALL
+ }
+
+ void Properties::AddAll( Properties^ other )
+ {
+ gemfire::PropertiesPtr p_other(
+ GetNativePtr<gemfire::Properties>( other ) );
+
+ _GF_MG_EXCEPTION_TRY
+
+ NativePtr->addAll( p_other );
+
+ _GF_MG_EXCEPTION_CATCH_ALL
+ }
+
+ void Properties::Load( String^ fileName )
+ {
+ ManagedString mg_fname( fileName );
+
+ _GF_MG_EXCEPTION_TRY
+
+ NativePtr->load( mg_fname.CharPtr );
+
+ _GF_MG_EXCEPTION_CATCH_ALL
+ }
+
+ String^ Properties::ToString( )
+ {
+ PropertyToString^ propStr = gcnew PropertyToString( );
+ this->ForEach( gcnew PropertyVisitor( propStr,
+ &PropertyToString::Visit ) );
+ String^ str = propStr->ToString( );
+ return ( str + "}" );
+ }
+
+ // IGFSerializable methods
+
+ void Properties::ToData( DataOutput^ output )
+ {
+ if (output->IsManagedObject()) {
+ //TODO::hitesh??
+ output->WriteBytesToUMDataOutput();
+ }
+
+ gemfire::DataOutput* nativeOutput =
+ GetNativePtr<gemfire::DataOutput>(output);
+
+ if (nativeOutput != nullptr)
+ {
+ _GF_MG_EXCEPTION_TRY
+
+ NativePtr->toData( *nativeOutput );
+
+ _GF_MG_EXCEPTION_CATCH_ALL
+ }
+
+ if (output->IsManagedObject()) {
+ output->SetBuffer();
+ }
+ }
+
+ IGFSerializable^ Properties::FromData( DataInput^ input )
+ {
+ if(input->IsManagedObject()) {
+ input->AdvanceUMCursor();
+ }
+ //TODO::hitesh??
+ gemfire::DataInput* nativeInput =
+ GetNativePtr<gemfire::DataInput>( input );
+ if (nativeInput != nullptr)
+ {
+ _GF_MG_EXCEPTION_TRY
+
+ AssignPtr( static_cast<gemfire::Properties*>(
+ NativePtr->fromData( *nativeInput ) ) );
+
+ _GF_MG_EXCEPTION_CATCH_ALL
+ }
+
+ if(input->IsManagedObject()) {
+ input->SetBuffer();
+ }
+
+ return this;
+ }
+
+ uint32_t Properties::ObjectSize::get( )
+ {
+ //TODO::hitesh
+ _GF_MG_EXCEPTION_TRY
+
+ return NativePtr->objectSize( );
+
+ _GF_MG_EXCEPTION_CATCH_ALL
+ }
+
+ // ISerializable methods
+
+ void Properties::GetObjectData( SerializationInfo^ info,
+ StreamingContext context )
+ {
+ if (_NativePtr != NULL) {
+ gemfire::DataOutput output;
+
+ _GF_MG_EXCEPTION_TRY
+
+ NativePtr->toData( output );
+
+ _GF_MG_EXCEPTION_CATCH_ALL
+
+ array<Byte>^ bytes = gcnew array<Byte>( output.getBufferLength( ) );
+ {
+ pin_ptr<const Byte> pin_bytes = &bytes[0];
+ memcpy( (uint8_t*)pin_bytes, output.getBuffer( ),
+ output.getBufferLength( ) );
+ }
+ info->AddValue( "bytes", bytes, array<Byte>::typeid );
+ }
+ }
+
+ Properties::Properties( SerializationInfo^ info,
+ StreamingContext context )
+ : SBWrap( gemfire::Properties::create( ).ptr( ) )
+ {
+ array<Byte>^ bytes = nullptr;
+ try {
+ bytes = dynamic_cast<array<Byte>^>( info->GetValue( "bytes",
+ array<Byte>::typeid ) );
+ }
+ catch ( System::Exception^ ) {
+ // could not find the header -- null value
+ }
+ if (bytes != nullptr) {
+ pin_ptr<const Byte> pin_bytes = &bytes[0];
+
+ _GF_MG_EXCEPTION_TRY
+
+ gemfire::DataInput input( (uint8_t*)pin_bytes, bytes->Length );
+ AssignPtr( static_cast<gemfire::Properties*>(
+ NativePtr->fromData( input ) ) );
+
+ _GF_MG_EXCEPTION_CATCH_ALL
+ }
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/PropertiesM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/PropertiesM.hpp b/geode-client-native/src/clicache/PropertiesM.hpp
new file mode 100644
index 0000000..14be77d
--- /dev/null
+++ b/geode-client-native/src/clicache/PropertiesM.hpp
@@ -0,0 +1,358 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/Properties.hpp"
+#include "impl/NativeWrapper.hpp"
+#include "IGFSerializable.hpp"
+#include "ICacheableKey.hpp"
+#include "DataInputM.hpp"
+#include "DataOutputM.hpp"
+#include "CacheableStringM.hpp"
+
+
+using namespace System;
+using namespace System::Runtime::Serialization;
+
+namespace GemStone
+{
+ namespace GemFire
+ {
+ namespace Cache
+ {
+
+ /// <summary>
+ /// Delegate that represents visitor for the <c>Properties</c> class.
+ /// </summary>
+ /// <remarks>
+ /// This delegate is passed to the <c>Properties.ForEach</c> function
+ /// that invokes this delegate for each property having a key
+ /// and a value.
+ /// </remarks>
+ /// <param name="key">The key of the property.</param>
+ /// <param name="value">The value of the property.</param>
+ public delegate void PropertyVisitor( GemStone::GemFire::Cache::ICacheableKey^ key,
+ IGFSerializable^ value );
+
+ [Serializable]
+ /// <summary>
+ /// Provides a collection of properties, each of which is a key/value
+ /// pair. Each key is a string, and the value may be a string
+ /// or an integer.
+ /// </summary>
+ [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+ public ref class Properties sealed
+ : public Internal::SBWrap<gemfire::Properties>, public IGFSerializable,
+ public ISerializable
+ {
+ public:
+
+ /// <summary>
+ /// Default constructor: returns an empty collection.
+ /// </summary>
+ inline Properties( )
+ : SBWrap( gemfire::Properties::create( ).ptr( ) ) { }
+
+ /// <summary>
+ /// Factory method to create an empty collection of properties.
+ /// </summary>
+ /// <returns>empty collection of properties</returns>
+ inline static Properties^ Create( )
+ {
+ return gcnew Properties( );
+ }
+
+ /// <summary>
+ /// Return the value for the given key, or NULL if not found.
+ /// </summary>
+ /// <param name="key">the key to find</param>
+ /// <returns>the value for the key</returns>
+ /// <exception cref="NullPointerException">
+ /// if the key is null
+ /// </exception>
+ String^ Find( String^ key );
+
+ /// <summary>
+ /// Return the value for the given <c>ICacheableKey</c>,
+ /// or NULL if not found.
+ /// </summary>
+ /// <param name="key">the key to find</param>
+ /// <returns>the serializable value for the key</returns>
+ /// <exception cref="NullPointerException">
+ /// if the key is null
+ /// </exception>
+ IGFSerializable^ Find( GemStone::GemFire::Cache::ICacheableKey^ key );
+
+ /// <summary>
+ /// Return the value for the given <c>CacheableKey</c>,
+ /// or NULL if not found.
+ /// </summary>
+ /// <param name="key">the key to find</param>
+ /// <returns>the serializable value for the key</returns>
+ /// <exception cref="NullPointerException">
+ /// if the key is null
+ /// </exception>
+ IGFSerializable^ Find( CacheableKey^ key );
+
+ /// <summary>
+ /// Add or update the string value for key.
+ /// </summary>
+ /// <param name="key">the key to insert</param>
+ /// <param name="value">the string value to insert</param>
+ /// <exception cref="NullPointerException">
+ /// if the key is null
+ /// </exception>
+ void Insert( String^ key, String^ value);
+
+ /// <summary>
+ /// Add or update the int value for key.
+ /// </summary>
+ /// <param name="key">the key to insert</param>
+ /// <param name="value">the integer value to insert</param>
+ /// <exception cref="NullPointerException">
+ /// if the key is null
+ /// </exception>
+ void Insert( String^ key, int32_t value );
+
+ /// <summary>
+ /// Add or update <c>IGFSerializable</c> value for <c>ICacheableKey</c>.
+ /// </summary>
+ /// <param name="key">the key to insert</param>
+ /// <param name="value">the <c>IGFSerializable</c> value to insert</param>
+ /// <exception cref="NullPointerException">
+ /// if the key is null
+ /// </exception>
+ void Insert( GemStone::GemFire::Cache::ICacheableKey^ key, IGFSerializable^ value );
+
+ /// <summary>
+ /// Add or update <c>IGFSerializable</c> value for <c>CacheableKey</c>.
+ /// </summary>
+ /// <param name="key">the key to insert</param>
+ /// <param name="value">the <c>IGFSerializable</c> value to insert</param>
+ /// <exception cref="NullPointerException">
+ /// if the key is null
+ /// </exception>
+ void Insert( CacheableKey^ key, IGFSerializable^ value );
+
+ /// <summary>
+ /// Add or update <c>Serializable</c> value for <c>ICacheableKey</c>.
+ /// </summary>
+ /// <param name="key">the key to insert</param>
+ /// <param name="value">the <c>Serializable</c> value to insert</param>
+ /// <exception cref="NullPointerException">
+ /// if the key is null
+ /// </exception>
+ void Insert( GemStone::GemFire::Cache::ICacheableKey^ key, GemStone::GemFire::Cache::Serializable^ value );
+
+ /// <summary>
+ /// Add or update <c>Serializable</c> value for <c>CacheableKey</c>.
+ /// </summary>
+ /// <param name="key">the key to insert</param>
+ /// <param name="value">the <c>Serializable</c> value to insert</param>
+ /// <exception cref="NullPointerException">
+ /// if the key is null
+ /// </exception>
+ void Insert( CacheableKey^ key, GemStone::GemFire::Cache::Serializable^ value );
+
+ /// <summary>
+ /// Remove the key from the collection.
+ /// </summary>
+ /// <param name="key">the key to remove</param>
+ /// <exception cref="NullPointerException">
+ /// if the key is null
+ /// </exception>
+ void Remove( String^ key );
+
+ /// <summary>
+ /// Remove the given <c>ICacheableKey</c> from the collection.
+ /// </summary>
+ /// <param name="key">the key to remove</param>
+ /// <exception cref="NullPointerException">
+ /// if the key is null
+ /// </exception>
+ void Remove( GemStone::GemFire::Cache::ICacheableKey^ key );
+
+ /// <summary>
+ /// Remove the given <c>CacheableKey</c> from the collection.
+ /// </summary>
+ /// <param name="key">the key to remove</param>
+ /// <exception cref="NullPointerException">
+ /// if the key is null
+ /// </exception>
+ void Remove( CacheableKey^ key );
+
+ /// <summary>
+ /// Execute the Visitor delegate for each entry in the collection.
+ /// </summary>
+ /// <param name="visitor">visitor delegate</param>
+ void ForEach( PropertyVisitor^ visitor );
+
+ /// <summary>
+ /// Return the number of entries in the collection.
+ /// </summary>
+ /// <returns>the number of entries</returns>
+ property uint32_t Size
+ {
+ uint32_t get( );
+ }
+
+ /// <summary>
+ /// Adds the contents of <c>other</c> to this instance, replacing
+ /// any existing values with those from other.
+ /// </summary>
+ /// <param name="other">new set of properties</param>
+ void AddAll( Properties^ other );
+
+ /// <summary>
+ /// Reads property values from a file, overriding what is currently
+ /// in the properties object.
+ /// </summary>
+ /// <param name="fileName">the name of the file</param>
+ void Load( String^ fileName );
+
+ /// <summary>
+ /// Returns a string representation of the current
+ /// <c>Properties</c> object.
+ /// </summary>
+ /// <returns>
+ /// A comma separated list of property name,value pairs.
+ /// </returns>
+ virtual String^ ToString( ) override;
+
+ // IGFSerializable members
+
+ /// <summary>
+ /// Serializes this Properties object.
+ /// </summary>
+ /// <param name="output">
+ /// the DataOutput stream to use for serialization
+ /// </param>
+ virtual void ToData( DataOutput^ output );
+
+ /// <summary>
+ /// Deserializes this Properties object.
+ /// </summary>
+ /// <param name="input">
+ /// the DataInput stream to use for reading data
+ /// </param>
+ /// <returns>the deserialized Properties object</returns>
+ virtual IGFSerializable^ FromData( DataInput^ input );
+
+ /// <summary>
+ /// return the size of this object in bytes
+ /// </summary>
+ virtual property uint32_t ObjectSize
+ {
+ virtual uint32_t get( );
+ }
+
+ /// <summary>
+ /// Returns the classId of this class for serialization.
+ /// </summary>
+ /// <returns>classId of the Properties class</returns>
+ /// <seealso cref="IGFSerializable.ClassId" />
+ virtual property uint32_t ClassId
+ {
+ inline virtual uint32_t get( )
+ {
+ return GemFireClassIds::Properties;
+ }
+ }
+
+ // End: IGFSerializable members
+
+ // ISerializable members
+
+ virtual void GetObjectData( SerializationInfo^ info,
+ StreamingContext context );
+
+ // End: ISerializable members
+
+ /// <summary>
+ /// Get the underlying native unmanaged pointer.
+ /// </summary>
+ property void* NativeIntPtr
+ {
+ inline void* get()
+ {
+ return _NativePtr;
+ }
+ }
+
+ inline static IGFSerializable^ ConvertCacheableString(gemfire::CacheablePtr& value);
+ inline static gemfire::CacheableKey * ConvertCacheableStringKey(CacheableString^ cStr);
+
+
+ /// <summary>
+ /// Internal factory function to wrap a native object pointer inside
+ /// this managed class with null pointer check.
+ /// </summary>
+ /// <param name="ptr">The native IntPtr pointer</param>
+ /// <returns>
+ /// The managed wrapper object; null if the native pointer is null.
+ /// </returns>
+ static Properties^ CreateFromVoidPtr(void* ptr)
+ {
+ gemfire::Properties* nativeptr = (gemfire::Properties*)ptr;
+ return ( nativeptr != nullptr ?
+ gcnew Properties( nativeptr ) : nullptr );
+ }
+
+
+ protected:
+
+ // For deserialization using the .NET serialization (ISerializable)
+ Properties( SerializationInfo^ info, StreamingContext context );
+
+
+ internal:
+
+
+ /// <summary>
+ /// Factory function to register wrapper
+ /// </summary>
+ inline static IGFSerializable^ CreateDeserializable(
+ gemfire::Serializable* nativeptr )
+ {
+ return Create( nativeptr );
+ }
+
+ /// <summary>
+ /// Internal factory function to wrap a native object pointer inside
+ /// this managed class with null pointer check.
+ /// </summary>
+ /// <param name="nativeptr">The native object pointer</param>
+ /// <returns>
+ /// The managed wrapper object; null if the native pointer is null.
+ /// </returns>
+ static Properties^ Create( gemfire::Serializable* nativeptr )
+ {
+ return ( nativeptr != nullptr ?
+ gcnew Properties( nativeptr ) : nullptr );
+ }
+
+ inline static IGFSerializable^ CreateDeserializable( )
+ {
+ return Create( );
+ }
+
+ private:
+
+ /// <summary>
+ /// Private constructor to wrap a native object pointer
+ /// </summary>
+ /// <param name="nativeptr">The native object pointer</param>
+ inline Properties( gemfire::Serializable* nativeptr )
+ : SBWrap( (gemfire::Properties*)nativeptr ) { }
+ };
+
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/QueryM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/QueryM.cpp b/geode-client-native/src/clicache/QueryM.cpp
new file mode 100644
index 0000000..319ef8a
--- /dev/null
+++ b/geode-client-native/src/clicache/QueryM.cpp
@@ -0,0 +1,121 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "QueryM.hpp"
+#include "ISelectResults.hpp"
+#include "ResultSetM.hpp"
+#include "StructSetM.hpp"
+#include "ExceptionTypesM.hpp"
+#include "impl/SafeConvert.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+ namespace GemFire
+ {
+ namespace Cache
+ {
+
+ ISelectResults^ Query::Execute( )
+ {
+ return Execute( DEFAULT_QUERY_RESPONSE_TIMEOUT );
+ }
+
+ ISelectResults^ Query::Execute( uint32_t timeout )
+ {
+ _GF_MG_EXCEPTION_TRY
+
+ gemfire::SelectResultsPtr& nativeptr = NativePtr->execute( timeout );
+ if ( nativeptr.ptr( ) == NULL ) return nullptr;
+
+ gemfire::ResultSet* resultptr = dynamic_cast<gemfire::ResultSet*>(
+ nativeptr.ptr( ) );
+ if ( resultptr == NULL )
+ {
+ gemfire::StructSet* structptr = dynamic_cast<gemfire::StructSet*>(
+ nativeptr.ptr( ) );
+ if ( structptr == NULL )
+ {
+ return nullptr;
+ }
+ return StructSet::Create(structptr);
+ }
+ else
+ {
+ return ResultSet::Create(resultptr);
+ }
+
+ _GF_MG_EXCEPTION_CATCH_ALL
+ }
+
+ ISelectResults^ Query::Execute( array<IGFSerializable^>^ paramList)
+ {
+ return Execute(paramList, DEFAULT_QUERY_RESPONSE_TIMEOUT);
+ }
+
+ ISelectResults^ Query::Execute( array<IGFSerializable^>^ paramList, uint32_t timeout )
+ {
+ _GF_MG_EXCEPTION_TRY
+
+ gemfire::CacheableVectorPtr rsptr = gemfire::CacheableVector::create();
+ for( int index = 0; index < paramList->Length; index++ )
+ {
+ rsptr->push_back(gemfire::CacheablePtr(SafeMSerializableConvert( paramList[ index])));
+ }
+
+ gemfire::SelectResultsPtr& nativeptr = NativePtr->execute(rsptr, timeout );
+ if ( nativeptr.ptr( ) == NULL ) return nullptr;
+
+ gemfire::ResultSet* resultptr = dynamic_cast<gemfire::ResultSet*>(
+ nativeptr.ptr( ) );
+ if ( resultptr == NULL )
+ {
+ gemfire::StructSet* structptr = dynamic_cast<gemfire::StructSet*>(
+ nativeptr.ptr( ) );
+ if ( structptr == NULL )
+ {
+ return nullptr;
+ }
+ return StructSet::Create(structptr);
+ }
+ else
+ {
+ return ResultSet::Create(resultptr);
+ }
+
+ _GF_MG_EXCEPTION_CATCH_ALL
+ }
+
+ String^ Query::QueryString::get( )
+ {
+ return ManagedString::Get( NativePtr->getQueryString( ) );
+ }
+
+ void Query::Compile( )
+ {
+ _GF_MG_EXCEPTION_TRY
+
+ NativePtr->compile( );
+
+ _GF_MG_EXCEPTION_CATCH_ALL
+ }
+
+ bool Query::IsCompiled::get( )
+ {
+ _GF_MG_EXCEPTION_TRY
+
+ return NativePtr->isCompiled( );
+
+ _GF_MG_EXCEPTION_CATCH_ALL
+ }
+
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/QueryM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/QueryM.hpp b/geode-client-native/src/clicache/QueryM.hpp
new file mode 100644
index 0000000..add3b8e
--- /dev/null
+++ b/geode-client-native/src/clicache/QueryM.hpp
@@ -0,0 +1,200 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/Query.hpp"
+#include "IGFSerializable.hpp"
+#include "impl/NativeWrapper.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+ namespace GemFire
+ {
+ namespace Cache
+ {
+
+ interface class ISelectResults;
+
+ /// <summary>
+ /// Class to encapsulate a query.
+ /// </summary>
+ /// <remarks>
+ /// A Query is obtained from a QueryService which in turn is obtained
+ /// from the Cache.
+ /// This can be executed to return SelectResults which can be either
+ /// a ResultSet or a StructSet.
+ ///
+ /// This class is intentionally not thread-safe. So multiple threads
+ /// should not operate on the same <c>Query</c> object concurrently
+ /// rather should have their own <c>Query</c> objects.
+ /// </remarks>
+ [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+ public ref class Query sealed
+ : public Internal::SBWrap<gemfire::Query>
+ {
+ public:
+
+ /// <summary>
+ /// Executes the OQL Query on the cache server and returns
+ /// the results. The default timeout for the query is 15 secs.
+ /// </summary>
+ /// <exception cref="QueryException">
+ /// if some query error occurred at the server.
+ /// </exception>
+ /// <exception cref="IllegalStateException">
+ /// if some other error occurred.
+ /// </exception>
+ /// <exception cref="NotConnectedException">
+ /// if no java cache server is available.
+ /// For pools configured with locators, if no locators are available, innerException
+ /// of NotConnectedException is set to NoAvailableLocatorsException.
+ /// </exception>
+ /// <returns>
+ /// An <see cref="ISelectResults"/> object which can either be a
+ /// <see cref="ResultSet"/> or a <see cref="StructSet"/>.
+ /// </returns>
+ ISelectResults^ Execute( );
+
+ /// <summary>
+ /// Executes the OQL Query on the cache server with the specified
+ /// timeout and returns the results.
+ /// </summary>
+ /// <param name="timeout">The time (in seconds) to wait for query response.
+ /// This should be less than or equal to 2^31/1000 i.e. 2147483.
+ /// </param>
+ /// <exception cref="IllegalArgumentException">
+ /// if timeout parameter is greater than 2^31/1000.
+ /// </exception>
+ /// <exception cref="QueryException">
+ /// if some query error occurred at the server.
+ /// </exception>
+ /// <exception cref="IllegalStateException">
+ /// if some other error occurred.
+ /// </exception>
+ /// <exception cref="NotConnectedException">
+ /// if no java cache server is available
+ /// For pools configured with locators, if no locators are available, innerException
+ /// of NotConnectedException is set to NoAvailableLocatorsException.
+ /// </exception>
+ /// <returns>
+ /// An <see cref="ISelectResults"/> object which can either be a
+ /// <see cref="ResultSet"/> or a <see cref="StructSet"/>.
+ /// </returns>
+ ISelectResults^ Execute( uint32_t timeout );
+
+ /// <summary>
+ /// Executes the OQL Parameterized Query on the cache server with the specified
+ /// paramList & timeout parameters and returns the results.
+ /// </summary>
+ /// <param name="paramList">The Parameter List for the specified Query.
+ /// </param>
+ /// <param name="timeout">The time (in seconds) to wait for query response.
+ /// This should be less than or equal to 2^31/1000 i.e. 2147483.
+ /// </param>
+ /// <exception cref="IllegalArgumentException">
+ /// if timeout parameter is greater than 2^31/1000.
+ /// </exception>
+ /// <exception cref="QueryException">
+ /// if some query error occurred at the server.
+ /// </exception>
+ /// <exception cref="IllegalStateException">
+ /// if some other error occurred.
+ /// </exception>
+ /// <exception cref="NotConnectedException">
+ /// if no java cache server is available
+ /// For pools configured with locators, if no locators are available, innerException
+ /// of NotConnectedException is set to NoAvailableLocatorsException.
+ /// </exception>
+ /// <returns>
+ /// An <see cref="ISelectResults"/> object which can either be a
+ /// <see cref="ResultSet"/> or a <see cref="StructSet"/>.
+ /// </returns>
+ ISelectResults^ Execute( array<IGFSerializable^>^ paramList, uint32_t timeout );
+
+ /// <summary>
+ /// Executes the OQL Parameterized Query on the cache server with the specified
+ /// paramList and returns the results. The default timeout for the query is 15 secs.
+ /// </summary>
+ /// <param name="paramList">The Parameter List for the specified Query.
+ /// </param>
+ /// <exception cref="IllegalArgumentException">
+ /// if timeout parameter is greater than 2^31/1000.
+ /// </exception>
+ /// <exception cref="QueryException">
+ /// if some query error occurred at the server.
+ /// </exception>
+ /// <exception cref="IllegalStateException">
+ /// if some other error occurred.
+ /// </exception>
+ /// <exception cref="NotConnectedException">
+ /// if no java cache server is available
+ /// For pools configured with locators, if no locators are available, innerException
+ /// of NotConnectedException is set to NoAvailableLocatorsException.
+ /// </exception>
+ /// <returns>
+ /// An <see cref="ISelectResults"/> object which can either be a
+ /// <see cref="ResultSet"/> or a <see cref="StructSet"/>.
+ /// </returns>
+ ISelectResults^ Execute( array<IGFSerializable^>^ paramList);
+ /// <summary>
+ /// Get the string for this query.
+ /// </summary>
+ property String^ QueryString
+ {
+ String^ get( );
+ }
+
+ /// <summary>
+ /// Compile the given query -- NOT IMPLEMENTED.
+ /// </summary>
+ void Compile( );
+
+ /// <summary>
+ /// Check if the query is compiled -- NOT IMPLEMENTED.
+ /// </summary>
+ property bool IsCompiled
+ {
+ bool get( );
+ }
+
+
+ internal:
+
+ /// <summary>
+ /// Internal factory function to wrap a native object pointer inside
+ /// this managed class with null pointer check.
+ /// </summary>
+ /// <param name="nativeptr">The native object pointer</param>
+ /// <returns>
+ /// The managed wrapper object; null if the native pointer is null.
+ /// </returns>
+ inline static Query^ Create( gemfire::Query* nativeptr )
+ {
+ return ( nativeptr != nullptr ?
+ gcnew Query( nativeptr ) : nullptr );
+ }
+
+
+ private:
+
+ /// <summary>
+ /// Private constructor to wrap a native object pointer
+ /// </summary>
+ /// <param name="nativeptr">The native object pointer</param>
+ inline Query( gemfire::Query* nativeptr )
+ : SBWrap( nativeptr ) { }
+ };
+
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/QueryServiceM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/QueryServiceM.cpp b/geode-client-native/src/clicache/QueryServiceM.cpp
new file mode 100644
index 0000000..d9e61d0
--- /dev/null
+++ b/geode-client-native/src/clicache/QueryServiceM.cpp
@@ -0,0 +1,169 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "QueryServiceM.hpp"
+#include "QueryM.hpp"
+#include "LogM.hpp"
+#include "CqAttributesM.hpp"
+#include "CqQueryM.hpp"
+#include "CqServiceStatisticsM.hpp"
+#include "impl/ManagedString.hpp"
+#include "ExceptionTypesM.hpp"
+#include "impl/SafeConvert.hpp"
+
+using namespace System;
+
+namespace GemStone
+{
+ namespace GemFire
+ {
+ namespace Cache
+ {
+
+ Query^ QueryService::NewQuery( String^ query )
+ {
+ ManagedString mg_queryStr( query );
+
+ _GF_MG_EXCEPTION_TRY
+
+ return Query::Create( NativePtr->newQuery(
+ mg_queryStr.CharPtr ).ptr( ) );
+
+ _GF_MG_EXCEPTION_CATCH_ALL
+ }
+ CqQuery^ QueryService::NewCq( String^ query, CqAttributes^ cqAttr, bool isDurable )
+ {
+ ManagedString mg_queryStr( query );
+ gemfire::CqAttributesPtr attr(GetNativePtr<gemfire::CqAttributes>(cqAttr));
+ try
+ {
+ return CqQuery::Create( NativePtr->newCq(
+ mg_queryStr.CharPtr, attr, isDurable ).ptr( ));
+ }
+ catch ( const gemfire::Exception& ex )
+ {
+ throw GemFireException::Get( ex );
+ }
+ }
+ CqQuery^ QueryService::NewCq( String^ name, String^ query, CqAttributes^ cqAttr, bool isDurable )
+ {
+ ManagedString mg_queryStr( query );
+ ManagedString mg_nameStr( name );
+ gemfire::CqAttributesPtr attr(GetNativePtr<gemfire::CqAttributes>(cqAttr));
+ try
+ {
+ return CqQuery::Create( NativePtr->newCq(
+ mg_nameStr.CharPtr, mg_queryStr.CharPtr, attr, isDurable ).ptr( ) );
+ }
+ catch ( const gemfire::Exception& ex )
+ {
+ throw GemFireException::Get( ex );
+ }
+ }
+ void QueryService::CloseCqs()
+ {
+ try
+ {
+ NativePtr->closeCqs();
+ }
+ catch ( const gemfire::Exception& ex )
+ {
+ throw GemFireException::Get( ex );
+ }
+ }
+ array<CqQuery^>^ QueryService::GetCqs()
+ {
+ try
+ {
+ gemfire::VectorOfCqQuery vrr;
+ NativePtr->getCqs( vrr );
+ array<CqQuery^>^ cqs = gcnew array<CqQuery^>( vrr.size( ) );
+
+ for( int32_t index = 0; index < vrr.size( ); index++ )
+ {
+ cqs[ index ] = CqQuery::Create(vrr[index].ptr( ));
+ }
+ return cqs;
+ }
+ catch ( const gemfire::Exception& ex )
+ {
+ throw GemFireException::Get( ex );
+ }
+ }
+ CqQuery^ QueryService::GetCq(String^ name)
+ {
+ ManagedString mg_queryStr( name );
+ try
+ {
+ return CqQuery::Create( NativePtr->getCq(
+ mg_queryStr.CharPtr ).ptr( ) );
+ }
+ catch ( const gemfire::Exception& ex )
+ {
+ throw GemFireException::Get( ex );
+ }
+ }
+ void QueryService::ExecuteCqs()
+ {
+ try
+ {
+ NativePtr->executeCqs();
+ }
+ catch ( const gemfire::Exception& ex )
+ {
+ throw GemFireException::Get( ex );
+ }
+ }
+ void QueryService::StopCqs()
+ {
+ try
+ {
+ NativePtr->stopCqs();
+ }
+ catch ( const gemfire::Exception& ex )
+ {
+ throw GemFireException::Get( ex );
+ }
+ }
+ CqServiceStatistics^ QueryService::GetCqStatistics()
+ {
+ try
+ {
+ return CqServiceStatistics::Create( NativePtr->getCqServiceStatistics().ptr( ) );
+ }
+ catch ( const gemfire::Exception& ex )
+ {
+ throw GemFireException::Get( ex );
+ }
+ }
+
+ System::Collections::Generic::List<String^>^ QueryService::GetAllDurableCqsFromServer()
+ {
+ try
+ {
+ gemfire::CacheableArrayListPtr durableCqsArrayListPtr = NativePtr->getAllDurableCqsFromServer();
+ int length = durableCqsArrayListPtr != NULLPTR ? durableCqsArrayListPtr->length() : 0;
+ System::Collections::Generic::List<String^>^ durableCqsList = gcnew System::Collections::Generic::List<String^>();
+ if (length > 0)
+ {
+ for(int i =0; i < length; i++)
+ {
+ durableCqsList->Add(CacheableString::GetString(durableCqsArrayListPtr->at(i)));
+ }
+ }
+ return durableCqsList;
+ }
+ catch ( const gemfire::Exception& ex )
+ {
+ throw GemFireException::Get( ex );
+ }
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/QueryServiceM.hpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/QueryServiceM.hpp b/geode-client-native/src/clicache/QueryServiceM.hpp
new file mode 100644
index 0000000..8640c52
--- /dev/null
+++ b/geode-client-native/src/clicache/QueryServiceM.hpp
@@ -0,0 +1,135 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#pragma once
+
+#include "gf_defs.hpp"
+#include "cppcache/QueryService.hpp"
+#include "impl/NativeWrapper.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+ namespace GemFire
+ {
+ namespace Cache
+ {
+
+ ref class Query;
+ ref class CqQuery;
+ ref class CqAttributes;
+ ref class CqServiceStatistics;
+
+ /// <summary>
+ /// Provides a query service.
+ /// </summary>
+ [Obsolete("Use classes and APIs from the GemStone.GemFire.Cache.Generic namespace")]
+ public ref class QueryService sealed
+ : public Internal::SBWrap<gemfire::QueryService>
+ {
+ public:
+
+ /// <summary>
+ /// Get a <c>Query</c> object to enable querying.
+ /// </summary>
+ Query^ NewQuery( String^ query );
+ /// @nativeclient
+ /// <summary>
+ /// Get a <c>CqQuery</c> object to enable continuous querying.
+ /// </summary>
+ /// @endnativeclient
+ CqQuery^ NewCq( String^ query, CqAttributes^ cqAttr, bool isDurable );
+ /// @nativeclient
+ /// <summary>
+ /// Get a <c>CqQuery</c> object to enable continuous querying.
+ /// </summary>
+ /// @endnativeclient
+
+ CqQuery^ NewCq( String^ name, String^ query, CqAttributes^ cqAttr, bool isDurable );
+ /// @nativeclient
+ /// <summary>
+ /// Close all <c>CqQuery</c> on this client.
+ /// </summary>
+ /// @endnativeclient
+ void CloseCqs();
+
+ /// @nativeclient
+ /// <summary>
+ /// Get all <c>CqQuery</c> on this client.
+ /// </summary>
+ /// @endnativeclient
+ array<CqQuery^>^ GetCqs();
+
+ /// @nativeclient
+ /// <summary>
+ /// Get the <c>CqQuery</c> with the given name on this client.
+ /// </summary>
+ /// @endnativeclient
+
+ CqQuery^ GetCq(String^ name);
+
+ /// @nativeclient
+ /// <summary>
+ /// Get the <c>CqQuery</c> with the given name on this client.
+ /// </summary>
+ /// @endnativeclient
+ void ExecuteCqs();
+
+ /// @nativeclient
+ /// <summary>
+ /// Stop all <c>CqQuery</c> on this client.
+ /// </summary>
+ /// @endnativeclient
+ void StopCqs();
+
+ /// @nativeclient
+ /// <summary>
+ /// Get <c>CqServiceStatistics</c> on this client.
+ /// </summary>
+ /// @endnativeclient
+ CqServiceStatistics^ GetCqStatistics();
+
+ /// @nativeclient
+ /// <summary>
+ /// Get <c>AllDurableCqsFromServer</c> on this client.
+ /// </summary>
+ /// @endnativeclient
+ System::Collections::Generic::List<String^>^ GetAllDurableCqsFromServer();
+
+ internal:
+
+ /// <summary>
+ /// Internal factory function to wrap a native object pointer inside
+ /// this managed class with null pointer check.
+ /// </summary>
+ /// <param name="nativeptr">The native object pointer</param>
+ /// <returns>
+ /// The managed wrapper object; null if the native pointer is null.
+ /// </returns>
+ inline static QueryService^ Create( gemfire::QueryService* nativeptr )
+ {
+ return ( nativeptr != nullptr ?
+ gcnew QueryService( nativeptr ) : nullptr );
+ }
+
+
+ private:
+
+ /// <summary>
+ /// Private constructor to wrap a native object pointer
+ /// </summary>
+ /// <param name="nativeptr">The native object pointer</param>
+ inline QueryService( gemfire::QueryService* nativeptr )
+ : SBWrap( nativeptr ) { }
+ };
+
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ac967000/geode-client-native/src/clicache/RegionAttributesM.cpp
----------------------------------------------------------------------
diff --git a/geode-client-native/src/clicache/RegionAttributesM.cpp b/geode-client-native/src/clicache/RegionAttributesM.cpp
new file mode 100644
index 0000000..beecab3
--- /dev/null
+++ b/geode-client-native/src/clicache/RegionAttributesM.cpp
@@ -0,0 +1,298 @@
+/*=========================================================================
+ * Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+
+#include "gf_includes.hpp"
+#include "RegionAttributesM.hpp"
+#include "RegionM.hpp"
+#include "impl/ManagedCacheLoader.hpp"
+#include "impl/ManagedCacheWriter.hpp"
+#include "impl/ManagedCacheListener.hpp"
+#include "impl/ManagedPartitionResolver.hpp"
+#include "PropertiesM.hpp"
+#include "ICacheLoader.hpp"
+#include "ICacheWriter.hpp"
+#include "ICacheListener.hpp"
+#include "IPartitionResolver.hpp"
+#include "CacheListenerAdapter.hpp"
+#include "CacheWriterAdapter.hpp"
+#include "impl/SafeConvert.hpp"
+
+
+using namespace System;
+
+namespace GemStone
+{
+ namespace GemFire
+ {
+ namespace Cache
+ {
+
+ ICacheLoader^ RegionAttributes::CacheLoader::get( )
+ {
+ gemfire::CacheLoaderPtr& loaderptr( NativePtr->getCacheLoader( ) );
+ gemfire::ManagedCacheLoader* mg_loader =
+ dynamic_cast<gemfire::ManagedCacheLoader*>( loaderptr.ptr( ) );
+
+ if (mg_loader != nullptr)
+ {
+ return mg_loader->ptr( );
+ }
+ return nullptr;
+ }
+
+ ICacheWriter^ RegionAttributes::CacheWriter::get( )
+ {
+ gemfire::CacheWriterPtr& writerptr( NativePtr->getCacheWriter( ) );
+ gemfire::ManagedCacheWriter* mg_writer =
+ dynamic_cast<gemfire::ManagedCacheWriter*>( writerptr.ptr( ) );
+
+ if (mg_writer != nullptr)
+ {
+ return mg_writer->ptr( );
+ }
+ return nullptr;
+ }
+
+ ICacheListener^ RegionAttributes::CacheListener::get( )
+ {
+ gemfire::CacheListenerPtr& listenerptr( NativePtr->getCacheListener( ) );
+ gemfire::ManagedCacheListener* mg_listener =
+ dynamic_cast<gemfire::ManagedCacheListener*>( listenerptr.ptr( ) );
+
+ if (mg_listener != nullptr)
+ {
+ return mg_listener->ptr( );
+ }
+ return nullptr;
+ }
+
+ IPartitionResolver^ RegionAttributes::PartitionResolver::get( )
+ {
+ gemfire::PartitionResolverPtr& resolverptr( NativePtr->getPartitionResolver( ) );
+ gemfire::ManagedPartitionResolver* mg_resolver =
+ dynamic_cast<gemfire::ManagedPartitionResolver*>( resolverptr.ptr( ) );
+
+ if (mg_resolver != nullptr)
+ {
+ return mg_resolver->ptr( );
+ }
+ return nullptr;
+ }
+
+ int32_t RegionAttributes::RegionTimeToLive::get( )
+ {
+ return NativePtr->getRegionTimeToLive( );
+ }
+
+ ExpirationAction RegionAttributes::RegionTimeToLiveAction::get( )
+ {
+ return static_cast<ExpirationAction>( NativePtr->getRegionTimeToLiveAction( ) );
+ }
+
+ int32_t RegionAttributes::RegionIdleTimeout::get( )
+ {
+ return NativePtr->getRegionIdleTimeout( );
+ }
+
+ ExpirationAction RegionAttributes::RegionIdleTimeoutAction::get( )
+ {
+ return static_cast<ExpirationAction>( NativePtr->getRegionIdleTimeoutAction( ) );
+ }
+
+ int32_t RegionAttributes::EntryTimeToLive::get( )
+ {
+ return NativePtr->getEntryTimeToLive( );
+ }
+
+ ExpirationAction RegionAttributes::EntryTimeToLiveAction::get( )
+ {
+ return static_cast<ExpirationAction>( NativePtr->getEntryTimeToLiveAction( ) );
+ }
+
+ int32_t RegionAttributes::EntryIdleTimeout::get( )
+ {
+ return NativePtr->getEntryIdleTimeout( );
+ }
+
+ ExpirationAction RegionAttributes::EntryIdleTimeoutAction::get( )
+ {
+ return static_cast<ExpirationAction>( NativePtr->getEntryIdleTimeoutAction( ) );
+ }
+
+ ScopeType RegionAttributes::Scope::get( )
+ {
+ return static_cast<ScopeType>( NativePtr->getScope( ) );
+ }
+
+ bool RegionAttributes::CachingEnabled::get( )
+ {
+ return NativePtr->getCachingEnabled( );
+ }
+
+ bool RegionAttributes::CloningEnabled::get( )
+ {
+ return NativePtr->getCloningEnabled( );
+ }
+
+ int32_t RegionAttributes::InitialCapacity::get( )
+ {
+ return NativePtr->getInitialCapacity( );
+ }
+
+ Single RegionAttributes::LoadFactor::get( )
+ {
+ return NativePtr->getLoadFactor( );
+ }
+
+ int32_t RegionAttributes::ConcurrencyLevel::get( )
+ {
+ return NativePtr->getConcurrencyLevel( );
+ }
+
+ uint32_t RegionAttributes::LruEntriesLimit::get( )
+ {
+ return NativePtr->getLruEntriesLimit( );
+ }
+
+ DiskPolicyType RegionAttributes::DiskPolicy::get( )
+ {
+ return static_cast<DiskPolicyType>( NativePtr->getDiskPolicy( ) );
+ }
+
+ ExpirationAction RegionAttributes::LruEvictionAction::get( )
+ {
+ return static_cast<ExpirationAction>( NativePtr->getLruEvictionAction( ) );
+ }
+
+ String^ RegionAttributes::CacheLoaderLibrary::get( )
+ {
+ return ManagedString::Get( NativePtr->getCacheLoaderLibrary( ) );
+ }
+
+ String^ RegionAttributes::CacheLoaderFactory::get( )
+ {
+ return ManagedString::Get( NativePtr->getCacheLoaderFactory( ) );
+ }
+
+ String^ RegionAttributes::CacheListenerLibrary::get( )
+ {
+ return ManagedString::Get( NativePtr->getCacheListenerLibrary( ) );
+ }
+
+ String^ RegionAttributes::PartitionResolverLibrary::get( )
+ {
+ return ManagedString::Get( NativePtr->getPartitionResolverLibrary( ) );
+ }
+
+ String^ RegionAttributes::PartitionResolverFactory::get( )
+ {
+ return ManagedString::Get( NativePtr->getPartitionResolverFactory( ) );
+ }
+
+ String^ RegionAttributes::CacheListenerFactory::get( )
+ {
+ return ManagedString::Get( NativePtr->getCacheListenerFactory( ) );
+ }
+
+ String^ RegionAttributes::CacheWriterLibrary::get( )
+ {
+ return ManagedString::Get( NativePtr->getCacheWriterLibrary( ) );
+ }
+
+ String^ RegionAttributes::CacheWriterFactory::get( )
+ {
+ return ManagedString::Get( NativePtr->getCacheWriterFactory( ) );
+ }
+
+ bool RegionAttributes::Equals( RegionAttributes^ other )
+ {
+ gemfire::RegionAttributes* otherPtr =
+ GetNativePtr<gemfire::RegionAttributes>( other );
+ if (_NativePtr != nullptr && otherPtr != nullptr) {
+ return NativePtr->operator==(*otherPtr);
+ }
+ return (_NativePtr == otherPtr);
+ }
+
+ bool RegionAttributes::Equals( Object^ other )
+ {
+ gemfire::RegionAttributes* otherPtr = GetNativePtr<gemfire::
+ RegionAttributes>( dynamic_cast<RegionAttributes^>( other ) );
+ if (_NativePtr != nullptr && otherPtr != nullptr) {
+ return NativePtr->operator==(*otherPtr);
+ }
+ return (_NativePtr == otherPtr);
+ }
+
+ void RegionAttributes::ValidateSerializableAttributes( )
+ {
+ NativePtr->validateSerializableAttributes( );
+ }
+
+ String^ RegionAttributes::Endpoints::get( )
+ {
+ return ManagedString::Get( NativePtr->getEndpoints( ) );
+ }
+
+ String^ RegionAttributes::PoolName::get( )
+ {
+ return ManagedString::Get( NativePtr->getPoolName( ) );
+ }
+
+ Boolean RegionAttributes::ClientNotificationEnabled::get( )
+ {
+ return NativePtr->getClientNotificationEnabled( );
+ }
+
+ String^ RegionAttributes::PersistenceLibrary::get( )
+ {
+ return ManagedString::Get( NativePtr->getPersistenceLibrary( ) );
+ }
+
+ String^ RegionAttributes::PersistenceFactory::get( )
+ {
+ return ManagedString::Get( NativePtr->getPersistenceFactory( ) );
+ }
+
+ Properties^ RegionAttributes::PersistenceProperties::get( )
+ {
+ gemfire::PropertiesPtr& nativeptr(
+ NativePtr->getPersistenceProperties( ) );
+ return Properties::Create( nativeptr.ptr( ) );
+ }
+
+ bool RegionAttributes::ConcurrencyChecksEnabled::get( )
+ {
+ return NativePtr->getConcurrencyChecksEnabled( );
+ }
+
+ void RegionAttributes::ToData( DataOutput^ output )
+ {
+ gemfire::DataOutput* nativeOutput =
+ GetNativePtr<gemfire::DataOutput>( output );
+ if (nativeOutput != nullptr)
+ {
+ NativePtr->toData( *nativeOutput );
+ }
+ }
+
+ IGFSerializable^ RegionAttributes::FromData( DataInput^ input )
+ {
+ gemfire::DataInput* nativeInput =
+ GetNativePtr<gemfire::DataInput>( input );
+ if (nativeInput != nullptr)
+ {
+ AssignPtr( static_cast<gemfire::RegionAttributes*>(
+ NativePtr->fromData( *nativeInput ) ) );
+ }
+ return this;
+ }
+
+ }
+ }
+}