$74 GRAYBYTE WORDPRESS FILE MANAGER $77

SERVER : premium201.web-hosting.com #1 SMP Wed Mar 26 12:08:09 UTC 2025
SERVER IP : 104.21.43.35 | ADMIN IP 216.73.216.157
OPTIONS : CRL = ON | WGT = ON | SDO = OFF | PKEX = OFF
DEACTIVATED : NONE

/opt/alt/php84/usr/include/php/ext/swoole/ext-src/

HOME
Current File : /opt/alt/php84/usr/include/php/ext/swoole/ext-src//php_swoole_ssh2.h
#pragma once

#include "php_swoole_cxx.h"
#include "php_swoole_ssh2_def.h"

#include <libssh2.h>
#include <libssh2_sftp.h>
#include <libssh2_publickey.h>

typedef struct _php_ssh2_session_data {
    /* Userspace callback functions */
    zval *ignore_cb;
    zval *debug_cb;
    zval *macerror_cb;
    zval *disconnect_cb;

    SocketImpl *socket;
} php_ssh2_session_data;

static inline swoole::EventType ssh2_get_event_type(LIBSSH2_SESSION *session) {
    int dir = libssh2_session_block_directions(session);
    if (dir & LIBSSH2_SESSION_BLOCK_OUTBOUND) {
        return SW_EVENT_WRITE;
    } else {
        return SW_EVENT_READ;
    }
}

static inline SocketImpl *ssh2_get_socket(LIBSSH2_SESSION *session) {
    auto session_data = (php_ssh2_session_data **) libssh2_session_abstract(session);
    return (*session_data)->socket;
}

static inline void ssh2_set_socket_timeout(LIBSSH2_SESSION *session, int timeout_ms) {
    auto sock = ssh2_get_socket(session);
    sock->set_timeout(timeout_ms / 1000, SW_TIMEOUT_ALL);
}

class ResourceGuard {
    zval zres_;

  public:
    ResourceGuard(zval *zres) {
        zval_addref_p(zres);
        zres_ = *zres;
    }
    ~ResourceGuard() {
        zval_ptr_dtor(&zres_);
    }
};

static inline int ssh2_async_call(LIBSSH2_SESSION *session, const std::function<int(void)> &fn) {
    auto event = ssh2_get_event_type(session);
    auto socket = ssh2_get_socket(session);

    socket->check_bound_co(SW_EVENT_READ);
    socket->check_bound_co(SW_EVENT_WRITE);

    int rc = 0;
    while (1) {
        rc = fn();
        if (rc == LIBSSH2_ERROR_EAGAIN) {
            if (!socket->poll(event)) {
                return LIBSSH2_ERROR_SOCKET_NONE;
            }
            continue;
        }
        break;
    }
    return rc;
}

template <typename T>
static inline T *ssh2_async_call_ex(LIBSSH2_SESSION *session, const std::function<T *(void)> &fn) {
    auto event = ssh2_get_event_type(session);
    auto socket = ssh2_get_socket(session);

    socket->check_bound_co(SW_EVENT_READ);
    socket->check_bound_co(SW_EVENT_WRITE);

    T *handle;
    while (1) {
        handle = fn();
        if (handle) {
            return handle;
        }
        if (libssh2_session_last_errno(session) == LIBSSH2_ERROR_EAGAIN && socket->poll(event)) {
            continue;
        }
        break;
    }
    return nullptr;
}


Current_dir [ NOT WRITEABLE ] Document_root [ NOT WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
8 Apr 2026 8.32 AM
root / linksafe
0755
php_swoole_call_stack.h
1.814 KB
18 Mar 2026 9.07 AM
root / linksafe
0644
php_swoole_client.h
2.792 KB
18 Mar 2026 9.07 AM
root / linksafe
0644
php_swoole_coroutine.h
9.851 KB
18 Mar 2026 9.07 AM
root / linksafe
0644
php_swoole_coroutine_system.h
1.889 KB
18 Mar 2026 9.07 AM
root / linksafe
0644
php_swoole_curl.h
5.066 KB
18 Mar 2026 9.07 AM
root / linksafe
0644
php_swoole_cxx.h
27.047 KB
18 Mar 2026 9.07 AM
root / linksafe
0644
php_swoole_firebird.h
4.869 KB
18 Mar 2026 9.07 AM
root / linksafe
0644
php_swoole_ftp_def.h
1.173 KB
18 Mar 2026 9.07 AM
root / linksafe
0644
php_swoole_http.h
16.252 KB
18 Mar 2026 9.07 AM
root / linksafe
0644
php_swoole_http_server.h
4.121 KB
18 Mar 2026 9.07 AM
root / linksafe
0644
php_swoole_library.h
425.519 KB
18 Mar 2026 9.07 AM
root / linksafe
0644
php_swoole_odbc.h
5.622 KB
18 Mar 2026 9.07 AM
root / linksafe
0644
php_swoole_oracle.h
2.972 KB
18 Mar 2026 9.07 AM
root / linksafe
0644
php_swoole_pgsql.h
2.55 KB
18 Mar 2026 9.07 AM
root / linksafe
0644
php_swoole_private.h
44.826 KB
18 Mar 2026 9.07 AM
root / linksafe
0644
php_swoole_process.h
1.522 KB
18 Mar 2026 9.07 AM
root / linksafe
0644
php_swoole_server.h
6.87 KB
18 Mar 2026 9.07 AM
root / linksafe
0644
php_swoole_sqlite.h
2.204 KB
18 Mar 2026 9.07 AM
root / linksafe
0644
php_swoole_ssh2.h
2.309 KB
18 Mar 2026 9.07 AM
root / linksafe
0644
php_swoole_ssh2_def.h
1.284 KB
18 Mar 2026 9.07 AM
root / linksafe
0644
php_swoole_ssh2_hook.h
21.897 KB
18 Mar 2026 9.07 AM
root / linksafe
0644
php_swoole_stdext.h
1.839 KB
18 Mar 2026 9.07 AM
root / linksafe
0644
php_swoole_thread.h
10.781 KB
18 Mar 2026 9.07 AM
root / linksafe
0644
php_swoole_websocket.h
2.485 KB
18 Mar 2026 9.07 AM
root / linksafe
0644
swoole_curl_interface.h
2.308 KB
18 Mar 2026 9.07 AM
root / linksafe
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025 CONTACT ME
Static GIF