Browse Source

draft gio socket connector

CPP-GTK4
yggverse 1 month ago
parent
commit
de312cdcb0
  1. 62
      src/app/browser/main/tab/page.cpp
  2. 10
      src/app/browser/main/tab/page.hpp

62
src/app/browser/main/tab/page.cpp

@ -48,8 +48,66 @@ Page::Page() @@ -48,8 +48,66 @@ Page::Page()
Page::~Page() = default;
// Actions
// Public actions
void Page::update()
{
// navbar->get_request_value() @TODO
// Route by request protocol
if ("file" == navbar->get_request_scheme())
{
// @TODO
}
else if ("gemini" == navbar->get_request_scheme())
{
connect(
navbar->get_request_host(),
navbar->get_request_port().empty() ? 1965 : stoi(
navbar->get_request_port()
)
);
}
else
{
// @TODO
}
}
// Private helpers
void Page::connect(
const std::string & host,
int port
) {
try
{
socket_client = Gio::SocketClient::create();
socket_client->connect_to_host_async(
host,
port,
[this](const Glib::RefPtr<Gio::AsyncResult> & result)
{
try
{
auto socket = socket_client->connect_finish(
result
);
// @TODO read/write data
socket->close();
}
catch (const Glib::Error & exception)
{
// @TODO exception.what();
}
}
);
}
catch (const std::exception & exception)
{
// @TODO exception.what();
}
}

10
src/app/browser/main/tab/page.hpp

@ -6,6 +6,10 @@ @@ -6,6 +6,10 @@
#include <gtkmm/box.h>
#include <sigc++/functors/mem_fun.h>
#include <giomm/asyncresult.h>
#include <giomm/socketconnection.h>
#include <giomm/socketclient.h>
namespace app::browser::main::tab
{
namespace page
@ -19,10 +23,16 @@ namespace app::browser::main::tab @@ -19,10 +23,16 @@ namespace app::browser::main::tab
private:
Glib::RefPtr<Gio::SimpleActionGroup> action_group;
Glib::RefPtr<Gio::SocketClient> socket_client;
page::Navbar * navbar;
page::Content * content;
void connect(
const std::string & host,
int port
);
public:
Page();

Loading…
Cancel
Save