source: flair-src/branches/mavlink/tools/Controller/Mavlink/src/Forwarder.cpp @ 71

Last change on this file since 71 was 71, checked in by Thomas Fuhrmann, 5 years ago

Add class for MavlinkPlanner?

File size: 2.0 KB
Line 
1// %flair:license{
2// This file is part of the Flair framework distributed under the
3// CECILL-C License, Version 1.0.
4// %flair:license}
5//  created:    2016/09/02
6//  filename:   Forwarder.cpp
7//
8//  authors:    Thomas Fuhrmann
9//              Copyright Heudiasyc UMR UTC/CNRS 7253
10//
11//  version:    $Id: $
12//
13//  purpose:    Forward input data to output data, using sockets
14//
15//
16/*********************************************************************/
17
18#include "Forwarder.h"
19
20#include <Socket.h>
21#include <Thread.h>
22#include <FrameworkManager.h>
23
24//todo remove for tests
25#include <iostream>
26
27using namespace std;
28using namespace flair::core;
29
30Forwarder::Forwarder(const FrameworkManager *parent, string name, string &inputAddress,
31                                         int inputPort, string &outputAddress, int outputPort):
32                                         Thread(parent, name, 6), inputAddress(inputAddress), 
33                                         inputPort(inputPort), outputAddress(outputAddress),
34                                         outputPort(outputPort) {
35  cout << "MavPlanner Forwarder constructor" << endl;
36
37  // string tmpOutput = outputAddress + ":" + to_string(outputPort);
38  // cout << "MavPlanner Forwarder output address : " << tmpOutput << endl;
39
40  cout << "input socket : " << inputAddress + ":" + to_string(inputPort) << endl;
41  cout << "output socket : " << outputAddress + ":" + to_string(outputPort) << endl;
42
43  inputSocket = new Socket((Thread *)this, "input socket", inputAddress + ":" + to_string(inputPort));
44  outputSocket = new Socket((Thread *)this, "output socket", outputAddress + ":" + to_string(outputPort));
45}
46
47Forwarder::~Forwarder() {
48
49}
50
51void Forwarder::Run() {
52  if (getFrameworkManager()->ErrorOccured()) {
53    SafeStop();
54    Thread::Err("An error occurred, we don't launch the Run loop.\n");
55  }
56  int recvDataSize = 0;
57  char* srcBuffer;
58  size_t srcSize;
59  while (!ToBeStopped()) {
60    // Thread::SleepMS(2000);
61    // TIME_NONBLOCK
62    recvDataSize = inputSocket->RecvMessage(inputBuffer, 200, 5000000000, srcBuffer, &srcSize);
63    cout << "Forwarder message received, size="<< recvDataSize << endl;
64        outputSocket->SendMessage(inputBuffer, recvDataSize);
65  }
66}
Note: See TracBrowser for help on using the repository browser.