;;; time-server.el --- Emacs Time Server ;; ;; Taken from here: http://www.emacswiki.org/emacs/EmacsDaytimeServer ;; ;; Keywords: time date server example ;; ;; This file is not part of GNU Emacs. ;; ;; This is free software; you can redistribute it and/or modify it under the ;; terms of the GNU General Public License as published by the Free Software ;; Foundation; either version 2, or (at your option) any later version. ;; ;; This is distributed in the hope that it will be useful, but WITHOUT ANY ;; WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS ;; FOR A PARTICULAR PURPOSE. See the GNU General Public License for more ;; details. ;; ;; You should have received a copy of the GNU General Public License along ;; with GNU Emacs; see the file COPYING. If not, write to the Free Software ;; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ;; ;;; Commentary: ;; ;; time-server is a simple TCP server that returns the time. ;; ;; Set `time-server-port' to the port the service should run on. ;; ;; Use `time-server-start' to start the service. Test it with: ;; ;; telnet localhost 8080 ;; ;; Use `time-server-stop' to stop the service. ;;; Code: (defconst time-server-process-name "time-server" "Name of time server process.") (defconst time-server-buffer-name "*time-server*" "Name of time server buffer.") (defvar time-server-port 8080 "Time server port.") (defun time-server-start () "Start time server." (interactive) (unless (process-status time-server-process-name) (when (featurep 'make-network-process '(:server t)) (make-network-process :name time-server-process-name :buffer time-server-buffer-name :service time-server-port :family 'ipv4 :server t :noquery t :sentinel nil :filter (lambda (proc string) nil) :log 'time-server-log)))) (defun time-server-stop () "Stop time server." (interactive) (delete-process time-server-process-name)) (defun time-server-log (server client message) "Send current time to the requesting client. \nThe time and client information is also inserted into the `time-server-buffer-name' buffer." (process-send-string client (concat (current-time-string) "\n")) (with-current-buffer time-server-buffer-name (goto-char (point-max)) (insert (current-time-string) (format " %s\n" client))) (delete-process client)) (provide 'time-server) ;;; time-server.el ends here