-rw-r--r-- | x11/ipc/common/ocoppacket.cpp | 59 | ||||
-rw-r--r-- | x11/ipc/common/ocoppacket.h | 64 |
2 files changed, 123 insertions, 0 deletions
diff --git a/x11/ipc/common/ocoppacket.cpp b/x11/ipc/common/ocoppacket.cpp new file mode 100644 index 0000000..0d8ae84 --- a/dev/null +++ b/x11/ipc/common/ocoppacket.cpp | |||
@@ -0,0 +1,59 @@ | |||
1 | |||
2 | #include <qdatastream.h> | ||
3 | |||
4 | #include "ocoppacket.h" | ||
5 | |||
6 | OCOPPacket::OCOPPacket( int type, | ||
7 | const QCString& channel, | ||
8 | const QCString& header, | ||
9 | const QByteArray& array ) | ||
10 | : m_type( type ), m_channel( channel ), | ||
11 | m_header( header ), m_content( array ) | ||
12 | { | ||
13 | } | ||
14 | OCOPHead OCOPPacket::head()const { | ||
15 | OCOPHead head; | ||
16 | memset(&head, 0, sizeof(head) ); | ||
17 | |||
18 | head.magic = 47; | ||
19 | head.type = m_type; | ||
20 | head.chlen = m_channel.size(); | ||
21 | head.funclen = m_header.size(); | ||
22 | head.datalen = m_content.size(); | ||
23 | |||
24 | return head; | ||
25 | }; | ||
26 | QByteArray OCOPPacket::toByteArray()const { | ||
27 | QByteArray array; | ||
28 | QDataStream stream(array, IO_WriteOnly ); | ||
29 | stream << m_type; | ||
30 | stream << m_channel; | ||
31 | stream << m_header; | ||
32 | stream << m_content; | ||
33 | |||
34 | return array; | ||
35 | } | ||
36 | int OCOPPacket::type()const { | ||
37 | return m_type; | ||
38 | } | ||
39 | QCString OCOPPacket::channel()const { | ||
40 | return m_channel; | ||
41 | } | ||
42 | QCString OCOPPacket::header()const { | ||
43 | return m_header; | ||
44 | } | ||
45 | QByteArray OCOPPacket::content()const { | ||
46 | return m_content; | ||
47 | } | ||
48 | void OCOPPacket::setType( int type ) { | ||
49 | m_type = type; | ||
50 | } | ||
51 | void OCOPPacket::setChannel( const QCString& chan ) { | ||
52 | m_channel = chan; | ||
53 | } | ||
54 | void OCOPPacket::setHeader( const QCString& head ) { | ||
55 | m_header = head; | ||
56 | } | ||
57 | void OCOPPacket::setContent( const QByteArray& arra ) { | ||
58 | m_content = arra; | ||
59 | } | ||
diff --git a/x11/ipc/common/ocoppacket.h b/x11/ipc/common/ocoppacket.h new file mode 100644 index 0000000..490ff03 --- a/dev/null +++ b/x11/ipc/common/ocoppacket.h | |||
@@ -0,0 +1,64 @@ | |||
1 | /* GPL!*/ | ||
2 | |||
3 | #ifndef OPIE_OCOP_PACKET_H | ||
4 | #define OPIE_OCOP_PACKET_H | ||
5 | |||
6 | #include <qcstring.h> | ||
7 | #include <qstring.h> | ||
8 | |||
9 | /** | ||
10 | * This is the head which will be sent | ||
11 | * in advance to every packet | ||
12 | */ | ||
13 | struct OCOPHead { | ||
14 | int magic; | ||
15 | int type; | ||
16 | int chlen; | ||
17 | int funclen; | ||
18 | int datalen; | ||
19 | }; | ||
20 | |||
21 | /** | ||
22 | * This is the basic packet we will | ||
23 | * use for the communication between server | ||
24 | * and client | ||
25 | */ | ||
26 | class OCOPPacket { | ||
27 | public: | ||
28 | enum Type { | ||
29 | Register = 0, Unregister, Call, | ||
30 | Method, Reply, RegisterChannel, | ||
31 | UnregisterChannel, Return, Signal, | ||
32 | IsRegistered | ||
33 | }; | ||
34 | /** | ||
35 | * the c'tor | ||
36 | * type the Type of this packet | ||
37 | * the Channel | ||
38 | * the header of the function | ||
39 | * the data inside a QByteArray | ||
40 | */ | ||
41 | OCOPPacket( int type, const QCString& channel = QCString(), | ||
42 | const QCString& header = QCString(), | ||
43 | const QByteArray& array = QByteArray() ); | ||
44 | |||
45 | QByteArray toByteArray()const; | ||
46 | int type()const; | ||
47 | QCString channel()const; | ||
48 | QCString header()const; | ||
49 | QByteArray content()const; | ||
50 | OCOPHead head()const; | ||
51 | |||
52 | void setType( int type ); | ||
53 | void setChannel( const QCString& ); | ||
54 | void setHeader(const QCString& ); | ||
55 | void setContent( const QByteArray& ); | ||
56 | |||
57 | private: | ||
58 | int m_type; | ||
59 | QCString m_channel; | ||
60 | QCString m_header; | ||
61 | QByteArray m_content; | ||
62 | }; | ||
63 | |||
64 | #endif | ||