;ELC ;;; Compiled ;;; in Emacs version 26.3 ;;; with all optimizations. ;;; This file uses dynamic docstrings, first added in Emacs 19.29. ;;; This file does not contain utf-8 non-ASCII characters, ;;; and so can be loaded in Emacs versions earlier than 23. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (byte-code "\300\301!\210\300\302!\210\300\303!\210\300\304!\210\305\306\307\310\311DD\312\313\314\315\316&\207" [require cl-lib cl-generic eieio rudel-backend custom-declare-variable rudel-configured-sessions funcall function #[0 "\300\207" [nil] 1] "List of configured sessions.\n\nEach session is described as a plist (a list of keys and values\nsee Info node `(elisp)Property Lists'). Keys are specified using\nkeywords and look like this: :host, :username, :color. Values are\nmostly strings, but symbols and numbers are possible as well.\n\nThe following keys are required for any session:\n\n* :name (string)\n* :transport-backend (string or symbol)\n* :protocol-backend (string or symbol)\n\nOther keys are optional and depend on the selected\nbackend. Required keys for which no value is specified will be\nprompted for when selecting the session. The values of the :name\nproperties have to be distinct for all configured sessions.\n\nAdditional keys required by most backends:\n\n* :host (string)\n* :port (number)\n* :username (string)\n* :color (string)\n\nHere is a complete example of customized values for the obby\nbackend:\n\n* :name \"sonian\"\n* :transport-backend tcp\n* :protocol-backend obby\n* :host \"sobby\"\n* :port 6522\n* :encryption t\n* :username \"phil\"\n* :color \"white\"\n* :global-password \"\" (this means \"no password\")\n* :user-password \"\"\n\nThe programmatic equivalent looks like this:\n\n(add-to-list\n 'rudel-configured-sessions\n (list :name \"myserver\"\n :protocol-backend 'tcp\n :transport-backend 'obby\n :host \"my.sobby-server.net\"\n :username user-login-name\n ;; Use M-x list-colors-display to see color choices.\n :color \"white\"\n :encryption t\n :port 6522\n ;; empty string means no password\n :global-password \"\"\n :user-password \"\"))" :group rudel :type (repeat :tag "Connections" (plist :tag "Connection" :options ((:name string) (:transport-backend symbol) (:protocol-backend symbol) (:username string) (:color color))))] 8) #@62 This hook is run when collaboration sessions are discovered. (defvar rudel-session-discovered-hook nil (#$ . 2652)) #@78 This hook is run when previously discovered collaboration session disappear. (defvar rudel-session-vanished-hook nil (#$ . 2774)) (byte-code "\300\301\302\303!\"\210\300\304\305\303!\"\210\300\306\304\"\210\307\306\310\311#\210\312\303\313\304#\314\303\315\316\317$\210\320\321\322\323\322\324%\210\320\325\322\326\322\327%\207" [defalias rudel-session-initiation-backend-p eieio-make-class-predicate rudel-session-initiation-backend rudel-session-initiation-backend--eieio-childp eieio-make-child-predicate rudel-session-initiation-backend-child-p make-obsolete "use (cl-typep ... \\='rudel-session-initiation-backend) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (rudel-backend) ((priority :initarg :priority :type symbol :accessor rudel-priority :documentation "Priority of the session initiation method\nimplemented by this backend. Has to be either 'primary or\n'fallback")) (:documentation "Interface implemented by session initiation backends." :abstract t) cl-generic-define-method rudel-priority nil ((this rudel-session-initiation-backend)) #[257 "\300\301\"\205 \302\301\"\207" [slot-boundp priority eieio-oref] 4 "Retrieve the slot `priority' from an object of class `rudel-session-initiation-backend'.\n\n(fn THIS)"] \(setf\ rudel-priority\) (value (this rudel-session-initiation-backend)) #[514 "\300\301#\207" [eieio-oset priority] 6 "\n\n(fn VALUE THIS)"]] 7) #@90 You cannot create a new object of type `rudel-session-initiation-backend'. (fn &rest _) (defalias 'rudel-session-initiation-backend #[128 "\300\301!\207" [error "Class rudel-session-initiation-backend is abstract"] 3 (#$ . 4196)]) (byte-code "\300\301\302\301\303\304#\305#\210\300\306\302\306\307\304#\310#\207" [defalias rudel-discover cl-generic-define ((this rudel-session-initiation-backend)) nil "Return a list of discovered sessions.\nEach list element is a connect info property list. See\n`rudel-join-session' for a description of the format of this\nlist.\n\nThe presence of an implementation of this generic function should\nbe indicated by the presence of the 'discover' capability.\n\n(fn (this rudel-session-initiation-backend))" rudel-advertise ((this rudel-session-initiation-backend) info) "Advertise session described by INFO.\nINFO is a connect info property list. See `rudel-host-session'\nfor a description of the format of this list.\n\nThe presence of an implementation of this generic function should\nbe indicated by the presence of the 'advertise' capability.\n\n(fn (this rudel-session-initiation-backend) INFO)"] 6) #@207 Return primary and fallback backends that have CAPABILITY. The returned list is of the form (PRIMARY FALLBACK), where PRIMARY and FALLBACK are lists of backends of the respective priority. (fn CAPABILITY) (defalias 'rudel-session-initiation-suitable-backends #[257 "\300\301\302\303\304\305\306!\307\"\310\311%\"\312\313\314\315$\312\316\314\317$D\207" [rudel-backend-suitable-backends session-initiation make-byte-code 257 "\301\300\"\207" vconcat vector [rudel-capable-of-p] 4 "\n\n(fn BACKEND)" cl-remove fallback :key #[257 "\300A!\207" [rudel-priority] 3 "\n\n(fn BACKEND)"] primary #[257 "\300A!\207" [rudel-priority] 3 "\n\n(fn BACKEND)"]] 9 (#$ . 5348)]) #@438 Return a list of sessions using BACKEND-NAME when non-nil. BACKEND-NAME is a symbol. When it is non-nil, only the specified backend is used to discover session. The returned list is of the form (INFO-1 ... INFO-N FALLBACK-1 ... FALLBACK-M) where INFO-I are connect info property lists (see `rudel-join-session') and FALLBACK-I are conses of the form (NAME . CLASS-OR-OBJECT) that specify fallback backends. (fn &optional BACKEND-NAME) (defalias 'rudel-session-initiation-discover #[256 "\300\301!\211@A\211@A\2030\302\303\304$\206#\302\303\304$\211\205+\305A!\262\202D\306\307\310\311\312\305\312\313\"\"\"\"\311\"\262\266\202\207" [rudel-session-initiation-suitable-backends discover cl-find :key car rudel-discover cl-remove-if null apply append mapcar cdr] 17 (#$ . 6028)]) #@326 Advertise the session described by INFO. INFO is a connect info property list. See `rudel-host-session' for a description of the format of this list. Primary backends are tried first. If none succeeds, fallback backends are tried. The result is non-nil if at least one backend was able to advertise the session. (fn INFO) (defalias 'rudel-session-initiation-advertise #[257 "\300\301!\211@A\211@A\302\303\304\305\306\307 !\310\"\311\312%\"\2060\302\303\304\305\306\307 !\313\"\311\312%\"\266\202\207" [rudel-session-initiation-suitable-backends advertise cl-some make-byte-code 257 "\301A\300\"\207" vconcat vector [rudel-advertise] 4 "\n\n(fn BACKEND)" [rudel-advertise]] 15 (#$ . 6837)]) #@48 Version of the ask-protocol backend for Rudel. (defconst rudel-ask-protocol-version '(0 2) (#$ . 7546)) (byte-code "\300\301\302\303!\"\210\300\304\305\303!\"\210\300\306\304\"\210\307\306\310\311#\210\312\303\313\304#\314\303\315\316\317$\207" [defalias rudel-ask-protocol-backend-p eieio-make-class-predicate rudel-ask-protocol-backend rudel-ask-protocol-backend--eieio-childp eieio-make-child-predicate rudel-ask-protocol-backend-child-p make-obsolete "use (cl-typep ... \\='rudel-ask-protocol-backend) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (rudel-session-initiation-backend) ((capabilities :initform (discover)) (priority :initform fallback)) (:documentation "This fallback backend can \"discover\" sessions by letting the\nuser select a suitable backend and asking for connect information\nrequired by the chosen backend.")] 6) #@83 Create a new object of class type `rudel-ask-protocol-backend'. (fn &rest SLOTS) (defalias 'rudel-ask-protocol-backend #[128 "\300\301\302#\207" [apply make-instance rudel-ask-protocol-backend] 5 (#$ . 8427)]) (byte-code "\300\301\302\303#\300\207" [function-put rudel-ask-protocol-backend compiler-macro rudel-ask-protocol-backend--anon-cmacro] 4) #@26 (fn WHOLE &rest SLOTS) (defalias 'rudel-ask-protocol-backend--anon-cmacro #[385 "\211@;\204\207\300\301\302@@#@\303@DABB\"\207" [macroexp--warn-and-return format "Obsolete name arg %S to constructor %S" identity] 7 (#$ . 8784)]) (byte-code "\300\301\302\303\304\305%\210\300\306\302\307\302\310%\210\311\312\313!\314\315#\207" [cl-generic-define-method initialize-instance nil ((this rudel-ask-protocol-backend) _slots) t #[771 " \210\301\302#\207" [rudel-ask-protocol-version eieio-oset :version] 7 "Set backend version.\n\n(fn CL--CNM THIS SLOTS)"] rudel-discover ((_this rudel-ask-protocol-backend)) #[257 "\300\301\302\"\300\303!\304A\304A\305\306\307\310 \257\"\"C\207" [rudel-backend-choose protocol #[257 "\300\301\"\207" [rudel-capable-of-p join] 4 "\n\n(fn BACKEND)"] transport rudel-ask-connect-info :name "asked" :protocol-backend :transport-backend] 13 "\"Discover\" sessions by asking the user about the backend to use and the connect info.\n\n(fn THIS)"] rudel-add-backend rudel-backend-get-factory session-initiation ask-protocol rudel-ask-protocol-backend] 6) #@55 Version of the configured-sessions backend for Rudel. (defconst rudel-configured-sessions-version '(0 2) (#$ . 9886)) (byte-code "\300\301\302\303!\"\210\300\304\305\303!\"\210\300\306\304\"\210\307\306\310\311#\210\312\303\313\304#\314\303\315\316\317$\207" [defalias rudel-configured-sessions-backend-p eieio-make-class-predicate rudel-configured-sessions-backend rudel-configured-sessions-backend--eieio-childp eieio-make-child-predicate rudel-configured-sessions-backend-child-p make-obsolete "use (cl-typep ... \\='rudel-configured-sessions-backend) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (rudel-session-initiation-backend) ((capabilities :initform (discover)) (priority :initform primary)) (:documentation "This fallback backend can \"discover\" sessions the user has\nconfigured using customization.")] 6) #@90 Create a new object of class type `rudel-configured-sessions-backend'. (fn &rest SLOTS) (defalias 'rudel-configured-sessions-backend #[128 "\300\301\302#\207" [apply make-instance rudel-configured-sessions-backend] 5 (#$ . 10746)]) (byte-code "\300\301\302\303#\300\207" [function-put rudel-configured-sessions-backend compiler-macro rudel-configured-sessions-backend--anon-cmacro] 4) #@26 (fn WHOLE &rest SLOTS) (defalias 'rudel-configured-sessions-backend--anon-cmacro #[385 "\211@;\204\207\300\301\302@@#@\303@DABB\"\207" [macroexp--warn-and-return format "Obsolete name arg %S to constructor %S" identity] 7 (#$ . 11139)]) (byte-code "\300\301\302\303\304\305%\210\300\306\302\307\302\310%\210\311\312\313!\314\315#\207" [cl-generic-define-method initialize-instance nil ((this rudel-configured-sessions-backend) _slots) t #[771 " \210\301\302#\207" [rudel-configured-sessions-version eieio-oset :version] 7 "Set backend version.\n\n(fn CL--CNM THIS SLOTS)"] rudel-discover ((_this rudel-configured-sessions-backend)) #[257 "\301\302\"\207" [rudel-configured-sessions mapcar rudel-session-initiation-adjust-info] 4 "\"Discover\" sessions the has configured.\n\n(fn THIS)"] rudel-add-backend rudel-backend-get-factory session-initiation configured-sessions rudel-configured-sessions-backend] 6) #@59 Resolve arguments that need resolving in INFO. (fn INFO) (defalias 'rudel-session-initiation-adjust-info #[257 "\300@A@\211\203Y\211AA\262\301=\204\302=\203C\303\301=\203'\304\202(\305;\2033\306!\2024\"B\262\211B\262\210\202MB\262B\262\211@\262\211A@\262\202\237\207" [nil :transport-backend :protocol-backend rudel-backend-get transport protocol intern] 9 (#$ . 12067)]) (provide 'rudel-session-initiation)