wlmaker
Loading...
Searching...
No Matches
Typedefs | Functions
subprocess_monitor.h File Reference
#include <libbase/libbase.h>
#include <stdbool.h>
#include "server.h"
#include "toolkit/toolkit.h"
Include dependency graph for subprocess_monitor.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Typedefs

typedef struct _wlmaker_subprocess_monitor_t wlmaker_subprocess_monitor_t
 
typedef struct _wlmaker_subprocess_handle_t wlmaker_subprocess_handle_t
 
typedef void(* wlmaker_subprocess_terminated_callback_t) (void *userdata_ptr, wlmaker_subprocess_handle_t *subprocess_handle_ptr, int state, int code)
 
typedef void(* wlmaker_subprocess_window_callback_t) (void *userdata_ptr, wlmaker_subprocess_handle_t *subprocess_handle_ptr, wlmtk_window_t *window_ptr)
 

Functions

wlmaker_subprocess_monitor_twlmaker_subprocess_monitor_create (wlmaker_server_t *server_ptr)
 
void wlmaker_subprocess_monitor_destroy (wlmaker_subprocess_monitor_t *monitor_ptr)
 
bool wlmaker_subprocess_monitor_run (wlmaker_subprocess_monitor_t *monitor_ptr, bs_subprocess_t *subprocess_ptr)
 
wlmaker_subprocess_handle_twlmaker_subprocess_monitor_entrust (wlmaker_subprocess_monitor_t *monitor_ptr, bs_subprocess_t *subprocess_ptr, wlmaker_subprocess_terminated_callback_t terminated_callback, void *userdata_ptr, wlmaker_subprocess_window_callback_t window_created_callback, wlmaker_subprocess_window_callback_t window_mapped_callback, wlmaker_subprocess_window_callback_t window_unmapped_callback, wlmaker_subprocess_window_callback_t window_destroyed_callback, bs_dynbuf_t *stdout_dynbuf_ptr)
 
void wlmaker_subprocess_monitor_cede (wlmaker_subprocess_monitor_t *monitor_ptr, wlmaker_subprocess_handle_t *subprocess_handle_ptr)
 
bs_subprocess_t * wlmaker_subprocess_from_subprocess_handle (wlmaker_subprocess_handle_t *subprocess_handle_ptr)
 

Detailed Description

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Typedef Documentation

◆ wlmaker_subprocess_handle_t

Forward definition for a subprocess handle.

◆ wlmaker_subprocess_monitor_t

Forward definition for the subprocess monitor.

◆ wlmaker_subprocess_terminated_callback_t

typedef void(* wlmaker_subprocess_terminated_callback_t) (void *userdata_ptr, wlmaker_subprocess_handle_t *subprocess_handle_ptr, int state, int code)

Callback for then the subprocess is terminated.

Parameters
userdata_ptr
subprocess_handle_ptr
state
code

◆ wlmaker_subprocess_window_callback_t

typedef void(* wlmaker_subprocess_window_callback_t) (void *userdata_ptr, wlmaker_subprocess_handle_t *subprocess_handle_ptr, wlmtk_window_t *window_ptr)

Callback for when window events happened for the subprocess.

Parameters
userdata_ptr
subprocess_handle_ptr
window_ptr

Function Documentation

◆ wlmaker_subprocess_from_subprocess_handle()

bs_subprocess_t * wlmaker_subprocess_from_subprocess_handle ( wlmaker_subprocess_handle_t subprocess_handle_ptr)

Returns the bs_subprocess_t from the wlmaker_subprocess_handle_t.

◆ wlmaker_subprocess_monitor_cede()

void wlmaker_subprocess_monitor_cede ( wlmaker_subprocess_monitor_t monitor_ptr,
wlmaker_subprocess_handle_t subprocess_handle_ptr 
)

Releases the reference held on subprocess_handle_ptr. Once the subprocess terminates, all corresponding resources will be freed.

Parameters
monitor_ptr
subprocess_handle_ptr

◆ wlmaker_subprocess_monitor_create()

wlmaker_subprocess_monitor_t * wlmaker_subprocess_monitor_create ( wlmaker_server_t server_ptr)

Creates the subprocess monitor

Parameters
server_ptr
Returns
Pointer to the subprocess monitor or NULL on error.

◆ wlmaker_subprocess_monitor_destroy()

void wlmaker_subprocess_monitor_destroy ( wlmaker_subprocess_monitor_t monitor_ptr)

Destroys the subprocess monitor.

Parameters
monitor_ptr

◆ wlmaker_subprocess_monitor_entrust()

wlmaker_subprocess_handle_t * wlmaker_subprocess_monitor_entrust ( wlmaker_subprocess_monitor_t monitor_ptr,
bs_subprocess_t *  subprocess_ptr,
wlmaker_subprocess_terminated_callback_t  terminated_callback,
void *  userdata_ptr,
wlmaker_subprocess_window_callback_t  window_created_callback,
wlmaker_subprocess_window_callback_t  window_mapped_callback,
wlmaker_subprocess_window_callback_t  window_unmapped_callback,
wlmaker_subprocess_window_callback_t  window_destroyed_callback,
bs_dynbuf_t *  stdout_dynbuf_ptr 
)

Passes ownership of the started subprocess_ptr to monitor_ptr.

Also registers a set of callbacks that will be triggered. Permits to keep a central register of all started sub-processes, to monitor for termination, and to link up connecting clients with the sub-processes.

Parameters
monitor_ptr
subprocess_ptr
terminated_callback
userdata_ptr
window_created_callback
window_mapped_callback
window_unmapped_callback
window_destroyed_callback
stdout_dynbuf_ptr
Returns
A pointer to the created subprocess handle or NULL on error.

◆ wlmaker_subprocess_monitor_run()

bool wlmaker_subprocess_monitor_run ( wlmaker_subprocess_monitor_t monitor_ptr,
bs_subprocess_t *  subprocess_ptr 
)

Starts, entrust and cedes a subprocess to the monitor.

Parameters
monitor_ptr
subprocess_ptrSubprocess. Ignored, if NULL. Takes ownership.
Returns
true on success.