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