@@ -60,15 +60,23 @@ ProxySupervisor::ProxySupervisor(Channel *duplex, pthread_mutex_t *mutex) {
60
60
printf (" Started supervisor.\n " );
61
61
this ->channel = duplex;
62
62
this ->mutex = mutex;
63
+ this ->proxyResult = nullptr ;
63
64
64
65
pthread_create (&this ->threadid , nullptr , readSocket, this );
65
66
}
66
67
68
+ bool isEvent (nlohmann::basic_json<> parsed) {
69
+ return parsed.find (" topic" ) != parsed.end ();
70
+ }
71
+
72
+ bool isReply (nlohmann::basic_json<> parsed) {
73
+ return parsed.find (" success" ) != parsed.end ();
74
+ }
75
+
67
76
void ProxySupervisor::startPushDebuggerSocket () {
68
77
char _char;
69
78
uint32_t buf_idx = 0 ;
70
79
const uint32_t start_size = 1024 ;
71
- uint32_t current_size = start_size;
72
80
char *buffer = (char *)malloc (start_size);
73
81
74
82
printf (" Started listening for events from proxy device.\n " );
@@ -89,9 +97,19 @@ void ProxySupervisor::startPushDebuggerSocket() {
89
97
// first len argument
90
98
buffer[buf_idx] = ' \0 ' ;
91
99
try {
92
- Event *event = parseJSON (buffer);
93
- CallbackHandler::push_event (event);
94
- WARDuino::instance ()->debugger ->notifyPushedEvent ();
100
+ nlohmann::basic_json<> parsed = nlohmann::json::parse (buffer);
101
+ debug (" parseJSON: %s\n " , parsed.dump ().c_str ());
102
+
103
+ if (isEvent (parsed)) {
104
+ CallbackHandler::push_event (new Event (
105
+ *parsed.find (" topic" ), *parsed.find (" payload" )));
106
+ WARDuino::instance ()->debugger ->notifyPushedEvent ();
107
+ }
108
+
109
+ if (isReply (parsed)) {
110
+ this ->proxyResult = parsed;
111
+ }
112
+
95
113
buf_idx = 0 ;
96
114
} catch (const nlohmann::detail::parse_error &e) {
97
115
}
@@ -105,13 +123,8 @@ bool ProxySupervisor::send(
105
123
return n == size;
106
124
}
107
125
108
- char *ProxySupervisor::readReply (short int amount) {
109
- char *buffer = new char [amount + 1 ];
110
- bzero (buffer, amount + 1 );
111
- ssize_t n = this ->channel ->read (buffer, amount);
112
- if (n > 0 ) return buffer;
113
-
114
- delete[] buffer;
126
+ char *ProxySupervisor::readReply () {
127
+ // TODO use this->proxyResult
115
128
return nullptr ;
116
129
}
117
130
0 commit comments