blob: 5cb526c6313e62fa8fb80a191df2007d161c7e15 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#pragma once
#include "geode_defs.hpp"
#include "IRegionService.hpp"
using namespace System;
using namespace System::Collections::Generic;
namespace Apache
{
namespace Geode
{
namespace Client
{
ref class SystemProperties;
ref class CacheTransactionManager;
/// <summary>
/// GeodeCache represents the singleton cache that must be created
/// in order to connect to Geode server.
/// </summary>
/// <remarks>
/// Caches are obtained from Crest methods on the
/// <see cref="CacheFactory.Create"/> class.
/// <para>
/// When a cache is created a <see cref="DistributedSystem" />
/// must be specified.
/// </para><para>
/// When a cache will no longer be used, call <see cref="Cache.Close" />.
/// Once it <see cref="Cache.IsClosed" /> any attempt to use it
/// will cause a <c>CacheClosedException</c> to be thrown.
/// </para><para>
/// A cache can have multiple root regions, each with a different name.
/// </para>
/// </remarks>
public interface class IGeodeCache : IRegionService
{
public:
/// <summary>
/// Returns the name of this cache.
/// </summary>
/// <remarks>
/// This method does not throw
/// <c>CacheClosedException</c> if the cache is closed.
/// </remarks>
/// <returns>the string name of this cache</returns>
property String^ Name
{
String^ get();
}
/// <summary>
/// Initializes the cache from an XML file.
/// </summary>
/// <param name="cacheXml">pathname of a <c>cache.xml</c> file</param>
void InitializeDeclarativeCache(String^ cacheXml);
property SystemProperties^ SystemProperties
{
Apache::Geode::Client::SystemProperties^ get();
}
/// <summary>
/// Returns the cache transaction manager of
/// <see cref="CacheFactory.Create" /> this cache.
/// </summary>
property Apache::Geode::Client::CacheTransactionManager^ CacheTransactionManager
{
Apache::Geode::Client::CacheTransactionManager^ get();
}
///<summary>
/// Returns whether Cache saves unread fields for Pdx types.
///</summary>
bool GetPdxIgnoreUnreadFields();
///<summary>
/// Returns whether { @link PdxInstance} is preferred for PDX types instead of .NET object.
///</summary>
bool GetPdxReadSerialized();
};
} // namespace Client
} // namespace Geode
} // namespace Apache