mirror of
https://github.com/YGGverse/Yoda.git
synced 2025-01-30 13:04:13 +00:00
draft gio socket connector
This commit is contained in:
parent
0ce0c6776a
commit
de312cdcb0
@ -48,8 +48,66 @@ Page::Page()
|
|||||||
|
|
||||||
Page::~Page() = default;
|
Page::~Page() = default;
|
||||||
|
|
||||||
// Actions
|
// Public actions
|
||||||
void Page::update()
|
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();
|
||||||
|
}
|
||||||
|
}
|
@ -6,6 +6,10 @@
|
|||||||
#include <gtkmm/box.h>
|
#include <gtkmm/box.h>
|
||||||
#include <sigc++/functors/mem_fun.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 app::browser::main::tab
|
||||||
{
|
{
|
||||||
namespace page
|
namespace page
|
||||||
@ -19,10 +23,16 @@ namespace app::browser::main::tab
|
|||||||
private:
|
private:
|
||||||
|
|
||||||
Glib::RefPtr<Gio::SimpleActionGroup> action_group;
|
Glib::RefPtr<Gio::SimpleActionGroup> action_group;
|
||||||
|
Glib::RefPtr<Gio::SocketClient> socket_client;
|
||||||
|
|
||||||
page::Navbar * navbar;
|
page::Navbar * navbar;
|
||||||
page::Content * content;
|
page::Content * content;
|
||||||
|
|
||||||
|
void connect(
|
||||||
|
const std::string & host,
|
||||||
|
int port
|
||||||
|
);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
Page();
|
Page();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user