public static Event CreateEvent(LogFileReader reader, EventType type, byte extendedInfo)
{
switch (type)
{
case EventType.Alloc:
return(AllocEvent.Read(reader, extendedInfo));
case EventType.Exception:
return(ExceptionEvent.Read(reader, extendedInfo));
case EventType.Gc:
switch (extendedInfo)
{
case TYPE_GC_EVENT:
return(GcEvent.Read(reader));
case TYPE_GC_RESIZE:
return(ResizeGcEvent.Read(reader));
case TYPE_GC_MOVE:
return(MoveGcEvent.Read(reader));
case TYPE_GC_HANDLE_CREATED:
case TYPE_GC_HANDLE_CREATED_BT:
return(HandleCreatedGcEvent.Read(reader, extendedInfo));
case TYPE_GC_HANDLE_DESTROYED:
case TYPE_GC_HANDLE_DESTROYED_BT:
return(HandleDestroyedGcEvent.Read(reader, extendedInfo));
}
throw new InvalidOperationException("unknown gc type:" + extendedInfo);
case EventType.Heap:
return(HeapEvent.Read(reader, extendedInfo));
case EventType.Metadata:
return(MetadataEvent.Read(reader, extendedInfo));
case EventType.Method:
return(MethodEvent.Read(reader, extendedInfo));
case EventType.Monitor:
return(MonitiorEvent.Read(reader, extendedInfo));
case EventType.Sample:
return(SampleEvent.Read(reader, extendedInfo));
case EventType.Runtime:
return(RuntimeEvent.Read(reader, extendedInfo));
case EventType.Coverage:
return(CoverageEvent.Read(reader, extendedInfo));
}
throw new InvalidOperationException("invalid event type " + type);
}