server_cbs

This commit is contained in:
Romain Vimont 2021-10-30 15:33:23 +02:00
parent 4ae7d1e9a9
commit 1f8200e295
3 changed files with 40 additions and 3 deletions

View file

@ -262,6 +262,24 @@ stream_on_eos(struct stream *stream, void *userdata) {
PUSH_EVENT(EVENT_STREAM_STOPPED);
}
static void
server_on_connection_failed(struct server *server, void *userdata) {
struct scrcpy *scrcpy = userdata;
}
static void
server_on_connected(struct server *server, void *userdata) {
struct scrcpy *scrcpy = userdata;
}
static void
server_on_disconnected(struct server *server, void *userdata) {
struct scrcpy *scrcpy = userdata;
}
bool
scrcpy(struct scrcpy_options *options) {
static struct scrcpy scrcpy;
@ -310,7 +328,12 @@ scrcpy(struct scrcpy_options *options) {
.power_off_on_close = options->power_off_on_close,
};
if (!server_init(&s->server, &params)) {
static const struct server_callbacks cbs = {
.on_connection_failed = server_on_connection_failed,
.on_connected = server_on_connected,
.on_disconnected = server_on_disconnected,
};
if (!server_init(&s->server, &params, &cbs, s)) {
return false;
}

View file

@ -390,7 +390,8 @@ connect_to_server(struct server *server, uint32_t attempts, sc_tick delay) {
}
bool
server_init(struct server *server, const struct server_params *params) {
server_init(struct server *server, const struct server_params *params,
const struct server_callbacks *cbs, void *cbs_userdata) {
bool ok = server_params_copy(&server->params, params);
if (!ok) {
LOGE("Could not copy server params");
@ -432,6 +433,9 @@ server_init(struct server *server, const struct server_params *params) {
server->tunnel_enabled = false;
server->tunnel_forward = false;
server->cbs = cbs;
server->cbs_userdata = cbs_userdata;
return true;
}

View file

@ -60,11 +60,21 @@ struct server {
uint16_t local_port; // selected from port_range
bool tunnel_enabled;
bool tunnel_forward; // use "adb forward" instead of "adb reverse"
const struct server_callbacks *cbs;
void *cbs_userdata;
};
struct server_callbacks {
void (*on_connection_failed)(struct server *server, void *userdata);
void (*on_connected)(struct server *server, void *userdata);
void (*on_disconnected)(struct server *server, void *userdata);
};
// init the server with the given params
bool
server_init(struct server *server, const struct server_params *params);
server_init(struct server *server, const struct server_params *params,
const struct server_callbacks *cbs, void *cbs_userdata);
// push, enable tunnel et start the server
bool