|  | // | 
|  | // 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 |