File indexing completed on 2024-05-05 17:50:03
0001 #ifndef EVENT_H 0002 #define EVENT_H 0003 0004 #include "error.h" 0005 #include "message.h" 0006 #include <string> 0007 0008 class Commutex; 0009 class ConnectionPrivate; 0010 0011 // these are exclusively sent from and to Connection instances so far, nevertheless it seems logical 0012 // to dispatch events in EventDispatcher, what with the name... 0013 struct Event 0014 { 0015 enum Type : uint32 { 0016 SendMessage = 0, 0017 SendMessageWithPendingReply, 0018 SpontaneousMessageReceived, 0019 PendingReplySuccess, 0020 PendingReplyFailure, 0021 PendingReplyCancel, // 5 0022 MainConnectionDisconnect, 0023 SecondaryConnectionConnect, 0024 SecondaryConnectionDisconnect, 0025 UniqueNameReceived 0026 }; 0027 0028 Event(Type t) : type(t) {} 0029 virtual ~Event() = 0; 0030 0031 Type type; 0032 }; 0033 0034 struct SendMessageEvent : public Event 0035 { 0036 SendMessageEvent() : Event(Event::SendMessage) {} 0037 Message message; 0038 }; 0039 0040 struct SendMessageWithPendingReplyEvent : public Event 0041 { 0042 SendMessageWithPendingReplyEvent() : Event(Event::SendMessageWithPendingReply) {} 0043 Message message; 0044 ConnectionPrivate *connection; 0045 }; 0046 0047 struct SpontaneousMessageReceivedEvent : public Event 0048 { 0049 SpontaneousMessageReceivedEvent() : Event(Event::SpontaneousMessageReceived) {} 0050 Message message; 0051 }; 0052 0053 struct PendingReplySuccessEvent : public Event 0054 { 0055 PendingReplySuccessEvent() : Event(Event::PendingReplySuccess) {} 0056 Message reply; 0057 }; 0058 0059 struct PendingReplyFailureEvent : public Event 0060 { 0061 PendingReplyFailureEvent() : Event(Event::PendingReplyFailure) {} 0062 uint32 m_serial; 0063 Error m_error; 0064 }; 0065 0066 struct PendingReplyCancelEvent : public Event 0067 { 0068 PendingReplyCancelEvent() : Event(Event::PendingReplyCancel) {} 0069 uint32 serial; 0070 }; 0071 0072 struct MainConnectionDisconnectEvent : public Event 0073 { 0074 MainConnectionDisconnectEvent() : Event(Event::MainConnectionDisconnect) {} 0075 Error error; 0076 }; 0077 0078 struct SecondaryConnectionConnectEvent : public Event 0079 { 0080 SecondaryConnectionConnectEvent() : Event(Event::SecondaryConnectionConnect) {} 0081 ConnectionPrivate *connection; 0082 Commutex *id; 0083 }; 0084 0085 struct SecondaryConnectionDisconnectEvent : public Event 0086 { 0087 SecondaryConnectionDisconnectEvent() : Event(Event::SecondaryConnectionDisconnect) {} 0088 ConnectionPrivate *connection; 0089 }; 0090 0091 struct UniqueNameReceivedEvent : public Event 0092 { 0093 UniqueNameReceivedEvent() : Event(Event::UniqueNameReceived) {} 0094 std::string uniqueName; 0095 }; 0096 0097 #endif // EVENT_H