*/
public static EventImpl read(MirrorImpl target, DataInputStream dataInStream)
throws IOException {
byte eventKind = target.readByte(
"event kind", eventKindMap(), dataInStream); //$NON-NLS-1$
RequestID requestID = RequestID.read(target, dataInStream);
// Create, read and return Event of eventKind.
EventImpl result;
switch (eventKind) {
case 0:
return null;
case AccessWatchpointEventImpl.EVENT_KIND:
result = AccessWatchpointEventImpl.read(target, requestID,
dataInStream);
break;
case BreakpointEventImpl.EVENT_KIND:
result = BreakpointEventImpl.read(target, requestID, dataInStream);
break;
case ClassPrepareEventImpl.EVENT_KIND:
result = ClassPrepareEventImpl
.read(target, requestID, dataInStream);
break;
case ClassUnloadEventImpl.EVENT_KIND:
result = ClassUnloadEventImpl.read(target, requestID, dataInStream);
break;
case ExceptionEventImpl.EVENT_KIND:
result = ExceptionEventImpl.read(target, requestID, dataInStream);
break;
case MethodEntryEventImpl.EVENT_KIND:
result = MethodEntryEventImpl.read(target, requestID, dataInStream);
break;
case MethodExitEventImpl.EVENT_KIND:
result = MethodExitEventImpl.read(target, requestID, dataInStream);
break;
case EVENT_METHOD_EXIT_WITH_RETURN_VALUE:
result = MethodExitEventImpl.readWithReturnValue(target, requestID,
dataInStream);
break;
case MonitorContendedEnteredEventImpl.EVENT_KIND:
result = MonitorContendedEnteredEventImpl.read(target, requestID,
dataInStream);
break;
case MonitorContendedEnterEventImpl.EVENT_KIND:
result = MonitorContendedEnterEventImpl.read(target, requestID,
dataInStream);
break;
case MonitorWaitedEventImpl.EVENT_KIND:
result = MonitorWaitedEventImpl.read(target, requestID,
dataInStream);
break;
case MonitorWaitEventImpl.EVENT_KIND:
result = MonitorWaitEventImpl.read(target, requestID, dataInStream);
break;
case ModificationWatchpointEventImpl.EVENT_KIND:
result = ModificationWatchpointEventImpl.read(target, requestID,
dataInStream);
break;
case StepEventImpl.EVENT_KIND:
result = StepEventImpl.read(target, requestID, dataInStream);
break;
case ThreadDeathEventImpl.EVENT_KIND:
result = ThreadDeathEventImpl.read(target, requestID, dataInStream);
break;
case ThreadStartEventImpl.EVENT_KIND:
result = ThreadStartEventImpl.read(target, requestID, dataInStream);
break;
case VMDeathEventImpl.EVENT_KIND:
result = VMDeathEventImpl.read(target, requestID, dataInStream);
break;
case VMDisconnectEventImpl.EVENT_KIND:
result = VMDisconnectEventImpl
.read(target, requestID, dataInStream);
break;
case VMStartEventImpl.EVENT_KIND:
result = VMStartEventImpl.read(target, requestID, dataInStream);
break;
default:
throw new IOException(
EventMessages.EventImpl_Read_invalid_EventKind___1
+ eventKind);
}
// Find and store original request.
if (!requestID.isNull())
result.fRequest = target.virtualMachineImpl().eventRequestManagerImpl().findRequest(result);
return result;
}