1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-07-17 02:57:33 -05:00

New piece of Windows infrastructure: winhandl.c takes Plink's

thread-based approach to stdin and stdout, wraps it in a halfway
sensible API, and makes it a globally available service across all
network tools.

There is no direct functionality enhancement from this checkin:
winplink.c now talks to the new API instead of doing it all
internally, but does nothing different as a result.

However, this should lay the groundwork for several diverse pieces
of work in future: pipe-based ProxyCommand on Windows, a serial port
back end, and (hopefully) a pipe-based means of communicating with
Pageant, which should have sensible blocking behaviour and hence
permit asynchronous agent requests and decrypt-on-demand.

[originally from svn r6797]
This commit is contained in:
Simon Tatham
2006-08-25 22:10:16 +00:00
parent 6104963b9b
commit 291533d3f9
6 changed files with 614 additions and 215 deletions

View File

@ -405,6 +405,21 @@ void EnableSizeTip(int bEnable);
struct unicode_data;
void init_ucs(Config *, struct unicode_data *);
/*
* Exports from winhandl.c.
*/
struct handle;
typedef int (*handle_inputfn_t)(struct handle *h, void *data, int len);
typedef void (*handle_outputfn_t)(struct handle *h, int new_backlog);
struct handle *handle_input_new(HANDLE handle, handle_inputfn_t gotdata);
struct handle *handle_output_new(HANDLE handle, handle_outputfn_t sentdata);
int handle_write(struct handle *h, const void *data, int len);
HANDLE *handle_get_events(int *nevents);
void handle_free(struct handle *h);
void handle_got_event(HANDLE event);
void handle_unthrottle(struct handle *h, int backlog);
int handle_backlog(struct handle *h);
/*
* pageantc.c needs to schedule callbacks for asynchronous agent
* requests. This has to be done differently in GUI and console, so