Microsoft Information Protection (MIP) SDK for C++: Reference 1.15
Doxygen-generated documentation for MIP SDK written in C++
Loading...
Searching...
No Matches
mip_context.h
Go to the documentation of this file.
1/*
2 *
3 * Copyright (c) Microsoft Corporation.
4 * All rights reserved.
5 *
6 * This code is licensed under the MIT License.
7 *
8 * Permission is hereby granted, free of charge, to any person obtaining a copy
9 * of this software and associated documentation files(the "Software"), to deal
10 * in the Software without restriction, including without limitation the rights
11 * to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
12 * copies of the Software, and to permit persons to whom the Software is
13 * furnished to do so, subject to the following conditions :
14 *
15 * The above copyright notice and this permission notice shall be included in
16 * all copies or substantial portions of the Software.
17 *
18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
21 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24 * THE SOFTWARE.
25 *
26 */
27/**
28 * @brief File containing definition of MipContext
29 *
30 * @file mip_context.h
31 */
32
33#ifndef API_MIP_MIP_CONTEXT_H_
34#define API_MIP_MIP_CONTEXT_H_
35
36#include <map>
37#include <memory>
38
39#include "mip/common_types.h"
42#include "mip/json_delegate.h"
43#include "mip/logger_delegate.h"
45#include "mip/mip_export.h"
46#include "mip/mip_namespace.h"
48#include "mip/xml_delegate.h"
49
50MIP_NAMESPACE_BEGIN
51
52/** @cond DOXYGEN_HIDE */
53class AuditManager;
54class ProtectionCloudManager;
55class PolicyCloudManager;
56class TelemetryManager;
57struct DiagnosticClientHandle {
58 DiagnosticClientHandle() {}
59 DiagnosticClientHandle(const char *diagnosticType, int64_t diagnosticHandle)
60 : type(diagnosticType),
61 handle(diagnosticHandle) {}
62
63 const char *type = {};
64 int64_t handle = {};
65};
66/** @endcond */
67
68/**
69 * @brief MipContext represents state that is shared across all profiles, engines, handlers
70 */
72public:
73
74#ifndef MIP_CORE_PACKAGE
75 /**
76 * @brief Create a new MipContext instance to be used when initializing profiles
77 *
78 * @param appInfo Description of host application
79 * @param path File path for logs, caches, etc.
80 * @param thresholdLogLevel Minimum log level for .miplog
81 * @param isOfflineOnly Enable/disable network operations (not all actions supported when offline)
82 * @param loggerDelegateOverride (Optional) LoggerDelegate override implementation
83 * @param diagnosticOverride (Optional) DiagnosticConfiguration override for audit/telemetry
84 *
85 * @return MipContext instance
86 */
87#if !defined(SWIG) && !defined(SWIG_DIRECTORS)
88 [[deprecated("MipContext::Create(...) is deprecated, use MipContext::Create(const std::shared_ptr<const MipConfiguration>&)")]]
89#endif
90 MIP_API static std::shared_ptr<MipContext> __CDECL Create(
91 const ApplicationInfo& appInfo,
92 const std::string& path,
93 LogLevel thresholdLogLevel,
94 bool isOfflineOnly,
95 const std::shared_ptr<LoggerDelegate>& loggerDelegateOverride,
96 const std::shared_ptr<DiagnosticConfiguration>& diagnosticOverride);
97
98 /**
99 * @brief Create a new MipContext instance with custom feature settings
100 *
101 * @param appInfo Description of host application
102 * @param path File path for logs, caches, etc.
103 * @param thresholdLogLevel Minimum log level for .miplog
104 * @param isOfflineOnly Enable/disable network operations (not all actions supported when offline)
105 * @param loggerDelegateOverride (Optional) LoggerDelegate override implementation
106 * @param diagnosticOverride (Optional) DiagnosticConfiguration override for audit/telemetry
107 * @param featureSettingsOverride Flighting features which should be set to non-default values
108 *
109 * @return MipContext instance
110 */
111#if !defined(SWIG) && !defined(SWIG_DIRECTORS)
112 [[deprecated("MipContext::CreateWithCustomFeatureSettings is deprecated, use MipContext::Create(const std::shared_ptr<const MipConfiguration>&)")]]
113#endif
114 MIP_API static std::shared_ptr<MipContext> __CDECL CreateWithCustomFeatureSettings(
115 const ApplicationInfo& appInfo,
116 const std::string& path,
117 LogLevel thresholdLogLevel,
118 bool isOfflineOnly,
119 const std::shared_ptr<LoggerDelegate>& loggerDelegateOverride,
120 const std::shared_ptr<DiagnosticConfiguration>& diagnosticOverride,
121 const std::map<FlightingFeature, bool>& featureSettingsOverride);
122#endif // !MIP_CORE_PACKAGE
123
124 /**
125 * @brief Create a new MipContext instance with mip configuration
126 *
127 * @param mipConfiguration mipConfiguration to be used across MIP
128 *
129 * @return MipContext instance
130 */
131 MIP_API static std::shared_ptr<MipContext> __CDECL Create(
132 const std::shared_ptr<const MipConfiguration>& configuration);
133
134 /**
135 * @brief Terminate MIP
136 *
137 * @note This method must be called prior to process/DLL shutdown
138 */
139 virtual void ShutDown() = 0;
140
141 /**
142 * @brief Gets whether or not a feature is enabled
143 *
144 * @param feature Feature to enable/disable
145 *
146 * @return Whether or not a feature is enabled
147 *
148 * @note If a FeatureFlightingDelegate has not been provided by an application, this will always return true
149 */
150 virtual bool IsFeatureEnabled(FlightingFeature feature) const = 0;
151
152 /**
153 * @brief Get application description
154 *
155 * @return Application description
156 */
157 virtual const ApplicationInfo& GetApplicationInfo() const = 0;
158
159 /**
160 * @brief Get file path for logs, caches, etc.
161 *
162 * @return File path (with "mip" leaf directory)
163 */
164 virtual const std::string& GetMipPath() const = 0;
165
166 /**
167 * @brief Get offline-only setting
168 *
169 * @return Whether or not application is running in offline-only mode
170 */
171 virtual bool IsOfflineOnly() const = 0;
172
173 /**
174 * @brief Get threshold log level
175 *
176 * @return threshold log level
177 */
178 virtual LogLevel GetThresholdLogLevel() const = 0;
179
180 /**
181 * @brief Get logger implementation
182 *
183 * @return Logger
184 */
185 virtual std::shared_ptr<LoggerDelegate> GetLoggerDelegate() const = 0;
186
187 /**
188 * @brief Get Http implementation
189 *
190 * @return HttpDelegate
191 */
192 virtual std::shared_ptr<HttpDelegate> GetHttpDelegate() const = 0;
193
194 /**
195 * @brief Get raw logger implementation
196 *
197 * @return Logger
198 */
200
201 /**
202 * @brief Get Storage Delegate implementation if provided
203 *
204 * @return StorageDelegate
205 */
206 virtual std::shared_ptr<StorageDelegate> GetStorageDelegate() const = 0;
207
208 /**
209 * @brief Get flighting feature set.
210 *
211 * @return Flighting feature map
212 */
213 virtual const std::map<FlightingFeature, bool>& GetFlightingFeatures() const = 0;
214
215 /**
216 * @brief Gets the mip configuration that was used to create the MipContext
217 *
218 * @return The mip configuration
219 */
220 virtual const std::shared_ptr<const MipConfiguration>& GetMipConfiguration() const = 0;
221
222 /**
223 * @brief Gets the logger configuration that will be used by the default logger
224 *
225 * @return Logger configuration
226 */
227 virtual const LoggerConfiguration& GetLoggerConfiguration() const = 0;
228
229 /** @cond DOXYGEN_HIDE */
230 virtual const ProtectionCloudManager& GetProtectionCloudManager() const = 0;
231 virtual const PolicyCloudManager& GetPolicyCloudManager() const = 0;
232 virtual std::shared_ptr<TelemetryManager> GetTelemetryManager() const = 0;
233 virtual std::shared_ptr<AuditManager> GetAuditManager() const = 0;
234 virtual TelemetryManager* GetRawTelemetryManager() const = 0;
235 virtual std::shared_ptr<JsonDelegate> GetJsonDelegate() const = 0;
236 virtual DiagnosticClientHandle AddDiagnosticClient(Cloud cloud, DataBoundary dataBoundary) const = 0;
237 virtual const std::shared_ptr<EventContext> GetDefaultEventContext() const = 0;
238
239 /**
240 * @brief Get the Xml Delegate that should be used when parsing.
241 * If the application provides a MipConfiguration with an xml delegate and is using MipCore
242 * this method returns that alternative delegate.
243 * Otherwise the default implementation will be used.
244 *
245 * @return A shared_ptr to the xml delegate
246 */
247 virtual std::shared_ptr<xml::XmlDelegate> GetXmlDelegate() const = 0;
248 virtual ~MipContext() {}
249 /** @endcond */
250};
251
252MIP_NAMESPACE_END
253#endif // API_MIP_MIP_CONTEXT_H_
254
A class that defines the interface to the MIP SDK logger.
MipContext represents state that is shared across all profiles, engines, handlers.
Definition mip_context.h:71
virtual const std::string & GetMipPath() const =0
Get file path for logs, caches, etc.
virtual std::shared_ptr< HttpDelegate > GetHttpDelegate() const =0
Get Http implementation.
static MIP_API std::shared_ptr< MipContext > __CDECL Create(const ApplicationInfo &appInfo, const std::string &path, LogLevel thresholdLogLevel, bool isOfflineOnly, const std::shared_ptr< LoggerDelegate > &loggerDelegateOverride, const std::shared_ptr< DiagnosticConfiguration > &diagnosticOverride)
Create a new MipContext instance to be used when initializing profiles.
static MIP_API std::shared_ptr< MipContext > __CDECL CreateWithCustomFeatureSettings(const ApplicationInfo &appInfo, const std::string &path, LogLevel thresholdLogLevel, bool isOfflineOnly, const std::shared_ptr< LoggerDelegate > &loggerDelegateOverride, const std::shared_ptr< DiagnosticConfiguration > &diagnosticOverride, const std::map< FlightingFeature, bool > &featureSettingsOverride)
Create a new MipContext instance with custom feature settings.
virtual const ApplicationInfo & GetApplicationInfo() const =0
Get application description.
virtual std::shared_ptr< LoggerDelegate > GetLoggerDelegate() const =0
Get logger implementation.
virtual std::shared_ptr< StorageDelegate > GetStorageDelegate() const =0
Get Storage Delegate implementation if provided.
virtual LogLevel GetThresholdLogLevel() const =0
Get threshold log level.
virtual const std::shared_ptr< const MipConfiguration > & GetMipConfiguration() const =0
Gets the mip configuration that was used to create the MipContext.
virtual bool IsFeatureEnabled(FlightingFeature feature) const =0
Gets whether or not a feature is enabled.
virtual void ShutDown()=0
Terminate MIP.
virtual LoggerDelegate * GetRawLoggerDelegate() const =0
Get raw logger implementation.
virtual bool IsOfflineOnly() const =0
Get offline-only setting.
virtual const std::map< FlightingFeature, bool > & GetFlightingFeatures() const =0
Get flighting feature set.
static MIP_API std::shared_ptr< MipContext > __CDECL Create(const std::shared_ptr< const MipConfiguration > &configuration)
Create a new MipContext instance with mip configuration.
virtual const LoggerConfiguration & GetLoggerConfiguration() const =0
Gets the logger configuration that will be used by the default logger.
A file Containing the common types used by the upe, file and protection modules.
Cloud
Azure cloud identifier.
DataBoundary
Diagnostic region identifier.
Defines custom telemetry or audit configurations.
A file containing the FlightingFeature definition.
FlightingFeature
Defines new features by name.
Contains the JsonDelegate interface used to parse and produce JSON data.
LogLevel
Different log levels used across the MIP SDK.
A file containing the LoggerDelegate class to be used to override MIP logger.
Defines configuration for all external mip delegates.
A file export/import macros.
MIP namespace macros.
A struct that includes application specific information.
Configuration to use when default logging is enabled.
A file containing the TelemetryDelegate class to be used to override MIP telemetry.
Contains XmlDelegate interface definition used to parse xml recieved by mip.