Mercurial > emacs
changeset 45587:02df8e2ff88b
(open-network-stream, open-network-stream-nowait)
(open-network-stream-server, process-kill-without-query): Moved from simple.el.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Thu, 30 May 2002 17:12:53 +0000 |
parents | 0d38cc3754dc |
children | ac048d849245 |
files | lisp/subr.el |
diffstat | 1 files changed, 83 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/subr.el Thu May 30 17:12:15 2002 +0000 +++ b/lisp/subr.el Thu May 30 17:12:53 2002 +0000 @@ -913,6 +913,89 @@ This makes or adds to an entry on `after-load-alist'. FILE should be the name of a library, with no directory name." (eval-after-load file (read))) + +;;; make-network-process wrappers + +(if (featurep 'make-network-process) + (progn + +(defun open-network-stream (name buffer host service) + "Open a TCP connection for a service to a host. +Returns a subprocess-object to represent the connection. +Input and output work as for subprocesses; `delete-process' closes it. +Args are NAME BUFFER HOST SERVICE. +NAME is name for process. It is modified if necessary to make it unique. +BUFFER is the buffer (or buffer-name) to associate with the process. + Process output goes at end of that buffer, unless you specify + an output stream or filter function to handle the output. + BUFFER may be also nil, meaning that this process is not associated + with any buffer +Third arg is name of the host to connect to, or its IP address. +Fourth arg SERVICE is name of the service desired, or an integer +specifying a port number to connect to." + (make-network-process :name name :buffer buffer + :host host :service service)) + +(defun open-network-stream-nowait (name buffer host service &optional sentinel filter) + "Initiate connection to a TCP connection for a service to a host. +It returns nil if non-blocking connects are not supported; otherwise, +it returns a subprocess-object to represent the connection. + +This function is similar to `open-network-stream', except that this +function returns before the connection is established. When the +connection is completed, the sentinel function will be called with +second arg matching `open' (if successful) or `failed' (on error). + +Args are NAME BUFFER HOST SERVICE SENTINEL FILTER. +NAME, BUFFER, HOST, and SERVICE are as for `open-network-stream'. +Optional args, SENTINEL and FILTER specifies the sentinel and filter +functions to be used for this network stream." + (if (featurep 'make-network-process '(:nowait t)) + (make-network-process :name name :buffer buffer :nowait t + :host host :service service + :filter filter :sentinel sentinel))) + +(defun open-network-stream-server (name buffer service &optional sentinel filter) + "Create a network server process for a TCP service. +It returns nil if server processes are not supported; otherwise, +it returns a subprocess-object to represent the server. + +When a client connects to the specified service, a new subprocess +is created to handle the new connection, and the sentinel function +is called for the new process. + +Args are NAME BUFFER SERVICE SENTINEL FILTER. +NAME is name for the server process. Client processes are named by +appending the ip-address and port number of the client to NAME. +BUFFER is the buffer (or buffer-name) to associate with the server +process. Client processes will not get a buffer if a process filter +is specified or BUFFER is nil; otherwise, a new buffer is created for +the client process. The name is similar to the process name. +Third arg SERVICE is name of the service desired, or an integer +specifying a port number to connect to. It may also be t to selected +an unused port number for the server. +Optional args, SENTINEL and FILTER specifies the sentinel and filter +functions to be used for the client processes; the server process +does not use these function." + (if (featurep 'make-network-process '(:server t)) + (make-network-process :name name :buffer buffer + :service service :server t :noquery t + :sentinel sentinel :filter filter))) + +)) ;; (featurep 'make-network-process) + + +;; compatibility + +(defun process-kill-without-query (process &optional flag) + "Say no query needed if PROCESS is running when Emacs is exited. +Optional second argument if non-nil says to require a query. +Value is t if a query was formerly required. +New code should not use this function; use `process-query-on-exit-flag' +or `set-process-query-on-exit-flag' instead." + (let ((old (process-query-on-exit-flag process))) + (set-process-query-on-exit-flag process nil) + old)) ;;;; Input and display facilities.