프로젝트

일반

사용자정보

통계
| 브랜치(Branch): | 개정판:

markus / lib / RCWPF / 2018.1.122.40 / EQATEC.Analytics.Monitor.xml @ 316d0f5c

이력 | 보기 | 이력해설 | 다운로드 (126 KB)

1 787a4489 KangIngu
<?xml version="1.0"?>
2
<doc>
3
    <assembly>
4
        <name>EQATEC.Analytics.Monitor</name>
5
    </assembly>
6
    <members>
7
        <member name="T:EQATEC.Analytics.Monitor.AnalyticsMonitor">
8
            <summary>
9
            Implementing class for IAnalyticsMonitor. Coordinates the interaction between
10
            the messaging subsystem, the statistics and the storage
11
            </summary>
12
        </member>
13
        <member name="T:EQATEC.Analytics.Monitor.IAnalyticsMonitor">
14
            <summary>
15
            The main interface for the analytics monitor which can be obtained with a call to 
16
            <see cref="M:EQATEC.Analytics.Monitor.AnalyticsMonitorFactory.CreateMonitor(System.String)"/> or <see cref="M:EQATEC.Analytics.Monitor.AnalyticsMonitorFactory.CreateMonitor(EQATEC.Analytics.Monitor.IAnalyticsMonitorSettings)"/>. The monitor will not collect data before
17
            a call to <see cref="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.Start"/> has been performed.
18
            </summary>
19
            <remarks>For more on the features of the EQATEC Analytics service please
20
            refer to the <a href="http://eqatec.com/analytics">EQATEC Analytics website</a></remarks>
21
        </member>
22
        <member name="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.Start">
23
            <summary>
24
            Call to start the monitor. When started the monitor will begin collecting data from the
25
            calls and send them asynchronously to the EQATEC Analytics servers on background threads
26
            </summary>
27
        </member>
28
        <member name="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.TrackException(System.Exception)">
29
            <summary>
30
            Call to track an exception that occured in the application.
31
            </summary>
32
            <param name="exception">the exception to be tracked</param>
33
            <example>An example of tracking an exception
34
            <code>
35
            static class Program 
36
            {   
37
              [STAThread]
38
              static void Main()
39
              {
40
                IAnalyticsMonitor monitor = AnalyticsMonitorFactory.CreateMonitor("YOUR-PRODUCT_KEY");
41
                monitor.Start();
42
                try 
43
                {
44
                   // your application logic here
45
                }
46
                catch(Exception exc)
47
                {
48
                  // catch-all handle 
49
                  monitor.TrackException(exc);
50
                }
51
                finally
52
                {
53
                  monitor.Stop();
54
                }
55
              } 
56
            }
57
            </code>
58
            </example>
59
        </member>
60
        <member name="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.TrackException(System.Exception,System.String)">
61
            <summary>
62
            Call to track an exception that occured in the application.
63
            </summary>
64
            <param name="exception">The exception to be tracked</param>
65
            <param name="contextMessage">Contextual information about the action being performed when the exception occurred</param>
66
            <example>An example of tracking an exception
67
            <code>
68
            static class Program 
69
            {   
70
              [STAThread]
71
              static void Main(string[] args)
72
              {
73
                IAnalyticsMonitor monitor = AnalyticsMonitorFactory.CreateMonitor("YOUR-PRODUCT_KEY");
74
                monitor.Start();
75
                try 
76
                {
77
                   // your application logic here
78
                }
79
                catch(Exception exc)
80
                {
81
                  // catch-all handle 
82
                  monitor.TrackException(exc, "CatchAllHandler");
83
                }
84
                finally
85
                {
86
                  monitor.Stop();
87
                }
88
              } 
89
            }
90
            </code>
91
            </example>
92
        </member>
93
        <member name="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.TrackException(System.Exception,System.String,System.Object[])">
94
            <summary>
95
            Call to track an exception that occured in the application.
96
            </summary>
97
            <param name="exception">The exception to be tracked</param>
98
            <param name="contextMessageFormat">A context message string containing the information about the action being performed when the exception occurred</param>
99
            <param name="args">An object array containing zero or more objects to format the <paramref name="contextMessageFormat"/></param>
100
            <example>An example of tracking an exception
101
            <code>
102
            static class Program 
103
            {   
104
              [STAThread]
105
              static void Main(string[] args)
106
              {
107
                IAnalyticsMonitor monitor = AnalyticsMonitorFactory.CreateMonitor("YOUR-PRODUCT_KEY");
108
                monitor.Start();
109
                try 
110
                {
111
                   // your application logic here
112
                }
113
                catch(Exception exc)
114
                {
115
                  // catch-all handle 
116
                  monitor.TrackException(exc, "CatchAllHandler with argument count {0}", args.Length);
117
                }
118
                finally
119
                {
120
                  monitor.Stop();
121
                }
122
              } 
123
            }
124
            </code>
125
            </example>
126
        </member>
127
        <member name="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.TrackFeature(System.String)">
128
            <summary>
129
            Register a feature usage. It is recommended that related features are grouped by using simple dot-notation
130
            in the <paramref name="featureName"/> such as e.g. relating print to pdf and print to file by naming the
131
            features "print.pdf" and "print.file" respectively
132
            </summary>
133
            <param name="featureName">The name of the feature. If it is <c>null</c> or empty the request is ignored.</param>
134
            <example>The following shows an example of how you can track features in your application
135
            <code>
136
            static class Program 
137
            {   
138
              [STAThread]
139
              static void Main(string[] args)
140
              {
141
                IAnalyticsMonitor monitor = AnalyticsMonitorFactory.CreateMonitor("YOUR-PRODUCT_KEY");
142
                monitor.Start();
143
                try 
144
                {
145
                   bool exportToFile = ShouldExportToFile(); //omitted for brevity
146
                   if (exportToFile)
147
                     monitor.TrackFeature("export.file");
148
                }
149
                finally
150
                {
151
                  monitor.Stop();
152
                }
153
              } 
154
            }
155
            </code>
156
            </example>
157
        </member>
158
        <member name="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.TrackFeatures(System.String[])">
159
            <summary>
160
            Register a number of feature usages. For the individual feature names, it is recommended that related 
161
            features are grouped by using simple dot-notation such as e.g. relating print to pdf and print to file by naming the
162
            features "print.pdf" and "print.file" respectively. This allow call is semantically equivalent to
163
            calling <see cref="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.TrackFeature(System.String)"/> multiple times.
164
            </summary>
165
            <param name="featureNames">The array of named feature. If it is <c>null</c> or empty the request is ignored.</param>
166
            <example>The following shows an example of how you can track features in your application
167
            <code>
168
            static class Program 
169
            {   
170
              [STAThread]
171
              static void Main(string[] args)
172
              {
173
                IAnalyticsMonitor monitor = AnalyticsMonitorFactory.CreateMonitor("YOUR-PRODUCT_KEY");
174
                monitor.Start();
175
                try 
176
                {
177
                   bool exportToFile = ShouldExportToFile(); //omitted for brevity
178
                   if (exportToFile)
179
                     monitor.TrackFeature(new[]{"export.file", "export.byuser"});
180
                }
181
                finally
182
                {
183
                  monitor.Stop();
184
                }
185
              } 
186
            }
187
            </code>
188
            </example>
189
        </member>
190
        <member name="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.TrackFeatureStart(System.String)">
191
            <summary>
192
            Register the start of a feature usage. Use this with <see cref="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.TrackFeatureStop(System.String)"/> to track
193
            how long a feature is used.
194
            </summary>
195
            <returns>A <see cref="T:EQATEC.Analytics.Monitor.TimingScope"/> instance that can be used for creating more compact timing code.</returns>
196
            <remarks>There cannot be more then one feature timing running with a given <paramref name="featureName"/> at a time.
197
            This implies that calling this method multiple times with the same <paramref name="featureName"/> has no effect
198
            until the existing time has termined by either calling <see cref="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.TrackFeatureStop(System.String)"/> or 
199
            <see cref="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.TrackFeatureCancel(System.String)"/> with the same <paramref name="featureName"/>. All features timings
200
            are implicitly stopped by calling <see cref="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.Stop"/>.</remarks>
201
            <param name="featureName">The name of the feature. If it is <c>null</c> or empty the request is ignored.</param>
202
            <example>The following shows an example of how you can track feature time in your application
203
            <code>
204
            class SomeClass
205
            {   
206
              private IAnalyticsMonitor m_monitor;
207
              public SomeClass(IAnalyticsMonitor monitor)
208
              {
209
                m_monitor = monitor;
210
              }
211
              public void Process()
212
              {
213
                try 
214
                {
215
                   m_monitor.TrackFeatureStart("SomeClass.Process");
216
            
217
                   //some process logic to time
218
            
219
                   m_monitor.TrackFeatureStop("SomeClass.Process");
220
                }
221
                catch(Exception exc)
222
                {
223
                  m_monitor.TrackFeatureCancel("SomeClass.Process");
224
                  throw;
225
                }
226
              } 
227
            }
228
            </code>
229
            </example>
230
        </member>
231
        <member name="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.TrackFeatureStop(System.String)">
232
            <summary>
233
            Register the end of a feature usage stared by <see cref="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.TrackFeatureStart(System.String)"/> with a similar
234
            <paramref name="featureName"/>.
235
            </summary>
236
            <returns>The total time tracked for this feature or <c>TimeSpan.Zero</c> if timing was not tracked</returns>
237
            <remarks>Calling this method with a <paramref name="featureName"/> that does not match an already
238
            started feature timing has no effect. All features timings
239
            are implicitly stopped by calling <see cref="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.Stop"/>.
240
            </remarks>
241
            <param name="featureName">The name of the feature. If it is <c>null</c> or empty the request is ignored.</param>
242
            <example>The following shows an example of how you can track feature time in your application
243
            <code>
244
            class SomeClass
245
            {   
246
              private IAnalyticsMonitor m_monitor;
247
              public SomeClass(IAnalyticsMonitor monitor)
248
              {
249
                m_monitor = monitor;
250
              }
251
              public void Process()
252
              {
253
                try 
254
                {
255
                   m_monitor.TrackFeatureStart("SomeClass.Process");
256
            
257
                   //some process logic to time
258
            
259
                   TimeSpan timeSpent = m_monitor.TrackFeatureStop("SomeClass.Process");
260
                }
261
                catch(Exception exc)
262
                {
263
                  m_monitor.TrackFeatureCancel("SomeClass.Process");
264
                  throw;
265
                }
266
              } 
267
            }
268
            </code>
269
            </example>
270
        </member>
271
        <member name="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.TrackFeatureCancel(System.String)">
272
            <summary>
273
            Stops an ongoing timing of a feature from any previous call to <see cref="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.TrackFeatureStart(System.String)"/> with similar
274
            <paramref name="featureName"/> without
275
            registering the time spent. Use this call if the feature being tracked did not complete as expected, e.g.
276
            was interupted by an exception. The call can safely be made even if no <c>TrackFeatureStart</c> has
277
            been made.
278
            </summary>
279
            <param name="featureName">The name of the feature. If it is <c>null</c> or empty the request is ignored.</param>
280
            <example>The following shows an example of how you can track feature time in your application
281
            <code>
282
            class SomeClass
283
            {   
284
              private IAnalyticsMonitor m_monitor;
285
              public SomeClass(IAnalyticsMonitor monitor)
286
              {
287
                m_monitor = monitor;
288
              }
289
              public void Process()
290
              {
291
                try 
292
                {
293
                   m_monitor.TrackFeatureStart("SomeClass.Process");
294
            
295
                   //some process logic to time
296
            
297
                   m_monitor.TrackFeatureStop("SomeClass.Process");
298
                }
299
                catch(Exception exc)
300
                {
301
                  m_monitor.TrackFeatureCancel("SomeClass.Process");
302
                  throw;
303
                }
304
              } 
305
            }
306
            </code>
307
            </example>
308
        </member>
309
        <member name="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.TrackFeatureValue(System.String,System.Int64)">
310
            <summary>
311
            Register a value on a specific feature. 
312
            </summary>
313
            <remarks>While calls to <see cref="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.TrackFeature(System.String)"/> increments the use of a feature in the session a call to
314
            this methods will associate a given value with a named feature. Use this method to e.g. track the distribution
315
            of file sizes imported or the number of results registered. Tracking this distribution across all your application
316
            usage will give insights to what scenarios your applications are handling</remarks>
317
            <param name="featureName">The name of the feature. If it is <c>null</c> or empty the request is ignored.</param>
318
            <param name="trackedValue">The value to track</param>
319
            <example>The following shows an example of how you can track feature values in your application
320
            <code>
321
            class SomeClass
322
            {   
323
              private IAnalyticsMonitor m_monitor;
324
              public SomeClass(IAnalyticsMonitor monitor)
325
              {
326
                m_monitor = monitor;
327
              }
328
              public void Process()
329
              {
330
                int filesProcessed = ProcessFiles();
331
                m_monitor.TrackFeatureValue("SomeClass.FilesProcessed", filesProcessed);
332
              } 
333
            }
334
            </code>
335
            </example>
336
        </member>
337
        <member name="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.Stop">
338
            <summary>
339
            Call to stop the monitor. Call will attempt to save any pending state
340
            to the storage and send the final tracking data to the servers. 
341
            </summary>
342
            <remarks>This call will attempt to send the final tracking data to the servers on a background thread and
343
            by wait for completion of this monitor processing for up to 2 seconds. If you do not want to wait for up to 2 seconds
344
            for the completion of this operation, please consider using the overload to this function(<see cref="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.Stop(System.TimeSpan)"/>.</remarks>
345
        </member>
346
        <member name="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.Stop(System.TimeSpan)">
347
            <summary>
348
            Call to stop the monitor. The monitor will attempt to save any pending state
349
            to the storage and send the final tracking data to the servers. The <paramref name="waitForCompletion"/> can be specified
350
            to allow for the thread to wait for completion of data persistence and transmission. If the monitor cannot complete
351
            before the specified time the call will return.
352
            </summary>
353
            <param name="waitForCompletion">The time to wait for the stop to complete successfully. Use <see cref="F:System.TimeSpan.Zero"/> to avoid waiting for completion.</param>
354
            <remarks>This call will attempt to send the final tracking data to the servers on a background thread and
355
            by providing a <paramref name="waitForCompletion"/> timeout you increase the chance that the monitor is able to
356
            completion the transmission while the runtime and threadpools are still operational. If no timeout is specified
357
            the monitors background threads and network connections may be removed as part of the process termination and thereby
358
            leaving data in the cache to be delivered on the next startup.</remarks>
359
        </member>
360
        <member name="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.ForceSync">
361
            <summary>
362
            Explicitly force a synchonization of the current information with the analytics server. 
363
            </summary>
364
            <remarks>This call is not expected to be used in a standard setup but may be helpful in occasionally connected 
365
            scenarios. You can use this method in conjunction with setting <see cref="P:EQATEC.Analytics.Monitor.AnalyticsMonitorSettings.SynchronizeAutomatically"/> to <c>false</c>
366
            in order to take control of when data is attempted to be delivered to the servers. By default the monitor will
367
            control the data delivery internally but if you need to decide e.g. when networks can be utilized you
368
            can use this method to schedule an asynchronous data delivery
369
            </remarks>
370
            <seealso cref="T:EQATEC.Analytics.Monitor.AnalyticsMonitorSettings"/>
371
        </member>
372
        <member name="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.SetInstallationInfo(System.String,System.Collections.Generic.IDictionary{System.String,System.String})">
373
            <summary>
374
            Associates an installation ID with the current session and optionally a dictionary of
375
            installation properties that allows you to add additional installation meta data for the session
376
            </summary>
377
            <remarks>Use this method to register you installationid on the monitor and optionally associate
378
            installation properties with this installation id. You can call this method multiple times
379
            while the monitor is running and thus alter the installation id associated with the session at runtime. Note however
380
            that changing the installation id will also reset any previous installation properties associated with the previous 
381
            installation id from the session so you will need to associate them again</remarks>
382
            <param name="installationId">The installation ID to associate with the current session</param>
383
            <param name="propertyDictionary">The dictionary containing the key-value pairs for the installation properties of the current session</param>
384
        </member>
385
        <member name="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.SetInstallationInfo(System.String)">
386
            <summary>
387
            Associates an installation ID with the current session 
388
            </summary>
389
            <remarks>Use this method to register you installationid on the monitor. You can call this method multiple times
390
            while the monitor is running and thus alter the installation id associated with the session at runtime. Note however
391
            that changing the installation id will also reset any previous installation properties associated with the previous 
392
            installation id from the session so you will need to associate them again</remarks>
393
            <param name="installationId">The installation ID to associate with the current session</param>
394
        </member>
395
        <member name="P:EQATEC.Analytics.Monitor.IAnalyticsMonitor.Status">
396
            <summary>
397
            Access the current status for the monitor.
398
            </summary>
399
        </member>
400
        <member name="M:EQATEC.Analytics.Monitor.AnalyticsMonitor.Start">
401
            <summary>
402
            Initializes the monitor
403
            </summary>
404
        </member>
405
        <member name="M:EQATEC.Analytics.Monitor.AnalyticsMonitor.Stop">
406
            <summary>
407
            Stop the Analytics monitor. Will attempt to write any pending
408
            state to the storage
409
            </summary>
410
        </member>
411
        <member name="M:EQATEC.Analytics.Monitor.AnalyticsMonitor.Stop(System.TimeSpan)">
412
            <summary>
413
            Stop the Analytics monitor. Will attempt to write any pending
414
            state to the storage
415
            </summary>
416
            <param name="waitForCompletion">The timeout for any server communication in progress</param>
417
        </member>
418
        <member name="M:EQATEC.Analytics.Monitor.AnalyticsMonitor.TrackException(System.Exception)">
419
            <summary>
420
            Track exception
421
            </summary>
422
            <param name="exception"></param>
423
        </member>
424
        <member name="M:EQATEC.Analytics.Monitor.AnalyticsMonitor.TrackException(System.Exception,System.String)">
425
            <summary>
426
            Track exception
427
            </summary>
428
            <param name="exception"></param>
429
            <param name="contextMessage"></param>
430
        </member>
431
        <member name="M:EQATEC.Analytics.Monitor.AnalyticsMonitor.TrackException(System.Exception,System.String,System.Object[])">
432
            <summary>
433
            Track exception
434
            </summary>
435
            <param name="exception"></param>
436
            <param name="contextMessageFormat"></param>
437
            <param name="args"></param>
438
        </member>
439
        <member name="M:EQATEC.Analytics.Monitor.AnalyticsMonitor.TrackFeatureStart(System.String)">
440
            <summary>
441
            Tracking a feature start
442
            </summary>
443
            <param name="featureName"></param>
444
        </member>
445
        <member name="M:EQATEC.Analytics.Monitor.AnalyticsMonitor.TrackFeatureStop(System.String)">
446
            <summary>
447
            Tracking a feature stop
448
            </summary>
449
            <param name="featureName"></param>
450
        </member>
451
        <member name="M:EQATEC.Analytics.Monitor.AnalyticsMonitor.TrackFeatureCancel(System.String)">
452
            <summary>
453
            Cancelling a feature timing
454
            </summary>
455
            <param name="featureName"></param>
456
        </member>
457
        <member name="M:EQATEC.Analytics.Monitor.AnalyticsMonitor.ForceSync">
458
            <summary>
459
            Force a synchonization the current information with the analytics server.
460
            This should not be used in normal situations.
461
            </summary>
462
        </member>
463
        <member name="M:EQATEC.Analytics.Monitor.AnalyticsMonitor.SetInstallationInfo(System.String)">
464
            <summary>
465
            Set installationId at the current session
466
            </summary>
467
            <param name="installationId">the installation ID</param>
468
            <returns></returns>
469
        </member>
470
        <member name="M:EQATEC.Analytics.Monitor.AnalyticsMonitor.SetInstallationInfo(System.String,System.Collections.Generic.IDictionary{System.String,System.String})">
471
            <summary>
472
            Set installationId at the current session and get interface to installation settings
473
            </summary>
474
            <param name="installationId">the installation ID</param>
475
            <param name="installationProperties">the installaion properties</param>
476
            <returns></returns>
477
        </member>
478
        <member name="M:EQATEC.Analytics.Monitor.AnalyticsMonitor.System#IDisposable#Dispose">
479
            <summary>
480
            Dispose the monitor
481
            </summary>
482
        </member>
483
        <member name="P:EQATEC.Analytics.Monitor.AnalyticsMonitor.Status">
484
            <summary>
485
            Access the current status for the monitor.
486
            </summary>
487
        </member>
488
        <member name="T:EQATEC.Analytics.Monitor.AnalyticsMonitorFacade">
489
             <summary>
490
             Represents a simple facade for interacting with the Analytics Monitor. Use this facade interface instead
491
             of interacting more directly with the <see cref="T:EQATEC.Analytics.Monitor.AnalyticsMonitorFactory"/> and <see cref="T:EQATEC.Analytics.Monitor.IAnalyticsMonitor"/>
492
             interfaces for a slightly higher level interaction model.
493
             </summary>
494
             <remarks>
495
             The facade will instantiate a single <see cref="T:EQATEC.Analytics.Monitor.IAnalyticsMonitor"/> instance on the Create call and
496
             the remaining methods on this class mirror the methods found on the <see cref="T:EQATEC.Analytics.Monitor.IAnalyticsMonitor"/> interface. The
497
             facade can be used by consumers as a simple way of calling the API without worrying about passing the
498
             <see cref="T:EQATEC.Analytics.Monitor.IAnalyticsMonitor"/> instance around and about the timing issues of when the methods can be 
499
             called. The facade will encapsulate the created instance, raise an exception for multiple calls
500
             to the <see cref="M:EQATEC.Analytics.Monitor.AnalyticsMonitorFacade.Create(System.String)"/> methods and will forward the methods on to the instance when it is available.
501
             
502
             If the facade represent too high level control or you would like to control the <see cref="T:EQATEC.Analytics.Monitor.IAnalyticsMonitor"/>
503
             instance yourself you should look at using the <see cref="T:EQATEC.Analytics.Monitor.AnalyticsMonitorFactory"/> methods.
504
             
505
             Repeated calls to the Create methods will raise exceptions as the intended use of the facade is for simple integration scenarios</remarks>
506
             <example> This sample shows how to use AnalyticsMonitorFacade.
507
             <code>
508
             class MyClass 
509
             {
510
               static void Main()
511
               {
512
                 //Creating Analytics Monitor
513
                 AnalyticsMonitorFacade.Create("YOUR_PRODUCT_KEY_HERE");
514
            
515
                 //Start Analytics monitor
516
                 AnalyticsMonitorFacade.Start();
517
            
518
                 /*Your program here....*/
519
            
520
                 //Stop Analytics monitor
521
                 AnalyticsMonitorFacade.Stop();
522
               }
523
             }
524
             </code>
525
             </example>
526
        </member>
527
        <member name="M:EQATEC.Analytics.Monitor.AnalyticsMonitorFacade.Create(System.String)">
528
            <summary>
529
            Initializes the facade by creating a monitor with the given product id and the standard
530
            settings
531
            </summary>
532
            <param name="productId">the product id to use</param>
533
            <exception cref="T:System.InvalidOperationException">if Create has already been called</exception>
534
            <exception cref="T:System.ArgumentException">if the product id is not correctly formatted</exception>
535
        </member>
536
        <member name="M:EQATEC.Analytics.Monitor.AnalyticsMonitorFacade.Create(EQATEC.Analytics.Monitor.IAnalyticsMonitorSettings)">
537
            <summary>
538
            Initializes the facade by creating a monitor with the specified
539
            settings
540
            </summary>
541
            <param name="settings">the product id to use</param>
542
            <exception cref="T:System.InvalidOperationException">if Create has already been called</exception>
543
            <exception cref="T:System.ArgumentNullException">if <c>null</c> is passed as settings</exception>
544
        </member>
545
        <member name="M:EQATEC.Analytics.Monitor.AnalyticsMonitorFacade.Start">
546
            <summary>
547
            Start the monitor. Mirrors the <see cref="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.Start"/> method
548
            </summary>
549
            <see cref="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.Start"/>
550
        </member>
551
        <member name="M:EQATEC.Analytics.Monitor.AnalyticsMonitorFacade.Stop">
552
            <summary>
553
            Stop the monitor. Mirrors the <see cref="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.Stop"/> method
554
            </summary>
555
        </member>
556
        <member name="M:EQATEC.Analytics.Monitor.AnalyticsMonitorFacade.Stop(System.TimeSpan)">
557
             <summary>
558
             Stop the monitor. Mirrors the <see cref="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.Stop(System.TimeSpan)"/> method
559
             </summary>
560
            <param name="waitForCompletion">The wait interval for the monitor to stop correctly</param>
561
        </member>
562
        <member name="M:EQATEC.Analytics.Monitor.AnalyticsMonitorFacade.TrackException(System.Exception)">
563
            <summary>
564
            Track an exception. Mirrors the <see cref="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.TrackException(System.Exception)"/> method
565
            </summary>
566
            <param name="exception">the exception instance</param>
567
        </member>
568
        <member name="M:EQATEC.Analytics.Monitor.AnalyticsMonitorFacade.TrackException(System.Exception,System.String)">
569
            <summary>
570
            Track an exception along with a context message. Mirrors the <see cref="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.TrackException(System.Exception,System.String)"/> method
571
            </summary>
572
            <param name="exception">the exception instance</param>
573
            <param name="message">an additional context message specifying extra information not captured in the exception</param>
574
        </member>
575
        <member name="M:EQATEC.Analytics.Monitor.AnalyticsMonitorFacade.TrackException(System.Exception,System.String,System.Object[])">
576
            <summary>
577
            Track an exception with a formatted context message. Mirrors the <see cref="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.TrackException(System.Exception,System.String,System.Object[])"/> method
578
            </summary>
579
            <param name="exception">the exception instance</param>
580
            <param name="format">a format string for specifying extra information not captured in the exception</param>
581
            <param name="args">arguments to the format string</param>
582
        </member>
583
        <member name="M:EQATEC.Analytics.Monitor.AnalyticsMonitorFacade.TrackFeature(System.String)">
584
            <summary>
585
            Register a feature usage. Mirrors the <see cref="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.TrackFeature(System.String)"/> method
586
            </summary>
587
            <param name="featureName">The name of the feature. If it is <c>null</c> or empty the request is ignored.</param>
588
        </member>
589
        <member name="M:EQATEC.Analytics.Monitor.AnalyticsMonitorFacade.TrackFeatures(System.String[])">
590
            <summary>
591
            Register a number of feature usages. Mirrors the <see cref="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.TrackFeatures(System.String[])"/> method
592
            </summary>
593
            <param name="featureNames">Array of named features. If it is <c>null</c> or empty the request is ignored.</param>
594
        </member>
595
        <member name="M:EQATEC.Analytics.Monitor.AnalyticsMonitorFacade.TrackFeatureStart(System.String)">
596
            <summary>
597
            Register the start of a feature usage. Mirrors the <see cref="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.TrackFeatureStart(System.String)"/> method
598
            </summary>
599
            <param name="featureName">The name of the feature. If it is <c>null</c> or empty the request is ignored.</param>
600
            <returns>A <see cref="T:EQATEC.Analytics.Monitor.TimingScope"/> instance that can be used for creating more compact timing code.</returns>
601
        </member>
602
        <member name="M:EQATEC.Analytics.Monitor.AnalyticsMonitorFacade.TrackFeatureStop(System.String)">
603
            <summary>
604
            Register the end of a feature usage stared by <see cref="M:EQATEC.Analytics.Monitor.AnalyticsMonitorFacade.TrackFeatureStart(System.String)"/>.Mirrors the <see cref="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.TrackFeatureStop(System.String)"/> method
605
            </summary>
606
            <param name="featureName">The name of the feature. If it is <c>null</c> or empty the request is ignored.</param>
607
        </member>
608
        <member name="M:EQATEC.Analytics.Monitor.AnalyticsMonitorFacade.TrackFeatureCancel(System.String)">
609
            <summary>
610
            Cancels an ongoing feature timing tracking. Mirrors the <see cref="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.TrackFeatureCancel(System.String)"/> method
611
            </summary>
612
            <param name="featureName">The name of the feature. If it is <c>null</c> or empty the request is ignored.</param>
613
        </member>
614
        <member name="M:EQATEC.Analytics.Monitor.AnalyticsMonitorFacade.TrackFeatureValue(System.String,System.Int64)">
615
            <summary>
616
            Tracks a value on a named feature. Mirrors the <see cref="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.TrackFeatureValue(System.String,System.Int64)"/> method
617
            </summary>
618
            <param name="featureName">The name of the feature. If it is <c>null</c> or empty the request is ignored.</param>
619
            <param name="value">The value to be tracked</param>
620
        </member>
621
        <member name="M:EQATEC.Analytics.Monitor.AnalyticsMonitorFacade.ForceSync">
622
            <summary>
623
            Force a sync for manual synchronization. Mirrors the <see cref="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.ForceSync"/> call.
624
            </summary>
625
        </member>
626
        <member name="M:EQATEC.Analytics.Monitor.AnalyticsMonitorFacade.SetInstallationInfo(System.String,System.Collections.Generic.IDictionary{System.String,System.String})">
627
            <summary>
628
            Sets the installation id for the current monitor. Mirrors the <see cref="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.SetInstallationInfo(System.String,System.Collections.Generic.IDictionary{System.String,System.String})"/> call
629
            </summary>
630
            <param name="installationID">The current installation id to assign</param>
631
            <param name="installationProperties">The key-value pairs for the installation properties</param>
632
        </member>
633
        <member name="M:EQATEC.Analytics.Monitor.AnalyticsMonitorFacade.SetInstallationInfo(System.String)">
634
            <summary>
635
            Sets the installation id for the current monitor. Mirrors the <see cref="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.SetInstallationInfo(System.String)"/> call
636
            </summary>
637
            <param name="installationID">The current installation id to assign</param>
638
        </member>
639
        <member name="P:EQATEC.Analytics.Monitor.AnalyticsMonitorFacade.Status">
640
            <summary>
641
            Get the current capabilities of the wrapped monitor
642
            </summary>
643
        </member>
644
        <member name="T:EQATEC.Analytics.Monitor.AnalyticsMonitorFactory">
645
            <summary>
646
            Factory for creating <see cref="T:EQATEC.Analytics.Monitor.IAnalyticsMonitor"/> instances. Call with an instance of 
647
            <see cref="T:EQATEC.Analytics.Monitor.AnalyticsMonitorSettings"/> to customize behavior of the constructed monitor.
648
            </summary>
649
            <remarks>While it is possible to create multiple monitors for the same product id from within
650
            the same application it is not encouraged as it may lead to inconsistencies in data stored on disk.</remarks>
651
        </member>
652
        <member name="M:EQATEC.Analytics.Monitor.AnalyticsMonitorFactory.CreateMonitor(System.String)">
653
             <summary>
654
             Create an <see cref="T:EQATEC.Analytics.Monitor.IAnalyticsMonitor"/> instance using the default settings
655
             </summary>
656
             <param name="productId">the product ID</param>
657
             <returns>an instance of the <see cref="T:EQATEC.Analytics.Monitor.IAnalyticsMonitor"/> interface</returns>
658
             <exception cref="T:System.ArgumentException">thrown if product id provided have the wrong format (guid format expected)</exception>
659
             <example> This sample shows how to start the Analytics monitor.
660
             <code>
661
             class MyClass 
662
             {
663
               static void Main() 
664
               {
665
                 //Creating IAnalyticsMonitor
666
                 IAnalyticsMonitor monitor = AnalyticsMonitorFactory.CreateMonitor("YOUR_PRODUCT_KEY_HERE");
667
             
668
                 //Start Analytics monitor
669
                 monitor.Start();
670
            
671
                 /*Your program here....*/
672
                 
673
                 //Stop Analytics monitor
674
                 monitor.Stop();
675
               }
676
             }
677
             </code>
678
             </example>
679
        </member>
680
        <member name="M:EQATEC.Analytics.Monitor.AnalyticsMonitorFactory.Create(EQATEC.Analytics.Monitor.IAnalyticsMonitorSettings)">
681
             <summary>
682
             Create an <see cref="T:EQATEC.Analytics.Monitor.IAnalyticsMonitor"/> instance using the customized settings in the
683
             <see cref="T:EQATEC.Analytics.Monitor.AnalyticsMonitorSettings"/> instance.
684
             </summary>
685
             <param name="settings">the settings to use for constructing the instance</param>
686
             <returns>an instance of the <see cref="T:EQATEC.Analytics.Monitor.IAnalyticsMonitor"/> interface</returns>
687
             <exception cref="T:System.ArgumentNullException">thrown if the <paramref name="settings"/> is <c>null</c></exception>
688
             <example> This sample shows how to start the Analytics monitor.
689
             <code>
690
             class MyClass 
691
             {
692
               static void Main() 
693
               {
694
                 //Creating AnalyticsMonitorSettings
695
                 AnalyticsMonitorSettings settings = new AnalyticsMonitorSettings("YOUR_PRODUCT_KEY_HERE");
696
                 settings.TestMode = true;
697
             
698
                 //Creating IAnalyticsMonitor
699
                 IAnalyticsMonitor monitor = AnalyticsMonitorFactory.Create(settings);
700
             
701
                 //Start Analytics monitor
702
                 monitor.Start();
703
            
704
                 /*Your program here....*/
705
                 
706
                 //Stop Analytics monitor
707
                 monitor.Stop();
708
               }
709
             }
710
             </code>
711
             </example>
712
        </member>
713
        <member name="M:EQATEC.Analytics.Monitor.AnalyticsMonitorFactory.CreateMonitor(EQATEC.Analytics.Monitor.IAnalyticsMonitorSettings)">
714
             <summary>
715
             Create an <see cref="T:EQATEC.Analytics.Monitor.IAnalyticsMonitor"/> instance using the customized settings in the
716
             <see cref="T:EQATEC.Analytics.Monitor.AnalyticsMonitorSettings"/> instance.
717
             </summary>
718
             <param name="settings">the settings to use for constructing the instance</param>
719
             <returns>an instance of the <see cref="T:EQATEC.Analytics.Monitor.IAnalyticsMonitor"/> interface</returns>
720
             <exception cref="T:System.ArgumentNullException">thrown if product the <paramref name="settings"/> is <c>null</c></exception>
721
             <example> This sample shows how to start the Analytics monitor.
722
             <code>
723
             class MyClass 
724
             {
725
               static void Main() 
726
               {
727
                 //Creating AnalyticsMonitorSettings
728
                 AnalyticsMonitorSettings settings = new AnalyticsMonitorSettings("YOUR_PRODUCT_KEY_HERE");
729
                 settings.TestMode = true;
730
             
731
                 //Creating IAnalyticsMonitor
732
                 IAnalyticsMonitor monitor = AnalyticsMonitorFactory.CreateMonitor(settings);
733
             
734
                 //Start Analytics monitor
735
                 monitor.Start();
736
            
737
                 /*Your program here....*/
738
                 
739
                 //Stop Analytics monitor
740
                 monitor.Stop();
741
               }
742
             }
743
             </code>
744
             </example>
745
        </member>
746
        <member name="M:EQATEC.Analytics.Monitor.AnalyticsMonitorFactory.CreateStorage(System.String)">
747
            <summary>
748
            Creates an <see cref="T:EQATEC.Analytics.Monitor.IStorage"/> which stores the data in given folder. This instance can be
749
            used when creating the monitor instance by assigning it to the <see cref="P:EQATEC.Analytics.Monitor.AnalyticsMonitorSettings.StorageInterface"/>
750
            on the <see cref="T:EQATEC.Analytics.Monitor.AnalyticsMonitorSettings"/> instance.
751
            </summary>
752
            <remarks>This call will attempt to create the given folder it it does not already exists. If there are no permissions
753
            or if the folder specifies an invalid folder path the method will raise an exception. </remarks>
754
            <param name="folder">The path to the folder where the monitor should persist data.</param>
755
            <returns>An implementation of the <see cref="T:EQATEC.Analytics.Monitor.IStorage"/> interface for use on the file system.</returns>
756
            <exception cref="T:System.InvalidOperationException">If unable to locate or create the specified folder. See inner exception for details.</exception>
757
        </member>
758
        <member name="M:EQATEC.Analytics.Monitor.AnalyticsMonitorFactory.CreateStorage(System.String,System.String)">
759
            <summary>
760
            Creates an <see cref="T:EQATEC.Analytics.Monitor.IStorage"/> which stores the data in given folder and with the given identifier. This instance can be
761
            used when creating the monitor instance by assigning it to the <see cref="P:EQATEC.Analytics.Monitor.AnalyticsMonitorSettings.StorageInterface"/>
762
            on the <see cref="T:EQATEC.Analytics.Monitor.AnalyticsMonitorSettings"/> instance. Use this overload to handle e.g. terminal services or shared
763
            machines where multiple users share the same machine but you need differentiated monitoring by passing e.g. the
764
            user name as identifier.
765
            </summary>
766
            <remarks>This call will attempt to create the given folder it it does not already exists. If there are no permissions
767
            or if the folder specifies an invalid folder path the method will raise an exception. </remarks>
768
            <param name="folder">The path to the folder where the monitor should persist data.</param>
769
            <param name="identifier">The unique identifier to use for differentiating the storage.</param>
770
            <returns>An implementation of the <see cref="T:EQATEC.Analytics.Monitor.IStorage"/> interface for use on the file system.</returns>
771
            <exception cref="T:System.InvalidOperationException">If unable to locate or create the specified folder. See inner exception for details.</exception>
772
        </member>
773
        <member name="M:EQATEC.Analytics.Monitor.AnalyticsMonitorFactory.CreateStorage(System.IO.IsolatedStorage.IsolatedStorageScope)">
774
            <summary>
775
            Creates an <see cref="T:EQATEC.Analytics.Monitor.IStorage"/> implementation that utilizes the IsolatedStorage
776
            to store files
777
            </summary>
778
            <param name="scope">The specific scope to utilize when determining where to store the data files</param>
779
            <returns>an implementation of the <see cref="T:EQATEC.Analytics.Monitor.IStorage"/> interface that utilizes the IsolatedStorage</returns>
780
        </member>
781
        <member name="M:EQATEC.Analytics.Monitor.AnalyticsMonitorFactory.CreateStorage">
782
            <summary>
783
            Creates an <see cref="T:EQATEC.Analytics.Monitor.IStorage"/> implementation that utilizes the IsolatedStorage
784
            to store files. 
785
            </summary>
786
            <returns>an implementation of the <see cref="T:EQATEC.Analytics.Monitor.IStorage"/> interface that utilizes the IsolatedStorage</returns>
787
        </member>
788
        <member name="M:EQATEC.Analytics.Monitor.AnalyticsMonitorFactory.CreateSettings(System.String)">
789
            <summary>
790
            Create an <see cref="T:EQATEC.Analytics.Monitor.IAnalyticsMonitorSettings"/> instance for customizing the
791
            creation of the <see cref="T:EQATEC.Analytics.Monitor.IAnalyticsMonitor"/>. You can customize this instance
792
            and pass it to the <see cref="M:EQATEC.Analytics.Monitor.AnalyticsMonitorFactory.CreateMonitor(EQATEC.Analytics.Monitor.IAnalyticsMonitorSettings)"/> to obtain
793
            the customized
794
            </summary>
795
            <param name="productId">The product ID</param>
796
            <returns>an <see cref="T:EQATEC.Analytics.Monitor.IAnalyticsMonitorSettings"/> instance</returns>
797
        </member>
798
        <member name="M:EQATEC.Analytics.Monitor.AnalyticsMonitorFactory.CreateTraceMonitor">
799
            <summary>
800
            Creates a simple <see cref="T:EQATEC.Analytics.Monitor.ILogAnalyticsMonitor"/> implementation that logs to the standard <see cref="T:System.Diagnostics.Trace"/>
801
            output. You can assign this instance to the <see cref="P:EQATEC.Analytics.Monitor.AnalyticsMonitorSettings.LoggingInterface"/> property on the
802
            <see cref="T:EQATEC.Analytics.Monitor.AnalyticsMonitorSettings"/> instance to have the internal messages from the monitor written to the Trace output.
803
            </summary>
804
            <returns>An implementation of the <see cref="T:EQATEC.Analytics.Monitor.ILogAnalyticsMonitor"/> that log messages to <see cref="T:System.Diagnostics.Trace"/></returns>
805
        </member>
806
        <member name="T:EQATEC.Analytics.Monitor.AnalyticsMonitorStatus">
807
            <summary>
808
            Class encapsulating the current status of an <see cref="T:EQATEC.Analytics.Monitor.IAnalyticsMonitor"/> instance. 
809
            <remarks>Note that most of these status properties only makes sense if the monitor has been started</remarks>
810
            </summary>
811
        </member>
812
        <member name="P:EQATEC.Analytics.Monitor.AnalyticsMonitorStatus.Capabilities">
813
            <summary>
814
            Get the capabilities of the current analytics monitor. The <see cref="T:EQATEC.Analytics.Monitor.AnalyticsMonitorCapabilities"/> instance
815
            will allow callers to adjust certain call parameters to not violate the limitations
816
            of the current monitor.
817
            </summary>
818
            <seealso cref="T:EQATEC.Analytics.Monitor.AnalyticsMonitorCapabilities"/>
819
        </member>
820
        <member name="P:EQATEC.Analytics.Monitor.AnalyticsMonitorStatus.IsStarted">
821
            <summary>
822
            Get whether the monitor is currently started
823
            </summary>
824
        </member>
825
        <member name="P:EQATEC.Analytics.Monitor.AnalyticsMonitorStatus.RunTime">
826
            <summary>
827
            Get the total runtime for the monitor. Will return <see cref="F:System.TimeSpan.Zero"/> if monitor is not started.
828
            </summary>
829
        </member>
830
        <member name="P:EQATEC.Analytics.Monitor.AnalyticsMonitorStatus.CookieId">
831
            <summary>
832
            Get the current value of the cookie identifier for the monitor.
833
            <remarks>Note that this value may be <c>null</c> if the monitor is not started or if no cookie id has been assigned to this device yet.</remarks>
834
            </summary>
835
        </member>
836
        <member name="P:EQATEC.Analytics.Monitor.AnalyticsMonitorStatus.Connectivity">
837
            <summary>
838
            Get the current connectivity status for the monitor. This value will reflect the current internal
839
            status of the connectivity of the monitor to the server. 
840
            <remarks>Note that this status is not a snapshot of general connectivity to the server but merely 
841
            reflects the state of the last data delivery attempt to the server. Also note that if the monitor
842
            is configured to not synchronize automatically (using the <see cref="P:EQATEC.Analytics.Monitor.AnalyticsMonitorSettings.SynchronizeAutomatically"/> property)
843
            this status is not updated until the monitor has been explicitly forced to synchronize data (using the 
844
            <see cref="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.ForceSync"/> method)</remarks>
845
            </summary>
846
        </member>
847
        <member name="T:EQATEC.Analytics.Monitor.ILogAnalyticsMonitor">
848
            <summary>
849
            Interface used for outputting log messages internally from
850
            a constructed <see cref="T:EQATEC.Analytics.Monitor.IAnalyticsMonitor"/> instance. The logging interface can be
851
            specified on the <see cref="T:EQATEC.Analytics.Monitor.IAnalyticsMonitorSettings"/> object which passed into the
852
            <see cref="M:EQATEC.Analytics.Monitor.AnalyticsMonitorFactory.Create(EQATEC.Analytics.Monitor.IAnalyticsMonitorSettings)"/> call
853
            </summary>
854
            <example>The following is an example of creating your custom logging implementation
855
            and hooking it up:
856
            <code>
857
            public class MyConsoleLog : ILogAnalyticsMonitor
858
            {
859
              public void LogMessage(string message)
860
              { 
861
                 System.Console.WriteLine("MESSAGE: " + message);
862
              }
863
              
864
              public void LogError(string error)
865
              {
866
                 System.Console.WriteLine("ERROR: " + error);
867
              }
868
            }
869
            
870
            ...
871
            
872
            AnalyticsMonitorSettings setttings = new AnalyticsMonitorSettings("PRODUCT_KEY_HERE");
873
            settings.LoggingInterface = new MyConsoleLog();
874
            IAnalyticsMonitor monitor = AnalyticsMonitorFactory.Create(settings);
875
            ...
876
            
877
            </code></example>
878
        </member>
879
        <member name="M:EQATEC.Analytics.Monitor.ILogAnalyticsMonitor.LogMessage(System.String)">
880
            <summary>
881
            Logging a message. This is called for informative messages
882
            internally in the analytics monitor. These are not error messages
883
            but messages on specific actions being performed
884
            </summary>
885
            <param name="message">describes the action being performed</param>
886
        </member>
887
        <member name="M:EQATEC.Analytics.Monitor.ILogAnalyticsMonitor.LogError(System.String)">
888
            <summary>
889
            Logging an error message. This is called when an error occurs
890
            internally in the analytics monitor. The errorMessage will contain
891
            a human readable error message describing the error
892
            </summary>
893
            <param name="errorMessage">describes the error message</param>
894
        </member>
895
        <member name="M:EQATEC.Analytics.Monitor.ArgumentChecker.#ctor">
896
            <summary>
897
            Constructor
898
            </summary>
899
        </member>
900
        <member name="M:EQATEC.Analytics.Monitor.ArgumentChecker.#ctor(EQATEC.Analytics.Monitor.IStatisticsMonitor,EQATEC.Analytics.Monitor.LogAnalyticsMonitorImpl,EQATEC.Analytics.Monitor.Policy.MonitorPolicy)">
901
            <summary>
902
            Constructor
903
            </summary>
904
            <param name="statisticsMonitor"></param>
905
            <param name="log">the logging interface</param>
906
            <param name="policy">the internal settings object</param>
907
        </member>
908
        <member name="T:EQATEC.Analytics.Monitor.AnalyticsMonitorCapabilities">
909
            <summary>
910
            Exposing the current capabilities of the analytics monitor instance that may influence
911
            how the data you pass into the <see cref="T:EQATEC.Analytics.Monitor.IAnalyticsMonitor"/> instance are handled. 
912
            </summary>
913
            <remarks>Note that
914
            the capabilities may change at runtime after e.g. interaction with the EQATEC Analytics
915
            servers</remarks>
916
        </member>
917
        <member name="P:EQATEC.Analytics.Monitor.AnalyticsMonitorCapabilities.MaxLengthOfExceptionContextMessage">
918
            <summary>
919
            Get the maximum allowed size of the context message associated with an exception in a call to <see cref="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.TrackException(System.Exception,System.String)"/>.
920
            Longer context messages will be truncated
921
            </summary>
922
        </member>
923
        <member name="P:EQATEC.Analytics.Monitor.AnalyticsMonitorCapabilities.MaxAllowedBandwidthUsagePerDayInKB">
924
            <summary>
925
            Get the maximum allowed bandwidth utilization for the monitor per day measured in kilobytes. This setting can be
926
            altered before constructing the monitor instance by using the <see cref="P:EQATEC.Analytics.Monitor.AnalyticsMonitorSettings.DailyNetworkUtilizationInKB"/>
927
            property
928
            </summary>
929
        </member>
930
        <member name="P:EQATEC.Analytics.Monitor.AnalyticsMonitorCapabilities.MaxLengthOfFeatureName">
931
            <summary>
932
            Get the maximum allowed length of a feature name as used in <see cref="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.TrackFeature(System.String)"/>, <see cref="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.TrackFeatureStart(System.String)"/>,
933
            <see cref="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.TrackFeatureStop(System.String)"/> or <see cref="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.TrackFeatureCancel(System.String)"/>
934
            </summary>
935
        </member>
936
        <member name="P:EQATEC.Analytics.Monitor.AnalyticsMonitorCapabilities.MaxNumberOfInstallationProperties">
937
            <summary>
938
            Get the maximum number of installation properties stored with a given installation id. You can pass in
939
            installation properties using <see cref="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.SetInstallationInfo(System.String,System.Collections.Generic.IDictionary{System.String,System.String})"/>.
940
            </summary>
941
        </member>
942
        <member name="P:EQATEC.Analytics.Monitor.AnalyticsMonitorCapabilities.MaxKeySizeOfInstallationPropertyKey">
943
            <summary>
944
            Get the maximum size of an installation property key. Installation properties are specified using <see cref="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.SetInstallationInfo(System.String,System.Collections.Generic.IDictionary{System.String,System.String})"/>. 
945
            </summary>
946
        </member>
947
        <member name="P:EQATEC.Analytics.Monitor.AnalyticsMonitorCapabilities.MaxStorageSizeInKB">
948
            <summary>
949
            Get the maximum size of the data written to storage from the monitor. This size altered before 
950
            constructing the monitor instance by using the <see cref="P:EQATEC.Analytics.Monitor.AnalyticsMonitorSettings.MaxStorageSizeInKB"/> 
951
            property
952
            </summary>
953
        </member>
954
        <member name="P:EQATEC.Analytics.Monitor.AnalyticsMonitorCapabilities.MaxInstallationIDSize">
955
            <summary>
956
            Get the maximum size of the installationid accepted in <see cref="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.SetInstallationInfo(System.String,System.Collections.Generic.IDictionary{System.String,System.String})"/>. Values
957
            that are too long are truncated
958
            </summary>
959
        </member>
960
        <member name="T:EQATEC.Analytics.Monitor.IAnalyticsMonitorSettings">
961
            <summary>
962
            Interface for the settings used for constructing the <see cref="T:EQATEC.Analytics.Monitor.IAnalyticsMonitor"/> instance. Instances
963
            are preloaded with default settings which can be adjusted before instance is being passed to 
964
            the <see cref="M:EQATEC.Analytics.Monitor.AnalyticsMonitorFactory.Create(EQATEC.Analytics.Monitor.IAnalyticsMonitorSettings)"/> method  
965
            </summary>
966
        </member>
967
        <member name="P:EQATEC.Analytics.Monitor.IAnalyticsMonitorSettings.ProductId">
968
            <summary>
969
            Get the product id that will be used for creation of the <see cref="T:EQATEC.Analytics.Monitor.IAnalyticsMonitor"/> instance
970
            </summary>
971
        </member>
972
        <member name="P:EQATEC.Analytics.Monitor.IAnalyticsMonitorSettings.Version">
973
            <summary>
974
            Specifies the version of the software, that should be used for version checking.
975
            The default value is implicitly retreived of the current application
976
            by accessing the calling assembly.
977
            </summary>
978
        </member>
979
        <member name="P:EQATEC.Analytics.Monitor.IAnalyticsMonitorSettings.LoggingInterface">
980
             <summary>
981
             The logging interface used for exposing internal messages
982
             </summary>
983
             <remarks>You can provide your own implementation of the <see cref="T:EQATEC.Analytics.Monitor.ILogAnalyticsMonitor"/> interface in 
984
             order to receive the internal logging messages from constructed monitors</remarks>
985
             <example> This sample shows how to use the logging interface.
986
             <code>
987
             class MyClass 
988
             {
989
               static void Main() 
990
               {
991
                 //Creating AnalyticsMonitorSettings
992
                 AnalyticsMonitorSettings settings = new AnalyticsMonitorSettings("YOUR_PRODUCT_KEY_HERE");
993
                 settings.LoggingInterface = new MyLogClass();
994
             
995
                 //Creating IAnalyticsMonitor
996
                 IAnalyticsMonitor monitor = AnalyticsMonitorFactory.Create(settings);
997
             
998
                 //Start Analytics monitor
999
                 monitor.Start();
1000
            
1001
                 /*Your program here....*/
1002
                 
1003
                 //Stop Analytics monitor
1004
                 monitor.Stop();
1005
               }
1006
             }
1007
             class MyLogClass : ILogAnalyticsMonitor
1008
             {
1009
               public void LogMessage(string message)
1010
               {
1011
                 Console.WriteLine("Log: " + message);
1012
               }
1013
             
1014
               public void LogError(string errorMessage)
1015
               {
1016
                 Console.WriteLine("Error: " + errorMessage);
1017
               }
1018
             }
1019
             </code>
1020
             </example>
1021
        </member>
1022
        <member name="P:EQATEC.Analytics.Monitor.IAnalyticsMonitorSettings.StorageInterface">
1023
            <summary>
1024
            The storage interface used internally in the analytics monitor
1025
            for saving and loading state. 
1026
            </summary>
1027
            <remarks>Consider providing your own implementation of the <see cref="T:EQATEC.Analytics.Monitor.IStorage"/> interface if
1028
            your application requires special handling when storing data.</remarks>
1029
        </member>
1030
        <member name="P:EQATEC.Analytics.Monitor.IAnalyticsMonitorSettings.StorageSaveInterval">
1031
            <summary>
1032
            The interval with which we autosave the internal statistics. The default
1033
            is one minute. If set to TimeSpan.Zero, no AutoSave is performed
1034
            </summary>
1035
        </member>
1036
        <member name="P:EQATEC.Analytics.Monitor.IAnalyticsMonitorSettings.ServerUri">
1037
            <summary>
1038
            Override the default uri for the server. For most standard purposes there is no
1039
            need to provide your own uri for the server as the monitor provides a default uri
1040
            which will contact the server correctly
1041
            </summary>
1042
            <remarks>You may require to specify this server uri if the network setup for your
1043
            end users are non-standard. Also be aware that the <see cref="P:EQATEC.Analytics.Monitor.IAnalyticsMonitorSettings.UseSSL"/> property is
1044
            is ignored when explicitly specifying the server uri.</remarks>
1045
        </member>
1046
        <member name="P:EQATEC.Analytics.Monitor.IAnalyticsMonitorSettings.TestMode">
1047
            <summary>
1048
             Use this flag to enable the test mode for this installation.
1049
             This might for example allow you to test version announcements
1050
             before relasing it to customers.
1051
            </summary>
1052
             <remarks>The precise behavior for the <see cref="P:EQATEC.Analytics.Monitor.IAnalyticsMonitorSettings.TestMode"/> property may change over time but
1053
             is provided to explicitly enable certain test scenarios for developers</remarks>
1054
        </member>
1055
        <member name="P:EQATEC.Analytics.Monitor.IAnalyticsMonitorSettings.SynchronizeAutomatically">
1056
            <summary>
1057
             Use this flag to specify is the monitor automatically should synchronize data 
1058
             to the server or it should only synchronize manually on explicit calls to <see cref="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.ForceSync"/>.
1059
             The default value is <see langwork="true"/> as the he monitor will automatically synchronize data to the 
1060
             server without the clients have to call <see cref="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.ForceSync"/>.
1061
            </summary>
1062
        </member>
1063
        <member name="P:EQATEC.Analytics.Monitor.IAnalyticsMonitorSettings.DailyNetworkUtilizationInKB">
1064
            <summary>
1065
            Explicitly set a limit on the daily network utilization of the monitor. The utilization
1066
            is accumulated based on the size of the payload for both upstream and downstream data and 
1067
            is enforce on a daily basis. 
1068
            </summary>
1069
            <remarks>The monitor will not honor a limit lower than 10 kb since the 
1070
            monitor must be able to contact the server with at least a mimimum of payload. If you do not want the monitor to contact the 
1071
            server you should not call <see cref="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.Start"/> on the monitor instance.</remarks>
1072
        </member>
1073
        <member name="P:EQATEC.Analytics.Monitor.IAnalyticsMonitorSettings.MaxStorageSizeInKB">
1074
            <summary>
1075
            Explicitly set a size limit on the data save to persistent storage by the monitor. The size
1076
            is calculated each time the monitor persists to storage and if the size limit is exceeded it
1077
            will attempt to persist less data. 
1078
            </summary>
1079
            <remarks>The monitor will not honor a limit lower than 1 kb since the monitor requires to
1080
            store at least a minimal amount of metadata</remarks>
1081
        </member>
1082
        <member name="P:EQATEC.Analytics.Monitor.IAnalyticsMonitorSettings.UseSSL">
1083
            <summary>
1084
            Uses https traffic against the servers unless the <see cref="P:EQATEC.Analytics.Monitor.IAnalyticsMonitorSettings.ServerUri"/> has been explicitly
1085
            specified to non-https. By default this property is <see langword="false"/>
1086
            </summary>
1087
            <remarks>If the <see cref="P:EQATEC.Analytics.Monitor.IAnalyticsMonitorSettings.ServerUri"/> property has has been specified explicitly this property
1088
            is ignored. The validation of the certificate from the servers are handled by the underlying
1089
            operating system. For some platforms (such as Windows Mobile 5) this may present a problem since
1090
            they have limited support for wild-card certificates.</remarks>
1091
        </member>
1092
        <member name="P:EQATEC.Analytics.Monitor.IAnalyticsMonitorSettings.ProxyConfig">
1093
            <summary>
1094
            Use this property to explicitly specify the proxy settings for connecting to the server. By default
1095
            there is no proxy configuration and it is picked up from the underlying operating system.
1096
            </summary>
1097
            <remarks>The proxy configuration can be specified in application.config file if prefered.</remarks>
1098
        </member>
1099
        <member name="P:EQATEC.Analytics.Monitor.IAnalyticsMonitorSettings.Location">
1100
            <summary>
1101
            The location of the monitor as GPS coordinates. Use this property if you have access to GPS 
1102
            coordinates for the location of the application. If provided, these coordinates
1103
            will be delivered to the servers as part of the data payload.
1104
            </summary>
1105
        </member>
1106
        <member name="T:EQATEC.Analytics.Monitor.LicenseInfo">
1107
            <summary>
1108
            Representing license information, namely a named license identifier and
1109
            an optional license type adding additional information on the license
1110
            </summary>
1111
        </member>
1112
        <member name="M:EQATEC.Analytics.Monitor.LicenseInfo.#ctor(System.String)">
1113
            <summary>
1114
            Creates a <see cref="T:EQATEC.Analytics.Monitor.LicenseInfo"/> from a license identifier
1115
            </summary>
1116
            <param name="licenseIdentifier">the license identifier describing the license uniquely</param>
1117
        </member>
1118
        <member name="M:EQATEC.Analytics.Monitor.LicenseInfo.#ctor(System.String,System.String)">
1119
            <summary>
1120
            Creates a <see cref="T:EQATEC.Analytics.Monitor.LicenseInfo"/> from a license identifier and a license type
1121
            </summary>
1122
            <param name="licenseIdentifier">the license identifier describing the license uniquely</param>
1123
            <param name="licenseType">adding additional information on the license</param>
1124
        </member>
1125
        <member name="P:EQATEC.Analytics.Monitor.LicenseInfo.LicenseIdentifier">
1126
            <summary>
1127
            The license identifier
1128
            </summary>
1129
        </member>
1130
        <member name="P:EQATEC.Analytics.Monitor.LicenseInfo.LicenseType">
1131
            <summary>
1132
            The optional license type
1133
            </summary>
1134
        </member>
1135
        <member name="T:EQATEC.Analytics.Monitor.LocationCoordinates">
1136
            <summary>
1137
            Class encapsulating Latitude and Longitude coordinates for the location. 
1138
            </summary>
1139
        </member>
1140
        <member name="M:EQATEC.Analytics.Monitor.LocationCoordinates.ToString">
1141
            <summary>
1142
            String representation of the Location Coordinates
1143
            </summary>
1144
            <returns></returns>
1145
        </member>
1146
        <member name="P:EQATEC.Analytics.Monitor.LocationCoordinates.Latitude">
1147
            <summary>
1148
            The latitude coordinate
1149
            </summary>
1150
        </member>
1151
        <member name="P:EQATEC.Analytics.Monitor.LocationCoordinates.Longitude">
1152
            <summary>
1153
            The longitude coordinate
1154
            </summary>
1155
        </member>
1156
        <member name="T:EQATEC.Analytics.Monitor.OSInfo">
1157
            <summary>
1158
            Class accessing the Operating System information on Windows
1159
            </summary>
1160
            <summary>
1161
            Class accessing the Operating System information
1162
            </summary>
1163
        </member>
1164
        <member name="M:EQATEC.Analytics.Monitor.OSInfo.GetOSInfo(EQATEC.Analytics.Monitor.ILogAnalyticsMonitor)">
1165
            <summary>
1166
            Constructor, will collect the OS information
1167
            </summary>
1168
            <param name="log"></param>
1169
            <returns></returns>
1170
        </member>
1171
        <member name="T:EQATEC.Analytics.Monitor.ConnectivityStatus">
1172
            <summary>
1173
            Enum for the currently known state of connectivity with the server
1174
            </summary>
1175
        </member>
1176
        <member name="F:EQATEC.Analytics.Monitor.ConnectivityStatus.Unknown">
1177
            <summary>
1178
            No attempts have been made to contact the server so the connectivity
1179
            status is unknown at the moment
1180
            </summary>
1181
        </member>
1182
        <member name="F:EQATEC.Analytics.Monitor.ConnectivityStatus.Connected">
1183
            <summary>
1184
            The last attempt at delivering data to the server was succesful
1185
            </summary>
1186
        </member>
1187
        <member name="F:EQATEC.Analytics.Monitor.ConnectivityStatus.Disconnected">
1188
            <summary>
1189
            The last attempt at delivering data to the server was not successful
1190
            </summary>
1191
        </member>
1192
        <member name="T:EQATEC.Analytics.Monitor.StatisticsContainer">
1193
            <summary>
1194
            Class encapsulating the statistics state and the persistance of the state, including
1195
            the auto save
1196
            </summary>
1197
        </member>
1198
        <member name="T:EQATEC.Analytics.Monitor.IStatisticsMonitor">
1199
            <summary>
1200
            Internal statistics frontend for collecting the
1201
            statistics information
1202
            </summary>
1203
        </member>
1204
        <member name="M:EQATEC.Analytics.Monitor.StatisticsContainer.#ctor(EQATEC.Analytics.Monitor.Storage.IStorageFactory,EQATEC.Analytics.Monitor.ILogAnalyticsMonitor,EQATEC.Analytics.Monitor.Policy.MonitorPolicy)">
1205
            <summary>
1206
            Constructor
1207
            </summary>
1208
            <param name="policy"></param>
1209
            <param name="storageFactory"></param>
1210
            <param name="log">the logging interface</param>
1211
        </member>
1212
        <member name="M:EQATEC.Analytics.Monitor.StatisticsContainer.StartSession">
1213
            <summary>
1214
            Starting a new session
1215
            </summary>
1216
            <returns>the statistics loaded for this sessions</returns>
1217
        </member>
1218
        <member name="M:EQATEC.Analytics.Monitor.StatisticsContainer.EndSession">
1219
            <summary>
1220
            Ending a session
1221
            </summary>
1222
        </member>
1223
        <member name="T:EQATEC.Analytics.Monitor.InstallationSettings">
1224
            <summary>
1225
            Internal stttings
1226
            </summary>
1227
        </member>
1228
        <member name="P:EQATEC.Analytics.Monitor.InstallationSettings.InstallationId">
1229
            <summary>
1230
            Installation id
1231
            </summary>
1232
        </member>
1233
        <member name="P:EQATEC.Analytics.Monitor.InstallationSettings.InstallationProperties">
1234
            <summary>
1235
            Installation Properties
1236
            </summary>
1237
        </member>
1238
        <member name="T:EQATEC.Analytics.Monitor.Model.ExceptionEntry">
1239
            <summary>
1240
            Holding an exception entry
1241
            </summary>
1242
        </member>
1243
        <member name="M:EQATEC.Analytics.Monitor.Model.ExceptionEntry.#ctor(System.TimeSpan,System.String,System.String,System.String,System.String,EQATEC.Analytics.Monitor.Model.ExceptionEntry,System.Boolean)">
1244
            <summary>
1245
            Verbose constructor
1246
            </summary>
1247
            <param name="time"></param>
1248
            <param name="extraInfo"></param>
1249
            <param name="type"></param>
1250
            <param name="message"></param>
1251
            <param name="stackTrace"></param>
1252
            <param name="innerException"></param>
1253
            <param name="isCustomStacktrace"></param>
1254
        </member>
1255
        <member name="P:EQATEC.Analytics.Monitor.Model.ExceptionEntry.Time">
1256
            <summary>
1257
            The uptime when the exception occured
1258
            </summary>
1259
        </member>
1260
        <member name="P:EQATEC.Analytics.Monitor.Model.ExceptionEntry.ExtraInfo">
1261
            <summary>
1262
            Additional context information with this exception
1263
            </summary>
1264
        </member>
1265
        <member name="P:EQATEC.Analytics.Monitor.Model.ExceptionEntry.Type">
1266
            <summary>
1267
            The exception type
1268
            </summary>
1269
        </member>
1270
        <member name="P:EQATEC.Analytics.Monitor.Model.ExceptionEntry.Message">
1271
            <summary>
1272
            The exception message
1273
            </summary>
1274
        </member>
1275
        <member name="P:EQATEC.Analytics.Monitor.Model.ExceptionEntry.StackTrace">
1276
            <summary>
1277
            The stacktrace, taken from the exception object
1278
            </summary>
1279
        </member>
1280
        <member name="P:EQATEC.Analytics.Monitor.Model.ExceptionEntry.InnerException">
1281
            <summary>
1282
            The inner exception object
1283
            </summary>
1284
        </member>
1285
        <member name="T:EQATEC.Analytics.Monitor.Model.ModelXmlSerializer">
1286
            <summary>
1287
            Serializer for the Statistics data, serialization to custom Xml format
1288
            </summary>
1289
        </member>
1290
        <member name="M:EQATEC.Analytics.Monitor.Model.ModelXmlSerializer.Serialize(System.Xml.XmlWriter,EQATEC.Analytics.Monitor.Model.Statistics,System.DateTime,System.TimeSpan,EQATEC.Analytics.Monitor.Model.SerializationTarget,EQATEC.Analytics.Monitor.Policy.MonitorPolicy,EQATEC.Analytics.Monitor.Storage.StorageLevel)">
1291
            <summary>
1292
            Serialization into an XmlWriter
1293
            </summary>
1294
            <param name="xtw"></param>
1295
            <param name="statistics"></param>
1296
            <param name="time"></param>
1297
            <param name="uptime"></param>
1298
            <param name="target"></param>
1299
            <param name="policy"></param>
1300
            <param name="storageLevel"></param>
1301
        </member>
1302
        <member name="M:EQATEC.Analytics.Monitor.Model.ModelXmlSerializer.Deserialize(System.Xml.XmlReader,System.DateTime,System.TimeSpan)">
1303
            <summary>
1304
            Deserialization from an XmlReader
1305
            </summary>
1306
            <param name="xr"></param>
1307
            <param name="time"></param>
1308
            <param name="uptime"></param>
1309
            <returns></returns>
1310
        </member>
1311
        <member name="T:EQATEC.Analytics.Monitor.Model.Session">
1312
            <summary>
1313
            Encapsulation of a session. Root object for the all information
1314
            happening as part of a 'usage'
1315
            </summary>
1316
        </member>
1317
        <member name="M:EQATEC.Analytics.Monitor.Model.Session.CreateSnapshotCopy">
1318
            <summary>
1319
            Create a current snapshot of the session information
1320
            </summary>
1321
            <returns></returns>
1322
        </member>
1323
        <member name="M:EQATEC.Analytics.Monitor.Model.Session.SubtractSnapshotCopy(EQATEC.Analytics.Monitor.Model.Session)">
1324
            <summary>
1325
            Applying snapshots, hooking up session information from
1326
            a storage to the current instance
1327
            </summary>
1328
            <param name="session"></param>
1329
        </member>
1330
        <member name="M:EQATEC.Analytics.Monitor.Policy.PolicyXmlSerializer.Serialize(System.Xml.XmlWriter,EQATEC.Analytics.Monitor.Policy.MonitorPolicy,System.DateTime,System.TimeSpan)">
1331
            <summary>
1332
            Serialization into an XmlWriter
1333
            </summary>
1334
            <param name="xtw"></param>
1335
            <param name="time"></param>
1336
            <param name="uptime"></param>
1337
            <param name="policy"></param>
1338
        </member>
1339
        <member name="M:EQATEC.Analytics.Monitor.Policy.SettingsValue`1.SetExplictValue(`0)">
1340
            <summary>
1341
            Set the value explicitly set through the API
1342
            </summary>
1343
            <param name="explicitValue"></param>
1344
        </member>
1345
        <member name="M:EQATEC.Analytics.Monitor.Policy.SettingsValue`1.SetValue(`0)">
1346
            <summary>
1347
            Setting the value, will override any explicit value 
1348
            set by the API
1349
            </summary>
1350
            <param name="value"></param>
1351
        </member>
1352
        <member name="M:EQATEC.Analytics.Monitor.Policy.SettingsValue`1.Reset">
1353
            <summary>
1354
            Reset the value, either to a default or to the explicit value
1355
            </summary>
1356
        </member>
1357
        <member name="P:EQATEC.Analytics.Monitor.Policy.SettingsValue`1.Default">
1358
            <summary>
1359
            The default value, if not overriden
1360
            </summary>
1361
        </member>
1362
        <member name="P:EQATEC.Analytics.Monitor.Policy.SettingsValue`1.Value">
1363
            <summary>
1364
            The actual current value
1365
            </summary>
1366
        </member>
1367
        <member name="P:EQATEC.Analytics.Monitor.Policy.SettingsValue`1.ExplicitValue">
1368
            <summary>
1369
            Value set by the programmer/API, may have been overriden 
1370
            </summary>
1371
        </member>
1372
        <member name="P:EQATEC.Analytics.Monitor.Policy.SettingsValue`1.IsExplicit">
1373
            <summary>
1374
            Returns whether the current value is explicit
1375
            </summary>
1376
        </member>
1377
        <member name="T:EQATEC.Analytics.Monitor.ProxyConfiguration">
1378
            <summary>
1379
            Container for proxy configuration. Apply the proxy configuration on the <see cref="T:EQATEC.Analytics.Monitor.AnalyticsMonitorSettings"/>
1380
            object passed into the <see cref="M:EQATEC.Analytics.Monitor.AnalyticsMonitorFactory.Create(EQATEC.Analytics.Monitor.IAnalyticsMonitorSettings)"/> call in order to
1381
            have the monitor use specific proxy settings
1382
            <remarks>For some proxy authentication scenarios you may need to explicitly configure that the
1383
            Expect:100-Continue header is not appended to the server request. This can typically be done by 
1384
            explicitly setting the System.Net.ServicePoint.Expect100Continue property to <see langword="false"/> 
1385
            in your application.</remarks>
1386
            </summary>
1387
        </member>
1388
        <member name="P:EQATEC.Analytics.Monitor.ProxyConfiguration.ProxyConnectionString">
1389
            <summary>
1390
            Specify a connection string for the proxy  e.g. "MyProxyServer:8080".
1391
            </summary>
1392
            <remarks>Default proxy functionality (taken from the underlying OS) is applied if <see cref="P:EQATEC.Analytics.Monitor.ProxyConfiguration.ProxyConnectionString"/>
1393
            is <c>null</c> or empty</remarks>
1394
        </member>
1395
        <member name="P:EQATEC.Analytics.Monitor.ProxyConfiguration.ProxyUserName">
1396
            <summary>
1397
            Specify the user name used in the proxy connection.
1398
            The system will connect without username/password if <see cref="P:EQATEC.Analytics.Monitor.ProxyConfiguration.ProxyUserName"/> is <c>null</c> or empty.
1399
            </summary>
1400
        </member>
1401
        <member name="P:EQATEC.Analytics.Monitor.ProxyConfiguration.ProxyPassword">
1402
            <summary>
1403
            Specify the password used in the proxy connection.
1404
            The system will connect without username/password if <see cref="P:EQATEC.Analytics.Monitor.ProxyConfiguration.ProxyPassword"/> is <c>null</c> or empty.
1405
            </summary>
1406
        </member>
1407
        <member name="T:EQATEC.Analytics.Monitor.Storage.FileStorage">
1408
            <summary>
1409
            The default implementation for the <see cref="T:EQATEC.Analytics.Monitor.IStorage"/> interface for saving data on the
1410
            file system.
1411
            </summary>
1412
            <remarks>The default implementation is designed to handle the standard cases for writing</remarks>
1413
        </member>
1414
        <member name="T:EQATEC.Analytics.Monitor.IStorage">
1415
            <summary>
1416
            A storage interface for loading and save the different types of data for a given product ID. This inteface can be
1417
            implemented and specified on the <see cref="T:EQATEC.Analytics.Monitor.AnalyticsMonitorSettings"/> instance in order to better
1418
            control where the monitor persists data.
1419
            </summary>
1420
            <remarks>
1421
            Creating and utilizing a custom implementation of this interface may be relevant if you require
1422
            special handling of where the monitor saves data. This could be relevant for e.g. embedded devices
1423
            or for situation where there is a need to explicitly know where the data is being stored
1424
            </remarks>
1425
        </member>
1426
        <member name="M:EQATEC.Analytics.Monitor.IStorage.Save(EQATEC.Analytics.Monitor.StorageDataDescriptor,System.Byte[])">
1427
            <summary>
1428
            Save data for a given product ID and type
1429
            </summary>
1430
            <param name="descriptor">the storage descriptor ID</param>
1431
            <param name="data">the data to save</param>
1432
        </member>
1433
        <member name="M:EQATEC.Analytics.Monitor.IStorage.Load(EQATEC.Analytics.Monitor.StorageDataDescriptor)">
1434
            <summary>
1435
            Load existing data for product ID and type. If no data is available, implementors should
1436
            return <c>null</c> or an empty array
1437
            </summary>
1438
            <param name="descriptor">the storage descriptor</param>
1439
            <returns>any previously persisted data or <c>null</c> if no data available</returns>
1440
        </member>
1441
        <member name="M:EQATEC.Analytics.Monitor.IStorage.ReadAbandonedSessionData(System.String)">
1442
            <summary>
1443
            Returns any abandoned session data that can be found for a given product.
1444
            </summary>
1445
            <param name="productId">the product ID</param>
1446
            <returns>the data for any abandoned session data on a given product. Return <c>null</c> if no data can be found</returns>
1447
            <remarks>This method is called periodically by the monitor to retreive old data that has
1448
            been abandoned from previous sessions from the same product. Return <c>null</c> if no data can be found. Abandoned data
1449
            is consumed by the currently running monitor and delivered to the server.
1450
            </remarks>
1451
        </member>
1452
        <member name="M:EQATEC.Analytics.Monitor.Storage.FileStorage.#ctor(System.String)">
1453
            <summary>
1454
            Creates a new filestorage that stores data in the specified folder
1455
            </summary>
1456
            <param name="rootPath">the path to the root folder where data should be stored</param>
1457
            <remarks>Make sure that the application has permissions to access the folder. If the folder does not
1458
            exist the monitor will attempt to create the folder when started. Not available on Silverlight or Windows Phone.</remarks>
1459
        </member>
1460
        <member name="M:EQATEC.Analytics.Monitor.Storage.FileStorage.#ctor(System.String,System.String)">
1461
            <summary>
1462
            Creates a new filestorage that stores data in the specified folder and isolates the data using the unique user identification
1463
            provided. Isolating users can be useful in e.g. multi-user environments such as terminal systems where the
1464
            users are executing application in the same environment but should their data should be separated.
1465
            </summary>
1466
            <param name="rootPath">the path to the root folder where data should be stored</param>
1467
            <param name="uniqueUserId">identification used </param>
1468
            <remarks>Make sure that the application has permissions to access the folder. If the folder does not
1469
            exist the monitor will attempt to create the folder when started. Not available on Silverlight or Windows Phone.</remarks>
1470
        </member>
1471
        <member name="M:EQATEC.Analytics.Monitor.Storage.FileStorage.#ctor(System.IO.IsolatedStorage.IsolatedStorageScope)">
1472
            <summary>
1473
            Creates a new filestorage that stores data in isolates storage
1474
            </summary>
1475
            <remarks>Not available on Compact Framework</remarks>
1476
        </member>
1477
        <member name="M:EQATEC.Analytics.Monitor.Storage.FileStorage.GetLegacyFileName(EQATEC.Analytics.Monitor.StorageDataDescriptor)">
1478
            <summary>
1479
            Gets the name of the legacy data file as it was previously named before version 3 of the
1480
            monitor library. Override this method to supply your own name of the file for supporting
1481
            backwards compatibility
1482
            </summary>
1483
            <param name="descriptor">The descriptor for data that your where looking for</param>
1484
            <returns>The name of the legacy data file using for version 2, if any</returns>
1485
        </member>
1486
        <member name="M:EQATEC.Analytics.Monitor.Storage.FileStorage.Save(EQATEC.Analytics.Monitor.StorageDataDescriptor,System.Byte[])">
1487
            <summary>
1488
            Saves the data to a file specific for the product ID
1489
            </summary>
1490
            <param name="descriptor">the descriptor for the storage data</param>
1491
            <param name="data">the raw data</param>
1492
        </member>
1493
        <member name="M:EQATEC.Analytics.Monitor.Storage.FileStorage.Load(EQATEC.Analytics.Monitor.StorageDataDescriptor)">
1494
            <summary>
1495
            Loads the data associated with the product ID and type. If no data can be located, returns <c>null</c>
1496
            </summary>
1497
            <param name="descriptor">the descriptor for the product ID and type to be loaded</param>
1498
            <returns>the data for the prouct ID and type or <c>null</c> if no data can be found</returns>
1499
        </member>
1500
        <member name="M:EQATEC.Analytics.Monitor.Storage.FileStorage.ReadAbandonedSessionData(System.String)">
1501
            <summary>
1502
            Returns abandoned session data for this product id
1503
            </summary>
1504
            <param name="productId">the product id</param>
1505
            <returns>the first encountered data with has been left behind by previous sessions or <c>null</c> if no data found</returns>
1506
        </member>
1507
        <member name="M:EQATEC.Analytics.Monitor.Storage.FileStorage.Dispose">
1508
            <summary>
1509
            Disposes the file storage
1510
            </summary>
1511
        </member>
1512
        <member name="T:EQATEC.Analytics.Monitor.Messaging.IMessageFactory">
1513
            <summary>
1514
            Interface for building messages to send
1515
            </summary>
1516
        </member>
1517
        <member name="M:EQATEC.Analytics.Monitor.Messaging.IMessageFactory.BuildStatisticsMessage(EQATEC.Analytics.Monitor.Messaging.MessageContext)">
1518
            <summary>
1519
            Build the statistics message given a cookie, a statistics instance and
1520
            a boolean indicating whether this is a message from a new day
1521
            </summary>
1522
            <param name="messageContext"></param>
1523
            <returns></returns>
1524
        </member>
1525
        <member name="P:EQATEC.Analytics.Monitor.Messaging.IMessageFactory.MessageFactoryVersion">
1526
            <summary>
1527
            Get version of the message factory
1528
            </summary>
1529
        </member>
1530
        <member name="T:EQATEC.Analytics.Monitor.Messaging.MessageContext">
1531
            <summary>
1532
            Struct representing the information needed to construct a message
1533
            </summary>
1534
        </member>
1535
        <member name="T:EQATEC.Analytics.Monitor.Messaging.IMessageReceiver">
1536
            <summary>
1537
            Interface for handling reception of messages
1538
            </summary>
1539
        </member>
1540
        <member name="M:EQATEC.Analytics.Monitor.Messaging.IMessageReceiver.ParseResponse(EQATEC.Analytics.Monitor.Messaging.MessageResponse)">
1541
            <summary>
1542
            Receive an incoming message payload and return any message relating
1543
            to the processing of the payload. An empty return string indicates no issues
1544
            with the response processing
1545
            </summary>
1546
            <param name="serverResponse"></param>
1547
            <returns></returns>
1548
        </member>
1549
        <member name="T:EQATEC.Analytics.Monitor.Messaging.IMessageSender">
1550
            <summary>
1551
            Interface for sending message payload
1552
            </summary>
1553
        </member>
1554
        <member name="M:EQATEC.Analytics.Monitor.Messaging.IMessageSender.SendMessage(System.Uri,EQATEC.Analytics.Monitor.Messaging.MessagePayload,System.Action{EQATEC.Analytics.Monitor.Messaging.MessageResponse})">
1555
            <summary>
1556
            Send the message payload async and callback with the received response message on 
1557
            the callback action
1558
            </summary>
1559
            <param name="baseUri"></param>
1560
            <param name="payload"></param>
1561
            <param name="messageResponseCallback"></param>
1562
        </member>
1563
        <member name="T:EQATEC.Analytics.Monitor.Messaging.IMessagingSubSystem">
1564
            <summary>
1565
            Internal interface for handling all messaging aspects
1566
            </summary>
1567
        </member>
1568
        <member name="M:EQATEC.Analytics.Monitor.Messaging.IMessagingSubSystem.SendMessage(EQATEC.Analytics.Monitor.Messaging.MessagePayload,System.Action{EQATEC.Analytics.Monitor.Messaging.SendMessageResult})">
1569
            <summary>
1570
            Send a payload and receive the response message on the callback
1571
            </summary>
1572
            <param name="payload"></param>
1573
            <param name="sendingResultCallback"></param>
1574
        </member>
1575
        <member name="T:EQATEC.Analytics.Monitor.StorageDataDescriptor">
1576
            <summary>
1577
            Provides a definition of storage data
1578
            </summary>
1579
        </member>
1580
        <member name="M:EQATEC.Analytics.Monitor.StorageDataDescriptor.#ctor(System.String,EQATEC.Analytics.Monitor.StorageDataType)">
1581
            <summary>
1582
            Creates a storage description from a productid, name and a type
1583
            </summary>
1584
            <param name="productId">the product id</param>
1585
            <param name="type">the storage type</param>
1586
        </member>
1587
        <member name="M:EQATEC.Analytics.Monitor.StorageDataDescriptor.ToString">
1588
            <summary>
1589
            Providing a custom string representation
1590
            </summary>
1591
            <returns>string representation</returns>
1592
        </member>
1593
        <member name="P:EQATEC.Analytics.Monitor.StorageDataDescriptor.ProductId">
1594
            <summary>
1595
            The Product id of this data
1596
            </summary>
1597
        </member>
1598
        <member name="P:EQATEC.Analytics.Monitor.StorageDataDescriptor.DataType">
1599
            <summary>
1600
            The type of data that is stored
1601
            </summary>
1602
        </member>
1603
        <member name="T:EQATEC.Analytics.Monitor.StorageDataType">
1604
            <summary>
1605
            Defines the storage types
1606
            </summary>
1607
        </member>
1608
        <member name="F:EQATEC.Analytics.Monitor.StorageDataType.Policy">
1609
            <summary>
1610
            Internal policy data
1611
            </summary>
1612
        </member>
1613
        <member name="F:EQATEC.Analytics.Monitor.StorageDataType.Statistics">
1614
            <summary>
1615
            Statistical data
1616
            </summary>
1617
        </member>
1618
        <member name="F:EQATEC.Analytics.Monitor.StorageDataType.SessionData">
1619
            <summary>
1620
            Session data
1621
            </summary>
1622
        </member>
1623
        <member name="T:EQATEC.Analytics.Monitor.Storage.IStorageFactory">
1624
            <summary>
1625
            Interface encapsulating access to stored statistics and access
1626
            data
1627
            </summary>
1628
        </member>
1629
        <member name="T:EQATEC.Analytics.Monitor.Messaging.MessageFactory">
1630
            <summary>
1631
            Message factory for coinstructing message payloads
1632
            </summary>
1633
        </member>
1634
        <member name="M:EQATEC.Analytics.Monitor.Messaging.MessageFactory.BuildStatisticsMessage(EQATEC.Analytics.Monitor.Messaging.MessageContext)">
1635
            <summary>
1636
            Create message for sending the current statistics to the server
1637
            </summary>
1638
            <param name="messageContext">The message context to send</param>
1639
            <returns>The message to send</returns>
1640
        </member>
1641
        <member name="P:EQATEC.Analytics.Monitor.Messaging.MessageFactory.MessageFactoryVersion">
1642
            <summary>
1643
            Current version of the message factory. Is changes as message formats
1644
            are altered over time
1645
            </summary>
1646
        </member>
1647
        <member name="T:EQATEC.Analytics.Monitor.Messaging.MessageReceiver">
1648
            <summary>
1649
            Class handling the reception and parsing of messages from server
1650
            and for delegating information received from the server to the
1651
            appropriate reception handler
1652
            </summary>
1653
        </member>
1654
        <member name="M:EQATEC.Analytics.Monitor.Messaging.MessageReceiver.#ctor(System.Int32,EQATEC.Analytics.Monitor.ILogAnalyticsMonitor,EQATEC.Analytics.Monitor.Policy.MonitorPolicy)">
1655
            <summary>
1656
            Constructor
1657
            </summary>
1658
            <param name="messageFactoryVersion"></param>
1659
            <param name="log">the logging interface</param>
1660
            <param name="policy"></param>
1661
        </member>
1662
        <member name="M:EQATEC.Analytics.Monitor.Messaging.MessageReceiver.ParseResponse(EQATEC.Analytics.Monitor.Messaging.MessageResponse)">
1663
            <summary>
1664
            Handles the reception of incoming payload from the server and returns 
1665
            the reponse processing information. An empty return value indicates processing
1666
            without problems
1667
            </summary>
1668
            <param name="messageResponse">the incoming payload</param>
1669
        </member>
1670
        <member name="T:EQATEC.Analytics.Monitor.Messaging.MessageSender">
1671
            <summary>
1672
            Class handling the asynchronous sending of messages and forwarding received messages
1673
            to the IMessageReceiver
1674
            </summary>
1675
        </member>
1676
        <member name="M:EQATEC.Analytics.Monitor.Messaging.MessageSender.#ctor(EQATEC.Analytics.Monitor.ILogAnalyticsMonitor,EQATEC.Analytics.Monitor.ProxyConfiguration,EQATEC.Analytics.Monitor.Policy.MonitorPolicy)">
1677
            <summary>
1678
            Constructor
1679
            </summary>
1680
            <param name="log">the logging interface</param>
1681
            <param name="proxyConfig">the proxy configuration</param>
1682
            <param name="policy">the policy configuration</param>
1683
        </member>
1684
        <member name="M:EQATEC.Analytics.Monitor.Messaging.MessageSender.SendMessage(System.Uri,EQATEC.Analytics.Monitor.Messaging.MessagePayload,System.Action{EQATEC.Analytics.Monitor.Messaging.MessageResponse})">
1685
            <summary>
1686
            Send the message asynchronously and invokes the sendMessageCallback when message sending
1687
            has succeeded or failed with the payload. If sending fails a <c>null</c> message is send on the 
1688
            callback
1689
            </summary>
1690
            <param name="baseUri"></param>
1691
            <param name="payload">the message to send</param>
1692
            <param name="sendMessageCallback">the callback, called with the received payload</param>
1693
        </member>
1694
        <member name="T:EQATEC.Analytics.Monitor.Messaging.MessagingSubSystem">
1695
            <summary>
1696
            Class encapsulating the messaging system in the Analytics Monitor. This
1697
            class handles and coordinates to ensure that messages are send and retried
1698
            and eventually failed if unable to contact server
1699
            </summary>
1700
        </member>
1701
        <member name="M:EQATEC.Analytics.Monitor.Messaging.MessagingSubSystem.#ctor(EQATEC.Analytics.Monitor.Messaging.IMessageReceiver,EQATEC.Analytics.Monitor.Messaging.IMessageSender,EQATEC.Analytics.Monitor.Policy.MonitorPolicy,System.Uri,EQATEC.Analytics.Monitor.ILogAnalyticsMonitor)">
1702
            <summary>
1703
            Constructor
1704
            </summary>
1705
            <param name="receiver"></param>
1706
            <param name="sender"></param>
1707
            <param name="policy"></param>
1708
            <param name="defaultUri"></param>
1709
            <param name="log"></param>
1710
        </member>
1711
        <member name="M:EQATEC.Analytics.Monitor.Messaging.MessagingSubSystem.Void``1(``0)">
1712
            <summary>
1713
            Private empty callback
1714
            </summary>
1715
            <param name="errorMessage"></param>
1716
        </member>
1717
        <member name="M:EQATEC.Analytics.Monitor.Messaging.MessagingSubSystem.SendMessage(EQATEC.Analytics.Monitor.Messaging.MessagePayload,System.Action{EQATEC.Analytics.Monitor.Messaging.SendMessageResult})">
1718
            <summary>
1719
            Send the payload and set result of sending back on the callback
1720
            </summary>
1721
            <param name="payload"></param>
1722
            <param name="sendingResultCallback"></param>
1723
        </member>
1724
        <member name="M:EQATEC.Analytics.Monitor.Messaging.MessagingSubSystem.SendMessage(EQATEC.Analytics.Monitor.Messaging.MessagingSubSystem.Message,System.Action{EQATEC.Analytics.Monitor.Messaging.SendMessageResult})">
1725
            <summary>
1726
            Send a message and return the SendResult in the callback
1727
            </summary>
1728
            <param name="message">The message to send</param>
1729
            <param name="callback">The callback</param>
1730
        </member>
1731
        <member name="M:EQATEC.Analytics.Monitor.Messaging.MessagingSubSystem.RecieveMessage(EQATEC.Analytics.Monitor.Messaging.MessagingSubSystem.Message,EQATEC.Analytics.Monitor.Messaging.MessageResponse,System.Action{EQATEC.Analytics.Monitor.Messaging.SendMessageResult})">
1732
            <summary>
1733
            Private method for forwarding and handling the response received from the server once
1734
            the payload has been sent
1735
            </summary>
1736
            <param name="message"></param>
1737
            <param name="response"></param>
1738
            <param name="callback"></param>
1739
        </member>
1740
        <member name="T:EQATEC.Analytics.Monitor.Messaging.MessagingSubSystem.Message">
1741
            <summary>
1742
            Simple data carrying class for a message
1743
            </summary>
1744
        </member>
1745
        <member name="T:EQATEC.Analytics.Monitor.NamespaceDoc">
1746
            <summary>
1747
            The <c>AnalyticsMonitor</c> namespace contains all classes and interfaces needed
1748
            to construct and work with the EQATEC Analytics Monitor
1749
            </summary>
1750
        </member>
1751
        <member name="T:EQATEC.Analytics.Monitor.Storage.NamespaceDoc">
1752
            <summary>
1753
            The <c>Storage</c> namespace contains classes and interfaces related
1754
            to persisting and retreiving data for the EQATEC Analytics Monitor
1755
            </summary>
1756
        </member>
1757
        <member name="T:EQATEC.Analytics.Monitor.NativeMethods">
1758
            <summary>
1759
            Internal class for calling native methods
1760
            </summary>
1761
        </member>
1762
        <member name="F:EQATEC.Analytics.Monitor.NativeMethods.SM_CXSCREEN">
1763
            <summary>
1764
             Width of the screen of the primary display monitor, in pixels. This is the same values obtained by calling GetDeviceCaps as follows: GetDeviceCaps( hdcPrimaryMonitor, HORZRES).
1765
            </summary>
1766
        </member>
1767
        <member name="F:EQATEC.Analytics.Monitor.NativeMethods.SM_CYSCREEN">
1768
            <summary>
1769
            Height of the screen of the primary display monitor, in pixels. This is the same values obtained by calling GetDeviceCaps as follows: GetDeviceCaps( hdcPrimaryMonitor, VERTRES).
1770
            </summary>
1771
        </member>
1772
        <member name="F:EQATEC.Analytics.Monitor.NativeMethods.SM_CMONITORS">
1773
            <summary>
1774
            Number of display monitors on the desktop
1775
            </summary>
1776
        </member>
1777
        <member name="F:EQATEC.Analytics.Monitor.NativeMethods.BITSPIXEL">
1778
            <summary>
1779
            Number of bits per pixel
1780
            </summary>
1781
        </member>
1782
        <member name="F:EQATEC.Analytics.Monitor.NativeMethods.PLANES">
1783
            <summary>
1784
            Number of planes
1785
            </summary>
1786
        </member>
1787
        <member name="F:EQATEC.Analytics.Monitor.NativeMethods.LOGPIXELSX">
1788
            <summary>
1789
            Logical pixels inch in X
1790
            </summary>
1791
        </member>
1792
        <member name="F:EQATEC.Analytics.Monitor.NativeMethods.LOGPIXELSY">
1793
            <summary>
1794
            Logical pixels inch in Y
1795
            </summary>
1796
        </member>
1797
        <member name="M:EQATEC.Analytics.Monitor.NativeMethods.GetDisplays">
1798
            <summary>
1799
            Returns the number of Displays using the Win32 functions
1800
            </summary>
1801
            <returns>collection of Display Info</returns>
1802
        </member>
1803
        <member name="T:EQATEC.Analytics.Monitor.NativeMethods.MonitorInfoEx">
1804
            <summary>
1805
            The MONITORINFOEX structure contains information about a display monitor.
1806
            The GetMonitorInfo function stores information into a MONITORINFOEX structure or a MONITORINFO structure.
1807
            The MONITORINFOEX structure is a superset of the MONITORINFO structure. The MONITORINFOEX structure adds a string member to contain a name 
1808
            for the display monitor.
1809
            Remember to specify Charset.Ansi because the DeviceName is 8-bit characters, not regular 16-bit unicode characters
1810
            </summary>
1811
        </member>
1812
        <member name="F:EQATEC.Analytics.Monitor.NativeMethods.MonitorInfoEx.Size">
1813
            <summary>
1814
            The size, in bytes, of the structure. Set this member to sizeof(MONITORINFOEX) (72) before calling the GetMonitorInfo function. 
1815
            Doing so lets the function determine the type of structure you are passing to it.
1816
            </summary>
1817
        </member>
1818
        <member name="F:EQATEC.Analytics.Monitor.NativeMethods.MonitorInfoEx.Monitor">
1819
            <summary>
1820
            A RECT structure that specifies the display monitor rectangle, expressed in virtual-screen coordinates. 
1821
            Note that if the monitor is not the primary display monitor, some of the rectangle's coordinates may be negative values.
1822
            </summary>
1823
        </member>
1824
        <member name="F:EQATEC.Analytics.Monitor.NativeMethods.MonitorInfoEx.WorkArea">
1825
            <summary>
1826
            A RECT structure that specifies the work area rectangle of the display monitor that can be used by applications, 
1827
            expressed in virtual-screen coordinates. Windows uses this rectangle to maximize an application on the monitor. 
1828
            The rest of the area in rcMonitor contains system windows such as the task bar and side bars. 
1829
            Note that if the monitor is not the primary display monitor, some of the rectangle's coordinates may be negative values.
1830
            </summary>
1831
        </member>
1832
        <member name="F:EQATEC.Analytics.Monitor.NativeMethods.MonitorInfoEx.Flags">
1833
            <summary>
1834
            The attributes of the display monitor.
1835
            
1836
            This member can be the following value:
1837
              1 : MONITORINFOF_PRIMARY
1838
            </summary>
1839
        </member>
1840
        <member name="F:EQATEC.Analytics.Monitor.NativeMethods.MonitorInfoEx.DeviceName">
1841
            <summary>
1842
            A string that specifies the device name of the monitor being used. Most applications have no use for a display monitor name, 
1843
            and so can save some bytes by using a MONITORINFO structure.
1844
            </summary>
1845
        </member>
1846
        <member name="T:EQATEC.Analytics.Monitor.NativeMethods.RectStruct">
1847
            <summary>
1848
            The RECT structure defines the coordinates of the upper-left and lower-right corners of a rectangle.
1849
            </summary>
1850
            <remarks>
1851
            By convention, the right and bottom edges of the rectangle are normally considered exclusive. 
1852
            In other words, the pixel whose coordinates are ( right, bottom ) lies immediately outside of the the rectangle. 
1853
            For example, when RECT is passed to the FillRect function, the rectangle is filled up to, but not including, 
1854
            the right column and bottom row of pixels. This structure is identical to the RECTL structure.
1855
            </remarks>
1856
        </member>
1857
        <member name="F:EQATEC.Analytics.Monitor.NativeMethods.RectStruct.Left">
1858
            <summary>
1859
            The x-coordinate of the upper-left corner of the rectangle.
1860
            </summary>
1861
        </member>
1862
        <member name="F:EQATEC.Analytics.Monitor.NativeMethods.RectStruct.Top">
1863
            <summary>
1864
            The y-coordinate of the upper-left corner of the rectangle.
1865
            </summary>
1866
        </member>
1867
        <member name="F:EQATEC.Analytics.Monitor.NativeMethods.RectStruct.Right">
1868
            <summary>
1869
            The x-coordinate of the lower-right corner of the rectangle.
1870
            </summary>
1871
        </member>
1872
        <member name="F:EQATEC.Analytics.Monitor.NativeMethods.RectStruct.Bottom">
1873
            <summary>
1874
            The y-coordinate of the lower-right corner of the rectangle.
1875
            </summary>
1876
        </member>
1877
        <member name="T:EQATEC.Analytics.Monitor.NativeMethods.DisplayInfo">
1878
            <summary>
1879
            The struct that contains the display information
1880
            </summary>
1881
        </member>
1882
        <member name="T:EQATEC.Analytics.Monitor.Model.Feature">
1883
            <summary>
1884
            Feature registration
1885
            </summary>
1886
        </member>
1887
        <member name="P:EQATEC.Analytics.Monitor.Model.Feature.SessionHit">
1888
            <summary>
1889
            Number of times this feature has been utilized in the full runtime for this 
1890
            session
1891
            </summary>
1892
        </member>
1893
        <member name="P:EQATEC.Analytics.Monitor.Model.Feature.SyncedHits">
1894
            <summary>
1895
            The count for the number of hits that is registered as synced to the server
1896
            </summary>
1897
        </member>
1898
        <member name="P:EQATEC.Analytics.Monitor.Model.Feature.ActiveStartTime">
1899
            <summary>
1900
            The start time of this feature when timing a feature
1901
            </summary>
1902
        </member>
1903
        <member name="P:EQATEC.Analytics.Monitor.Model.Feature.IsActive">
1904
            <summary>
1905
            Is this feature currently active, meaning is it currently being tracked
1906
            </summary>
1907
        </member>
1908
        <member name="T:EQATEC.Analytics.Monitor.Timing">
1909
            <summary>
1910
            Static class for encapsulating all timing related issues in the 
1911
            code. Makes testing for timing related functionality easier to mock out
1912
            </summary>
1913
        </member>
1914
        <member name="M:EQATEC.Analytics.Monitor.Timing.SetSystemTimeCall(EQATEC.Analytics.Monitor.Timing.SystemTimeCall)">
1915
            <summary>
1916
            Explicitly setting the system time call
1917
            </summary>
1918
            <param name="call"></param>
1919
        </member>
1920
        <member name="M:EQATEC.Analytics.Monitor.Timing.SetSystemUptimeCall(EQATEC.Analytics.Monitor.Timing.SystemUptimeCall)">
1921
            <summary>
1922
            Explicitly setting the system uptime call
1923
            </summary>
1924
            <param name="call"></param>
1925
        </member>
1926
        <member name="M:EQATEC.Analytics.Monitor.Timing.ResetTiming">
1927
            <summary>
1928
            Resets any custom timing setups
1929
            </summary>
1930
        </member>
1931
        <member name="M:EQATEC.Analytics.Monitor.Timing.CreateWaitHandle">
1932
            <summary>
1933
            Getting a WaitHandle instance in the non-signalled state
1934
            </summary>
1935
            <returns></returns>
1936
        </member>
1937
        <member name="P:EQATEC.Analytics.Monitor.Timing.Now">
1938
            <summary>
1939
            Getting the current system time
1940
            </summary>
1941
        </member>
1942
        <member name="P:EQATEC.Analytics.Monitor.Timing.UtcNow">
1943
            <summary>
1944
            Getting the current system time in UTC
1945
            </summary>
1946
        </member>
1947
        <member name="P:EQATEC.Analytics.Monitor.Timing.Uptime">
1948
            <summary>
1949
            Getting the current system uptime
1950
            </summary>
1951
        </member>
1952
        <member name="T:EQATEC.Analytics.Monitor.Timing.SystemTimeCall">
1953
            <summary>
1954
            Delegate for getting the current system time
1955
            </summary>
1956
            <returns></returns>
1957
        </member>
1958
        <member name="T:EQATEC.Analytics.Monitor.Timing.SystemUptimeCall">
1959
            <summary>
1960
            Delegate for getting the current system up time
1961
            </summary>
1962
            <returns></returns>
1963
        </member>
1964
        <member name="T:EQATEC.Analytics.Monitor.Timing.WaitHandleCall">
1965
            <summary>
1966
            Delegate for getting a concrete waithandle
1967
            </summary>
1968
            <returns></returns>
1969
        </member>
1970
        <member name="T:EQATEC.Analytics.Monitor.TimingScope">
1971
            <summary>
1972
            Encapsulates a scope of a specific feature timing. This can be used to make the
1973
            timing of a feature more robust to exceptions by enabling scoping of the block
1974
            of code the is timed.
1975
            </summary>
1976
            <remarks>This class ensures that multiple calls to <see cref="M:EQATEC.Analytics.Monitor.TimingScope.Complete"/> and/or <see cref="M:EQATEC.Analytics.Monitor.TimingScope.Cancel"/> will
1977
            only result in a single call to the monitor either completing or cancelling the timing.</remarks>
1978
            <example>The following shows an example of how you can utilize the <see cref="T:EQATEC.Analytics.Monitor.TimingScope"/> to
1979
            make code more compact.
1980
            <code>
1981
            class SomeHeavyLogic
1982
            {   
1983
              private IAnalyticsMonitor m_monitor;
1984
              public SomeHeavyLogic(IAnalyticsMonitor monitor)
1985
              {
1986
                m_monitor = monitor;
1987
              }
1988
              public void StartDoingStuff()
1989
              {
1990
                using(TimingScope scope = m_monitor.TrackFeatureStart("Processing.BigData"))     
1991
                {
1992
                   // This is where the processing should occur
1993
            
1994
                   scope.Complete(); //this completes the timing by call TrackFeatureStop on the feature name
1995
                }
1996
              } 
1997
            }
1998
            </code>
1999
            </example>
2000
        </member>
2001
        <member name="M:EQATEC.Analytics.Monitor.TimingScope.Complete">
2002
            <summary>
2003
            Complete the timing by calling <see cref="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.TrackFeatureStop(System.String)"/> with the <see cref="P:EQATEC.Analytics.Monitor.TimingScope.FeatureName"/>
2004
            to end the timing successfully
2005
            </summary>
2006
            <remarks>This can be called multiple times while only completing the feature timing once against the <see cref="T:EQATEC.Analytics.Monitor.IAnalyticsMonitor"/> instance.</remarks>
2007
        </member>
2008
        <member name="M:EQATEC.Analytics.Monitor.TimingScope.Cancel">
2009
            <summary>
2010
            Cancel the ongoing timing by calling <see cref="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.TrackFeatureCancel(System.String)"/> with the <see cref="P:EQATEC.Analytics.Monitor.TimingScope.FeatureName"/>
2011
            to end the timing successfully
2012
            </summary>
2013
            <remarks>This can be called multiple times while only cancelling the feature timing once against the <see cref="T:EQATEC.Analytics.Monitor.IAnalyticsMonitor"/> instance.</remarks>
2014
        </member>
2015
        <member name="M:EQATEC.Analytics.Monitor.TimingScope.Dispose">
2016
            <summary>
2017
            Disposes the scope by cancelling the ongoing timing if it has not been completed yet.
2018
            </summary>
2019
        </member>
2020
        <member name="P:EQATEC.Analytics.Monitor.TimingScope.FeatureName">
2021
            <summary>
2022
            Get the name of the feature that this instance is scoping
2023
            </summary>
2024
        </member>
2025
        <member name="T:EQATEC.Analytics.Monitor.VoidLog">
2026
            <summary>
2027
            Internal log, default log in the monitor. Allows for testing classes
2028
            to cast the logging interface and hook into the static events
2029
            </summary>
2030
        </member>
2031
        <member name="T:EQATEC.Analytics.Monitor.AnalyticsMonitorSettings">
2032
            <summary>
2033
            Class containing the settings used for constructing the <see cref="T:EQATEC.Analytics.Monitor.IAnalyticsMonitor"/> instance. Instances
2034
            are preloaded with default settings which can be adjusted before instance is being passed to 
2035
            the <see cref="M:EQATEC.Analytics.Monitor.AnalyticsMonitorFactory.Create(EQATEC.Analytics.Monitor.IAnalyticsMonitorSettings)"/> method
2036
            </summary>
2037
        </member>
2038
        <member name="M:EQATEC.Analytics.Monitor.AnalyticsMonitorSettings.#ctor(System.String)">
2039
            <summary>
2040
             Construct the default settings corresponding to a given productId.
2041
            </summary>
2042
             <remarks>On the .NET platform the <see cref="P:EQATEC.Analytics.Monitor.AnalyticsMonitorSettings.Version"/> property is automatically assigned by looking at the
2043
             version of the calling assembly. On other platforms the constructor requires an explicit version parameter</remarks>
2044
            <param name="productId">the id of the product to monitor</param>
2045
            <exception cref="T:System.ArgumentException">returned if product id have the wrong format</exception>
2046
        </member>
2047
        <member name="P:EQATEC.Analytics.Monitor.AnalyticsMonitorSettings.ProductId">
2048
            <summary>
2049
            Get the product id that will be used for creation of the <see cref="T:EQATEC.Analytics.Monitor.IAnalyticsMonitor"/> instance
2050
            </summary>
2051
        </member>
2052
        <member name="P:EQATEC.Analytics.Monitor.AnalyticsMonitorSettings.Version">
2053
            <summary>
2054
            Specifies the version of the software, that should be used for version checking.
2055
            The default value is implicitly retreived of the current application
2056
            by accessing the calling assembly.
2057
            </summary>
2058
        </member>
2059
        <member name="P:EQATEC.Analytics.Monitor.AnalyticsMonitorSettings.LoggingInterface">
2060
             <summary>
2061
             The logging interface used for exposing internal messages
2062
             </summary>
2063
             <remarks>You can provide your own implementation of the <see cref="T:EQATEC.Analytics.Monitor.ILogAnalyticsMonitor"/> interface in 
2064
             order to receive the internal logging messages from constructed monitors</remarks>
2065
             <example> This sample shows how to use the logging interface.
2066
             <code>
2067
             class MyClass 
2068
             {
2069
               static void Main() 
2070
               {
2071
                 //Creating AnalyticsMonitorSettings
2072
                 AnalyticsMonitorSettings settings = new AnalyticsMonitorSettings("YOUR_PRODUCT_KEY_HERE");
2073
                 settings.LoggingInterface = new MyLogClass();
2074
             
2075
                 //Creating IAnalyticsMonitor
2076
                 IAnalyticsMonitor monitor = AnalyticsMonitorFactory.Create(settings);
2077
             
2078
                 //Start Analytics monitor
2079
                 monitor.Start();
2080
            
2081
                 /*Your program here....*/
2082
                 
2083
                 //Stop Analytics monitor
2084
                 monitor.Stop();
2085
               }
2086
             }
2087
             class MyLogClass : ILogAnalyticsMonitor
2088
             {
2089
               public void LogMessage(string message)
2090
               {
2091
                 Console.WriteLine("Log: " + message);
2092
               }
2093
             
2094
               public void LogError(string errorMessage)
2095
               {
2096
                 Console.WriteLine("Error: " + errorMessage);
2097
               }
2098
             }
2099
             </code>
2100
             </example>
2101
        </member>
2102
        <member name="P:EQATEC.Analytics.Monitor.AnalyticsMonitorSettings.StorageInterface">
2103
            <summary>
2104
            The storage interface used internally in the analytics monitor
2105
            for saving and loading state. 
2106
            </summary>
2107
            <remarks>Consider providing your own implementation of the <see cref="T:EQATEC.Analytics.Monitor.IStorage"/> interface if
2108
            your application requires special handling when storing data.</remarks>
2109
        </member>
2110
        <member name="P:EQATEC.Analytics.Monitor.AnalyticsMonitorSettings.StorageSaveInterval">
2111
            <summary>
2112
            The interval with which we autosave the internal statistics. The default
2113
            is one minute. If set to TimeSpan.Zero, no AutoSave is performed
2114
            </summary>
2115
        </member>
2116
        <member name="P:EQATEC.Analytics.Monitor.AnalyticsMonitorSettings.ServerUri">
2117
            <summary>
2118
            Override the default uri for the server. For most standard purposes there is no
2119
            need to provide your own uri for the server as the monitor provides a default uri
2120
            which will contact the server correctly
2121
            </summary>
2122
            <remarks>You may require to specify this server uri if the network setup for your
2123
            end users are non-standard. Also be aware that the <see cref="P:EQATEC.Analytics.Monitor.AnalyticsMonitorSettings.UseSSL"/> property is
2124
            is ignored when explicitly specifying the server uri.</remarks>
2125
        </member>
2126
        <member name="P:EQATEC.Analytics.Monitor.AnalyticsMonitorSettings.TestMode">
2127
            <summary>
2128
             Use this flag to enable the test mode for this installation.
2129
             This might for example allow you to test version announcements
2130
             before relasing it to customers.
2131
            </summary>
2132
             <remarks>The precise behavior for the <see cref="P:EQATEC.Analytics.Monitor.AnalyticsMonitorSettings.TestMode"/> property may change over time but
2133
             is provided to explicitly enable certain test scenarios for developers</remarks>
2134
        </member>
2135
        <member name="P:EQATEC.Analytics.Monitor.AnalyticsMonitorSettings.SynchronizeAutomatically">
2136
            <summary>
2137
             Use this flag to specify is the monitor automatically should synchronize data 
2138
             to the server or it should only synchronize manually on explicit calls to <see cref="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.ForceSync"/>.
2139
             The default value is <see langwork="true"/> as the he monitor will automatically synchronize data to the 
2140
             server without the clients have to call <see cref="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.ForceSync"/>.
2141
            </summary>
2142
        </member>
2143
        <member name="P:EQATEC.Analytics.Monitor.AnalyticsMonitorSettings.DailyNetworkUtilizationInKB">
2144
            <summary>
2145
            Explicitly set a limit on the daily network utilization of the monitor. The utilization
2146
            is accumulated based on the size of the payload for both upstream and downstream data and 
2147
            is enforce on a daily basis. 
2148
            </summary>
2149
            <remarks>The monitor will not honor a limit lower than 10 kb since the 
2150
            monitor must be able to contact the server with at least a mimimum of payload. If you do not want the monitor to contact the 
2151
            server you should not call <see cref="M:EQATEC.Analytics.Monitor.IAnalyticsMonitor.Start"/> on the monitor instance.</remarks>
2152
        </member>
2153
        <member name="P:EQATEC.Analytics.Monitor.AnalyticsMonitorSettings.MaxStorageSizeInKB">
2154
            <summary>
2155
            Explicitly set a size limit on the data save to persistent storage by the monitor. The size
2156
            is calculated each time the monitor persists to storage and if the size limit is exceeded it
2157
            will attempt to persist less data. 
2158
            </summary>
2159
            <remarks>The monitor will not honor a limit lower than 1 kb since the monitor requires to
2160
            store at least a minimal amount of metadata</remarks>
2161
        </member>
2162
        <member name="P:EQATEC.Analytics.Monitor.AnalyticsMonitorSettings.UseSSL">
2163
            <summary>
2164
            Uses https traffic against the servers unless the <see cref="P:EQATEC.Analytics.Monitor.AnalyticsMonitorSettings.ServerUri"/> has been explicitly
2165
            specified to non-https. By default this property is <see langword="false"/>
2166
            </summary>
2167
            <remarks>If the <see cref="P:EQATEC.Analytics.Monitor.AnalyticsMonitorSettings.ServerUri"/> property has has been specified explicitly this property
2168
            is ignored. The validation of the certificate from the servers are handled by the underlying
2169
            operating system. For some platforms (such as Windows Mobile 5) this may present a problem since
2170
            they have limited support for wild-card certificates.</remarks>
2171
        </member>
2172
        <member name="P:EQATEC.Analytics.Monitor.AnalyticsMonitorSettings.ProxyConfig">
2173
            <summary>
2174
            Use this property to explicitly specify the proxy settings for connecting to the server. By default
2175
            there is no proxy configuration and it is picked up from the underlying operating system.
2176
            </summary>
2177
            <remarks>The proxy configuration can be specified in application.config file if prefered.</remarks>
2178
        </member>
2179
        <member name="P:EQATEC.Analytics.Monitor.AnalyticsMonitorSettings.Location">
2180
            <summary>
2181
            The location of the monitor as GPS coordinates. Use this property if you have access to GPS 
2182
            coordinates for the location of the application. If provided, these coordinates
2183
            will be delivered to the servers as part of the data payload.
2184
            </summary>
2185
        </member>
2186
        <member name="T:EQATEC.Analytics.Monitor.OSInfoObject">
2187
            <summary>
2188
            Simple data carrying class for OS information
2189
            </summary>
2190
        </member>
2191
        <member name="T:EQATEC.Analytics.Monitor.Model.Statistics">
2192
            <summary>
2193
            Class encapsulating all stored statistics about the application usage
2194
            </summary>
2195
        </member>
2196
        <member name="M:EQATEC.Analytics.Monitor.Model.Statistics.CreateSnapshotCopy">
2197
            <summary>
2198
            Create a full snapshot of the statistics
2199
            </summary>
2200
            <returns></returns>
2201
        </member>
2202
        <member name="M:EQATEC.Analytics.Monitor.Model.Statistics.SubtractSnapshotCopy(EQATEC.Analytics.Monitor.Model.Statistics)">
2203
            <summary>
2204
            Takes a previous snapshot copy and subtracts the content in the
2205
            snapshot from the current statistics
2206
            </summary>
2207
            <param name="snapshotCopy"></param>
2208
        </member>
2209
        <member name="M:EQATEC.Analytics.Monitor.Model.Statistics.GetSessionById(System.Guid)">
2210
            <summary>
2211
            Get named session
2212
            </summary>
2213
            <param name="id"></param>
2214
            <returns></returns>
2215
        </member>
2216
        <member name="M:EQATEC.Analytics.Monitor.Model.Statistics.StartSession(EQATEC.Analytics.Monitor.InstallationSettings,System.Version)">
2217
            <summary>
2218
            Starting a new session
2219
            </summary>
2220
            <param name="installationSettings"></param>
2221
            <param name="applicationVersion"></param>
2222
        </member>
2223
        <member name="M:EQATEC.Analytics.Monitor.Model.Statistics.EndSession">
2224
            <summary>
2225
            Ending the current session
2226
            </summary>
2227
        </member>
2228
        <member name="P:EQATEC.Analytics.Monitor.Model.Statistics.Sessions">
2229
            <summary>
2230
            List of sessions, includes the current session and any past sessions
2231
            that have not been sent to the server
2232
            </summary>
2233
        </member>
2234
        <member name="P:EQATEC.Analytics.Monitor.Model.Statistics.CurrentSession">
2235
            <summary>
2236
            The current session instance, if any
2237
            </summary>
2238
        </member>
2239
        <member name="T:EQATEC.Analytics.Monitor.Storage.StorageFactory">
2240
            <summary>
2241
            Class encapsulating the loading and saving of data to and from raw bytes
2242
            </summary>
2243
        </member>
2244
        <member name="M:EQATEC.Analytics.Monitor.Storage.StorageFactory.SavePolicy(EQATEC.Analytics.Monitor.Policy.MonitorPolicy)">
2245
            <summary>
2246
            Saves the policy object
2247
            </summary>
2248
            <param name="policy">the access info to save</param>
2249
            <exception cref="T:System.Exception">if failed to save to storage</exception>
2250
            <returns>the raw data to save or <c>null</c> if unable to convert</returns>
2251
        </member>
2252
        <member name="M:EQATEC.Analytics.Monitor.Storage.StorageFactory.SaveStatistics(EQATEC.Analytics.Monitor.Policy.MonitorPolicy)">
2253
            <summary>
2254
            Saves the policy object
2255
            </summary>
2256
            <param name="policy">the statistics</param>
2257
            <exception cref="T:System.Exception">if failed to save to storage</exception>
2258
            <returns>the raw data to save or <c>null</c> if unable to convert</returns>
2259
        </member>
2260
        <member name="M:EQATEC.Analytics.Monitor.Storage.StorageFactory.SaveSessions(EQATEC.Analytics.Monitor.Model.Statistics,EQATEC.Analytics.Monitor.Policy.MonitorPolicy)">
2261
            <summary>
2262
            Saves the statistics
2263
            </summary>
2264
            <param name="statistics">the statistics to save</param>
2265
            <param name="policy">the access info to save</param>
2266
            <exception cref="T:System.Exception">if failed to save to storage</exception>
2267
            <returns>the raw data to save or <c>null</c> if unable to convert</returns>
2268
        </member>
2269
        <member name="M:EQATEC.Analytics.Monitor.Storage.StorageFactory.LoadFromStorage(EQATEC.Analytics.Monitor.Policy.MonitorPolicy)">
2270
            <summary>
2271
            Loads the statistics and returns the alternativeUri and BlockingData
2272
            </summary>
2273
            <returns>The statistics</returns>
2274
            <exception cref="T:EQATEC.Analytics.Monitor.InternalMonitorException">If failures encountered during loading or parsing of data from storage</exception>
2275
        </member>
2276
        <member name="T:EQATEC.Analytics.Monitor.Guard">
2277
            <summary>
2278
            Internal class making ArgumentNull checks a little easier
2279
            </summary>
2280
        </member>
2281
        <member name="M:EQATEC.Analytics.Monitor.Guard.IsNotNull``1(``0,System.String)">
2282
            <summary>
2283
            Checks that argument is not <c>null</c> and returns it
2284
            </summary>
2285
            <typeparam name="T"></typeparam>
2286
            <param name="input"></param>
2287
            <param name="argumentName"></param>
2288
            <returns></returns>
2289
        </member>
2290
        <member name="T:EQATEC.Analytics.Monitor.XmlUtil">
2291
            <summary>
2292
            internal class for doing some Xml manipulation
2293
            </summary>
2294
        </member>
2295
        <member name="M:EQATEC.Analytics.Monitor.XmlUtil.WriteStartElement(System.Xml.XmlWriter,System.String,System.String[])">
2296
            <summary>
2297
            Adding a named XmlElement as a child to a XmlNode
2298
            </summary>
2299
            <param name="xtw"></param>
2300
            <param name="elementName"></param>
2301
            <param name="attrs"></param>
2302
            <returns></returns>
2303
        </member>
2304
        <member name="T:EQATEC.Analytics.Monitor.Parser">
2305
            <summary>
2306
            Internal class for non throwing parsing
2307
            </summary>
2308
        </member>
2309
        <member name="M:EQATEC.Analytics.Monitor.Parser.TryParseUint(System.String,System.UInt32@)">
2310
            <summary>
2311
            Special parsing of int to support both full and CF framework
2312
            </summary>
2313
            <param name="input"></param>
2314
            <param name="value"></param>
2315
            <returns></returns>
2316
        </member>
2317
        <member name="M:EQATEC.Analytics.Monitor.StringUtil.Chop(System.String,System.Int32)">
2318
            <summary>
2319
            Chop the string to a given length
2320
            </summary>
2321
            <param name="input"></param>
2322
            <param name="length"></param>
2323
            <returns></returns>
2324
        </member>
2325
        <member name="M:EQATEC.Analytics.Monitor.StringUtil.ChopToEnds(System.String,System.Int32)">
2326
            <summary>
2327
            Chop the string to a given length. If too large (takes ends and adds '\n....\n' in the middle)
2328
            </summary>
2329
            <param name="input"></param>
2330
            <param name="length"></param>
2331
            <returns></returns>
2332
        </member>
2333
        <member name="M:EQATEC.Analytics.Monitor.StringUtil.SplitString(System.String,System.String)">
2334
            <summary>
2335
            Custom string.split implementation as this particular overload is missing on Compact Framework
2336
            </summary>
2337
            <param name="input"></param>
2338
            <param name="splitString"></param>
2339
            <returns></returns>
2340
        </member>
2341
        <member name="T:EQATEC.Analytics.Monitor.Storage.VoidStorage">
2342
            <summary>
2343
            Empty storage, mainly for having an internal default and avoid
2344
            excessive null-checks
2345
            </summary>
2346
        </member>
2347
    </members>
2348
</doc>
클립보드 이미지 추가 (최대 크기: 500 MB)