;ELC   
;;; compiled by amu@tux.mit.edu on Sun Nov 15 14:41:34 1998
;;; from file /afs/sipb.mit.edu/contrib/emacs/packages/gnus-5.6.44/lisp/gnus-async.el
;;; emacs version 19.34.1.
;;; bytecomp version FSF 2.10
;;; optimization is on.
;;; this file uses opcodes which do not exist in Emacs 18.

(if (and (boundp 'emacs-version)
	 (or (and (boundp 'epoch::version) epoch::version)
	     (string-lessp emacs-version "19.29")))
    (error "`gnus-async.el' was compiled for Emacs 19.29 or later"))


(byte-code "ÀÁ!ˆÀÂ!ˆÀÃ!ˆÄÅÆÇÁ%ˆÉÅÊËÅ\fÍ&ˆÉÎÏÐÅ\fÑ&ˆÉÒÓÔÅ\fÕ&ˆÉÖÆ×Å\fÍ&ˆÉØÙÚÅ\fÛ&ˆÜÝ!„_ ÞÝBÜà!„n Æ àBÜá!„} â!áBÜã!„Œ Æ#ãBÜä!„› Æ$äBÜå!„ª æ%åBÜç!„¹ Æ'çBÆ‡" [require gnus gnus-sum nntp custom-declare-group gnus-asynchronous nil "Support for asynchronous operations." :group custom-declare-variable t "*If nil, inhibit all Gnus asynchronicity.\nIf non-nil, let the other asynch variables be heeded." :type boolean gnus-use-article-prefetch 30 "*If non-nil, prefetch articles in groups that allow this.\nIf a number, prefetch only that many articles forward;\nif t, prefetch as many articles as possible." (choice (const :tag "off" nil) (const :tag "all" t) (integer :tag "some" 0)) gnus-prefetched-article-deletion-strategy (quote (read exit)) "List of symbols that say when to remove articles from the prefetch buffer.\nPossible values in this list are `read', which means that\narticles are removed as they are read, and `exit', which means\nthat all articles belonging to a group are removed on exit\nfrom that group." (set (const read) (const exit)) gnus-use-header-prefetch "*If non-nil, prefetch the headers to the next group." gnus-async-prefetch-article-p (quote gnus-async-unread-p) "Function called to say whether an article should be prefetched or not.\nThe function is called with one parameter -- the article data.\nIt should return non-nil if the article is to be prefetched." function boundp gnus-async-prefetch-article-buffer " *Async Prefetch Article*" current-load-list gnus-async-article-alist gnus-async-article-semaphore (nil) gnus-async-fetch-list gnus-asynch-obarray gnus-async-prefetch-headers-buffer " *Async Prefetch Headers*" gnus-async-header-prefetched] 8)
#@74 Say whether GROUP is fetched from a server that supports asynchronicity.
(defalias 'gnus-group-asynchronous-p #[(group) "ÀÁ\n!!‡" [gnus-asynchronous-p gnus-find-method-for-group group] 3 (#$ . 2242)])
#@35 Wait until SEMAPHORE is released.
(defalias 'gnus-async-get-semaphore #[(semaphore) "JÁC¤GÂU?… ÃÄ!ˆ‚  ‡" [semaphore nil 2 sleep-for 1] 2 (#$ . 2449)])
#@20 Release SEMAPHORE.
(defalias 'gnus-async-release-semaphore #[(semaphore) "JÁ¡‡" [semaphore nil] 2 (#$ . 2608)])
(defalias 'gnus-async-with-semaphore '(macro . #[(&rest forms) "ÀÁÂBBÄBB‡" [unwind-protect progn (gnus-async-get-semaphore (quote gnus-async-article-semaphore)) forms ((gnus-async-release-semaphore (quote gnus-async-article-semaphore)))] 4]))
(byte-code "ÀÁÂÃ#ˆÀÁÄÅ#ˆÆÇÈ\"‡" [put gnus-asynch-with-semaphore lisp-indent-function 0 edebug-form-spec (body) gnus-add-shutdown gnus-async-close gnus] 4)
(defalias 'gnus-async-close #[nil "‰‰… \n;ƒ Ã‚ Ä\n!)ƒ Å	!ˆ)‰‰…2 \n;ƒ/ Ã‚0 Ä\n!)ƒ: Å	!ˆ)ÇÇ‰	‡" [gnus-async-prefetch-article-buffer buf buffer get-buffer buffer-name kill-buffer gnus-async-prefetch-headers-buffer nil gnus-async-article-alist gnus-async-header-prefetched] 3])
(defalias 'gnus-async-set-buffer #[nil "À	Â\"ˆ?… ÄÃ!ÅÆ!L‡" [nnheader-set-temp-buffer gnus-async-prefetch-article-buffer t gnus-asynch-obarray make-local-variable gnus-make-hashtable 1023] 3])
#@19 Stop prefetching.
(defalias 'gnus-async-halt-prefetch #[nil "À‰‡" [nil gnus-async-fetch-list] 2 (#$ . 3608)])
#@77 Possibly prefetch several articles starting with the article after ARTICLE.
(defalias 'gnus-async-prefetch-next #[(group article summary) "‰… Â	!… ÃÂ	!!)…W \f…W Å!…W Šqˆ	\n	ž	>)A@@‰…V ÌÍ!„K Î#‚V ÍÏÐÎ&*‡" [summary buffer get-buffer buffer-name gnus-asynchronous gnus-group-asynchronous-p group gnus-summary-buffer gnus-newsgroup-data bdata article next fboundp run-with-idle-timer gnus-async-prefetch-article 0.10000000000000001 nil] 8 (#$ . 3725)])
#@59 Possibly prefetch several articles starting with ARTICLE.
(defalias 'gnus-async-prefetch-article #[(group article summary &optional next) "‰… Â	!… ÃÂ	!!)„! ÄŽÅÆ!ˆÇ‰)‡	…0Ê …0ƒ< ÌŽÅÆ!ˆA)ÍÐ!…/‰…[ Â	!…[ ÃÂ	!!)…/ƒi …/ÒŽÅÆ!ˆ„á ?Çž>)Ç‰A@‰ƒÛ §ƒ° ÚS‰!‚² ƒÛ Û@‰\"„’ Ú!ƒ’ !ƒ’ B‚’ Ÿ+ƒë @)…/…/ŠqˆÇÞ ˆdbˆß à%Â!!\"#ƒ(äåæ$ˆç\",*‡" [summary buffer get-buffer buffer-name ((byte-code "ÀÁ!‡" [gnus-async-release-semaphore gnus-async-article-semaphore] 2)) gnus-async-get-semaphore gnus-async-article-semaphore nil gnus-async-fetch-list gnus-asynchronous gnus-alive-p next ((byte-code "ÀÁ!‡" [gnus-async-release-semaphore gnus-async-article-semaphore] 2)) t do-message do-fetch gnus-group-asynchronous-p group ((byte-code "ÀÁ!‡" [gnus-async-release-semaphore gnus-async-article-semaphore] 2)) gnus-use-article-prefetch gnus-newsgroup-data bdata article d data n natnump gnus-async-prefetched-article-entry gnus-async-prefetch-article-p mark gnus-async-set-buffer point-marker gnus-make-async-article-function gnus-async-prefetch-article-buffer nntp-server-buffer nnheader-callback-function gnus-message 9 "Prefetching article %d in group %s" gnus-request-article] 7 (#$ . 4207)])
#@29 Return a callback function.
(defalias 'gnus-make-async-article-function #[(group article mark summary next) "ÀÁÂÃÄÅÆÇÈÉÊËÌ#\"DÑ¯ÒBBDFÓÔÕDD×ØÚBBBBFEE‡" [lambda (arg) save-excursion when arg (gnus-async-set-buffer) gnus-async-with-semaphore push list quote intern format "%s-%d" group article gnus-asynch-obarray mark (set-marker (make-marker) (point-max)) (gnus-async-article-alist) if not gnus-buffer-live-p summary (gnus-async-with-semaphore (setq gnus-async-fetch-list nil)) gnus-async-prefetch-article next (t)] 15 (#$ . 5507)])
#@54 Return non-nil if DATA represents an unread article.
(defalias 'gnus-async-unread-p #[(data) "A@	U‡" [data gnus-unread-mark] 2 (#$ . 6066)])
#@62 See whether we have ARTICLE from GROUP and put it in BUFFER.
(defalias 'gnus-async-request-fetched-article #[(group article buffer) "§…, Á\n\"‰…+ ŠÄ ˆÅA@AA@#ˆÇ>ƒ) É!ˆ)Ê)‡" [article gnus-async-prefetched-article-entry group entry gnus-async-set-buffer copy-to-buffer buffer read gnus-prefetched-article-deletion-strategy gnus-async-delete-prefected-entry t] 5 (#$ . 6214)])
#@37 Delete ENTRY from buffer and alist.
(defalias 'gnus-async-delete-prefected-entry #[(entry) "ÀÁÂ�ˆÃŽÄÅ!ˆÆ\"‰)‡" [G99122 (byte-code "A@AA@|ˆA@Á‰“ˆAA@Á‰“‡" [entry nil] 3) ((error)) ((byte-code "ÀÁ!‡" [gnus-async-release-semaphore gnus-async-article-semaphore] 2)) gnus-async-get-semaphore gnus-async-article-semaphore delq entry gnus-async-article-alist] 3 (#$ . 6603)])
#@66 Remove all articles belonging to GROUP from the prefetch buffer.
(defalias 'gnus-async-prefetch-remove-group #[(group) "À	!…- Â>…- \fŠÆ ˆ…, 	Ç@8šƒ$ È@!ˆ‰Aˆ‚ *‡" [gnus-group-asynchronous-p group exit gnus-prefetched-article-deletion-strategy gnus-async-article-alist alist gnus-async-set-buffer 3 gnus-async-delete-prefected-entry] 3 (#$ . 6987)])
#@67 Return the entry for ARTICLE in GROUP iff it has been prefetched.
(defalias 'gnus-async-prefetched-article-entry #[(group article) "ŠÀ ˆÁÂÃ\f#\"ž)‰ƒ5 A@AA@Uƒ5 ÉÊË�ˆÌ\"Í‚7 )‡" [gnus-async-set-buffer intern format "%s-%d" group article gnus-asynch-obarray gnus-async-article-alist entry G99123 (byte-code "A@Á‰“ˆAA@Á‰“‡" [entry nil] 3) ((error)) delq nil] 6 (#$ . 7348)])
#@39 Prefetch the headers for group GROUP.
(defalias 'gnus-async-prefetch-headers #[(group) "ŠÀ\n…@ …@ Ä!…@ <…@ Ç!‰…@ ÈÉ\nÈ\"ˆË ˆpÌÍÎÆ	BEEÑ	#**‡" [nil unread gnus-use-header-prefetch gnus-asynchronous gnus-group-asynchronous-p group gnus-async-header-prefetched gnus-list-of-unread-articles t nnheader-set-temp-buffer gnus-async-prefetch-headers-buffer erase-buffer lambda (arg) setq nnheader-callback-function nntp-server-buffer gnus-retrieve-headers gnus-fetch-old-headers] 7 (#$ . 7745)])
#@41 See whether we have prefetched headers.
(defalias 'gnus-async-retrieve-fetched-headers #[(articles group) "…5 Á\n!…5 <…5 \n@š…5 \fAš…5 ŠÅÇ\"ˆÈ ˆÉ\ned#ˆË ˆÌ)Ç‡" [gnus-use-header-prefetch gnus-group-asynchronous-p group gnus-async-header-prefetched articles nnheader-set-temp-buffer gnus-async-prefetch-headers-buffer t nntp-decode-text copy-to-buffer nntp-server-buffer erase-buffer nil] 4 (#$ . 8256)])
(provide (quote gnus-async))
