mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-19 00:41:43 +00:00
163 lines
4.4 KiB
C++
163 lines
4.4 KiB
C++
// Copyright (c) FIRST and other WPILib contributors.
|
|
// Open Source Software; you can modify and/or share it under the terms of
|
|
// the WPILib BSD license file in the root directory of this project.
|
|
|
|
#include "TestPrinters.h"
|
|
|
|
#include "Handle.h"
|
|
#include "PubSubOptions.h"
|
|
#include "net/Message.h"
|
|
#include "net3/Message3.h"
|
|
#include "networktables/NetworkTableValue.h"
|
|
#include "ntcore_cpp.h"
|
|
|
|
namespace nt {
|
|
|
|
void PrintTo(const Event& event, std::ostream* os) {
|
|
*os << "Event{listener=";
|
|
PrintTo(Handle{event.listener}, os);
|
|
*os << ", flags=" << event.flags;
|
|
// *os << ", name=\"" << event.name << "\", flags=" << event.flags
|
|
// << "value=";
|
|
// PrintTo(event.value, os);
|
|
*os << '}';
|
|
}
|
|
|
|
void PrintTo(const Handle& handle, std::ostream* os) {
|
|
*os << "Handle{";
|
|
switch (handle.GetType()) {
|
|
case Handle::kListener:
|
|
*os << "kListener";
|
|
break;
|
|
case Handle::kListenerPoller:
|
|
*os << "kListenerPoller";
|
|
break;
|
|
case Handle::kEntry:
|
|
*os << "kEntry";
|
|
break;
|
|
case Handle::kInstance:
|
|
*os << "kInstance";
|
|
break;
|
|
case Handle::kTopic:
|
|
*os << "kTopic";
|
|
break;
|
|
case Handle::kSubscriber:
|
|
*os << "kSubscriber";
|
|
break;
|
|
case Handle::kPublisher:
|
|
*os << "kPublisher";
|
|
break;
|
|
default:
|
|
*os << "UNKNOWN";
|
|
break;
|
|
}
|
|
*os << ", " << handle.GetInst() << ", " << handle.GetIndex() << '}';
|
|
}
|
|
|
|
void PrintTo(const net3::Message3& msg, std::ostream* os) {
|
|
*os << "Message{";
|
|
switch (msg.type()) {
|
|
case net3::Message3::kKeepAlive:
|
|
*os << "kKeepAlive";
|
|
break;
|
|
case net3::Message3::kClientHello:
|
|
*os << "kClientHello";
|
|
break;
|
|
case net3::Message3::kProtoUnsup:
|
|
*os << "kProtoUnsup";
|
|
break;
|
|
case net3::Message3::kServerHelloDone:
|
|
*os << "kServerHelloDone";
|
|
break;
|
|
case net3::Message3::kServerHello:
|
|
*os << "kServerHello";
|
|
break;
|
|
case net3::Message3::kClientHelloDone:
|
|
*os << "kClientHelloDone";
|
|
break;
|
|
case net3::Message3::kEntryAssign:
|
|
*os << "kEntryAssign";
|
|
break;
|
|
case net3::Message3::kEntryUpdate:
|
|
*os << "kEntryUpdate";
|
|
break;
|
|
case net3::Message3::kFlagsUpdate:
|
|
*os << "kFlagsUpdate";
|
|
break;
|
|
case net3::Message3::kEntryDelete:
|
|
*os << "kEntryDelete";
|
|
break;
|
|
case net3::Message3::kClearEntries:
|
|
*os << "kClearEntries";
|
|
break;
|
|
case net3::Message3::kExecuteRpc:
|
|
*os << "kExecuteRpc";
|
|
break;
|
|
case net3::Message3::kRpcResponse:
|
|
*os << "kRpcResponse";
|
|
break;
|
|
default:
|
|
*os << "UNKNOWN";
|
|
break;
|
|
}
|
|
*os << ": str=\"" << msg.str() << "\", id=" << msg.id()
|
|
<< ", flags=" << msg.flags() << ", seq_num_uid=" << msg.seq_num_uid()
|
|
<< ", value=";
|
|
PrintTo(msg.value(), os);
|
|
*os << '}';
|
|
}
|
|
|
|
void PrintTo(const Value& value, std::ostream* os) {
|
|
*os << "Value{";
|
|
switch (value.type()) {
|
|
case NT_UNASSIGNED:
|
|
break;
|
|
case NT_BOOLEAN:
|
|
*os << "boolean, " << (value.GetBoolean() ? "true" : "false");
|
|
break;
|
|
case NT_DOUBLE:
|
|
*os << "double, " << value.GetDouble();
|
|
break;
|
|
case NT_FLOAT:
|
|
*os << "float, " << value.GetFloat();
|
|
break;
|
|
case NT_INTEGER:
|
|
*os << "int, " << value.GetInteger();
|
|
break;
|
|
case NT_STRING:
|
|
*os << "string, \"" << value.GetString() << '"';
|
|
break;
|
|
case NT_RAW:
|
|
*os << "raw, " << ::testing::PrintToString(value.GetRaw());
|
|
break;
|
|
case NT_BOOLEAN_ARRAY:
|
|
*os << "boolean[], " << ::testing::PrintToString(value.GetBooleanArray());
|
|
break;
|
|
case NT_DOUBLE_ARRAY:
|
|
*os << "double[], " << ::testing::PrintToString(value.GetDoubleArray());
|
|
break;
|
|
case NT_FLOAT_ARRAY:
|
|
*os << "float[], " << ::testing::PrintToString(value.GetFloatArray());
|
|
break;
|
|
case NT_INTEGER_ARRAY:
|
|
*os << "int[], " << ::testing::PrintToString(value.GetIntegerArray());
|
|
break;
|
|
case NT_STRING_ARRAY:
|
|
*os << "string[], " << ::testing::PrintToString(value.GetStringArray());
|
|
break;
|
|
default:
|
|
*os << "UNKNOWN TYPE " << value.type();
|
|
break;
|
|
}
|
|
*os << '}';
|
|
}
|
|
|
|
void PrintTo(const PubSubOptionsImpl& options, std::ostream* os) {
|
|
*os << "PubSubOptions{periodicMs=" << options.periodicMs
|
|
<< ", pollStorage=" << options.pollStorage
|
|
<< ", sendAll=" << options.sendAll
|
|
<< ", keepDuplicates=" << options.keepDuplicates << '}';
|
|
}
|
|
|
|
} // namespace nt
|