# HG changeset patch # User Richard M. Stallman # Date 1022778773 0 # Node ID 02df8e2ff88b5b92f5fe1835f52cbac467fc3afe # Parent 0d38cc3754dcf2b5ceace9a848abe99906ca02ee (open-network-stream, open-network-stream-nowait) (open-network-stream-server, process-kill-without-query): Moved from simple.el. diff -r 0d38cc3754dc -r 02df8e2ff88b lisp/subr.el --- 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.