Segmentation fault
This commit is contained in:
parent
ac7411aa58
commit
2418aafa97
48
app.cpp
48
app.cpp
@ -1,12 +1,14 @@
|
||||
#include "app.h"
|
||||
|
||||
App::App() {
|
||||
st.connectRequest("sdi.hevs.ch", 61614, "/", "sdi10", "809c02f36becb0868da98761fe3209f6");
|
||||
st.sendRequest("/topic/sdi10.gem.command", "right");
|
||||
st.subscribeRequest("/topic/sdi10.gem.field", 1);
|
||||
App::App(Stomp* st) {
|
||||
st_ = st;
|
||||
st_->connectRequest("sdi.hevs.ch", 61614, "/", "sdi10", "809c02f36becb0868da98761fe3209f6");
|
||||
st_->sendRequest("/topic/sdi10.gem.command", "right");
|
||||
st_->subscribeRequest("/topic/sdi10.gem.field", 1);
|
||||
|
||||
}
|
||||
|
||||
void App::connectConfirmation(bool success, int version) {
|
||||
void App::connectConfirmation(bool success, QString version) {
|
||||
|
||||
}
|
||||
|
||||
@ -15,11 +17,14 @@ void App::sendConfirmation(bool success) {
|
||||
}
|
||||
|
||||
void App::subscribeConfirmation(bool success) {
|
||||
st.sendRequest("/topic/sdi10.gem.command", "up");
|
||||
st_->sendRequest("/topic/sdi10.gem.command", "up");
|
||||
}
|
||||
|
||||
void App::receiveIndication(int id, QString destination, QString body) {
|
||||
|
||||
//qDebug() << "Indication " << id << " : " << destination << Qt::endl << body << Qt::endl;
|
||||
if(destination.contains("field")){
|
||||
fillField(body);
|
||||
}
|
||||
}
|
||||
|
||||
void App::disconnectConfirmation() {
|
||||
@ -29,3 +34,32 @@ void App::disconnectConfirmation() {
|
||||
void App::disconnectIndication() {
|
||||
|
||||
}
|
||||
|
||||
void App::addGem(int x, int y, int pts) {
|
||||
Gem g;
|
||||
g.x = x;
|
||||
g.y = y;
|
||||
g.pts = pts;
|
||||
gems_.append(g);
|
||||
}
|
||||
|
||||
void App::fillField(QString body) {
|
||||
static int x = 0;
|
||||
static int y = 0;
|
||||
for(int i = 0; i<body.length(); i++) {
|
||||
const QChar c = body.at(i);
|
||||
if(c == 'g') addGem(x, y, 100);
|
||||
if(c == 'G') addGem(x, y, 250);
|
||||
if(c == 'D') addGem(x, y, 500);
|
||||
if(c == 'Y') {
|
||||
myVehicle_.x = x;
|
||||
myVehicle_.y = y;
|
||||
myVehicle_.me = true;
|
||||
}
|
||||
if(c == '\n') {
|
||||
y++;
|
||||
x = 0;
|
||||
}
|
||||
x++;
|
||||
}
|
||||
}
|
||||
|
24
app.h
24
app.h
@ -7,12 +7,12 @@
|
||||
|
||||
class App : public QObject, public interface::iStompObserver {
|
||||
public:
|
||||
App();
|
||||
App(Stomp* st);
|
||||
~App() = default;
|
||||
|
||||
// iStompObserver interface
|
||||
private:
|
||||
void connectConfirmation(bool success, int version);
|
||||
void connectConfirmation(bool success, QString version);
|
||||
void sendConfirmation(bool success);
|
||||
void subscribeConfirmation(bool success);
|
||||
void receiveIndication(int id, QString destination, QString body);
|
||||
@ -20,7 +20,25 @@ private:
|
||||
void disconnectIndication();
|
||||
|
||||
private:
|
||||
Stomp st;
|
||||
Stomp* st_;
|
||||
|
||||
typedef struct {
|
||||
int x;
|
||||
int y;
|
||||
int pts;
|
||||
} Gem;
|
||||
|
||||
typedef struct {
|
||||
int x;
|
||||
int y;
|
||||
bool me;
|
||||
} Vehicle;
|
||||
|
||||
QVector<Gem> gems_;
|
||||
Vehicle myVehicle_;
|
||||
void addGem(int x, int y, int pts);
|
||||
void fillField(QString body);
|
||||
|
||||
};
|
||||
|
||||
#endif // APP_H
|
||||
|
@ -13,7 +13,7 @@ protected:
|
||||
iStompObserver() {}
|
||||
|
||||
public:
|
||||
virtual void connectConfirmation(bool success, int version) = 0;
|
||||
virtual void connectConfirmation(bool success, QString version) = 0;
|
||||
virtual void sendConfirmation(bool success) = 0;
|
||||
virtual void subscribeConfirmation(bool success) = 0;
|
||||
virtual void receiveIndication(int id, QString destination, QString body) = 0;
|
||||
|
5
main.cpp
5
main.cpp
@ -2,14 +2,15 @@
|
||||
#include <QSslSocket>
|
||||
#include <QThread>
|
||||
|
||||
#include "stompframe.h"
|
||||
#include "stomp.h"
|
||||
#include "app.h"
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
QApplication application(argc, argv);
|
||||
|
||||
App app;
|
||||
Stomp st;
|
||||
App app(&st);
|
||||
st.subscribe(&app);
|
||||
|
||||
return application.exec();
|
||||
}
|
||||
|
42
stomp.cpp
42
stomp.cpp
@ -1,9 +1,12 @@
|
||||
#include "stomp.h"
|
||||
|
||||
Stomp::Stomp() {
|
||||
for(int i = 0; i< MAX_OBSERVER; i++) {
|
||||
observer_[i] = nullptr;
|
||||
}
|
||||
socket_.setPeerVerifyMode(QSslSocket::VerifyNone);
|
||||
QObject::connect(&socket_, &QSslSocket::readyRead, [&] {
|
||||
auto frame = STOMPFrame::receive(socket_);
|
||||
STOMPFrame frame = STOMPFrame::receive(socket_);
|
||||
|
||||
switch(frame.command()) {
|
||||
case STOMPFrame::CONNECTED:
|
||||
@ -13,6 +16,7 @@ Stomp::Stomp() {
|
||||
break;
|
||||
|
||||
case STOMPFrame::MESSAGE:
|
||||
notifyReceiveIndication(1, frame.headers().value("destination"), frame.body());
|
||||
qDebug() << "Message" << Qt::endl;
|
||||
break;
|
||||
|
||||
@ -104,26 +108,50 @@ void Stomp::disconnectRequest() {
|
||||
}
|
||||
|
||||
void Stomp::notifyConnectConfirmation(bool success, QString version) {
|
||||
|
||||
for(int i = 0; i < MAX_OBSERVER; i++) {
|
||||
if (observer_[i] != nullptr){
|
||||
observer_[i]->connectConfirmation(success, version);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Stomp::notifySendConfirmation(bool success) {
|
||||
|
||||
for(int i = 0; i < MAX_OBSERVER; i++) {
|
||||
if (observer_[i] != nullptr){
|
||||
observer_[i]->sendConfirmation(success);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Stomp::notifySubscribeConfirmation(bool success) {
|
||||
|
||||
for(int i = 0; i < MAX_OBSERVER; i++) {
|
||||
if (observer_[i] != nullptr){
|
||||
observer_[i]->subscribeConfirmation(success);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Stomp::notifyReceiveIndication(int id, QString destination, QString body) {
|
||||
|
||||
for(int i = 0; i < MAX_OBSERVER; i++) {
|
||||
if (observer_[i] != nullptr){
|
||||
observer_[i]->receiveIndication(id, destination, body);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Stomp::notifyDisconnectConfirmation() {
|
||||
|
||||
for(int i = 0; i < MAX_OBSERVER; i++) {
|
||||
if (observer_[i] != nullptr){
|
||||
observer_[i]->disconnectConfirmation();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Stomp::notifyDisconnectIndication() {
|
||||
|
||||
for(int i = 0; i < MAX_OBSERVER; i++) {
|
||||
if (observer_[i] != nullptr){
|
||||
observer_[i]->disconnectIndication();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user