diff --git a/Applications/ProcessManager/Makefile b/Applications/ProcessManager/Makefile index f8fca1d467..e9b84af765 100644 --- a/Applications/ProcessManager/Makefile +++ b/Applications/ProcessManager/Makefile @@ -11,8 +11,6 @@ OBJS = \ ProcessFileDescriptorMapWidget.o \ ProcessFileDescriptorMapModel.o \ NetworkStatisticsWidget.o \ - NetworkAdapterModel.o \ - SocketModel.o \ main.o APP = ProcessManager diff --git a/Applications/ProcessManager/NetworkAdapterModel.cpp b/Applications/ProcessManager/NetworkAdapterModel.cpp deleted file mode 100644 index c2c8a3aa9a..0000000000 --- a/Applications/ProcessManager/NetworkAdapterModel.cpp +++ /dev/null @@ -1,102 +0,0 @@ -#include "NetworkAdapterModel.h" -#include -#include -#include - -void NetworkAdapterModel::update() -{ - CFile file("/proc/net/adapters"); - if (!file.open(CIODevice::ReadOnly)) { - dbg() << "Unable to open " << file.filename(); - return; - } - - auto json = JsonValue::from_string(file.read_all()); - - ASSERT(json.is_array()); - m_netadapters = json.as_array(); - - did_update(); -} - -int NetworkAdapterModel::row_count(const GModelIndex&) const -{ - return m_netadapters.size(); -} - -String NetworkAdapterModel::column_name(int column) const -{ - switch (column) { - case Column::Name: - return "Name"; - case Column::ClassName: - return "Class"; - case Column::MacAddress: - return "MAC"; - case Column::IpAddress: - return "IP"; - case Column::PacketsIn: - return "Pkt In"; - case Column::PacketsOut: - return "Pkt Out"; - case Column::BytesIn: - return "Bytes In"; - case Column::BytesOut: - return "Bytes Out"; - default: - ASSERT_NOT_REACHED(); - } -} - -GModel::ColumnMetadata NetworkAdapterModel::column_metadata(int column) const -{ - switch (column) { - case Column::Name: - return { 32, TextAlignment::CenterLeft }; - case Column::ClassName: - return { 120, TextAlignment::CenterLeft }; - case Column::MacAddress: - return { 90, TextAlignment::CenterLeft }; - case Column::IpAddress: - return { 80, TextAlignment::CenterLeft }; - case Column::PacketsIn: - return { 60, TextAlignment::CenterRight }; - case Column::PacketsOut: - return { 60, TextAlignment::CenterRight }; - case Column::BytesIn: - return { 60, TextAlignment::CenterRight }; - case Column::BytesOut: - return { 60, TextAlignment::CenterRight }; - default: - ASSERT_NOT_REACHED(); - } - return {}; -} - -GVariant NetworkAdapterModel::data(const GModelIndex& index, Role role) const -{ - auto& adapter_object = m_netadapters.at(index.row()).as_object(); - if (role == GModel::Role::Display) { - switch (index.column()) { - case Column::Name: - return adapter_object.get("name").to_string(); - case Column::ClassName: - return adapter_object.get("class_name").to_string(); - case Column::MacAddress: - return adapter_object.get("mac_address").to_string(); - case Column::IpAddress: - return adapter_object.get("ipv4_address").to_string(); - case Column::PacketsIn: - return adapter_object.get("packets_in").to_u32(); - case Column::PacketsOut: - return adapter_object.get("packets_out").to_u32(); - case Column::BytesIn: - return adapter_object.get("bytes_in").to_u32(); - case Column::BytesOut: - return adapter_object.get("bytes_out").to_u32(); - default: - ASSERT_NOT_REACHED(); - } - } - return {}; -} diff --git a/Applications/ProcessManager/NetworkAdapterModel.h b/Applications/ProcessManager/NetworkAdapterModel.h deleted file mode 100644 index c72de1b28e..0000000000 --- a/Applications/ProcessManager/NetworkAdapterModel.h +++ /dev/null @@ -1,33 +0,0 @@ -#pragma once - -#include -#include - -class NetworkAdapterModel final : public GModel { -public: - enum Column { - Name, - ClassName, - MacAddress, - IpAddress, - PacketsIn, - PacketsOut, - BytesIn, - BytesOut, - __Count - }; - - static NonnullRefPtr create() { return adopt(*new NetworkAdapterModel); } - virtual ~NetworkAdapterModel() override {} - - virtual int row_count(const GModelIndex& = GModelIndex()) const override; - virtual int column_count(const GModelIndex& = GModelIndex()) const override { return Column::__Count; } - virtual String column_name(int) const override; - virtual ColumnMetadata column_metadata(int) const override; - virtual GVariant data(const GModelIndex&, Role = Role::Display) const override; - virtual void update() override; - -private: - NetworkAdapterModel() {} - JsonArray m_netadapters; -}; diff --git a/Applications/ProcessManager/NetworkStatisticsWidget.cpp b/Applications/ProcessManager/NetworkStatisticsWidget.cpp index de1a68bcd3..5785057b8f 100644 --- a/Applications/ProcessManager/NetworkStatisticsWidget.cpp +++ b/Applications/ProcessManager/NetworkStatisticsWidget.cpp @@ -1,8 +1,7 @@ #include "NetworkStatisticsWidget.h" -#include "NetworkAdapterModel.h" -#include "SocketModel.h" #include #include +#include #include NetworkStatisticsWidget::NetworkStatisticsWidget(GWidget* parent) @@ -21,7 +20,18 @@ NetworkStatisticsWidget::NetworkStatisticsWidget(GWidget* parent) m_adapter_table_view = new GTableView(adapters_group_box); m_adapter_table_view->set_size_columns_to_fit_content(true); - m_adapter_table_view->set_model(NetworkAdapterModel::create()); + + Vector net_adapters_fields = { + { "name", "Name", TextAlignment::CenterLeft }, + { "class_name", "Class", TextAlignment::CenterLeft }, + { "mac_address", "MAC", TextAlignment::CenterLeft }, + { "ipv4_address", "IPv4", TextAlignment::CenterLeft }, + { "packets_in", "Pkt In", TextAlignment::CenterRight }, + { "packets_out", "Pkt Out", TextAlignment::CenterRight }, + { "bytes_in", "Bytes In", TextAlignment::CenterRight }, + { "bytes_out", "Bytes Out", TextAlignment::CenterRight }, + }; + m_adapter_table_view->set_model(GJsonArrayModel::create("/proc/net/adapters", move(net_adapters_fields))); auto* sockets_group_box = new GGroupBox("Sockets", this); sockets_group_box->set_layout(make(Orientation::Vertical)); @@ -31,7 +41,21 @@ NetworkStatisticsWidget::NetworkStatisticsWidget(GWidget* parent) m_socket_table_view = new GTableView(sockets_group_box); m_socket_table_view->set_size_columns_to_fit_content(true); - m_socket_table_view->set_model(SocketModel::create()); + + Vector net_tcp_fields = { + { "peer_address", "Peer", TextAlignment::CenterLeft }, + { "peer_port", "Port", TextAlignment::CenterRight }, + { "local_address", "Local", TextAlignment::CenterLeft }, + { "local_port", "Port", TextAlignment::CenterRight }, + { "state", "State", TextAlignment::CenterLeft }, + { "ack_number", "Ack#", TextAlignment::CenterRight }, + { "sequence_number", "Seq#", TextAlignment::CenterRight }, + { "packets_in", "Pkt In", TextAlignment::CenterRight }, + { "packets_out", "Pkt Out", TextAlignment::CenterRight }, + { "bytes_in", "Bytes In", TextAlignment::CenterRight }, + { "bytes_out", "Bytes Out", TextAlignment::CenterRight }, + }; + m_socket_table_view->set_model(GJsonArrayModel::create("/proc/net/tcp", move(net_tcp_fields))); m_update_timer = new CTimer( 1000, [this] { diff --git a/Applications/ProcessManager/SocketModel.cpp b/Applications/ProcessManager/SocketModel.cpp deleted file mode 100644 index 420be1e660..0000000000 --- a/Applications/ProcessManager/SocketModel.cpp +++ /dev/null @@ -1,120 +0,0 @@ -#include "SocketModel.h" -#include -#include -#include - -void SocketModel::update() -{ - CFile file("/proc/net/tcp"); - if (!file.open(CIODevice::ReadOnly)) { - dbg() << "Unable to open " << file.filename(); - return; - } - - auto json = JsonValue::from_string(file.read_all()); - - ASSERT(json.is_array()); - m_sockets = json.as_array(); - - did_update(); -} - -int SocketModel::row_count(const GModelIndex&) const -{ - return m_sockets.size(); -} - -String SocketModel::column_name(int column) const -{ - switch (column) { - case Column::PeerAddress: - return "Peer"; - case Column::PeerPort: - return "Port"; - case Column::LocalAddress: - return "Local"; - case Column::LocalPort: - return "Port"; - case Column::State: - return "State"; - case Column::SeqNumber: - return "Seq#"; - case Column::AckNumber: - return "Ack#"; - case Column::PacketsIn: - return "Pkt In"; - case Column::PacketsOut: - return "Pkt Out"; - case Column::BytesIn: - return "Bytes In"; - case Column::BytesOut: - return "Bytes Out"; - default: - ASSERT_NOT_REACHED(); - } -} - -GModel::ColumnMetadata SocketModel::column_metadata(int column) const -{ - switch (column) { - case Column::PeerAddress: - return { 80, TextAlignment::CenterLeft }; - case Column::PeerPort: - return { 30, TextAlignment::CenterRight }; - case Column::LocalAddress: - return { 80, TextAlignment::CenterLeft }; - case Column::LocalPort: - return { 30, TextAlignment::CenterRight }; - case Column::State: - return { 80, TextAlignment::CenterLeft }; - case Column::AckNumber: - return { 60, TextAlignment::CenterRight }; - case Column::SeqNumber: - return { 60, TextAlignment::CenterRight }; - case Column::PacketsIn: - return { 60, TextAlignment::CenterRight }; - case Column::PacketsOut: - return { 60, TextAlignment::CenterRight }; - case Column::BytesIn: - return { 60, TextAlignment::CenterRight }; - case Column::BytesOut: - return { 60, TextAlignment::CenterRight }; - default: - ASSERT_NOT_REACHED(); - } - return {}; -} - -GVariant SocketModel::data(const GModelIndex& index, Role role) const -{ - auto& socket_object = m_sockets.at(index.row()).as_object(); - if (role == GModel::Role::Display) { - switch (index.column()) { - case Column::PeerAddress: - return socket_object.get("peer_address").to_string(); - case Column::PeerPort: - return socket_object.get("peer_port").to_u32(); - case Column::LocalAddress: - return socket_object.get("local_address").to_string(); - case Column::LocalPort: - return socket_object.get("local_port").to_u32(); - case Column::State: - return socket_object.get("state").to_string(); - case Column::AckNumber: - return socket_object.get("ack_number").to_u32(); - case Column::SeqNumber: - return socket_object.get("sequence_number").to_u32(); - case Column::PacketsIn: - return socket_object.get("packets_in").to_u32(); - case Column::PacketsOut: - return socket_object.get("packets_out").to_u32(); - case Column::BytesIn: - return socket_object.get("bytes_in").to_u32(); - case Column::BytesOut: - return socket_object.get("bytes_out").to_u32(); - default: - ASSERT_NOT_REACHED(); - } - } - return {}; -} diff --git a/Applications/ProcessManager/SocketModel.h b/Applications/ProcessManager/SocketModel.h deleted file mode 100644 index 81934ac443..0000000000 --- a/Applications/ProcessManager/SocketModel.h +++ /dev/null @@ -1,38 +0,0 @@ -#pragma once - -#include -#include - -class SocketModel final : public GModel { -public: - enum Column { - PeerAddress, - PeerPort, - LocalAddress, - LocalPort, - State, - AckNumber, - SeqNumber, - PacketsIn, - PacketsOut, - BytesIn, - BytesOut, - __Count - }; - - static NonnullRefPtr create() { return adopt(*new SocketModel); } - - virtual ~SocketModel() override {} - - virtual int row_count(const GModelIndex& = GModelIndex()) const override; - virtual int column_count(const GModelIndex& = GModelIndex()) const override { return Column::__Count; } - virtual String column_name(int) const override; - virtual ColumnMetadata column_metadata(int) const override; - virtual GVariant data(const GModelIndex&, Role = Role::Display) const override; - virtual void update() override; - -private: - SocketModel() {} - - JsonArray m_sockets; -};