blob: 9b94ea7260529aae4b3c95f854210f1e25be2c73 [file] [log] [blame]
//
// Copyright 2005 The Android Open Source Project
//
// Contents of the "user event" sent from the device thread.
//
#ifndef _SIM_USER_EVENT_MESSAGE_H
#define _SIM_USER_EVENT_MESSAGE_H
#include "utils.h"
#include "LogMessage.h"
/*
* This gets stuffed into a UserEvent, which is posted to the main thread
* from a worker thread.
*
* The object does NOT own anything you stuff into it. It's just a vehicle
* for carting data from one thread to another in a wxWidgets-safe manner,
* usually as pointers to data that can be shared between threads.
*/
class UserEventMessage {
public:
/*
* What type of message is this?
*/
typedef enum UEMType {
kUnknown = 0,
kRuntimeStarted,
kRuntimeStopped,
kErrorMessage, // message in mString
kLogMessage, // ptr to heap-allocated LogMessage
kExternalRuntime, // external runtime wants to party
} UEMType;
UserEventMessage(void)
: mType(kUnknown), mpLogMessage(NULL)
{}
~UserEventMessage(void) {
}
/*
* Create one of our various messages.
*/
void CreateRuntimeStarted(void) {
mType = kRuntimeStarted;
}
void CreateRuntimeStopped(void) {
mType = kRuntimeStopped;
}
void CreateErrorMessage(wxString& str) {
mType = kErrorMessage;
mString = str;
}
void CreateLogMessage(LogMessage* pLogMessage) {
mType = kLogMessage;
mpLogMessage = pLogMessage;
}
void CreateExternalRuntime(android::Pipe* reader, android::Pipe* writer) {
mType = kExternalRuntime;
mReader = reader;
mWriter = writer;
}
/*
* Accessors.
*/
UEMType GetType(void) const { return mType; }
const wxString& GetString(void) const { return mString; }
LogMessage* GetLogMessage(void) const { return mpLogMessage; }
android::Pipe* GetReader(void) const { return mReader; }
android::Pipe* GetWriter(void) const { return mWriter; }
private:
UserEventMessage& operator=(const UserEventMessage&); // not implemented
UserEventMessage(const UserEventMessage&); // not implemented
UEMType mType;
wxString mString; // for kErrorMessage
LogMessage* mpLogMessage; // for kLogMessage
android::Pipe* mReader; // for kExternalRuntime
android::Pipe* mWriter; // for kExternalRuntime
};
#endif // _SIM_USER_EVENT_MESSAGE_H