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