Mercurial > hg > xemacs-beta
comparison lisp/multicast.el @ 261:405dd6d1825b r20-5b29
Import from CVS: tag r20-5b29
author | cvs |
---|---|
date | Mon, 13 Aug 2007 10:23:51 +0200 |
parents | |
children | 2f8bb876ab1d |
comparison
equal
deleted
inserted
replaced
260:052205f7dd5f | 261:405dd6d1825b |
---|---|
1 ;;; multicast.el --- lisp frontend for multicast connections in XEmacs | |
2 | |
3 ;; Copyright (C) 1997-1998 Didier Verna. | |
4 | |
5 ;; Author: Didier Verna <verna@inf.enst.fr> | |
6 ;; Maintainer: Didier Verna <verna@inf.enst.fr> | |
7 ;; Created: Thu Dec 4 16:37:39 1997 | |
8 ;; Last Revision: Mon Jan 19 19:10:50 1998 | |
9 ;; Current Version: 0.4 | |
10 ;; Keywords: dumped comm processes | |
11 | |
12 ;; This file is part of XEmacs. | |
13 | |
14 ;; XEmacs is free software; you can redistribute it and/or modify | |
15 ;; it under the terms of the GNU General Public License as published by | |
16 ;; the Free Software Foundation; either version 2 of the License, or | |
17 ;; (at your option) any later version. | |
18 | |
19 ;; XEmacs is distributed in the hope that it will be useful, | |
20 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
21 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
22 ;; GNU General Public License for more details. | |
23 | |
24 ;; You should have received a copy of the GNU General Public License | |
25 ;; along with this program; if not, write to the Free Software | |
26 ;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |
27 | |
28 | |
29 ;;; Commentary: | |
30 | |
31 ;; This file just contains a lisp frontend to the internal function | |
32 ;; open-multicast-group-internal written in C and belonging to process.c | |
33 ;; Well, nothing much to say about it ... read the doc string. | |
34 | |
35 | |
36 ;;; Change Log: | |
37 | |
38 ;; Rev. of Mon Jan 19 19:04:44 1998 : packaging cleanup | |
39 ;; Rev. of Thu Dec 11 13:54:26 1997 : updated the docstring | |
40 ;; Rev. of Mon Dec 8 15:28:47 1997 : Improved the doc string | |
41 ;; Rev. of Thu Dec 4 16:38:09 1997 : Initial Version. | |
42 | |
43 | |
44 ;;; Code: | |
45 | |
46 (defun open-multicast-group (name buffer address) | |
47 "Open a multicast connection on the specified address. | |
48 Returns a subprocess-object to represent the connection. | |
49 Input and output work as for subprocesses; `delete-process' closes it. | |
50 Args are NAME BUFFER ADDRESS. | |
51 NAME is a name for the process. It is modified if necessary to make it unique. | |
52 BUFFER is the buffer (or buffer-name) to associate with the process. | |
53 Process output goes at the end of that buffer, unless you specify an output | |
54 stream or filter function to handle the output. | |
55 BUFFER may be also nil, meaning that this process is not associated with any | |
56 buffer | |
57 ADDRESS specifies a standard multicast address \"dest/port/ttl\": | |
58 dest is an internet address between 224.0.0.0 and 239.255.255.255 | |
59 port is a communication port like in traditional unicast | |
60 ttl is the time-to-live (15 for site, 63 for region and 127 for world). | |
61 | |
62 WARNING: it is *strongly* recommended to avoid using groups beginning with | |
63 224 or 239. Such groups are considered 'admin' groups, and may | |
64 behave in a surprising way ..." | |
65 (let (dest port ttl) | |
66 ;; We check only the general form of the multicast address. | |
67 ;; The rest will be handled by the internal function. | |
68 (string-match "^\\([0-9\\.]+\\)/\\([0-9]+\\)/\\([0-9]+\\)$" address) | |
69 (and (not (and (= (match-beginning 0) 0) | |
70 (= (match-end 0) (length address)))) | |
71 (error "malformed multicast address: %s" address)) | |
72 (and (not (setq dest (match-string 1 address))) | |
73 (error "invalid destination specification.")) | |
74 (and (= 0 (setq port (string-to-int (match-string 2 address)))) | |
75 (error "invalid port specification.")) | |
76 (and (= 0 (setq ttl (string-to-int (match-string 3 address)))) | |
77 (error "invalid ttl specification.")) | |
78 (open-multicast-group-internal name buffer dest port ttl) | |
79 )) | |
80 | |
81 ;;; multicast.el ends here |