blob: 79ecebffd4013e33a441b084e9381958e94223d6 [file] [log] [blame]
#include <DebugDisplay.h>
#include <DrbdMon.h>
DebugDisplay::DebugDisplay(
ResourcesMap& resources_map_ref,
MessageLog& log_ref,
HotkeysMap& hotkeys_info_ref
):
resources_map(resources_map_ref),
log(log_ref),
hotkeys_info(hotkeys_info_ref)
{
}
DebugDisplay::~DebugDisplay() noexcept
{
}
void DebugDisplay::initial_display()
{
display_header();
std::fputs("Reading initial DRBD status\n", stdout);
}
void DebugDisplay::status_display()
{
display_header();
ResourcesMap::ValuesIterator res_iter(resources_map);
while (res_iter.has_next())
{
DrbdResource& resource = *(res_iter.next());
const std::string& res_name = resource.get_name();
std::fprintf(stdout, "Resource %s\n", res_name.c_str());
std::fputs(" Volumes:\n", stdout);
VolumesMap::ValuesIterator vol_iter = resource.volumes_iterator();
while (vol_iter.has_next())
{
DrbdVolume& volume = *(vol_iter.next());
uint16_t vol_id = volume.get_volume_nr();
fprintf(stdout, " * Volume #%u\n", (unsigned int) vol_id);
}
std::fputs(" Connections:\n", stdout);
ConnectionsMap::ValuesIterator conn_iter = resource.connections_iterator();
while (conn_iter.has_next())
{
DrbdConnection& connection = *(conn_iter.next());
const std::string& conn_name = connection.get_name();
std::fprintf(stdout, " * Connection -> %s\n", conn_name.c_str());
std::fputs(" Peer Volumes:\n", stdout);
VolumesMap::ValuesIterator peer_vol_iter = connection.volumes_iterator();
while (peer_vol_iter.has_next())
{
DrbdVolume& volume = *(peer_vol_iter.next());
uint16_t vol_id = volume.get_volume_nr();
std::fprintf(stdout, " * Peer-Volume #%u\n", (unsigned int) vol_id);
}
}
}
display_hotkeys_info();
std::fputc('\n', stdout);
std::fflush(stdout);
}
void DebugDisplay::display_header() const
{
std::fprintf(stdout, "%s DebugDisplay v%s\n\n", DrbdMon::PROGRAM_NAME.c_str(), DrbdMon::VERSION.c_str());
}
void DebugDisplay::set_terminal_size(uint16_t size_x, uint16_t size_y)
{
// no-op
}
void DebugDisplay::display_hotkeys_info() const
{
HotkeysMap::NodesIterator hotkeys_iter(hotkeys_info);
size_t count = hotkeys_iter.get_size();
for (size_t index = 0; index < count; ++index)
{
HotkeysMap::Node* node = hotkeys_iter.next();
const char hotkey = *(node->get_key());
const std::string& description = *(node->get_value());
if (index > 0)
{
std::fputs(" / ", stdout);
}
std::fprintf(stdout, "%c => %s", hotkey, description.c_str());
}
std::fputc('\n', stdout);
}
void DebugDisplay::key_pressed(const char key)
{
}