Skip to content

Commit

Permalink
* [UDPForward] Fix bug
Browse files Browse the repository at this point in the history
  • Loading branch information
jiangzp committed Mar 17, 2022
1 parent 049fd2a commit e08cd7e
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 7 deletions.
3 changes: 3 additions & 0 deletions changelog.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
# Changelog of PicoScenes Plugin Development Kit (PDK)

## Mar. 17, 2022
* [UDPForward] Fix bug

## Mar. 16, 2022
* [UDPForward] Bring back this plugin, simplified to only --forward-to option, like "--forward-to 127.0.0.1:50000"

Expand Down
12 changes: 7 additions & 5 deletions plugin-forwarder/UDPForwarderPlugin.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ std::shared_ptr<boost::program_options::options_description> UDPForwarderPlugin:
}

std::string UDPForwarderPlugin::pluginStatus() {
return "Destination IP/Port: " + destinationIP + ":" + std::to_string(destinationPort);
return "Destination IP/Port: " + destinationIP.value_or("null") + ":" + std::to_string(destinationPort.value_or(0u));
}

void UDPForwarderPlugin::parseAndExecuteCommands(const std::string &commandString) {
Expand All @@ -38,19 +38,21 @@ void UDPForwarderPlugin::parseAndExecuteCommands(const std::string &commandStrin
po::notify(vm);

if (vm.count("forward-to")) {
auto input = destinationIP = vm["forward-to"].as<std::string>();
auto input = vm["forward-to"].as<std::string>();
std::vector<std::string> segments;
boost::split(segments, input, boost::is_any_of(":"), boost::token_compress_on);
boost::trim(segments[0]);
boost::trim(segments[1]);
destinationIP = segments[0];
destinationPort = boost::lexical_cast<uint16_t>(segments[1]);

LoggingService_info_print("UDP Forwarder destination: {}/{}\n", destinationIP, destinationPort);
LoggingService_info_print("UDP Forwarder destination: {}/{}\n", *destinationIP, *destinationPort);
}
}

void UDPForwarderPlugin::rxHandle(const ModularPicoScenesRxFrame &rxframe) {
auto frameBuffer = rxframe.toBuffer();
UDPService::getInstance("Forwarder" + destinationIP + std::to_string(destinationPort))->sendData(frameBuffer.data(), frameBuffer.size(), destinationIP, destinationPort);
if (destinationIP && destinationPort) {
auto frameBuffer = rxframe.toBuffer();
UDPService::getInstance("Forwarder" + *destinationIP + std::to_string(*destinationPort))->sendData(frameBuffer.data(), frameBuffer.size(), *destinationIP, *destinationPort);
}
}
4 changes: 2 additions & 2 deletions plugin-forwarder/UDPForwarderPlugin.hxx
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@ public:
}

private:
std::string destinationIP{};
uint16_t destinationPort{0};
std::optional<std::string> destinationIP;
std::optional<uint16_t> destinationPort;
std::shared_ptr<po::options_description> options;
};

Expand Down

0 comments on commit e08cd7e

Please sign in to comment.