Merge pull request #58 from tripzero/master
[profile/ivi/automotive-message-broker.git] / tests / testProtocolCommon.h
1 #ifndef TESTS_PROTOCOL_COMMON_H_
2 #define TESTS_PROTOCOL_COMMON_H_
3
4 #include <jsonprotocol.h>
5 #include <abstractio.hpp>
6 #include <QLocalSocket>
7
8 class DomainSocket : public AbstractIo
9 {
10 public:
11
12         DomainSocket() { }
13         DomainSocket(QLocalSocket* sock): socket(sock) { }
14         // AbstractIo interface
15 public:
16         bool open()
17         {
18                 if(!socket)
19                         socket = std::shared_ptr<QLocalSocket>(new QLocalSocket());
20
21                 socket->connectToServer("/tmp/amb");
22
23                 return socket->errorString().isEmpty();
24         }
25         bool close()
26         {
27                 if(socket)
28                         socket->close();
29
30                 return true;
31         }
32         bool isOpen()
33         {
34                 return socket && socket->state() == QLocalSocket::ConnectedState;
35         }
36
37         string read()
38         {
39                 return socket->readAll().data();
40         }
41
42         void write(const string & data)
43         {
44                 socket->write(data.c_str(), data.length());
45         }
46
47         int fileDescriptor()
48         {
49                 return socket->socketDescriptor();
50         }
51
52         std::string errorString()
53         {
54                 return socket->errorString().toStdString();
55         }
56
57         QLocalSocket *getSocket() { return socket.get(); }
58
59 private:
60         std::shared_ptr<QLocalSocket> socket;
61 };
62
63 #endif