http://git-wip-us.apache.org/repos/asf/geode-native/blob/6027574a/src/clicache/src/Region.cpp ---------------------------------------------------------------------- diff --git a/src/clicache/src/Region.cpp b/src/clicache/src/Region.cpp index 6100412..0ea7aa2 100644 --- a/src/clicache/src/Region.cpp +++ b/src/clicache/src/Region.cpp @@ -15,7 +15,6 @@ * limitations under the License. */ -//#include "geode_includes.hpp" #include "Region.hpp" #include "Cache.hpp" #include "CacheStatistics.hpp" @@ -28,15 +27,11 @@ #include "StructSet.hpp" #include "impl/AuthenticatedCache.hpp" #include "impl/SafeConvert.hpp" -//#include <geode/Serializable.hpp> -//#include <cppcache/DataOutPut.hpp> #include "LocalRegion.hpp" #include "Pool.hpp" #include "PoolManager.hpp" #include "SystemProperties.hpp" -using namespace System; - namespace Apache { namespace Geode @@ -44,35 +39,50 @@ namespace Apache namespace Client { + using namespace System; + namespace native = apache::geode::client; + generic<class TKey, class TValue> TValue Region<TKey, TValue>::Get(TKey key, Object^ callbackArg) { - apache::geode::client::CacheableKeyPtr keyptr(Serializable::GetUnmanagedValueGeneric<TKey>(key)); - apache::geode::client::UserDataPtr callbackptr( - Serializable::GetUnmanagedValueGeneric<Object^>(callbackArg)); - apache::geode::client::CacheablePtr nativeptr(this->get(keyptr, callbackptr)); + native::CacheableKeyPtr keyptr = Serializable::GetUnmanagedValueGeneric<TKey>(key); + native::UserDataPtr callbackptr = Serializable::GetUnmanagedValueGeneric<Object^>(callbackArg); + auto nativeptr = this->get(keyptr, callbackptr); if (nativeptr == nullptr) { throw gcnew KeyNotFoundException("The given key was not present in the region."); } TValue returnVal = Serializable::GetManagedValueGeneric<TValue>(nativeptr); return returnVal; - } generic<class TKey, class TValue> - apache::geode::client::SerializablePtr Region<TKey, TValue>::get(apache::geode::client::CacheableKeyPtr& keyptr, apache::geode::client::SerializablePtr& callbackptr) + native::SerializablePtr Region<TKey, TValue>::get(native::CacheableKeyPtr& keyptr, native::SerializablePtr& callbackptr) { _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - return NativePtr->get(keyptr, callbackptr); + try + { + return m_nativeptr->get()->get(keyptr, callbackptr); + } + finally + { + GC::KeepAlive(m_nativeptr); + } _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ } generic<class TKey, class TValue> - apache::geode::client::SerializablePtr Region<TKey, TValue>::get(apache::geode::client::CacheableKeyPtr& keyptr) + native::SerializablePtr Region<TKey, TValue>::get(native::CacheableKeyPtr& keyptr) { _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - return NativePtr->get(keyptr); + try + { + return m_nativeptr->get()->get(keyptr); + } + finally + { + GC::KeepAlive(m_nativeptr); + } _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ } @@ -80,15 +90,15 @@ namespace Apache bool Region<TKey, TValue>::isPoolInMultiuserMode() { _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - Apache::Geode::Client::RegionAttributes<TKey, TValue>^ rAttributes = this->Attributes; - String^ poolName = rAttributes->PoolName; - if (poolName != nullptr) { - Pool/*<TKey, TValue>*/^ pool = PoolManager/*<TKey, TValue>*/::Find(poolName); - if (pool != nullptr && !pool->Destroyed) { - return pool->MultiuserAuthentication; + auto rAttributes = this->Attributes; + auto poolName = rAttributes->PoolName; + if (poolName != nullptr) { + auto pool = PoolManager::Find(poolName); + if (pool != nullptr && !pool->Destroyed) { + return pool->MultiuserAuthentication; + } } - } - return false; + return false; _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ } @@ -97,20 +107,26 @@ namespace Apache { _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - apache::geode::client::CacheableKeyPtr keyptr(Serializable::GetUnmanagedValueGeneric<TKey>(key)); - apache::geode::client::CacheablePtr valueptr(Serializable::GetUnmanagedValueGeneric<TValue>(value)); - apache::geode::client::UserDataPtr callbackptr( - Serializable::GetUnmanagedValueGeneric<Object^>(callbackArg)); - NativePtr->put(keyptr, valueptr, callbackptr); - + try + { + native::CacheableKeyPtr keyptr = Serializable::GetUnmanagedValueGeneric<TKey>(key); + native::CacheablePtr valueptr = Serializable::GetUnmanagedValueGeneric<TValue>(value); + native::UserDataPtr callbackptr = Serializable::GetUnmanagedValueGeneric<Object^>(callbackArg); + m_nativeptr->get()->put(keyptr, valueptr, callbackptr); + } + finally + { + GC::KeepAlive(m_nativeptr); + } + _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ } generic<class TKey, class TValue> TValue Region<TKey, TValue>::default::get(TKey key) { - apache::geode::client::CacheableKeyPtr keyptr(Serializable::GetUnmanagedValueGeneric<TKey>(key)); - apache::geode::client::CacheablePtr nativeptr(this->get(keyptr)); + native::CacheableKeyPtr keyptr = Serializable::GetUnmanagedValueGeneric<TKey>(key); + auto nativeptr = this->get(keyptr); if (nativeptr == nullptr) { throw gcnew KeyNotFoundException("The given key was not present in the region."); @@ -124,9 +140,16 @@ namespace Apache { _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - apache::geode::client::CacheableKeyPtr keyptr(Serializable::GetUnmanagedValueGeneric<TKey>(key)); - apache::geode::client::CacheablePtr valueptr(Serializable::GetUnmanagedValueGeneric<TValue>(value)); - NativePtr->put(keyptr, valueptr); + try + { + native::CacheableKeyPtr keyptr = Serializable::GetUnmanagedValueGeneric<TKey>(key); + native::CacheablePtr valueptr = Serializable::GetUnmanagedValueGeneric<TValue>(value); + m_nativeptr->get()->put(keyptr, valueptr); + } + finally + { + GC::KeepAlive(m_nativeptr); + } _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ } @@ -135,22 +158,28 @@ namespace Apache System::Collections::Generic::IEnumerator<KeyValuePair<TKey, TValue>>^ Region<TKey, TValue>::GetEnumerator() { - array<KeyValuePair<TKey, TValue>>^ toArray; - apache::geode::client::VectorOfRegionEntry vc; + native::VectorOfRegionEntry vc; _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - NativePtr->entries(vc, false); + try + { + m_nativeptr->get()->entries(vc, false); + } + finally + { + GC::KeepAlive(m_nativeptr); + } _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ - toArray = gcnew array<KeyValuePair<TKey, TValue>>(vc.size()); + auto toArray = gcnew array<KeyValuePair<TKey, TValue>>(vc.size()); for (System::Int32 index = 0; index < vc.size(); index++) { - apache::geode::client::RegionEntryPtr nativeptr = vc[index]; - TKey key = Serializable::GetManagedValueGeneric<TKey>(nativeptr->getKey()); - TValue val = Serializable::GetManagedValueGeneric<TValue>(nativeptr->getValue()); + auto& nativeptr = vc[index]; + auto key = Serializable::GetManagedValueGeneric<TKey>(nativeptr->getKey()); + auto val = Serializable::GetManagedValueGeneric<TValue>(nativeptr->getValue()); toArray[index] = KeyValuePair<TKey, TValue>(key, val); } return ((System::Collections::Generic::IEnumerable<KeyValuePair<TKey, TValue>>^)toArray)->GetEnumerator(); @@ -160,29 +189,35 @@ namespace Apache System::Collections::IEnumerator^ Region<TKey, TValue>::GetEnumeratorOld() { - array<Object^>^ toArray; - apache::geode::client::VectorOfRegionEntry vc; + native::VectorOfRegionEntry vc; _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - NativePtr->entries(vc, false); + try + { + m_nativeptr->get()->entries(vc, false); + } + finally + { + GC::KeepAlive(m_nativeptr); + } _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ - toArray = gcnew array<Object^>(vc.size()); + auto toArray = gcnew array<Object^>(vc.size()); for (System::Int32 index = 0; index < vc.size(); index++) { - apache::geode::client::RegionEntryPtr nativeptr = vc[index]; - TKey key = Serializable::GetManagedValueGeneric<TKey>(nativeptr->getKey()); - TValue val = Serializable::GetManagedValueGeneric<TValue>(nativeptr->getValue()); + auto& nativeptr = vc[index]; + auto key = Serializable::GetManagedValueGeneric<TKey>(nativeptr->getKey()); + auto val = Serializable::GetManagedValueGeneric<TValue>(nativeptr->getValue()); toArray[index] = KeyValuePair<TKey, TValue>(key, val); } return ((System::Collections::Generic::IEnumerable<Object^>^)toArray)->GetEnumerator(); } generic<class TKey, class TValue> - bool Region<TKey, TValue>::AreValuesEqual(apache::geode::client::CacheablePtr& val1, apache::geode::client::CacheablePtr& val2) + bool Region<TKey, TValue>::AreValuesEqual(native::CacheablePtr& val1, native::CacheablePtr& val2) { if (val1 == nullptr && val2 == nullptr) { @@ -198,8 +233,8 @@ namespace Apache { return false; } - apache::geode::client::DataOutput out1; - apache::geode::client::DataOutput out2; + native::DataOutput out1; + native::DataOutput out2; val1->toData(out1); val2->toData(out2); if (out1.getBufferLength() != out2.getBufferLength()) @@ -218,13 +253,13 @@ namespace Apache generic<class TKey, class TValue> bool Region<TKey, TValue>::Contains(KeyValuePair<TKey, TValue> keyValuePair) { - apache::geode::client::CacheableKeyPtr keyptr(Serializable::GetUnmanagedValueGeneric<TKey>(keyValuePair.Key)); - apache::geode::client::CacheablePtr nativeptr(this->get(keyptr)); + native::CacheableKeyPtr keyptr = Serializable::GetUnmanagedValueGeneric<TKey>(keyValuePair.Key); + auto nativeptr = this->get(keyptr); //This means that key is not present. if (nativeptr == nullptr) { return false; } - TValue value = Serializable::GetManagedValueGeneric<TValue>(nativeptr); + auto value = Serializable::GetManagedValueGeneric<TValue>(nativeptr); return ((Object^)value)->Equals(keyValuePair.Value); } @@ -233,9 +268,15 @@ namespace Apache { _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - apache::geode::client::CacheableKeyPtr keyptr(Serializable::GetUnmanagedValueGeneric<TKey>(key)); - - return NativePtr->containsKeyOnServer(keyptr); + try + { + native::CacheableKeyPtr keyptr = Serializable::GetUnmanagedValueGeneric<TKey>(key); + return m_nativeptr->get()->containsKeyOnServer(keyptr); + } + finally + { + GC::KeepAlive(m_nativeptr); + } _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ } @@ -244,8 +285,8 @@ namespace Apache bool Region<TKey, TValue>::TryGetValue(TKey key, TValue %val) { _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - apache::geode::client::CacheableKeyPtr keyptr(Serializable::GetUnmanagedValueGeneric<TKey>(key)); - apache::geode::client::CacheablePtr nativeptr(this->get(keyptr)); + native::CacheableKeyPtr keyptr = Serializable::GetUnmanagedValueGeneric<TKey>(key); + auto nativeptr = this->get(keyptr); if (nativeptr == nullptr) { val = TValue(); return false; @@ -263,19 +304,22 @@ namespace Apache { _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - apache::geode::client::VectorOfCacheableKey vc; - NativePtr->serverKeys(vc); - //List<TKey>^ collectionlist = gcnew List<TKey>(vc.size()); - array<TKey>^ keyarr = - gcnew array<TKey>(vc.size()); + native::VectorOfCacheableKey vc; + try + { + m_nativeptr->get()->serverKeys(vc); + } + finally + { + GC::KeepAlive(m_nativeptr); + } + auto keyarr = gcnew array<TKey>(vc.size()); for (System::Int32 index = 0; index < vc.size(); index++) { - apache::geode::client::CacheableKeyPtr& nativeptr(vc[index]); + auto& nativeptr = vc[index]; keyarr[index] = Serializable::GetManagedValueGeneric<TKey>(nativeptr); - //collectionlist[ index ] = Serializable::GetManagedValue<TKey>(nativeptr); } - System::Collections::Generic::ICollection<TKey>^ collectionlist = - (System::Collections::Generic::ICollection<TKey>^)keyarr; + auto collectionlist = (System::Collections::Generic::ICollection<TKey>^)keyarr; return collectionlist; _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ @@ -286,19 +330,22 @@ namespace Apache { _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - apache::geode::client::VectorOfCacheable vc; - NativePtr->values(vc); - //List<TValue>^ collectionlist = gcnew List<TValue>(vc.size()); - array<TValue>^ valarr = - gcnew array<TValue>(vc.size()); + native::VectorOfCacheable vc; + try + { + m_nativeptr->get()->values(vc); + } + finally + { + GC::KeepAlive(m_nativeptr); + } + auto valarr = gcnew array<TValue>(vc.size()); for (System::Int32 index = 0; index < vc.size(); index++) { - apache::geode::client::CacheablePtr& nativeptr(vc[index]); + auto& nativeptr = vc[index]; valarr[index] = Serializable::GetManagedValueGeneric<TValue>(nativeptr); - //collectionlist[ index ] = Serializable::GetManagedValueGeneric<TValue>(nativeptr); } - System::Collections::Generic::ICollection<TValue>^ collectionlist = - (System::Collections::Generic::ICollection<TValue>^)valarr; + auto collectionlist = (System::Collections::Generic::ICollection<TValue>^)valarr; return collectionlist; _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ @@ -309,9 +356,16 @@ namespace Apache { _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - apache::geode::client::CacheableKeyPtr keyptr(Serializable::GetUnmanagedValueGeneric<TKey>(key)); - apache::geode::client::CacheablePtr valueptr(Serializable::GetUnmanagedValueGeneric<TValue>(value)); - NativePtr->create(keyptr, valueptr); + try + { + native::CacheableKeyPtr keyptr = Serializable::GetUnmanagedValueGeneric<TKey>(key); + native::CacheablePtr valueptr = Serializable::GetUnmanagedValueGeneric<TValue>(value); + m_nativeptr->get()->create(keyptr, valueptr); + } + finally + { + GC::KeepAlive(m_nativeptr); + } _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ } @@ -321,9 +375,16 @@ namespace Apache { _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - apache::geode::client::CacheableKeyPtr keyptr(Serializable::GetUnmanagedValueGeneric<TKey>(keyValuePair.Key)); - apache::geode::client::CacheablePtr valueptr(Serializable::GetUnmanagedValueGeneric<TValue>(keyValuePair.Value)); - NativePtr->create(keyptr, valueptr); + try + { + native::CacheableKeyPtr keyptr = Serializable::GetUnmanagedValueGeneric<TKey>(keyValuePair.Key); + native::CacheablePtr valueptr = Serializable::GetUnmanagedValueGeneric<TValue>(keyValuePair.Value); + m_nativeptr->get()->create(keyptr, valueptr); + } + finally + { + GC::KeepAlive(m_nativeptr); + } _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ } @@ -333,11 +394,17 @@ namespace Apache { _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - apache::geode::client::CacheableKeyPtr keyptr(Serializable::GetUnmanagedValueGeneric<TKey>(key)); - apache::geode::client::CacheablePtr valueptr(Serializable::GetUnmanagedValueGeneric<TValue>(value)); - apache::geode::client::UserDataPtr callbackptr( - Serializable::GetUnmanagedValueGeneric<Object^>(callbackArg)); - NativePtr->create(keyptr, valueptr, callbackptr); + try + { + native::CacheableKeyPtr keyptr = Serializable::GetUnmanagedValueGeneric<TKey>(key); + native::CacheablePtr valueptr = Serializable::GetUnmanagedValueGeneric<TValue>(value); + native::UserDataPtr callbackptr = Serializable::GetUnmanagedValueGeneric<Object^>(callbackArg); + m_nativeptr->get()->create(keyptr, valueptr, callbackptr); + } + finally + { + GC::KeepAlive(m_nativeptr); + } _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ } @@ -347,8 +414,15 @@ namespace Apache { _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - apache::geode::client::CacheableKeyPtr keyptr(Serializable::GetUnmanagedValueGeneric<TKey>(key)); - return NativePtr->removeEx(keyptr); + try + { + native::CacheableKeyPtr keyptr = Serializable::GetUnmanagedValueGeneric<TKey>(key); + return m_nativeptr->get()->removeEx(keyptr); + } + finally + { + GC::KeepAlive(m_nativeptr); + } _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ @@ -359,10 +433,16 @@ namespace Apache { _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - apache::geode::client::CacheableKeyPtr keyptr(Serializable::GetUnmanagedValueGeneric<TKey>(key)); - apache::geode::client::UserDataPtr callbackptr( - Serializable::GetUnmanagedValueGeneric<Object^>(callbackArg)); - return NativePtr->removeEx(keyptr, callbackptr); + try + { + native::CacheableKeyPtr keyptr = Serializable::GetUnmanagedValueGeneric<TKey>(key); + native::UserDataPtr callbackptr = Serializable::GetUnmanagedValueGeneric<Object^>(callbackArg); + return m_nativeptr->get()->removeEx(keyptr, callbackptr); + } + finally + { + GC::KeepAlive(m_nativeptr); + } _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ } @@ -372,10 +452,16 @@ namespace Apache { _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - apache::geode::client::CacheableKeyPtr keyptr(Serializable::GetUnmanagedValueGeneric<TKey>(keyValuePair.Key)); - apache::geode::client::CacheablePtr valueptr(Serializable::GetUnmanagedValueGeneric<TValue>(keyValuePair.Value)); - - return NativePtr->remove(keyptr, valueptr); + try + { + native::CacheableKeyPtr keyptr = Serializable::GetUnmanagedValueGeneric<TKey>(keyValuePair.Key); + native::CacheablePtr valueptr = Serializable::GetUnmanagedValueGeneric<TValue>(keyValuePair.Value); + return m_nativeptr->get()->remove(keyptr, valueptr); + } + finally + { + GC::KeepAlive(m_nativeptr); + } _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ } @@ -385,10 +471,17 @@ namespace Apache { _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - apache::geode::client::CacheableKeyPtr keyptr(Serializable::GetUnmanagedValueGeneric<TKey>(key)); - apache::geode::client::CacheablePtr valueptr(Serializable::GetUnmanagedValueGeneric<TValue>(value)); - apache::geode::client::UserDataPtr callbackptr(Serializable::GetUnmanagedValueGeneric<Object^>(callbackArg)); - return NativePtr->remove(keyptr, valueptr, callbackptr); + try + { + native::CacheableKeyPtr keyptr = Serializable::GetUnmanagedValueGeneric<TKey>(key); + native::CacheablePtr valueptr = Serializable::GetUnmanagedValueGeneric<TValue>(value); + native::UserDataPtr callbackptr = Serializable::GetUnmanagedValueGeneric<Object^>(callbackArg); + return m_nativeptr->get()->remove(keyptr, valueptr, callbackptr); + } + finally + { + GC::KeepAlive(m_nativeptr); + } _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ } @@ -408,9 +501,15 @@ namespace Apache { _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - apache::geode::client::UserDataPtr callbackptr( - Serializable::GetUnmanagedValueGeneric<Object^>(callbackArg)); - NativePtr->invalidateRegion(callbackptr); + try + { + native::UserDataPtr callbackptr = Serializable::GetUnmanagedValueGeneric<Object^>(callbackArg); + m_nativeptr->get()->invalidateRegion(callbackptr); + } + finally + { + GC::KeepAlive(m_nativeptr); + } _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ } @@ -430,9 +529,15 @@ namespace Apache { _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - apache::geode::client::UserDataPtr callbackptr( - Serializable::GetUnmanagedValueGeneric<Object^>(callbackArg)); - NativePtr->destroyRegion(callbackptr); + try + { + native::UserDataPtr callbackptr = Serializable::GetUnmanagedValueGeneric<Object^>(callbackArg); + m_nativeptr->get()->destroyRegion(callbackptr); + } + finally + { + GC::KeepAlive(m_nativeptr); + } _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ } @@ -453,10 +558,16 @@ namespace Apache { _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - apache::geode::client::CacheableKeyPtr keyptr(Serializable::GetUnmanagedValueGeneric<TKey>(key)); - apache::geode::client::UserDataPtr callbackptr( - Serializable::GetUnmanagedValueGeneric<Object^>(callbackArg)); - NativePtr->invalidate(keyptr, callbackptr); + try + { + native::CacheableKeyPtr keyptr = Serializable::GetUnmanagedValueGeneric<TKey>(key); + native::UserDataPtr callbackptr = Serializable::GetUnmanagedValueGeneric<Object^>(callbackArg); + m_nativeptr->get()->invalidate(keyptr, callbackptr); + } + finally + { + GC::KeepAlive(m_nativeptr); + } _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ } @@ -477,14 +588,21 @@ namespace Apache { _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - apache::geode::client::HashMapOfCacheable nativeMap; + native::HashMapOfCacheable nativeMap; for each (KeyValuePair<TKey, TValue> keyValPair in map) { - apache::geode::client::CacheableKeyPtr keyptr(Serializable::GetUnmanagedValueGeneric<TKey>(keyValPair.Key)); - apache::geode::client::CacheablePtr valueptr(Serializable::GetUnmanagedValueGeneric<TValue>(keyValPair.Value)); + native::CacheableKeyPtr keyptr = Serializable::GetUnmanagedValueGeneric<TKey>(keyValPair.Key); + native::CacheablePtr valueptr = Serializable::GetUnmanagedValueGeneric<TValue>(keyValPair.Value); nativeMap.insert(keyptr, valueptr); } - NativePtr->putAll(nativeMap, timeout); + try + { + m_nativeptr->get()->putAll(nativeMap, timeout); + } + finally + { + GC::KeepAlive(m_nativeptr); + } _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ @@ -495,16 +613,22 @@ namespace Apache { _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - apache::geode::client::HashMapOfCacheable nativeMap; + native::HashMapOfCacheable nativeMap; for each (KeyValuePair<TKey, TValue> keyValPair in map) { - apache::geode::client::CacheableKeyPtr keyptr(Serializable::GetUnmanagedValueGeneric<TKey>(keyValPair.Key)); - apache::geode::client::CacheablePtr valueptr(Serializable::GetUnmanagedValueGeneric<TValue>(keyValPair.Value)); + native::CacheableKeyPtr keyptr = Serializable::GetUnmanagedValueGeneric<TKey>(keyValPair.Key); + native::CacheablePtr valueptr = Serializable::GetUnmanagedValueGeneric<TValue>(keyValPair.Value); nativeMap.insert(keyptr, valueptr); } - apache::geode::client::UserDataPtr callbackptr( - Serializable::GetUnmanagedValueGeneric<Object^>(callbackArg)); - NativePtr->putAll(nativeMap, timeout, callbackptr); + native::UserDataPtr callbackptr = Serializable::GetUnmanagedValueGeneric<Object^>(callbackArg); + try + { + m_nativeptr->get()->putAll(nativeMap, timeout, callbackptr); + } + finally + { + GC::KeepAlive(m_nativeptr); + } _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ @@ -532,7 +656,7 @@ namespace Apache if (keys != nullptr) { _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - apache::geode::client::VectorOfCacheableKey vecKeys; + native::VectorOfCacheableKey vecKeys; for each(TKey item in keys) { @@ -540,18 +664,24 @@ namespace Apache Serializable::GetUnmanagedValueGeneric<TKey>(item)); } - apache::geode::client::HashMapOfCacheablePtr valuesPtr(nullptr); + native::HashMapOfCacheablePtr valuesPtr; if (values != nullptr) { - valuesPtr = new apache::geode::client::HashMapOfCacheable(); + valuesPtr = std::make_shared<native::HashMapOfCacheable>(); } - apache::geode::client::HashMapOfExceptionPtr exceptionsPtr(nullptr); + native::HashMapOfExceptionPtr exceptionsPtr; if (exceptions != nullptr) { - exceptionsPtr = new apache::geode::client::HashMapOfException(); + exceptionsPtr = std::make_shared<native::HashMapOfException>(); + } + try + { + m_nativeptr->get()->getAll(vecKeys, valuesPtr, exceptionsPtr, addToLocalCache); + } + finally + { + GC::KeepAlive(m_nativeptr); } - NativePtr->getAll(vecKeys, valuesPtr, exceptionsPtr, - addToLocalCache); if (values != nullptr) { - for (apache::geode::client::HashMapOfCacheable::Iterator iter = + for (native::HashMapOfCacheable::Iterator iter = valuesPtr->begin(); iter != valuesPtr->end(); ++iter) { TKey key = Serializable::GetManagedValueGeneric<TKey>(iter.first()); TValue val = Serializable::GetManagedValueGeneric<TValue>(iter.second()); @@ -559,7 +689,7 @@ namespace Apache } } if (exceptions != nullptr) { - for (apache::geode::client::HashMapOfException::Iterator iter = + for (native::HashMapOfException::Iterator iter = exceptionsPtr->begin(); iter != exceptionsPtr->end(); ++iter) { TKey key = Serializable::GetManagedValueGeneric<TKey>(iter.first()); System::Exception^ ex = GeodeException::Get(*iter.second()); @@ -583,7 +713,7 @@ namespace Apache if (keys != nullptr) { _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - apache::geode::client::VectorOfCacheableKey vecKeys; + native::VectorOfCacheableKey vecKeys; for each(TKey item in keys) { @@ -591,22 +721,27 @@ namespace Apache Serializable::GetUnmanagedValueGeneric<TKey>(item)); } - apache::geode::client::HashMapOfCacheablePtr valuesPtr(nullptr); + native::HashMapOfCacheablePtr valuesPtr; if (values != nullptr) { - valuesPtr = new apache::geode::client::HashMapOfCacheable(); + valuesPtr = std::make_shared<native::HashMapOfCacheable>(); } - apache::geode::client::HashMapOfExceptionPtr exceptionsPtr(nullptr); + native::HashMapOfExceptionPtr exceptionsPtr; if (exceptions != nullptr) { - exceptionsPtr = new apache::geode::client::HashMapOfException(); + exceptionsPtr = std::make_shared<native::HashMapOfException>(); } - apache::geode::client::UserDataPtr callbackptr( - Serializable::GetUnmanagedValueGeneric<Object^>(callbackArg)); + native::UserDataPtr callbackptr = Serializable::GetUnmanagedValueGeneric<Object^>(callbackArg); - NativePtr->getAll(vecKeys, valuesPtr, exceptionsPtr, - addToLocalCache, callbackptr); + try + { + m_nativeptr->get()->getAll(vecKeys, valuesPtr, exceptionsPtr, addToLocalCache, callbackptr); + } + finally + { + GC::KeepAlive(m_nativeptr); + } if (values != nullptr) { - for (apache::geode::client::HashMapOfCacheable::Iterator iter = + for (native::HashMapOfCacheable::Iterator iter = valuesPtr->begin(); iter != valuesPtr->end(); ++iter) { TKey key = Serializable::GetManagedValueGeneric<TKey>(iter.first()); TValue val = Serializable::GetManagedValueGeneric<TValue>(iter.second()); @@ -614,7 +749,7 @@ namespace Apache } } if (exceptions != nullptr) { - for (apache::geode::client::HashMapOfException::Iterator iter = + for (native::HashMapOfException::Iterator iter = exceptionsPtr->begin(); iter != exceptionsPtr->end(); ++iter) { TKey key = Serializable::GetManagedValueGeneric<TKey>(iter.first()); System::Exception^ ex = GeodeException::Get(*iter.second()); @@ -646,14 +781,20 @@ namespace Apache { _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - apache::geode::client::VectorOfCacheableKey vecKeys; + native::VectorOfCacheableKey vecKeys; for each(TKey item in keys) vecKeys.push_back(Serializable::GetUnmanagedValueGeneric<TKey>(item)); - apache::geode::client::UserDataPtr callbackptr( - Serializable::GetUnmanagedValueGeneric<Object^>(callbackArg)); + native::UserDataPtr callbackptr = Serializable::GetUnmanagedValueGeneric<Object^>(callbackArg); - NativePtr->removeAll(vecKeys, callbackptr); + try + { + m_nativeptr->get()->removeAll(vecKeys, callbackptr); + } + finally + { + GC::KeepAlive(m_nativeptr); + } _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ @@ -661,13 +802,27 @@ namespace Apache generic<class TKey, class TValue> String^ Region<TKey, TValue>::Name::get() { - return ManagedString::Get(NativePtr->getName()); + try + { + return ManagedString::Get(m_nativeptr->get()->getName()); + } + finally + { + GC::KeepAlive(m_nativeptr); + } } generic<class TKey, class TValue> String^ Region<TKey, TValue>::FullPath::get() { - return ManagedString::Get(NativePtr->getFullPath()); + try + { + return ManagedString::Get(m_nativeptr->get()->getFullPath()); + } + finally + { + GC::KeepAlive(m_nativeptr); + } } generic<class TKey, class TValue> @@ -675,9 +830,15 @@ namespace Apache { _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - apache::geode::client::RegionPtr& nativeptr(NativePtr->getParentRegion()); - - return Region::Create(nativeptr.get()); + try + { + auto parentRegion = m_nativeptr->get()->getParentRegion(); + return Region::Create(parentRegion); + } + finally + { + GC::KeepAlive(m_nativeptr); + } _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ } @@ -687,9 +848,15 @@ namespace Apache { _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - apache::geode::client::RegionAttributesPtr& nativeptr(NativePtr->getAttributes()); - - return Apache::Geode::Client::RegionAttributes<TKey, TValue>::Create(nativeptr.get()); + try + { + auto nativeptr = m_nativeptr->get()->getAttributes(); + return Apache::Geode::Client::RegionAttributes<TKey, TValue>::Create(nativeptr); + } + finally + { + GC::KeepAlive(m_nativeptr); + } _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ } @@ -699,10 +866,15 @@ namespace Apache { _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - apache::geode::client::AttributesMutatorPtr& nativeptr( - NativePtr->getAttributesMutator()); - - return Apache::Geode::Client::AttributesMutator<TKey, TValue>::Create(nativeptr.get()); + try + { + auto am = m_nativeptr->get()->getAttributesMutator(); + return Apache::Geode::Client::AttributesMutator<TKey, TValue>::Create( am ); + } + finally + { + GC::KeepAlive(m_nativeptr); + } _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ } @@ -712,8 +884,15 @@ namespace Apache { _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - apache::geode::client::CacheStatisticsPtr& nativeptr(NativePtr->getStatistics()); - return Apache::Geode::Client::CacheStatistics::Create(nativeptr.get()); + try + { + auto nativeptr = m_nativeptr->get()->getStatistics(); + return Apache::Geode::Client::CacheStatistics::Create(nativeptr); + } + finally + { + GC::KeepAlive(m_nativeptr); + } _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ } @@ -724,9 +903,15 @@ namespace Apache _GF_MG_EXCEPTION_TRY2/* due to auto replace */ ManagedString mg_path(path); - apache::geode::client::RegionPtr& nativeptr( - NativePtr->getSubregion(mg_path.CharPtr)); - return Region::Create(nativeptr.get()); + try + { + auto subRegion = m_nativeptr->get()->getSubregion(mg_path.CharPtr); + return Region::Create(subRegion); + } + finally + { + GC::KeepAlive(m_nativeptr); + } _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ } @@ -737,14 +922,16 @@ namespace Apache { _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - ManagedString mg_subregionName(subRegionName); - //TODO:split - apache::geode::client::RegionAttributesPtr p_attrs( - GetNativePtrFromSBWrapGeneric<apache::geode::client::RegionAttributes>(attributes)); - - apache::geode::client::RegionPtr& nativeptr(NativePtr->createSubregion( - mg_subregionName.CharPtr, p_attrs /*nullptr*/)); - return Region::Create(nativeptr.get()); + try + { + ManagedString mg_subregionName(subRegionName); + auto p_attrs = attributes->GetNative(); + return Region::Create(m_nativeptr->get()->createSubregion(mg_subregionName.CharPtr, p_attrs)); + } + finally + { + GC::KeepAlive(m_nativeptr); + } _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ @@ -755,18 +942,24 @@ namespace Apache { _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - apache::geode::client::VectorOfRegion vsr; - NativePtr->subregions(recursive, vsr); + native::VectorOfRegion vsr; + try + { + m_nativeptr->get()->subregions(recursive, vsr); + } + finally + { + GC::KeepAlive(m_nativeptr); + } array<IRegion<TKey, TValue>^>^ subRegions = gcnew array<IRegion<TKey, TValue>^>(vsr.size()); for (System::Int32 index = 0; index < vsr.size(); index++) { - apache::geode::client::RegionPtr& nativeptr(vsr[index]); - subRegions[index] = Region<TKey, TValue>::Create(nativeptr.get()); + auto subRegion = vsr[index]; + subRegions[index] = Region<TKey, TValue>::Create(subRegion); } - System::Collections::Generic::ICollection<IRegion<TKey, TValue>^>^ collection = - (System::Collections::Generic::ICollection<IRegion<TKey, TValue>^>^)subRegions; + auto collection = (System::Collections::Generic::ICollection<IRegion<TKey, TValue>^>^)subRegions; return collection; _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ @@ -777,9 +970,16 @@ namespace Apache { _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - apache::geode::client::CacheableKeyPtr keyptr(Serializable::GetUnmanagedValueGeneric<TKey>(key)); - apache::geode::client::RegionEntryPtr& nativeptr(NativePtr->getEntry(keyptr)); - return RegionEntry<TKey, TValue>::Create(nativeptr.get()); + try + { + native::CacheableKeyPtr keyptr = Serializable::GetUnmanagedValueGeneric<TKey>(key); + auto nativeptr = m_nativeptr->get()->getEntry(keyptr); + return RegionEntry<TKey, TValue>::Create(nativeptr); + } + finally + { + GC::KeepAlive(m_nativeptr); + } _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ } @@ -789,17 +989,23 @@ namespace Apache { _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - apache::geode::client::VectorOfRegionEntry vc; - NativePtr->entries(vc, recursive); + native::VectorOfRegionEntry vc; + try + { + m_nativeptr->get()->entries(vc, recursive); + } + finally + { + GC::KeepAlive(m_nativeptr); + } array<RegionEntry<TKey, TValue>^>^ entryarr = gcnew array<RegionEntry<TKey, TValue>^>(vc.size()); for (System::Int32 index = 0; index < vc.size(); index++) { - apache::geode::client::RegionEntryPtr& nativeptr(vc[index]); - entryarr[index] = RegionEntry<TKey, TValue>::Create(nativeptr.get()); + auto& nativeptr = vc[index]; + entryarr[index] = RegionEntry<TKey, TValue>::Create(nativeptr); } - System::Collections::Generic::ICollection<RegionEntry<TKey, TValue>^>^ collection = - (System::Collections::Generic::ICollection<RegionEntry<TKey, TValue>^>^)entryarr; + auto collection = (System::Collections::Generic::ICollection<RegionEntry<TKey, TValue>^>^)entryarr; return collection; @@ -812,18 +1018,22 @@ namespace Apache { _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - apache::geode::client::RegionServicePtr& nativeptr(NativePtr->getRegionService()); - - apache::geode::client::Cache* realCache = dynamic_cast<apache::geode::client::Cache*>(nativeptr.get()); - - if (realCache != NULL) - { - return Apache::Geode::Client::Cache::Create(((apache::geode::client::CachePtr)nativeptr).get()); - } - else - { - return Apache::Geode::Client::AuthenticatedCache::Create(nativeptr.get()); - } + try + { + auto regionService = m_nativeptr->get()->getRegionService(); + if (auto realCache = std::dynamic_pointer_cast<native::Cache>(regionService)) + { + return Apache::Geode::Client::Cache::Create(realCache); + } + else + { + return Apache::Geode::Client::AuthenticatedCache::Create(regionService); + } + } + finally + { + GC::KeepAlive(m_nativeptr); + } _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ } @@ -833,8 +1043,15 @@ namespace Apache { _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - apache::geode::client::CacheableKeyPtr keyptr(Serializable::GetUnmanagedValueGeneric<TKey>(key)); - return NativePtr->containsValueForKey(keyptr); + try + { + native::CacheableKeyPtr keyptr = Serializable::GetUnmanagedValueGeneric<TKey>(key); + return m_nativeptr->get()->containsValueForKey(keyptr); + } + finally + { + GC::KeepAlive(m_nativeptr); + } _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ } @@ -843,7 +1060,14 @@ namespace Apache int Region<TKey, TValue>::Count::get() { _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - return NativePtr->size(); + try + { + return m_nativeptr->get()->size(); + } + finally + { + GC::KeepAlive(m_nativeptr); + } _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ } @@ -857,9 +1081,15 @@ namespace Apache void Region<TKey, TValue>::Clear(Object^ callbackArg) { _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - apache::geode::client::UserDataPtr callbackptr( - Serializable::GetUnmanagedValueGeneric<Object^>(callbackArg)); - NativePtr->clear(callbackptr); + try + { + native::UserDataPtr callbackptr = Serializable::GetUnmanagedValueGeneric<Object^>(callbackArg); + m_nativeptr->get()->clear(callbackptr); + } + finally + { + GC::KeepAlive(m_nativeptr); + } _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ } @@ -878,8 +1108,15 @@ namespace Apache _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - apache::geode::client::VectorOfRegionEntry vc; - NativePtr->entries(vc, false); + native::VectorOfRegionEntry vc; + try + { + m_nativeptr->get()->entries(vc, false); + } + finally + { + GC::KeepAlive(m_nativeptr); + } if (toArray->Rank > 1 || (vc.size() > (toArray->Length - startIdx))) { @@ -888,9 +1125,9 @@ namespace Apache for (System::Int32 index = 0; index < vc.size(); index++) { - apache::geode::client::RegionEntryPtr nativeptr = vc[index]; - TKey key = Serializable::GetManagedValueGeneric<TKey>(nativeptr->getKey()); - TValue val = Serializable::GetManagedValueGeneric<TValue>(nativeptr->getValue()); + auto& nativeptr = vc[index]; + auto key = Serializable::GetManagedValueGeneric<TKey>(nativeptr->getKey()); + auto val = Serializable::GetManagedValueGeneric<TValue>(nativeptr->getValue()); toArray[startIdx] = KeyValuePair<TKey, TValue>(key, val); ++startIdx; } @@ -901,7 +1138,14 @@ namespace Apache generic<class TKey, class TValue> bool Region<TKey, TValue>::IsDestroyed::get() { - return NativePtr->isDestroyed(); + try + { + return m_nativeptr->get()->isDestroyed(); + } + finally + { + GC::KeepAlive(m_nativeptr); + } } generic<class TKey, class TValue> @@ -926,14 +1170,20 @@ namespace Apache { _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - apache::geode::client::VectorOfCacheableKey vecKeys; + native::VectorOfCacheableKey vecKeys; for each(TKey item in keys) { - vecKeys.push_back( - Serializable::GetUnmanagedValueGeneric<TKey>(item)); + vecKeys.push_back(Serializable::GetUnmanagedValueGeneric<TKey>(item)); + } + try + { + m_nativeptr->get()->registerKeys(vecKeys, isDurable, getInitialValues, receiveValues); + } + finally + { + GC::KeepAlive(m_nativeptr); } - NativePtr->registerKeys(vecKeys, isDurable, getInitialValues, receiveValues); _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ } @@ -946,7 +1196,7 @@ namespace Apache { _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - apache::geode::client::VectorOfCacheableKey vecKeys; + native::VectorOfCacheableKey vecKeys; for each(TKey item in keys) { @@ -954,7 +1204,14 @@ namespace Apache Serializable::GetUnmanagedValueGeneric<TKey>(item)); } - NativePtr->unregisterKeys(vecKeys); + try + { + m_nativeptr->get()->unregisterKeys(vecKeys); + } + finally + { + GC::KeepAlive(m_nativeptr); + } _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ } @@ -989,9 +1246,16 @@ namespace Apache _GF_MG_EXCEPTION_TRY2/* due to auto replace */ if (resultKeys != nullptr) { - auto mg_keys = std::make_shared<apache::geode::client::VectorOfCacheableKey>(); + auto mg_keys = std::make_shared<native::VectorOfCacheableKey>(); - NativePtr->registerAllKeys(isDurable, mg_keys, getInitialValues, receiveValues); + try + { + m_nativeptr->get()->registerAllKeys(isDurable, mg_keys, getInitialValues, receiveValues); + } + finally + { + GC::KeepAlive(m_nativeptr); + } for (System::Int32 index = 0; index < mg_keys->size(); ++index) { resultKeys->Add(Serializable::GetManagedValueGeneric<TKey>( @@ -999,7 +1263,14 @@ namespace Apache } } else { - NativePtr->registerAllKeys(isDurable, nullptr, getInitialValues, receiveValues); + try + { + m_nativeptr->get()->registerAllKeys(isDurable, nullptr, getInitialValues, receiveValues); + } + finally + { + GC::KeepAlive(m_nativeptr); + } } _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ @@ -1010,20 +1281,23 @@ namespace Apache { _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - apache::geode::client::VectorOfCacheableKey vc; - NativePtr->getInterestList(vc); - //List<TValue>^ collectionlist = gcnew List<TValue>(vc.size()); - array<TKey>^ keyarr = - gcnew array<TKey>(vc.size()); + native::VectorOfCacheableKey vc; + try + { + m_nativeptr->get()->getInterestList(vc); + } + finally + { + GC::KeepAlive(m_nativeptr); + } + auto keyarr = gcnew array<TKey>(vc.size()); for (System::Int32 index = 0; index < vc.size(); index++) { - apache::geode::client::CacheableKeyPtr& nativeptr(vc[index]); + auto& nativeptr = vc[index]; keyarr[index] = Serializable::GetManagedValueGeneric<TKey>(nativeptr); - //collectionlist[ index ] = Serializable::GetManagedValueGeneric<TValue>(nativeptr); } - System::Collections::Generic::ICollection<TKey>^ collectionlist = - (System::Collections::Generic::ICollection<TKey>^)keyarr; + auto collectionlist = (System::Collections::Generic::ICollection<TKey>^)keyarr; return collectionlist; _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ @@ -1034,8 +1308,15 @@ namespace Apache { _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - apache::geode::client::VectorOfCacheableString vc; - NativePtr->getInterestListRegex(vc); + native::VectorOfCacheableString vc; + try + { + m_nativeptr->get()->getInterestListRegex(vc); + } + finally + { + GC::KeepAlive(m_nativeptr); + } array<String^>^ strarr = gcnew array<String^>(vc.size()); //List<String>^ collectionlist = gcnew List<String>(vc.size()); @@ -1044,8 +1325,7 @@ namespace Apache strarr[index] = ManagedString::Get(vc[index]->asChar()); //collectionlist[ index ] = Serializable::GetManagedValue<TValue>(nativeptr); } - System::Collections::Generic::ICollection<String^>^ collectionlist = - (System::Collections::Generic::ICollection<String^>^)strarr; + auto collectionlist = (System::Collections::Generic::ICollection<String^>^)strarr; return collectionlist; _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ @@ -1056,7 +1336,14 @@ namespace Apache { _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - NativePtr->unregisterAllKeys(); + try + { + m_nativeptr->get()->unregisterAllKeys(); + } + finally + { + GC::KeepAlive(m_nativeptr); + } _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ @@ -1094,20 +1381,27 @@ namespace Apache { _GF_MG_EXCEPTION_TRY2/* due to auto replace */ + try + { ManagedString mg_regex(regex); - if (resultKeys != nullptr) { - auto mg_keys = std::make_shared<apache::geode::client::VectorOfCacheableKey>(); - NativePtr->registerRegex(mg_regex.CharPtr, isDurable, - mg_keys, getInitialValues, receiveValues); - - for (System::Int32 index = 0; index < mg_keys->size(); ++index) { - resultKeys->Add(Serializable::GetManagedValueGeneric<TKey>( - mg_keys->operator[](index))); + if (resultKeys != nullptr) { + auto mg_keys = std::make_shared<native::VectorOfCacheableKey>(); + m_nativeptr->get()->registerRegex(mg_regex.CharPtr, isDurable, + mg_keys, getInitialValues, receiveValues); + + for (System::Int32 index = 0; index < mg_keys->size(); ++index) { + resultKeys->Add(Serializable::GetManagedValueGeneric<TKey>( + mg_keys->operator[](index))); + } + } + else { + m_nativeptr->get()->registerRegex(mg_regex.CharPtr, isDurable, + nullptr, getInitialValues, receiveValues); } } - else { - NativePtr->registerRegex(mg_regex.CharPtr, isDurable, - nullptr, getInitialValues, receiveValues); + finally + { + GC::KeepAlive(m_nativeptr); } _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ @@ -1119,7 +1413,14 @@ namespace Apache _GF_MG_EXCEPTION_TRY2/* due to auto replace */ ManagedString mg_regex(regex); - NativePtr->unregisterRegex(mg_regex.CharPtr); + try + { + m_nativeptr->get()->unregisterRegex(mg_regex.CharPtr); + } + finally + { + GC::KeepAlive(m_nativeptr); + } _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ @@ -1129,33 +1430,7 @@ namespace Apache generic<class TResult> ISelectResults<TResult>^ Region<TKey, TValue>::Query(String^ predicate) { - //return Query( predicate, DEFAULT_QUERY_RESPONSE_TIMEOUT ); - ManagedString mg_predicate(predicate); - - _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - - apache::geode::client::SelectResultsPtr& nativeptr = NativePtr->query( - mg_predicate.CharPtr, DEFAULT_QUERY_RESPONSE_TIMEOUT); - if (nativeptr.get() == NULL) return nullptr; - - apache::geode::client::ResultSet* resultptr = dynamic_cast<apache::geode::client::ResultSet*>( - nativeptr.get()); - if (resultptr == NULL) - { - apache::geode::client::StructSet* structptr = dynamic_cast<apache::geode::client::StructSet*>( - nativeptr.get()); - if (structptr == NULL) - { - return nullptr; - } - return StructSet<TResult>::Create(structptr); - } - else - { - return ResultSet<TResult>::Create(resultptr); - } - _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ - + return Query<TResult>( predicate, DEFAULT_QUERY_RESPONSE_TIMEOUT ); } generic<class TKey, class TValue> @@ -1166,26 +1441,24 @@ namespace Apache _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - apache::geode::client::SelectResultsPtr& nativeptr = NativePtr->query( - mg_predicate.CharPtr, timeout); - if (nativeptr.get() == NULL) return nullptr; - - apache::geode::client::ResultSet* resultptr = dynamic_cast<apache::geode::client::ResultSet*>( - nativeptr.get()); - if (resultptr == NULL) - { - apache::geode::client::StructSet* structptr = dynamic_cast<apache::geode::client::StructSet*>( - nativeptr.get()); - if (structptr == NULL) + try { + auto selectResults = m_nativeptr->get()->query(mg_predicate.CharPtr, timeout); + if (auto resultptr = std::dynamic_pointer_cast<native::ResultSet>(selectResults)) + { + return ResultSet<TResult>::Create(resultptr); + } + else if (auto structptr = std::dynamic_pointer_cast<native::StructSet>(selectResults)) + { + return StructSet<TResult>::Create(structptr); + } return nullptr; } - return StructSet<TResult>::Create(structptr); - } - else - { - return ResultSet<TResult>::Create(resultptr); - } + finally + { + GC::KeepAlive(m_nativeptr); + } + _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ } @@ -1202,7 +1475,14 @@ namespace Apache _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - return NativePtr->existsValue(mg_predicate.CharPtr, timeout); + try + { + return m_nativeptr->get()->existsValue(mg_predicate.CharPtr, timeout); + } + finally + { + GC::KeepAlive(m_nativeptr); + } _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ @@ -1221,10 +1501,15 @@ namespace Apache _GF_MG_EXCEPTION_TRY2/* due to auto replace */ - apache::geode::client::CacheablePtr& nativeptr(NativePtr->selectValue( - mg_predicate.CharPtr, timeout)); - - return Serializable::GetManagedValueGeneric<Object^>(nativeptr); + try + { + auto nativeptr = m_nativeptr->get()->selectValue(mg_predicate.CharPtr, timeout); + return Serializable::GetManagedValueGeneric<Object^>(nativeptr); + } + finally + { + GC::KeepAlive(m_nativeptr); + } _GF_MG_EXCEPTION_CATCH_ALL2/* due to auto replace */ @@ -1239,8 +1524,7 @@ namespace Apache generic<class TKey, class TValue> IRegion<TKey, TValue>^ Region<TKey, TValue>::GetLocalView() { - return (_NativePtr != nullptr ? - gcnew LocalRegion<TKey, TValue>(_NativePtr) : nullptr); + return gcnew LocalRegion<TKey, TValue>(GetNative()); } } // namespace Client } // namespace Geode
http://git-wip-us.apache.org/repos/asf/geode-native/blob/6027574a/src/clicache/src/Region.hpp ---------------------------------------------------------------------- diff --git a/src/clicache/src/Region.hpp b/src/clicache/src/Region.hpp index b7b18fe..9aa7c27 100644 --- a/src/clicache/src/Region.hpp +++ b/src/clicache/src/Region.hpp @@ -18,16 +18,16 @@ #pragma once #include "geode_defs.hpp" +#include "begin_native.hpp" #include <geode/Cache.hpp> -#include "impl/NativeWrapper.hpp" +#include "end_native.hpp" + + #include "IRegion.hpp" -//#include "Log.hpp" -//#include "ExceptionTypes.hpp" #include "ISubscriptionService.hpp" +#include "native_shared_ptr.hpp" using namespace System; -//using namespace System::Collections; -//using namespace System::Collections::Generic; namespace Apache { @@ -36,11 +36,10 @@ namespace Apache namespace Client { - //generic<class TKey, class TValue> - // ref class AttributesMutator; + namespace native = apache::geode::client; generic<class TKey, class TValue> - public ref class Region : public Internal::SBWrap<apache::geode::client::Region>, + public ref class Region : public IRegion<TKey, TValue>, public ISubscriptionService<TKey> { @@ -270,11 +269,16 @@ namespace Apache /// The managed wrapper object; null if the native pointer is null. /// </returns> //generic<class TKey, class TValue> - inline static Apache::Geode::Client::IRegion<TKey, TValue>^ - Create( apache::geode::client::Region* nativeptr ) + inline static IRegion<TKey, TValue>^ + Create( native::RegionPtr nativeptr ) + { + return __nullptr == nativeptr ? nullptr : + gcnew Region<TKey, TValue>( nativeptr ); + } + + std::shared_ptr<native::Region> GetNative() { - return ( nativeptr != nullptr ? - gcnew Region<TKey, TValue>( nativeptr ) : nullptr ); + return m_nativeptr->get_shared_ptr(); } @@ -283,14 +287,20 @@ namespace Apache /// Private constructor to wrap a native object pointer /// </summary> /// <param name="nativeptr">The native object pointer</param> - inline Region( apache::geode::client::Region* nativeptr ) - : SBWrap<apache::geode::client::Region>( nativeptr ) { } + inline Region( native::RegionPtr nativeptr ) + { + m_nativeptr = gcnew native_shared_ptr<native::Region>(nativeptr); + } inline apache::geode::client::SerializablePtr get(apache::geode::client::CacheableKeyPtr& key, apache::geode::client::SerializablePtr& callbackArg); inline apache::geode::client::SerializablePtr get(apache::geode::client::CacheableKeyPtr& key); bool AreValuesEqual(apache::geode::client::CacheablePtr& val1, apache::geode::client::CacheablePtr& val2); bool isPoolInMultiuserMode(); + + native_shared_ptr<native::Region>^ m_nativeptr; + }; + } // namespace Client } // namespace Geode } // namespace Apache http://git-wip-us.apache.org/repos/asf/geode-native/blob/6027574a/src/clicache/src/RegionAttributes.cpp ---------------------------------------------------------------------- diff --git a/src/clicache/src/RegionAttributes.cpp b/src/clicache/src/RegionAttributes.cpp index fe4d12b..7bc639a 100644 --- a/src/clicache/src/RegionAttributes.cpp +++ b/src/clicache/src/RegionAttributes.cpp @@ -15,9 +15,7 @@ * limitations under the License. */ -//#include "geode_includes.hpp" #include "RegionAttributes.hpp" -//#include "Region.hpp" #include "impl/ManagedCacheLoader.hpp" #include "impl/ManagedCacheWriter.hpp" #include "impl/ManagedCacheListener.hpp" @@ -44,16 +42,23 @@ namespace Apache { namespace Client { + namespace native = apache::geode::client; generic <class TKey, class TValue> void Client::RegionAttributes<TKey, TValue>::ToData( Apache::Geode::Client::DataOutput^ output ) { - apache::geode::client::DataOutput* nativeOutput = - Apache::Geode::Client::GetNativePtrFromUMWrapGeneric<apache::geode::client::DataOutput>( output ); + auto nativeOutput = output->GetNative(); if (nativeOutput != nullptr) { - NativePtr->toData( *nativeOutput ); + try + { + m_nativeptr->get()->toData(*nativeOutput); + } + finally + { + GC::KeepAlive(m_nativeptr); + } } } @@ -61,12 +66,21 @@ namespace Apache Apache::Geode::Client::IGeodeSerializable^ Client::RegionAttributes<TKey, TValue>::FromData( Apache::Geode::Client::DataInput^ input ) { - apache::geode::client::DataInput* nativeInput = - Apache::Geode::Client::GetNativePtrFromUMWrapGeneric<apache::geode::client::DataInput>( input ); + auto nativeInput = input->GetNative(); if (nativeInput != nullptr) { - AssignPtr( static_cast<apache::geode::client::RegionAttributes*>( - NativePtr->fromData( *nativeInput ) ) ); + try + { + auto temp = static_cast<native::RegionAttributes*>(m_nativeptr->get()->fromData(*nativeInput)); + if (temp != m_nativeptr->get()) + { + m_nativeptr->get_shared_ptr().reset(temp); + } + } + finally + { + GC::KeepAlive(m_nativeptr); + } } return this; } @@ -74,286 +88,517 @@ namespace Apache generic <class TKey, class TValue> ICacheLoader<TKey, TValue>^ Client::RegionAttributes<TKey, TValue>::CacheLoader::get() { - apache::geode::client::CacheLoaderPtr& loaderptr( NativePtr->getCacheLoader( ) ); - apache::geode::client::ManagedCacheLoaderGeneric* mg_loader = - dynamic_cast<apache::geode::client::ManagedCacheLoaderGeneric*>( loaderptr.ptr( ) ); - - if (mg_loader != nullptr) + try + { + auto loaderptr = m_nativeptr->get()->getCacheLoader(); + if (auto mg_loader = std::dynamic_pointer_cast<native::ManagedCacheLoaderGeneric>(loaderptr)) + { + return (ICacheLoader<TKey, TValue>^) mg_loader->userptr(); + } + return nullptr; + } + finally { - return (ICacheLoader<TKey, TValue>^) mg_loader->userptr( ); + GC::KeepAlive(m_nativeptr); } - return nullptr; } generic <class TKey, class TValue> ICacheWriter<TKey, TValue>^ Client::RegionAttributes<TKey, TValue>::CacheWriter::get() { - apache::geode::client::CacheWriterPtr& writerptr( NativePtr->getCacheWriter( ) ); - apache::geode::client::ManagedCacheWriterGeneric* mg_writer = - dynamic_cast<apache::geode::client::ManagedCacheWriterGeneric*>( writerptr.ptr( ) ); - - if (mg_writer != nullptr) + try + { + auto writerptr = m_nativeptr->get()->getCacheWriter(); + if (auto mg_writer = std::dynamic_pointer_cast<native::ManagedCacheWriterGeneric>(writerptr)) + { + return (ICacheWriter<TKey, TValue>^)mg_writer->userptr(); + } + return nullptr; + } + finally { - return (ICacheWriter<TKey, TValue>^)mg_writer->userptr( ); + GC::KeepAlive(m_nativeptr); } - return nullptr; } generic <class TKey, class TValue> ICacheListener<TKey, TValue>^ Client::RegionAttributes<TKey, TValue>::CacheListener::get() { - apache::geode::client::CacheListenerPtr& listenerptr( NativePtr->getCacheListener( ) ); - apache::geode::client::ManagedCacheListenerGeneric* mg_listener = - dynamic_cast<apache::geode::client::ManagedCacheListenerGeneric*>( listenerptr.ptr( ) ); - - if (mg_listener != nullptr) + try { - /* - CacheListenerGeneric<TKey, TValue>^ clg = gcnew CacheListenerGeneric<TKey, TValue>(); - clg->SetCacheListener((ICacheListener<TKey, TValue>^)mg_listener->userptr()); - mg_listener->setptr(clg); - */ - return (ICacheListener<TKey, TValue>^)mg_listener->userptr( ); + auto listenerptr = m_nativeptr->get()->getCacheListener(); + if (auto mg_listener = std::dynamic_pointer_cast<native::ManagedCacheListenerGeneric>(listenerptr)) + { + return (ICacheListener<TKey, TValue>^)mg_listener->userptr(); + } + return nullptr; + } + finally + { + GC::KeepAlive(m_nativeptr); } - return nullptr; } generic <class TKey, class TValue> IPartitionResolver<TKey, TValue>^ Client::RegionAttributes<TKey, TValue>::PartitionResolver::get() { - apache::geode::client::PartitionResolverPtr& resolverptr( NativePtr->getPartitionResolver( ) ); - apache::geode::client::ManagedPartitionResolverGeneric* mg_resolver = - dynamic_cast<apache::geode::client::ManagedPartitionResolverGeneric*>( resolverptr.ptr( ) ); - - if (mg_resolver != nullptr) + try { - return (IPartitionResolver<TKey, TValue>^)mg_resolver->userptr( ); + auto resolverptr = m_nativeptr->get()->getPartitionResolver(); + if (auto mg_resolver = std::dynamic_pointer_cast<native::ManagedPartitionResolverGeneric>(resolverptr)) + { + return (IPartitionResolver<TKey, TValue>^)mg_resolver->userptr(); + } + + if (auto mg_fixedResolver = std::dynamic_pointer_cast<native::ManagedFixedPartitionResolverGeneric>(resolverptr)) + { + return (IPartitionResolver<TKey, TValue>^)mg_fixedResolver->userptr(); + } + + return nullptr; } - - apache::geode::client::ManagedFixedPartitionResolverGeneric* mg_fixedResolver = - dynamic_cast<apache::geode::client::ManagedFixedPartitionResolverGeneric*>( resolverptr.ptr( ) ); - - if (mg_fixedResolver != nullptr) + finally { - return (IPartitionResolver<TKey, TValue>^)mg_fixedResolver->userptr( ); + GC::KeepAlive(m_nativeptr); } - - return nullptr; } generic <class TKey, class TValue> System::Int32 Client::RegionAttributes<TKey, TValue>::RegionTimeToLive::get() { - return NativePtr->getRegionTimeToLive( ); + try + { + return m_nativeptr->get()->getRegionTimeToLive( ); + } + finally + { + GC::KeepAlive(m_nativeptr); + } } generic <class TKey, class TValue> ExpirationAction Client::RegionAttributes<TKey, TValue>::RegionTimeToLiveAction::get() { - return static_cast<ExpirationAction>( NativePtr->getRegionTimeToLiveAction( ) ); + try + { + return static_cast<ExpirationAction>( m_nativeptr->get()->getRegionTimeToLiveAction( ) ); + } + finally + { + GC::KeepAlive(m_nativeptr); + } } generic <class TKey, class TValue> System::Int32 Client::RegionAttributes<TKey, TValue>::RegionIdleTimeout::get() { - return NativePtr->getRegionIdleTimeout( ); + try + { + return m_nativeptr->get()->getRegionIdleTimeout( ); + } + finally + { + GC::KeepAlive(m_nativeptr); + } } generic <class TKey, class TValue> ExpirationAction Client::RegionAttributes<TKey, TValue>::RegionIdleTimeoutAction::get() { - return static_cast<ExpirationAction>( NativePtr->getRegionIdleTimeoutAction( ) ); + try + { + return static_cast<ExpirationAction>( m_nativeptr->get()->getRegionIdleTimeoutAction( ) ); + } + finally + { + GC::KeepAlive(m_nativeptr); + } } generic <class TKey, class TValue> System::Int32 Client::RegionAttributes<TKey, TValue>::EntryTimeToLive::get() { - return NativePtr->getEntryTimeToLive( ); + try + { + return m_nativeptr->get()->getEntryTimeToLive( ); + } + finally + { + GC::KeepAlive(m_nativeptr); + } } generic <class TKey, class TValue> ExpirationAction Client::RegionAttributes<TKey, TValue>::EntryTimeToLiveAction::get() { - return static_cast<ExpirationAction>( NativePtr->getEntryTimeToLiveAction( ) ); + try + { + return static_cast<ExpirationAction>( m_nativeptr->get()->getEntryTimeToLiveAction( ) ); + } + finally + { + GC::KeepAlive(m_nativeptr); + } } generic <class TKey, class TValue> System::Int32 Client::RegionAttributes<TKey, TValue>::EntryIdleTimeout::get() { - return NativePtr->getEntryIdleTimeout( ); + try + { + return m_nativeptr->get()->getEntryIdleTimeout( ); + } + finally + { + GC::KeepAlive(m_nativeptr); + } } generic <class TKey, class TValue> ExpirationAction Client::RegionAttributes<TKey, TValue>::EntryIdleTimeoutAction::get() { - return static_cast<ExpirationAction>( NativePtr->getEntryIdleTimeoutAction( ) ); + try + { + return static_cast<ExpirationAction>( m_nativeptr->get()->getEntryIdleTimeoutAction( ) ); + } + finally + { + GC::KeepAlive(m_nativeptr); + } } generic <class TKey, class TValue> bool Client::RegionAttributes<TKey, TValue>::CachingEnabled::get() { - return NativePtr->getCachingEnabled( ); + try + { + return m_nativeptr->get()->getCachingEnabled( ); + } + finally + { + GC::KeepAlive(m_nativeptr); + } } generic <class TKey, class TValue> bool Client::RegionAttributes<TKey, TValue>::CloningEnabled::get() { - return NativePtr->getCloningEnabled( ); + try + { + return m_nativeptr->get()->getCloningEnabled( ); + } + finally + { + GC::KeepAlive(m_nativeptr); + } } generic <class TKey, class TValue> System::Int32 Client::RegionAttributes<TKey, TValue>::InitialCapacity::get() { - return NativePtr->getInitialCapacity( ); + try + { + return m_nativeptr->get()->getInitialCapacity( ); + } + finally + { + GC::KeepAlive(m_nativeptr); + } } generic <class TKey, class TValue> Single Client::RegionAttributes<TKey, TValue>::LoadFactor::get() { - return NativePtr->getLoadFactor( ); + try + { + return m_nativeptr->get()->getLoadFactor( ); + } + finally + { + GC::KeepAlive(m_nativeptr); + } } generic <class TKey, class TValue> System::Int32 Client::RegionAttributes<TKey, TValue>::ConcurrencyLevel::get() { - return NativePtr->getConcurrencyLevel( ); + try + { + return m_nativeptr->get()->getConcurrencyLevel( ); + } + finally + { + GC::KeepAlive(m_nativeptr); + } } generic <class TKey, class TValue> System::UInt32 Client::RegionAttributes<TKey, TValue>::LruEntriesLimit::get() { - return NativePtr->getLruEntriesLimit( ); + try + { + return m_nativeptr->get()->getLruEntriesLimit( ); + } + finally + { + GC::KeepAlive(m_nativeptr); + } } generic <class TKey, class TValue> DiskPolicyType Client::RegionAttributes<TKey, TValue>::DiskPolicy::get() { - return static_cast<DiskPolicyType>( NativePtr->getDiskPolicy( ) ); + try + { + return static_cast<DiskPolicyType>( m_nativeptr->get()->getDiskPolicy( ) ); + } + finally + { + GC::KeepAlive(m_nativeptr); + } } generic <class TKey, class TValue> ExpirationAction Client::RegionAttributes<TKey, TValue>::LruEvictionAction::get() { - return static_cast<ExpirationAction>( NativePtr->getLruEvictionAction( ) ); + try + { + return static_cast<ExpirationAction>( m_nativeptr->get()->getLruEvictionAction( ) ); + } + finally + { + GC::KeepAlive(m_nativeptr); + } } generic <class TKey, class TValue> String^ Client::RegionAttributes<TKey, TValue>::CacheLoaderLibrary::get() { - return ManagedString::Get( NativePtr->getCacheLoaderLibrary( ) ); + try + { + return ManagedString::Get( m_nativeptr->get()->getCacheLoaderLibrary( ) ); + } + finally + { + GC::KeepAlive(m_nativeptr); + } } generic <class TKey, class TValue> String^ Client::RegionAttributes<TKey, TValue>::CacheLoaderFactory::get() { - return ManagedString::Get( NativePtr->getCacheLoaderFactory( ) ); + try + { + return ManagedString::Get( m_nativeptr->get()->getCacheLoaderFactory( ) ); + } + finally + { + GC::KeepAlive(m_nativeptr); + } } generic <class TKey, class TValue> String^ Client::RegionAttributes<TKey, TValue>::CacheListenerLibrary::get() { - return ManagedString::Get( NativePtr->getCacheListenerLibrary( ) ); + try + { + return ManagedString::Get( m_nativeptr->get()->getCacheListenerLibrary( ) ); + } + finally + { + GC::KeepAlive(m_nativeptr); + } } generic <class TKey, class TValue> String^ Client::RegionAttributes<TKey, TValue>::PartitionResolverLibrary::get() { - return ManagedString::Get( NativePtr->getPartitionResolverLibrary( ) ); + try + { + return ManagedString::Get( m_nativeptr->get()->getPartitionResolverLibrary( ) ); + } + finally + { + GC::KeepAlive(m_nativeptr); + } } generic <class TKey, class TValue> String^ Client::RegionAttributes<TKey, TValue>::PartitionResolverFactory::get() { - return ManagedString::Get( NativePtr->getPartitionResolverFactory( ) ); + try + { + return ManagedString::Get( m_nativeptr->get()->getPartitionResolverFactory( ) ); + } + finally + { + GC::KeepAlive(m_nativeptr); + } } generic <class TKey, class TValue> String^ Client::RegionAttributes<TKey, TValue>::CacheListenerFactory::get() { - return ManagedString::Get( NativePtr->getCacheListenerFactory( ) ); + try + { + return ManagedString::Get( m_nativeptr->get()->getCacheListenerFactory( ) ); + } + finally + { + GC::KeepAlive(m_nativeptr); + } } generic <class TKey, class TValue> String^ Client::RegionAttributes<TKey, TValue>::CacheWriterLibrary::get() { - return ManagedString::Get( NativePtr->getCacheWriterLibrary( ) ); + try + { + return ManagedString::Get( m_nativeptr->get()->getCacheWriterLibrary( ) ); + } + finally + { + GC::KeepAlive(m_nativeptr); + } } generic <class TKey, class TValue> String^ Client::RegionAttributes<TKey, TValue>::CacheWriterFactory::get() { - return ManagedString::Get( NativePtr->getCacheWriterFactory( ) ); + try + { + return ManagedString::Get( m_nativeptr->get()->getCacheWriterFactory( ) ); + } + finally + { + GC::KeepAlive(m_nativeptr); + } } generic <class TKey, class TValue> bool Client::RegionAttributes<TKey, TValue>::Equals(Client::RegionAttributes<TKey, TValue>^ other) { - apache::geode::client::RegionAttributes* otherPtr = - GetNativePtrFromSBWrapGeneric<apache::geode::client::RegionAttributes>( other ); - if (_NativePtr != nullptr && otherPtr != nullptr) { - return NativePtr->operator==(*otherPtr); + auto otherPtr = other->GetNative(); + try + { + if (GetNative() != __nullptr && otherPtr != __nullptr) { + return m_nativeptr->get()->operator==(*otherPtr); + } + return (GetNative() == otherPtr); + } + finally + { + GC::KeepAlive(m_nativeptr); } - return (_NativePtr == otherPtr); } generic <class TKey, class TValue> bool Client::RegionAttributes<TKey, TValue>::Equals(Object^ other) { - apache::geode::client::RegionAttributes* otherPtr = GetNativePtrFromSBWrapGeneric<apache::geode::client:: - RegionAttributes>( dynamic_cast<Client::RegionAttributes<TKey, TValue>^>( other ) ); - if (_NativePtr != nullptr && otherPtr != nullptr) { - return NativePtr->operator==(*otherPtr); - } - return (_NativePtr == otherPtr); + return Equals(dynamic_cast<Client::RegionAttributes<TKey, TValue>^>(other)); } generic <class TKey, class TValue> void Client::RegionAttributes<TKey, TValue>::ValidateSerializableAttributes() { - NativePtr->validateSerializableAttributes( ); + try + { + m_nativeptr->get()->validateSerializableAttributes( ); + } + finally + { + GC::KeepAlive(m_nativeptr); + } } generic <class TKey, class TValue> String^ Client::RegionAttributes<TKey, TValue>::Endpoints::get() { - return ManagedString::Get( NativePtr->getEndpoints( ) ); + try + { + return ManagedString::Get( m_nativeptr->get()->getEndpoints( ) ); + } + finally + { + GC::KeepAlive(m_nativeptr); + } } generic <class TKey, class TValue> String^ Client::RegionAttributes<TKey, TValue>::PoolName::get() { - return ManagedString::Get( NativePtr->getPoolName( ) ); + try + { + return ManagedString::Get( m_nativeptr->get()->getPoolName( ) ); + } + finally + { + GC::KeepAlive(m_nativeptr); + } } generic <class TKey, class TValue> Boolean Client::RegionAttributes<TKey, TValue>::ClientNotificationEnabled::get() { - return NativePtr->getClientNotificationEnabled( ); + try + { + return m_nativeptr->get()->getClientNotificationEnabled( ); + } + finally + { + GC::KeepAlive(m_nativeptr); + } } generic <class TKey, class TValue> String^ Client::RegionAttributes<TKey, TValue>::PersistenceLibrary::get() { - return ManagedString::Get( NativePtr->getPersistenceLibrary( ) ); + try + { + return ManagedString::Get( m_nativeptr->get()->getPersistenceLibrary( ) ); + } + finally + { + GC::KeepAlive(m_nativeptr); + } } generic <class TKey, class TValue> String^ Client::RegionAttributes<TKey, TValue>::PersistenceFactory::get() { - return ManagedString::Get( NativePtr->getPersistenceFactory( ) ); + try + { + return ManagedString::Get( m_nativeptr->get()->getPersistenceFactory( ) ); + } + finally + { + GC::KeepAlive(m_nativeptr); + } } generic <class TKey, class TValue> bool Client::RegionAttributes<TKey, TValue>::ConcurrencyChecksEnabled::get() { - return NativePtr->getConcurrencyChecksEnabled( ); + try + { + return m_nativeptr->get()->getConcurrencyChecksEnabled( ); + } + finally + { + GC::KeepAlive(m_nativeptr); + } } generic <class TKey, class TValue> Properties<String^, String^>^Client::RegionAttributes<TKey, TValue>::PersistenceProperties::get() { - apache::geode::client::PropertiesPtr& nativeptr( - NativePtr->getPersistenceProperties()); - return Properties<String^, String^>::Create<String^, String^>(nativeptr.get()); + try + { + return Properties<String^, String^>::Create(m_nativeptr->get()->getPersistenceProperties()); + } + finally + { + GC::KeepAlive(m_nativeptr); + } } } // namespace Client } // namespace Geode http://git-wip-us.apache.org/repos/asf/geode-native/blob/6027574a/src/clicache/src/RegionAttributes.hpp ---------------------------------------------------------------------- diff --git a/src/clicache/src/RegionAttributes.hpp b/src/clicache/src/RegionAttributes.hpp index 05e413f..da47fc3 100644 --- a/src/clicache/src/RegionAttributes.hpp +++ b/src/clicache/src/RegionAttributes.hpp @@ -18,8 +18,11 @@ #pragma once #include "geode_defs.hpp" +#include "begin_native.hpp" #include <geode/RegionAttributes.hpp> -//#include "impl/NativeWrapper.hpp" +#include "end_native.hpp" + +#include "native_shared_ptr.hpp" #include "IGeodeSerializable.hpp" #include "ExpirationAction.hpp" #include "DiskPolicyType.hpp" @@ -39,11 +42,7 @@ namespace Apache { namespace Client { - - //interface class ICacheLoader; - //interface class ICacheWriter; - //interface class ICacheListener; - //interface class IPartitionResolver; + namespace native = apache::geode::client; /// <summary> /// Defines attributes for configuring a region. @@ -68,7 +67,7 @@ namespace Apache /// <seealso cref="Region.Attributes" /> generic <class TKey, class TValue> public ref class RegionAttributes sealed - : public Client::Internal::SBWrap<apache::geode::client::RegionAttributes>, public IGeodeSerializable + : public IGeodeSerializable { public: @@ -481,12 +480,16 @@ namespace Apache /// <returns> /// The managed wrapper object; null if the native pointer is null. /// </returns> - inline static RegionAttributes<TKey, TValue>^ Create(apache::geode::client::RegionAttributes* nativeptr) + inline static RegionAttributes<TKey, TValue>^ Create(native::RegionAttributesPtr nativeptr) { - return (nativeptr != nullptr ? - gcnew RegionAttributes<TKey, TValue>(nativeptr) : nullptr); + return __nullptr == nativeptr ? nullptr : + gcnew RegionAttributes<TKey, TValue>( nativeptr ); } + std::shared_ptr<native::RegionAttributes> GetNative() + { + return m_nativeptr->get_shared_ptr(); + } private: @@ -494,8 +497,12 @@ namespace Apache /// Private constructor to wrap a native object pointer /// </summary> /// <param name="nativeptr">The native object pointer</param> - inline RegionAttributes<TKey, TValue>(apache::geode::client::RegionAttributes* nativeptr) - : SBWrap(nativeptr) { } + inline RegionAttributes<TKey, TValue>(native::RegionAttributesPtr nativeptr) + { + m_nativeptr = gcnew native_shared_ptr<native::RegionAttributes>(nativeptr); + } + + native_shared_ptr<native::RegionAttributes>^ m_nativeptr; }; } // namespace Client } // namespace Geode http://git-wip-us.apache.org/repos/asf/geode-native/blob/6027574a/src/clicache/src/RegionEntry.cpp ---------------------------------------------------------------------- diff --git a/src/clicache/src/RegionEntry.cpp b/src/clicache/src/RegionEntry.cpp index cfde37d..95b5b57 100644 --- a/src/clicache/src/RegionEntry.cpp +++ b/src/clicache/src/RegionEntry.cpp @@ -32,44 +32,70 @@ namespace Apache generic<class TKey, class TValue> TKey RegionEntry<TKey, TValue>::Key::get( ) - { - apache::geode::client::CacheableKeyPtr& nativeptr( NativePtr->getKey( ) ); - - return Serializable::GetManagedValueGeneric<TKey>( nativeptr ); + { + try + { + return Serializable::GetManagedValueGeneric<TKey>(m_nativeptr->get()->getKey()); + } + finally + { + GC::KeepAlive(m_nativeptr); + } } generic<class TKey, class TValue> TValue RegionEntry<TKey, TValue>::Value::get( ) { - apache::geode::client::CacheablePtr& nativeptr( NativePtr->getValue( ) ); - - return Serializable::GetManagedValueGeneric<TValue>( nativeptr ); + try + { + return Serializable::GetManagedValueGeneric<TValue>(m_nativeptr->get()->getValue()); + } + finally + { + GC::KeepAlive(m_nativeptr); + } } generic<class TKey, class TValue> IRegion<TKey, TValue>^ RegionEntry<TKey, TValue>::Region::get( ) { - apache::geode::client::RegionPtr rptr; - - NativePtr->getRegion( rptr ); - return Apache::Geode::Client::Region<TKey, TValue>::Create( rptr.ptr( ) ); + try + { + return Apache::Geode::Client::Region<TKey, TValue>::Create(m_nativeptr->get()->getRegion()); + } + finally + { + GC::KeepAlive(m_nativeptr); + } } generic<class TKey, class TValue> Apache::Geode::Client::CacheStatistics^ RegionEntry<TKey, TValue>::Statistics::get( ) { apache::geode::client::CacheStatisticsPtr nativeptr; - - NativePtr->getStatistics( nativeptr ); - return Apache::Geode::Client::CacheStatistics::Create( nativeptr.ptr( ) ); + try + { + m_nativeptr->get()->getStatistics( nativeptr ); + } + finally + { + GC::KeepAlive(m_nativeptr); + } + return Apache::Geode::Client::CacheStatistics::Create( nativeptr); } generic<class TKey, class TValue> bool RegionEntry<TKey, TValue>::IsDestroyed::get( ) { - return NativePtr->isDestroyed( ); + try + { + return m_nativeptr->get()->isDestroyed( ); + } + finally + { + GC::KeepAlive(m_nativeptr); + } + } } // namespace Client } // namespace Geode } // namespace Apache - - } //namespace http://git-wip-us.apache.org/repos/asf/geode-native/blob/6027574a/src/clicache/src/RegionEntry.hpp ---------------------------------------------------------------------- diff --git a/src/clicache/src/RegionEntry.hpp b/src/clicache/src/RegionEntry.hpp index 767a052..85c933f 100644 --- a/src/clicache/src/RegionEntry.hpp +++ b/src/clicache/src/RegionEntry.hpp @@ -18,8 +18,11 @@ #pragma once #include "geode_defs.hpp" +#include "begin_native.hpp" #include <geode/RegionEntry.hpp> -#include "impl/NativeWrapper.hpp" +#include "end_native.hpp" + +#include "native_shared_ptr.hpp" //#include "ICacheableKey.hpp" #include "IRegion.hpp" @@ -31,6 +34,7 @@ namespace Apache { namespace Client { + namespace native = apache::geode::client; //ref class Region; ref class CacheStatistics; @@ -51,7 +55,6 @@ namespace Apache /// </remarks> generic<class TKey, class TValue> public ref class RegionEntry sealed - : public Internal::SBWrap<apache::geode::client::RegionEntry> { public: @@ -159,10 +162,10 @@ namespace Apache /// <returns> /// The managed wrapper object; null if the native pointer is null. /// </returns> - inline static Client::RegionEntry<TKey, TValue>^ Create( apache::geode::client::RegionEntry* nativeptr ) + inline static Client::RegionEntry<TKey, TValue>^ Create( native::RegionEntryPtr nativeptr ) { - return ( nativeptr != nullptr ? - gcnew Client::RegionEntry<TKey, TValue>( nativeptr ) : nullptr ); + return __nullptr == nativeptr ? nullptr : + gcnew RegionEntry<TKey, TValue>( nativeptr ); } @@ -172,8 +175,12 @@ namespace Apache /// Private constructor to wrap a native object pointer /// </summary> /// <param name="nativeptr">The native object pointer</param> - inline RegionEntry( apache::geode::client::RegionEntry* nativeptr ) - : SBWrap( nativeptr ) { } + inline RegionEntry( native::RegionEntryPtr nativeptr ) + { + m_nativeptr = gcnew native_shared_ptr<native::RegionEntry>(nativeptr); + } + + native_shared_ptr<native::RegionEntry>^ m_nativeptr; }; } // namespace Client } // namespace Geode