;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) "JCGU? !  " [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) "BBBB" [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 \fW !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@U5 ˏ\"͂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A5 \" \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))
