Преглед изворни кода

fixed sleep; added channels in data

old
Robin Thoni пре 10 година
родитељ
комит
4684551968
6 измењених фајлова са 25 додато и 17 уклоњено
  1. 3
    3
      server/inputbusiness.cpp
  2. 1
    1
      server/inputbusiness.h
  3. 7
    10
      server/mainclass.cpp
  4. 10
    0
      server/mainclass.h
  5. 2
    2
      server/servermanager.cpp
  6. 2
    1
      server/servermanager.h

+ 3
- 3
server/inputbusiness.cpp Прегледај датотеку

12
 {
12
 {
13
 }
13
 }
14
 
14
 
15
-QList<QVariant> InputBusiness::readAndSend(quint64 timestamp)
15
+QList<QPair<QVariant, QVariant>> InputBusiness::readAndSend(quint64 timestamp)
16
 {
16
 {
17
-    QList<QVariant> values;
17
+    QList<QPair<QVariant, QVariant>> values;
18
     foreach (auto channel, m_channels)
18
     foreach (auto channel, m_channels)
19
-        values.append(m_input->read(channel));
19
+        values.append(QPair<QVariant, QVariant>(channel, m_input->read(channel)));
20
     m_server->sendData(values, timestamp);
20
     m_server->sendData(values, timestamp);
21
     return values;
21
     return values;
22
 }
22
 }

+ 1
- 1
server/inputbusiness.h Прегледај датотеку

13
     virtual ~InputBusiness();
13
     virtual ~InputBusiness();
14
 
14
 
15
 public slots:
15
 public slots:
16
-    QList<QVariant> readAndSend(quint64 timestamp);
16
+    QList<QPair<QVariant, QVariant> > readAndSend(quint64 timestamp);
17
 
17
 
18
 private:
18
 private:
19
     InputManager* m_input;
19
     InputManager* m_input;

+ 7
- 10
server/mainclass.cpp Прегледај датотеку

3
 #include <QVariant>
3
 #include <QVariant>
4
 #include <iostream>
4
 #include <iostream>
5
 #include <sysexits.h>
5
 #include <sysexits.h>
6
-#include <sys/time.h>
7
 #include <unistd.h>
6
 #include <unistd.h>
8
 #include "qcommandlineparser.h"
7
 #include "qcommandlineparser.h"
9
 #include "mainclass.h"
8
 #include "mainclass.h"
55
 
54
 
56
 void MainClass::maySend()
55
 void MainClass::maySend()
57
 {
56
 {
58
-    struct timeval time;
59
-    gettimeofday(&time, NULL);
60
-    if (time.tv_usec - m_lastTime < 100)
61
-        usleep(100 - (time.tv_usec - m_lastTime));
62
-    gettimeofday(&time, NULL);
63
-    m_lastTime = time.tv_usec;
64
-    auto values = m_input->readAndSend(time.tv_usec);
57
+    auto time = getTime();
58
+    if (time - m_lastTime < 100)
59
+        usleep(100 - (time - m_lastTime));
60
+    m_lastTime = getTime();
61
+    auto values = m_input->readAndSend(time);
65
     if (m_verbose)
62
     if (m_verbose)
66
     {
63
     {
67
-        std::cout << time.tv_usec << ":";
64
+        std::cout << time << ":";
68
         foreach (auto value, values) {
65
         foreach (auto value, values) {
69
-            std::cout << " " << value.toInt();
66
+            std::cout << " " << value .first.toInt() << ":" << value.second.toInt();
70
         }
67
         }
71
         std::cout << std::endl;
68
         std::cout << std::endl;
72
     }
69
     }

+ 10
- 0
server/mainclass.h Прегледај датотеку

2
 #define MAINCLASS_H
2
 #define MAINCLASS_H
3
 
3
 
4
 #include <QObject>
4
 #include <QObject>
5
+#include <sys/time.h>
5
 #include "inputbusiness.h"
6
 #include "inputbusiness.h"
6
 
7
 
7
 class MainClass : public QObject
8
 class MainClass : public QObject
23
 
24
 
24
     void maySend();
25
     void maySend();
25
 
26
 
27
+    inline __suseconds_t getTime() const;
28
+
26
 private:
29
 private:
27
     InputBusiness* m_input;
30
     InputBusiness* m_input;
28
 
31
 
43
     void getOpts();
46
     void getOpts();
44
 };
47
 };
45
 
48
 
49
+__suseconds_t MainClass::getTime() const
50
+{
51
+    struct timeval time;
52
+    gettimeofday(&time, NULL);
53
+    return 1000000 * time.tv_sec + time.tv_usec;
54
+}
55
+
46
 #endif // MAINCLASS_H
56
 #endif // MAINCLASS_H

+ 2
- 2
server/servermanager.cpp Прегледај датотеку

12
     return m_server->listen(addr, port);
12
     return m_server->listen(addr, port);
13
 }
13
 }
14
 
14
 
15
-void ServerManager::sendData(const QList<QVariant> &values, const qint64 &timestamp)
15
+void ServerManager::sendData(const QList<QPair<QVariant, QVariant>> &values, const qint64 &timestamp)
16
 {
16
 {
17
     auto clients = m_server->getClients();
17
     auto clients = m_server->getClients();
18
     if (!clients.count())
18
     if (!clients.count())
22
 
22
 
23
     stream << timestamp << values.count();
23
     stream << timestamp << values.count();
24
     foreach (auto value, values)
24
     foreach (auto value, values)
25
-        stream << value;
25
+        stream << value.first << value.second;
26
     foreach (auto client, clients)
26
     foreach (auto client, clients)
27
         client->send(1, data);
27
         client->send(1, data);
28
 }
28
 }

+ 2
- 1
server/servermanager.h Прегледај датотеку

2
 #define SERVERMANAGER_H
2
 #define SERVERMANAGER_H
3
 
3
 
4
 #include <QObject>
4
 #include <QObject>
5
+#include <QPair>
5
 #include <ptsocket/ptserver.h>
6
 #include <ptsocket/ptserver.h>
6
 
7
 
7
 class ServerManager : public QObject
8
 class ServerManager : public QObject
15
 public slots:
16
 public slots:
16
     bool init(const QHostAddress& addr, const int& port);
17
     bool init(const QHostAddress& addr, const int& port);
17
 
18
 
18
-    void sendData(const QList<QVariant> &values, const qint64& timestamp);
19
+    void sendData(const QList<QPair<QVariant, QVariant> > &values, const qint64& timestamp);
19
 
20
 
20
 private:
21
 private:
21
     PTServer* m_server;
22
     PTServer* m_server;

Loading…
Откажи
Сачувај