Skip to content

Commit

Permalink
refactor(daisi): Use using instead of macros
Browse files Browse the repository at this point in the history
  • Loading branch information
ltoenning committed Oct 11, 2023
1 parent e45841c commit cdd378c
Show file tree
Hide file tree
Showing 5 changed files with 193 additions and 201 deletions.
110 changes: 54 additions & 56 deletions daisi/src/cpps/common/cpps_logger_ns3.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,36 +18,37 @@

#include "ns3/simulator.h"

#define TableDefinition static const DatabaseTable
#define ViewDefinition static const std::unordered_map<std::string, std::string>
using TableDefinition = const DatabaseTable;
using ViewDefinition = const std::unordered_map<std::string, std::string>;

namespace daisi::cpps {

// Refer to DatabaseTable and DatabaseColumnInfo definitions in ../logging/definitions.h
//! Don't forget to use .c_str() to convert std::string into a char array

// * CppsExecutedOrderUtility
TableDefinition kExecutedOrderUtility("CppsExecutedOrderUtility",
{{"OrderUuid", "%s", true, "TransportOrder(OrderUuid)"},
{"AMRUuid", "%s", true, "AMR(ApplicationUuid)"},
{"Timestamp_ms", "%lu", true},
{"ExpectedStartTime_ms", "%lf", true},
{"ExecutionDuration_ms", "%lf", true},
{"ExecutionDistance_m", "%lf", true},
{"TravelToPickupDuration_ms", "%lf", true},
{"TravelToPickupDistance_m", "%lf", true},
{"Makespan", "%lf", true},
{"Delay_ms", "%lf", true},
{"DeltaExecutionDuration_ms", "%lf", true},
{"DeltaExecutionDistance_m", "%lf", true},
{"DeltaTravelToPickupDuration_ms", "%lf", true},
{"DeltaTravelToPickupDistance_m", "%lf", true},
{"DeltaMakespan", "%lf", true},
{"QueueSize", "%u", true},
{"Quality", "%lf", true},
{"Costs", "%lf", true},
{"Utility", "%lf", true}},
"PRIMARY KEY(AMRUuid, OrderUuid, Timestamp_ms)");
static TableDefinition kExecutedOrderUtility("CppsExecutedOrderUtility",
{{"OrderUuid", "%s", true,
"TransportOrder(OrderUuid)"},
{"AMRUuid", "%s", true, "AMR(ApplicationUuid)"},
{"Timestamp_ms", "%lu", true},
{"ExpectedStartTime_ms", "%lf", true},
{"ExecutionDuration_ms", "%lf", true},
{"ExecutionDistance_m", "%lf", true},
{"TravelToPickupDuration_ms", "%lf", true},
{"TravelToPickupDistance_m", "%lf", true},
{"Makespan", "%lf", true},
{"Delay_ms", "%lf", true},
{"DeltaExecutionDuration_ms", "%lf", true},
{"DeltaExecutionDistance_m", "%lf", true},
{"DeltaTravelToPickupDuration_ms", "%lf", true},
{"DeltaTravelToPickupDistance_m", "%lf", true},
{"DeltaMakespan", "%lf", true},
{"QueueSize", "%u", true},
{"Quality", "%lf", true},
{"Costs", "%lf", true},
{"Utility", "%lf", true}},
"PRIMARY KEY(AMRUuid, OrderUuid, Timestamp_ms)");
static const std::string kCreateExecutedOrderUtility =
getCreateTableStatement(kExecutedOrderUtility);

Expand Down Expand Up @@ -82,12 +83,12 @@ void CppsLoggerNs3::logExecutedOrderCost(const ExecutedOrderUtilityLoggingInfo &
}

// * CppsMaterialFlow
TableDefinition kMaterialFlow("CppsMaterialFlow", {DatabaseColumnInfo{"Id"},
{"Timestamp_ms", "%u", true},
{"Uuid", "%s", true},
{"IpLogicalCore", "%s", true},
{"PortLogicalCore", "%u", true},
{"State", "%u", true}});
static TableDefinition kMaterialFlow("CppsMaterialFlow", {DatabaseColumnInfo{"Id"},
{"Timestamp_ms", "%u", true},
{"Uuid", "%s", true},
{"IpLogicalCore", "%s", true},
{"PortLogicalCore", "%u", true},
{"State", "%u", true}});
static const std::string kCreateMaterialFlow = getCreateTableStatement(kMaterialFlow);

void CppsLoggerNs3::logMaterialFlow(const std::string &mf_uuid, const std::string &ip,
Expand All @@ -108,20 +109,20 @@ void CppsLoggerNs3::logMaterialFlow(const std::string &mf_uuid, const std::strin
}

// * CppsNegotiationTraffic
TableDefinition kNegotiationTraffic("CppsNegotiationTraffic",
{DatabaseColumnInfo{"Id"},
{"TransportOrderId", "sql%u", true, "TransportOrder(Id)"},
{"Timestamp_ms", "%u", true},
{"SenderIp", "%s", true},
{"SenderPort", "%u", true},
{"TargetIp", "%s", true},
{"TargetPort", "%u", true},
{"MsgType", "%u", true},
{"Content", "%s"}});
static TableDefinition kNegotiationTraffic("CppsNegotiationTraffic", {DatabaseColumnInfo{"Id"},
{"TransportOrderId", "sql%u",
true, "TransportOrder(Id)"},
{"Timestamp_ms", "%u", true},
{"SenderIp", "%s", true},
{"SenderPort", "%u", true},
{"TargetIp", "%s", true},
{"TargetPort", "%u", true},
{"MsgType", "%u", true},
{"Content", "%s"}});
static const std::string kCreateNegotiationTraffic = getCreateTableStatement(kNegotiationTraffic);

TableDefinition kEnumCppsMessageType("enumCppsMessageType",
{{"Id", "%u", true, "", true}, {"Name", "%s", true}});
static TableDefinition kEnumCppsMessageType("enumCppsMessageType",
{{"Id", "%u", true, "", true}, {"Name", "%s", true}});
static const std::string kCreateEnumCppsMessageType = getCreateTableStatement(kEnumCppsMessageType);

void CppsLoggerNs3::logCppsMessageTypes() {
Expand All @@ -134,11 +135,11 @@ void CppsLoggerNs3::logCppsMessageTypes() {
// }
}

TableDefinition kCppsMessage("CppsTopicMessage", {
DatabaseColumnInfo{"Id"},
{"MessageUuid", "%s", true},
{"MessageContent", "%s", true},
});
static TableDefinition kCppsMessage("CppsTopicMessage", {
DatabaseColumnInfo{"Id"},
{"MessageUuid", "%s", true},
{"MessageContent", "%s", true},
});
static const std::string kCreateCppsMessage = getCreateTableStatement(kCppsMessage);

void CppsLoggerNs3::logCppsMessage(solanet::UUID msg_uuid, const std::string &msg_content) {
Expand All @@ -156,7 +157,7 @@ void CppsLoggerNs3::logCppsMessage(solanet::UUID msg_uuid, const std::string &ms
log_(getInsertStatement(kCppsMessage, t));
}

ViewDefinition kNegotiationTrafficReplacements = {
static ViewDefinition kNegotiationTrafficReplacements = {
{"MsgType", "enumCppsMessageType.Name AS MessageType"}};
static const std::string kCreateViewNegotiationTraffic = getCreateViewStatement(
kNegotiationTraffic, kNegotiationTrafficReplacements,
Expand Down Expand Up @@ -192,12 +193,12 @@ void CppsLoggerNs3::logNegotiationTraffic(const NegotiationTrafficLoggingInfo &l
}

// * CppsStation
TableDefinition kStation("CppsStation", {DatabaseColumnInfo{"Id"},
// {"ApplicationUuid", "%s", true},
{"Name", "%s", true},
{"Type", "%s", true},
{"PosX_m", "%lf", true},
{"PosY_M", "%lf", true}});
static TableDefinition kStation("CppsStation", {DatabaseColumnInfo{"Id"},
// {"ApplicationUuid", "%s", true},
{"Name", "%s", true},
{"Type", "%s", true},
{"PosX_m", "%lf", true},
{"PosY_M", "%lf", true}});
static const std::string kCreateStation = getCreateTableStatement(kStation);

void CppsLoggerNs3::logStation(const std::string &name, const std::string &type,
Expand Down Expand Up @@ -234,6 +235,3 @@ CppsLoggerNs3::~CppsLoggerNs3() {
}

} // namespace daisi::cpps

#undef TableDefinition
#undef ViewDefinition
75 changes: 37 additions & 38 deletions daisi/src/cpps/common/cpps_logger_ns3_amr.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,19 +17,18 @@
#include "cpps_logger_ns3.h"
#include "ns3/simulator.h"

#define TableDefinition static const DatabaseTable
#define ViewDefinition static const std::unordered_map<std::string, std::string>
using TableDefinition = const DatabaseTable;

namespace daisi::cpps {

// * CppsAMRHistory
TableDefinition kAmrHistory("CppsAMRHistory",
{DatabaseColumnInfo{"Id"},
{"Timestamp_ms", "%u", true},
{"AmrId", "sql%u", true, "CppsAutonomousMobileRobot(Id)"},
{"PosX_m", "%f", true},
{"PosY_m", "%f", true},
{"State", "%u", true}});
static TableDefinition kAmrHistory("CppsAMRHistory",
{DatabaseColumnInfo{"Id"},
{"Timestamp_ms", "%u", true},
{"AmrId", "sql%u", true, "CppsAutonomousMobileRobot(Id)"},
{"PosX_m", "%f", true},
{"PosY_m", "%f", true},
{"State", "%u", true}});
static const std::string kCreateAmrHistory = getCreateTableStatement(kAmrHistory);

void CppsLoggerNs3::logPositionUpdate(const AmrPositionLoggingInfo &logging_info) {
Expand All @@ -52,26 +51,26 @@ void CppsLoggerNs3::logPositionUpdate(const AmrPositionLoggingInfo &logging_info
}

// * CppsAutonomousMobileRobot
TableDefinition kAutonomousMobileRobot("CppsAutonomousMobileRobot",
{DatabaseColumnInfo{"Id"},
{"Timestamp_ms", "%u", true},
{"ApplicationUuid", "%s", true,
"DeviceApplication(ApplicationUuid)"},
{"FriendlyName", "%s"},
{"ModelName", "%s"},
{"IpLogicalService", "%s", true},
{"PortLogicalService", "%u", true},
{"IpPhysicalAsset", "%s", true},
{"PortPhysicalAsset", "%u", true},
{"IpLocalAsset", "%s", true},
{"PortLocalAsset", "%u", true},
{"LoadTime_ms", "%u", true},
{"UnloadTime_ms", "%u", true},
{"MaxWeight_kg", "%f", true},
{"MaxVelocity_mps", "%f", true},
{"MinVelocity_mps", "%f", true},
{"MaxAcceleration_mpss", "%f", true},
{"MaxDeceleration_mpss", "%f", true}});
static TableDefinition kAutonomousMobileRobot("CppsAutonomousMobileRobot",
{DatabaseColumnInfo{"Id"},
{"Timestamp_ms", "%u", true},
{"ApplicationUuid", "%s", true,
"DeviceApplication(ApplicationUuid)"},
{"FriendlyName", "%s"},
{"ModelName", "%s"},
{"IpLogicalService", "%s", true},
{"PortLogicalService", "%u", true},
{"IpPhysicalAsset", "%s", true},
{"PortPhysicalAsset", "%u", true},
{"IpLocalAsset", "%s", true},
{"PortLocalAsset", "%u", true},
{"LoadTime_ms", "%u", true},
{"UnloadTime_ms", "%u", true},
{"MaxWeight_kg", "%f", true},
{"MaxVelocity_mps", "%f", true},
{"MinVelocity_mps", "%f", true},
{"MaxAcceleration_mpss", "%f", true},
{"MaxDeceleration_mpss", "%f", true}});
static const std::string kCreateAmr = getCreateTableStatement(kAutonomousMobileRobot);

void CppsLoggerNs3::logAMR(const AmrLoggingInfo &amr_info) {
Expand Down Expand Up @@ -103,9 +102,9 @@ void CppsLoggerNs3::logAMR(const AmrLoggingInfo &amr_info) {
}

// * CppsService
TableDefinition kService("CppsService", {{"Uuid", "%s", true, "", true},
{"StartTime_ms", "%u"},
{"Type", "%u", true}});
static TableDefinition kService("CppsService", {{"Uuid", "%s", true, "", true},
{"StartTime_ms", "%u"},
{"Type", "%u", true}});
static const std::string kCreateService = getCreateTableStatement(kService);

void CppsLoggerNs3::logService(const std::string &uuid, uint8_t type) {
Expand All @@ -123,12 +122,12 @@ void CppsLoggerNs3::logService(const std::string &uuid, uint8_t type) {
}

// * CppsServiceTransport
TableDefinition kServiceTransport("CppsServiceTransport",
{DatabaseColumnInfo{"Id"},
{"Uuid", "%s", true},
{"AmrId", "sql%u", true, "CppsAutonomousMobileRobot(Id)"},
{"LoadCarrierType", "%s", true},
{"MaxWeightPayload_kg", "%f", true}});
static TableDefinition kServiceTransport("CppsServiceTransport",
{DatabaseColumnInfo{"Id"},
{"Uuid", "%s", true},
{"AmrId", "sql%u", true, "CppsAutonomousMobileRobot(Id)"},
{"LoadCarrierType", "%s", true},
{"MaxWeightPayload_kg", "%f", true}});
static const std::string kCreateServiceTransport = getCreateTableStatement(kServiceTransport);

void CppsLoggerNs3::logTransportService(const sola::Service &service, bool /*active*/) {
Expand Down
4 changes: 2 additions & 2 deletions daisi/src/logging/definitions.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,13 @@
#include <unordered_set>

// Args: (Application UUID)
using LogDeviceApp = const std::function<void(const std::string &)>;
using LogDeviceApp = std::function<void(const std::string &)>;

// Args: (SQL statement)
using LogFunction = std::function<void(const std::string &)>;

// Args: (Event UUID, Event type, Application ID)
using LogEvent = const std::function<void(const std::string &, uint8_t, const std::string &)>;
using LogEvent = std::function<void(const std::string &, uint8_t, const std::string &)>;

/// @brief Creates a SQL Statement by calling snprintf. The amount of format specifiers in
/// format_str has to be identical to the provided values
Expand Down
Loading

0 comments on commit cdd378c

Please sign in to comment.