Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Para poder realizar cualquier operación del SDK de directivas, debe cargarse mip::Profile
.
Los dos ejemplos siguientes muestran cómo crear el objeto profileSettings mediante el almacenamiento local para el almacenamiento de estado, así como para el almacenamiento solo en memoria.
Carga de un perfil
Con MipContext
y ProfileObserver
definidos, los usaremos para crear instancias de mip::PolicyProfile
. La creación del objeto mip::PolicyProfile
requiere mip::PolicyProfile::Settings
y mip::MipContext
.
Parámetros de Configuración de Perfil
El constructor PolicyProfile::Settings
acepta cuatro parámetros, que se enumeran a continuación:
const std::shared_ptr<MipContext>
: el objetomip::MipContext
que se ha inicializado para almacenar información de la aplicación, la ruta del estado, etc.mip::CacheStorageType
: define cómo almacenar el estado: en la memoria, en el disco o en el disco con cifrado. Para más información, consulte los conceptos de almacenamiento en caché.std::shared_ptr<mip::PolicyProfile::Observer> observer
: Un puntero compartido al perfil de implementaciónObserver
(enPolicyProfile
,ProtectionProfile
yFileProfile
).
Los dos ejemplos siguientes muestran cómo crear el objeto profileSettings mediante el almacenamiento local para el almacenamiento de estado, así como para el almacenamiento solo en memoria.
Almacenamiento del estado solo en memoria
mip::ApplicationInfo appInfo {clientId, "APP NAME", "1.2.3" };
std::shared_ptr<mip::MipConfiguration> mipConfiguration = std::make_shared<mip::MipConfiguration>(mAppInfo,
"mip_data",
mip::LogLevel::Trace,
false);
std::shared_ptr<mip::MipContext> mMipContext = mip::MipContext::Create(mipConfiguration);
PolicyProfile::Settings profileSettings(
mMipContext, // mipContext object
mip::CacheStorageType::InMemory, // use in memory storage
std::make_shared<PolicyProfileObserverImpl>()); // new protection profile observer
Lectura y escritura de configuraciones de perfil desde la ruta de almacenamiento en disco.
mip::ApplicationInfo appInfo {clientId, "APP NAME", "1.2.3" };
std::shared_ptr<mip::MipConfiguration> mipConfiguration = std::make_shared<mip::MipConfiguration>(mAppInfo,
"mip_data",
mip::LogLevel::Trace,
false);
std::shared_ptr<mip::MipContext> mMipContext = mip::MipContext::Create(mipConfiguration);
PolicyProfile::Settings profileSettings(
mipContext, // mipContext object
mip::CacheStorageType::OnDisk, // use on disk storage
std::make_shared<PolicyProfileObserverImpl>()); // new protection profile observer
A continuación, use el patrón promesa/futuro para cargar Profile
.
auto profilePromise = std::make_shared<std::promise<std::shared_ptr<Profile>>>();
auto profileFuture = profilePromise->get_future();
Profile::LoadAsync(profileSettings, profilePromise);
Si un perfil se carga correctamente, ProfileObserver::OnLoadSuccess
, se notifica a la implementación de mip::Profile::Observer::OnLoadSuccess
. El objeto resultante, en este caso, un mip::Profile
, así como el contexto, se envían como parámetros a la función de observador.
El contexto es un puntero dirigido al std::promise
que creamos para controlar la operación asincrónica. La función establece el valor de la promesa en el objeto de perfil que se envió para el primer parámetro. Cuando la función principal usa Future.get()
, el resultado se puede almacenar en un nuevo objeto del subproceso que realiza la llamada.
//get the future value and store in profile.
auto profile = profileFuture.get();
Combinación de todo
Habiendo implementado completamente los observadores y el delegado de autenticación, ya es posible cargar completamente un perfil. En el fragmento de código siguiente se presupone que ya se incluyen todos los encabezados necesarios.
int main()
{
const string userName = "MyTestUser@consoto.com";
const string password = "P@ssw0rd!";
const string clientId = "MyClientId";
mip::ApplicationInfo appInfo {clientId, "APP NAME", "1.2.3" };
std::shared_ptr<mip::MipConfiguration> mipConfiguration = std::make_shared<mip::MipConfiguration>(mAppInfo,
"mip_data",
mip::LogLevel::Trace,
false);
std::shared_ptr<mip::MipContext> mMipContext = mip::MipContext::Create(mipConfiguration);
PolicyProfile::Settings profileSettings(
mMipContext, // mipContext object
mip::CacheStorageType::OnDisk, // use on disk storage
std::make_shared<PolicyProfileObserverImpl>()); // new protection profile observer
auto profilePromise = std::make_shared<promise<shared_ptr<PolicyProfile>>>();
auto profileFuture = profilePromise->get_future();
Profile::LoadAsync(profileSettings, profilePromise);
auto profile = profileFuture.get();
}
El resultado final es que hemos cargado correctamente el perfil y lo hemos almacenado en el objeto denominado profile
.
Pasos siguientes
Ahora que hemos agregado el perfil, el siguiente paso es agregar un motor al perfil.