singrdk/base/Kernel/Singularity/Eventing/TestKernel.cs

141 lines
5.2 KiB
C#

////////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// File: TestKernel.cs
//
//
using System;
using System.Threading;
using System.Runtime.CompilerServices;
using Microsoft.Singularity;
using Microsoft.Singularity.V1.Services;
using Microsoft.Singularity.Eventing;
using System.Collections;
namespace Microsoft.Singularity.Eventing
{
[CLSCompliant(false)]
public class TestKernelLogging
{
[CLSCompliant(false)]
static internal bool ActiveEntryDelegate(UIntPtr sourceHandle,
int index,
EventDescriptor descriptor,
QueryBuffer entryBuffer,
ref EnumerationContext context)
{
Console.Write("{0:d5}", index);
descriptor.EnumerateFields(new QueryFieldDelegate(ActiveFieldDelegate), entryBuffer, ref context);
Console.WriteLine("");
return true;
}
static internal bool TableHeadDelegate(FieldDescriptor fieldDescriptor,
object obj,
ref EnumerationContext ctx)
{
Console.Write(" {0}", fieldDescriptor.Name);
return true;
}
static internal bool ActiveFieldDelegate(FieldDescriptor fieldDescriptor,
object obj,
ref EnumerationContext ctx)
{
if (obj != null) {
Console.Write(" {0}", obj.ToString());
}
return true;
}
static internal bool SourceDelegate(UIntPtr sourceHandle,
UIntPtr storageHandle,
UIntPtr eventType,
UInt16 count,
string bufferName,
EventDescriptor descriptor,
ref EnumerationContext context)
{
if (descriptor != null) {
Console.WriteLine("Source: \"{0}\". {1} entries of type {2}",
bufferName, count, descriptor.EventName);
Console.Write("Index");
descriptor.EnumerateFields(new QueryFieldDelegate(TableHeadDelegate), null, ref context);
Console.WriteLine("");
Console.Write("-----");
for (int i = 0; i < descriptor.GetFieldsCount(); i++) {
Console.Write("----------");
}
Console.WriteLine("");
} else {
Console.WriteLine("Source Handle={0}, Storage={1}, type={2}, name={3}, count={4}",
sourceHandle, storageHandle, eventType, bufferName, count);
}
return true;
}
static internal bool fieldDelegate(FieldDescriptor fieldDescriptor,
object obj,
ref EnumerationContext context)
{
if ((fieldDescriptor != null) && (obj != null)) {
Console.WriteLine(" {0}:{1}:{2} = {3}",
fieldDescriptor.Offset,
fieldDescriptor.GetTypeName(),
fieldDescriptor.Name,
obj.ToString());
}
return true;
}
static internal bool EntryDelegate(EventDescriptor currentEntry,
QueryBuffer buffer,
ref EnumerationContext context)
{
if ((currentEntry != null) && (buffer != null)) {
currentEntry.EnumerateFields(new QueryFieldDelegate(fieldDelegate), buffer, ref context);
}
return true;
}
public static void ListActiveSources()
{
Controller hostController = Controller.GetLocalController();
EnumerationContext ctx = new EnumerationContext();
if ((hostController == null) || (ctx == null)) {
return;
}
hostController.EnumerateActiveSources(new QuerySourceDelegate(SourceDelegate),
new ActiveSourceEntryDelegate(ActiveEntryDelegate),
new QueryEntryDelegate(EntryDelegate),
0,
ref ctx);
}
public static void TestAllCases()
{
ListActiveSources();
}
}
}