€cdocutils.nodes
document
q)q}q(U	nametypesq}q(X   3.3 codeqNX   6.3 codeqNX   5.1 descriptionqNX   6.1 descriptionq	NX   3.1 descriptionq
NX   3.2 attributesqNX   4. query claimqNX   4.3 codeqNX   4.1 descriptionqNX   2. setupqNX   5. update claimqNX   5.2 attributesqNX   6.2 attributesqNX   3. claim messagesqNX   4.2 attributesqNX   6. release claimqNX   5.3 codeqNX   1. introductionqNuUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU
decorationqNUautofootnote_startqKUnameidsq}q (hUcodeq!hUid9q"hUid4q#h	Uid7q$h
Udescriptionq%hU
attributesq&hUquery-claimq'hUid3q(hUid1q)hUsetupq*hUupdate-claimq+hUid5q,hUid8q-hUclaim-messagesq.hUid2q/hUrelease-claimq0hUid6q1hUintroductionq2uUchildrenq3]q4(cdocutils.nodes
section
q5)q6}q7(U	rawsourceq8U Uparentq9hUsourceq:XH   /Users/jamie/projects/php/php-opencloud/doc/services/queues/Claim.md.rstq;Utagnameq<Usectionq=U
attributesq>}q?(Udupnamesq@]UclassesqA]UbackrefsqB]UidsqC]qDh2aUnamesqE]qFhauUlineqGKUdocumentqHhh3]qI(cdocutils.nodes
title
qJ)qK}qL(h8X   1. IntroductionqMh9h6h:h;h<UtitleqNh>}qO(h@]hA]hB]hC]hE]uhGKhHhh3]qPcdocutils.nodes
Text
qQX   1. IntroductionqR…qS}qT(h8hMh9hKubaubcdocutils.nodes
paragraph
qU)qV}qW(h8X¨   A **Claim** is the process of a worker checking out a message to perform
a task. Claiming a message prevents other workers from attempting to
process the same messages.h9h6h:h;h<U	paragraphqXh>}qY(h@]hA]hB]hC]hE]uhGKhHhh3]qZ(hQX   A q[…q\}q](h8X   A h9hVubcdocutils.nodes
strong
q^)q_}q`(h8X	   **Claim**h>}qa(h@]hA]hB]hC]hE]uh9hVh3]qbhQX   Claimqc…qd}qe(h8U h9h_ubah<UstrongqfubhQX    is the process of a worker checking out a message to perform
a task. Claiming a message prevents other workers from attempting to
process the same messages.qg…qh}qi(h8X    is the process of a worker checking out a message to perform
a task. Claiming a message prevents other workers from attempting to
process the same messages.h9hVubeubeubh5)qj}qk(h8U h9hh:h;h<h=h>}ql(h@]hA]hB]hC]qmh*ahE]qnhauhGK	hHhh3]qo(hJ)qp}qq(h8X   2. Setupqrh9hjh:h;h<hNh>}qs(h@]hA]hB]hC]hE]uhGK	hHhh3]qthQX   2. Setupqu…qv}qw(h8hrh9hpubaubhU)qx}qy(h8X5   A Claim is initialized on its parent object, a Queue:qzh9hjh:h;h<hXh>}q{(h@]hA]hB]hC]hE]uhGKhHhh3]q|hQX5   A Claim is initialized on its parent object, a Queue:q}…q~}q(h8hzh9hxubaubcdocutils.nodes
literal_block
q€)q}q‚(h8X—   // To initialize an empty object:
$claim = $queue->getClaim();

// or retrieve a specific claim:
$claim = $queue->getClaim('51db7067821e727dc24df754');h9hjh:h;h<Uliteral_blockqƒh>}q„(U	xml:spaceq…Upreserveq†hC]hB]h@]hA]q‡(UcodeqˆX   phpq‰ehE]uhGKhHhh3]qŠcdocutils.nodes
inline
q‹)qŒ}q(h8X—   // To initialize an empty object:
$claim = $queue->getClaim();

// or retrieve a specific claim:
$claim = $queue->getClaim('51db7067821e727dc24df754');h>}qŽ(h@]hA]qUotherqahB]hC]hE]uh9hh3]q‘hQX—   // To initialize an empty object:
$claim = $queue->getClaim();

// or retrieve a specific claim:
$claim = $queue->getClaim('51db7067821e727dc24df754');q’…q“}q”(h8U h9hŒubah<Uinlineq•ubaubeubh5)q–}q—(h8U h9hh:h;h<h=h>}q˜(h@]hA]hB]hC]q™h.ahE]qšhauhGKhHhh3]q›(hJ)qœ}q(h8X   3. Claim messagesqžh9h–h:h;h<hNh>}qŸ(h@]hA]hB]hC]hE]uhGKhHhh3]q hQX   3. Claim messagesq¡…q¢}q£(h8hžh9hœubaubh5)q¤}q¥(h8U h9h–h:h;h<h=h>}q¦(h@]hA]hB]hC]q§h%ahE]q¨h
auhGKhHhh3]q©(hJ)qª}q«(h8X   3.1 Descriptionq¬h9h¤h:h;h<hNh>}q­(h@]hA]hB]hC]hE]uhGKhHhh3]q®hQX   3.1 Descriptionq¯…q°}q±(h8h¬h9hªubaubhU)q²}q³(h8Xí   This operation claims a set of messages (up to the value of the limit
parameter) from oldest to newest and skips any messages that are already
claimed. If no unclaimed messages are available, the API returns a
``204 No Content`` message.h9h¤h:h;h<hXh>}q´(h@]hA]hB]hC]hE]uhGKhHhh3]qµ(hQXÒ   This operation claims a set of messages (up to the value of the limit
parameter) from oldest to newest and skips any messages that are already
claimed. If no unclaimed messages are available, the API returns a
q¶…q·}q¸(h8XÒ   This operation claims a set of messages (up to the value of the limit
parameter) from oldest to newest and skips any messages that are already
claimed. If no unclaimed messages are available, the API returns a
h9h²ubcdocutils.nodes
literal
q¹)qº}q»(h8X   ``204 No Content``h>}q¼(h@]hA]hB]hC]hE]uh9h²h3]q½hQX   204 No Contentq¾…q¿}qÀ(h8U h9hºubah<UliteralqÁubhQX	    message.qÂ…qÃ}qÄ(h8X	    message.h9h²ubeubhU)qÅ}qÆ(h8XA  When a client (worker) finishes processing a message, it should delete
the message before the claim expires to ensure that the message is
processed only once. As part of the delete operation, workers should
specify the claim ID (which is best done by simply using the provided
href). If workers perform these actions, then if a claim simply expires,
the server can return an error and notify the worker of the race
condition. This action gives the worker a chance to roll back its own
processing of the given message because another worker can claim the
message and process it.qÇh9h¤h:h;h<hXh>}qÈ(h@]hA]hB]hC]hE]uhGK hHhh3]qÉhQXA  When a client (worker) finishes processing a message, it should delete
the message before the claim expires to ensure that the message is
processed only once. As part of the delete operation, workers should
specify the claim ID (which is best done by simply using the provided
href). If workers perform these actions, then if a claim simply expires,
the server can return an error and notify the worker of the race
condition. This action gives the worker a chance to roll back its own
processing of the given message because another worker can claim the
message and process it.qÊ…qË}qÌ(h8hÇh9hÅubaubhU)qÍ}qÎ(h8XÉ   The age given for a claim is relative to the server's clock. The claim's
age is useful for determining how quickly messages are getting processed
and whether a given message's claim is about to expire.qÏh9h¤h:h;h<hXh>}qÐ(h@]hA]hB]hC]hE]uhGK*hHhh3]qÑhQXÉ   The age given for a claim is relative to the server's clock. The claim's
age is useful for determining how quickly messages are getting processed
and whether a given message's claim is about to expire.qÒ…qÓ}qÔ(h8hÏh9hÍubaubhU)qÕ}qÖ(h8X   When a claim expires, it is released. If the original worker failed to
process the message, another client worker can then claim the message.q×h9h¤h:h;h<hXh>}qØ(h@]hA]hB]hC]hE]uhGK.hHhh3]qÙhQX   When a claim expires, it is released. If the original worker failed to
process the message, another client worker can then claim the message.qÚ…qÛ}qÜ(h8h×h9hÕubaubeubh5)qÝ}qÞ(h8U h9h–h:h;h<h=h>}qß(h@]hA]hB]hC]qàh&ahE]qáhauhGK2hHhh3]qâ(hJ)qã}qä(h8X   3.2 Attributesqåh9hÝh:h;h<hNh>}qæ(h@]hA]hB]hC]hE]uhGK2hHhh3]qçhQX   3.2 Attributesqè…qé}qê(h8håh9hãubaubhU)që}qì(h8XÑ   The ``ttl`` attribute specifies how long the server waits before
releasing the claim. The ttl value must be between 60 and 43200 seconds
(12 hours). You must include a value for this attribute in your request.h9hÝh:h;h<hXh>}qí(h@]hA]hB]hC]hE]uhGK4hHhh3]qî(hQX   The qï…qð}qñ(h8X   The h9hëubh¹)qò}qó(h8X   ``ttl``h>}qô(h@]hA]hB]hC]hE]uh9hëh3]qõhQX   ttlqö…q÷}qø(h8U h9hòubah<hÁubhQXÆ    attribute specifies how long the server waits before
releasing the claim. The ttl value must be between 60 and 43200 seconds
(12 hours). You must include a value for this attribute in your request.qù…qú}qû(h8XÆ    attribute specifies how long the server waits before
releasing the claim. The ttl value must be between 60 and 43200 seconds
(12 hours). You must include a value for this attribute in your request.h9hëubeubhU)qü}qý(h8X9  The ``grace`` attribute specifies the message grace period in seconds.
The value of grace value must be between 60 and 43200 seconds (12
hours). You must include a value for this attribute in your request. To
deal with workers that have stopped responding (for up to 1209600
seconds or 14 days, including claim lifetime), the server extends the
lifetime of claimed messages to be at least as long as the lifetime of
the claim itself, plus the specified grace period. If a claimed message
would normally live longer than the grace period, its expiration is not
adjusted.h9hÝh:h;h<hXh>}qþ(h@]hA]hB]hC]hE]uhGK8hHhh3]qÿ(hQX   The r   …r  }r  (h8X   The h9hüubh¹)r  }r  (h8X	   ``grace``h>}r  (h@]hA]hB]hC]hE]uh9hüh3]r  hQX   gracer  …r  }r	  (h8U h9j  ubah<hÁubhQX,   attribute specifies the message grace period in seconds.
The value of grace value must be between 60 and 43200 seconds (12
hours). You must include a value for this attribute in your request. To
deal with workers that have stopped responding (for up to 1209600
seconds or 14 days, including claim lifetime), the server extends the
lifetime of claimed messages to be at least as long as the lifetime of
the claim itself, plus the specified grace period. If a claimed message
would normally live longer than the grace period, its expiration is not
adjusted.r
  …r  }r  (h8X,   attribute specifies the message grace period in seconds.
The value of grace value must be between 60 and 43200 seconds (12
hours). You must include a value for this attribute in your request. To
deal with workers that have stopped responding (for up to 1209600
seconds or 14 days, including claim lifetime), the server extends the
lifetime of claimed messages to be at least as long as the lifetime of
the claim itself, plus the specified grace period. If a claimed message
would normally live longer than the grace period, its expiration is not
adjusted.h9hüubeubhU)r  }r  (h8X¨   The ``limit`` attribute specifies the number of messages to return, up
to 20 messages. If limit is not specified, limit defaults to 10. The
limit parameter is optional.h9hÝh:h;h<hXh>}r  (h@]hA]hB]hC]hE]uhGKBhHhh3]r  (hQX   The r  …r  }r  (h8X   The h9j  ubh¹)r  }r  (h8X	   ``limit``h>}r  (h@]hA]hB]hC]hE]uh9j  h3]r  hQX   limitr  …r  }r  (h8U h9j  ubah<hÁubhQX›    attribute specifies the number of messages to return, up
to 20 messages. If limit is not specified, limit defaults to 10. The
limit parameter is optional.r  …r  }r  (h8X›    attribute specifies the number of messages to return, up
to 20 messages. If limit is not specified, limit defaults to 10. The
limit parameter is optional.h9j  ubeubeubh5)r  }r  (h8U h9h–h:h;h<h=h>}r   (h@]hA]hB]hC]r!  h!ahE]r"  hauhGKGhHhh3]r#  (hJ)r$  }r%  (h8X   3.3 Coder&  h9j  h:h;h<hNh>}r'  (h@]hA]hB]hC]hE]uhGKGhHhh3]r(  hQX   3.3 Coder)  …r*  }r+  (h8j&  h9j$  ubaubh€)r,  }r-  (h8X¦   use OpenCloud\Common\Constants\Datetime;

$queue->claimMessages(array(
    'limit' => 15,
    'grace' => 5 * Datetime::MINUTE,
    'ttl'   => 5 * Datetime::MINUTE
));h9j  h:h;h<hƒh>}r.  (h…h†hC]hB]h@]hA]r/  (hˆX   phpr0  ehE]uhGKRhHhh3]r1  h‹)r2  }r3  (h8X¦   use OpenCloud\Common\Constants\Datetime;

$queue->claimMessages(array(
    'limit' => 15,
    'grace' => 5 * Datetime::MINUTE,
    'ttl'   => 5 * Datetime::MINUTE
));h>}r4  (h@]hA]r5  Uotherr6  ahB]hC]hE]uh9j,  h3]r7  hQX¦   use OpenCloud\Common\Constants\Datetime;

$queue->claimMessages(array(
    'limit' => 15,
    'grace' => 5 * Datetime::MINUTE,
    'ttl'   => 5 * Datetime::MINUTE
));r8  …r9  }r:  (h8U h9j2  ubah<h•ubaubeubeubh5)r;  }r<  (h8U h9hh:h;h<h=h>}r=  (h@]hA]hB]hC]r>  h'ahE]r?  hauhGKThHhh3]r@  (hJ)rA  }rB  (h8X   4. Query claimrC  h9j;  h:h;h<hNh>}rD  (h@]hA]hB]hC]hE]uhGKThHhh3]rE  hQX   4. Query claimrF  …rG  }rH  (h8jC  h9jA  ubaubh5)rI  }rJ  (h8U h9j;  h:h;h<h=h>}rK  (h@]hA]hB]hC]rL  h)ahE]rM  hauhGKWhHhh3]rN  (hJ)rO  }rP  (h8X   4.1 DescriptionrQ  h9jI  h:h;h<hNh>}rR  (h@]hA]hB]hC]hE]uhGKWhHhh3]rS  hQX   4.1 DescriptionrT  …rU  }rV  (h8jQ  h9jO  ubaubhU)rW  }rX  (h8X   This operation queries the specified claim for the specified queue.
Claims with malformed IDs or claims that are not found by ID are
ignored.rY  h9jI  h:h;h<hXh>}rZ  (h@]hA]hB]hC]hE]uhGKYhHhh3]r[  hQX   This operation queries the specified claim for the specified queue.
Claims with malformed IDs or claims that are not found by ID are
ignored.r\  …r]  }r^  (h8jY  h9jW  ubaubeubh5)r_  }r`  (h8U h9j;  h:h;h<h=h>}ra  (h@]hA]hB]hC]rb  h/ahE]rc  hauhGK^hHhh3]rd  (hJ)re  }rf  (h8X   4.2 Attributesrg  h9j_  h:h;h<hNh>}rh  (h@]hA]hB]hC]hE]uhGK^hHhh3]ri  hQX   4.2 Attributesrj  …rk  }rl  (h8jg  h9je  ubaubhU)rm  }rn  (h8X	   Claim ID.ro  h9j_  h:h;h<hXh>}rp  (h@]hA]hB]hC]hE]uhGK`hHhh3]rq  hQX	   Claim ID.rr  …rs  }rt  (h8jo  h9jm  ubaubeubh5)ru  }rv  (h8U h9j;  h:h;h<h=h>}rw  (h@]hA]hB]hC]rx  h(ahE]ry  hauhGKchHhh3]rz  (hJ)r{  }r|  (h8X   4.3 Coder}  h9ju  h:h;h<hNh>}r~  (h@]hA]hB]hC]hE]uhGKchHhh3]r  hQX   4.3 Coder€  …r  }r‚  (h8j}  h9j{  ubaubh€)rƒ  }r„  (h8X6   $claim = $queue->getClaim('51db7067821e727dc24df754');h9ju  h:h;h<hƒh>}r…  (h…h†hC]hB]h@]hA]r†  (hˆX   phpr‡  ehE]uhGKhhHhh3]rˆ  h‹)r‰  }rŠ  (h8X6   $claim = $queue->getClaim('51db7067821e727dc24df754');h>}r‹  (h@]hA]rŒ  Uotherr  ahB]hC]hE]uh9jƒ  h3]rŽ  hQX6   $claim = $queue->getClaim('51db7067821e727dc24df754');r  …r  }r‘  (h8U h9j‰  ubah<h•ubaubeubeubh5)r’  }r“  (h8U h9hh:h;h<h=h>}r”  (h@]hA]hB]hC]r•  h+ahE]r–  hauhGKjhHhh3]r—  (hJ)r˜  }r™  (h8X   5. Update claimrš  h9j’  h:h;h<hNh>}r›  (h@]hA]hB]hC]hE]uhGKjhHhh3]rœ  hQX   5. Update claimr  …rž  }rŸ  (h8jš  h9j˜  ubaubh5)r   }r¡  (h8U h9j’  h:h;h<h=h>}r¢  (h@]hA]hB]hC]r£  h#ahE]r¤  hauhGKmhHhh3]r¥  (hJ)r¦  }r§  (h8X   5.1 Descriptionr¨  h9j   h:h;h<hNh>}r©  (h@]hA]hB]hC]hE]uhGKmhHhh3]rª  hQX   5.1 Descriptionr«  …r¬  }r­  (h8j¨  h9j¦  ubaubhU)r®  }r¯  (h8X   This operation updates the specified claim for the specified queue.
Claims with malformed IDs or claims that are not found by ID are
ignored.r°  h9j   h:h;h<hXh>}r±  (h@]hA]hB]hC]hE]uhGKohHhh3]r²  hQX   This operation updates the specified claim for the specified queue.
Claims with malformed IDs or claims that are not found by ID are
ignored.r³  …r´  }rµ  (h8j°  h9j®  ubaubhU)r¶  }r·  (h8X+  Clients should periodically renew claims during long-running batches of
work to avoid losing a claim while processing a message. The client can
renew a claim by executing this method on a specific **Claim** and
including a new TTL. The API will then reset the age of the claim and
apply the new TTL.h9j   h:h;h<hXh>}r¸  (h@]hA]hB]hC]hE]uhGKshHhh3]r¹  (hQXÅ   Clients should periodically renew claims during long-running batches of
work to avoid losing a claim while processing a message. The client can
renew a claim by executing this method on a specific rº  …r»  }r¼  (h8XÅ   Clients should periodically renew claims during long-running batches of
work to avoid losing a claim while processing a message. The client can
renew a claim by executing this method on a specific h9j¶  ubh^)r½  }r¾  (h8X	   **Claim**h>}r¿  (h@]hA]hB]hC]hE]uh9j¶  h3]rÀ  hQX   ClaimrÁ  …rÂ  }rÃ  (h8U h9j½  ubah<hfubhQX]    and
including a new TTL. The API will then reset the age of the claim and
apply the new TTL.rÄ  …rÅ  }rÆ  (h8X]    and
including a new TTL. The API will then reset the age of the claim and
apply the new TTL.h9j¶  ubeubeubh5)rÇ  }rÈ  (h8U h9j’  h:h;h<h=h>}rÉ  (h@]hA]hB]hC]rÊ  h,ahE]rË  hauhGKzhHhh3]rÌ  (hJ)rÍ  }rÎ  (h8X   5.2 AttributesrÏ  h9jÇ  h:h;h<hNh>}rÐ  (h@]hA]hB]hC]hE]uhGKzhHhh3]rÑ  hQX   5.2 AttributesrÒ  …rÓ  }rÔ  (h8jÏ  h9jÍ  ubaubhU)rÕ  }rÖ  (h8X   See section 4.2.r×  h9jÇ  h:h;h<hXh>}rØ  (h@]hA]hB]hC]hE]uhGK|hHhh3]rÙ  hQX   See section 4.2.rÚ  …rÛ  }rÜ  (h8j×  h9jÕ  ubaubeubh5)rÝ  }rÞ  (h8U h9j’  h:h;h<h=h>}rß  (h@]hA]hB]hC]rà  h1ahE]rá  hauhGKhHhh3]râ  (hJ)rã  }rä  (h8X   5.3 Coderå  h9jÝ  h:h;h<hNh>}ræ  (h@]hA]hB]hC]hE]uhGKhHhh3]rç  hQX   5.3 Coderè  …ré  }rê  (h8jå  h9jã  ubaubh€)rë  }rì  (h8Xf   use OpenCloud\Common\Constants\Datetime;

$claim->update(array(
    'ttl' => 10 * Datetime::MINUTE
));h9jÝ  h:h;h<hƒh>}rí  (h…h†hC]hB]h@]hA]rî  (hˆX   phprï  ehE]uhGKˆhHhh3]rð  h‹)rñ  }rò  (h8Xf   use OpenCloud\Common\Constants\Datetime;

$claim->update(array(
    'ttl' => 10 * Datetime::MINUTE
));h>}ró  (h@]hA]rô  Uotherrõ  ahB]hC]hE]uh9jë  h3]rö  hQXf   use OpenCloud\Common\Constants\Datetime;

$claim->update(array(
    'ttl' => 10 * Datetime::MINUTE
));r÷  …rø  }rù  (h8U h9jñ  ubah<h•ubaubeubeubh5)rú  }rû  (h8U h9hh:h;h<h=h>}rü  (h@]hA]hB]hC]rý  h0ahE]rþ  hauhGKŠhHhh3]rÿ  (hJ)r   }r  (h8X   6. Release claimr  h9jú  h:h;h<hNh>}r  (h@]hA]hB]hC]hE]uhGKŠhHhh3]r  hQX   6. Release claimr  …r  }r  (h8j  h9j   ubaubh5)r  }r	  (h8U h9jú  h:h;h<h=h>}r
  (h@]hA]hB]hC]r  h$ahE]r  h	auhGKhHhh3]r  (hJ)r  }r  (h8X   6.1 Descriptionr  h9j  h:h;h<hNh>}r  (h@]hA]hB]hC]hE]uhGKhHhh3]r  hQX   6.1 Descriptionr  …r  }r  (h8j  h9j  ubaubhU)r  }r  (h8XÝ   This operation immediately releases a claim, making any remaining
undeleted messages that are associated with the claim available to other
workers. Claims with malformed IDs or claims that are not found by ID
are ignored.r  h9j  h:h;h<hXh>}r  (h@]hA]hB]hC]hE]uhGKhHhh3]r  hQXÝ   This operation immediately releases a claim, making any remaining
undeleted messages that are associated with the claim available to other
workers. Claims with malformed IDs or claims that are not found by ID
are ignored.r  …r  }r  (h8j  h9j  ubaubhU)r  }r  (h8Xó   This operation is useful when a worker is performing a graceful
shutdown, fails to process one or more messages, or is taking longer
than expected to process messages, and wants to make the remainder of
the messages available to other workers.r   h9j  h:h;h<hXh>}r!  (h@]hA]hB]hC]hE]uhGK”hHhh3]r"  hQXó   This operation is useful when a worker is performing a graceful
shutdown, fails to process one or more messages, or is taking longer
than expected to process messages, and wants to make the remainder of
the messages available to other workers.r#  …r$  }r%  (h8j   h9j  ubaubeubh5)r&  }r'  (h8U h9jú  h:h;h<h=h>}r(  (h@]hA]hB]hC]r)  h-ahE]r*  hauhGKšhHhh3]r+  (hJ)r,  }r-  (h8X   6.2 Attributesr.  h9j&  h:h;h<hNh>}r/  (h@]hA]hB]hC]hE]uhGKšhHhh3]r0  hQX   6.2 Attributesr1  …r2  }r3  (h8j.  h9j,  ubaubhU)r4  }r5  (h8X   See section 4.2.r6  h9j&  h:h;h<hXh>}r7  (h@]hA]hB]hC]hE]uhGKœhHhh3]r8  hQX   See section 4.2.r9  …r:  }r;  (h8j6  h9j4  ubaubeubh5)r<  }r=  (h8U h9jú  h:h;h<h=h>}r>  (h@]hA]hB]hC]r?  h"ahE]r@  hauhGKŸhHhh3]rA  (hJ)rB  }rC  (h8X   6.3 CoderD  h9j<  h:h;h<hNh>}rE  (h@]hA]hB]hC]hE]uhGKŸhHhh3]rF  hQX   6.3 CoderG  …rH  }rI  (h8jD  h9jB  ubaubh€)rJ  }rK  (h8X   $message->delete();h9j<  h:h;h<hƒh>}rL  (h…h†hC]hB]h@]hA]rM  (hˆX   phprN  ehE]uhGK¤hHhh3]rO  h‹)rP  }rQ  (h8X   $message->delete();h>}rR  (h@]hA]rS  UotherrT  ahB]hC]hE]uh9jJ  h3]rU  hQX   $message->delete();rV  …rW  }rX  (h8U h9jP  ubah<h•ubaubeubeubeh8U UtransformerrY  NUfootnote_refsrZ  }r[  Urefnamesr\  }r]  Usymbol_footnotesr^  ]r_  Uautofootnote_refsr`  ]ra  Usymbol_footnote_refsrb  ]rc  U	citationsrd  ]re  hHhUcurrent_linerf  NUtransform_messagesrg  ]rh  Ureporterri  NUid_startrj  K
Uautofootnotesrk  ]rl  Ucitation_refsrm  }rn  Uindirect_targetsro  ]rp  Usettingsrq  (cdocutils.frontend
Values
rr  ors  }rt  (Ufootnote_backlinksru  KUrecord_dependenciesrv  NUrfc_base_urlrw  Uhttp://tools.ietf.org/html/rx  U	tracebackry  ˆUpep_referencesrz  NUstrip_commentsr{  NUtoc_backlinksr|  Uentryr}  Ulanguage_coder~  Uenr  U	datestampr€  NUreport_levelr  KU_destinationr‚  NU
halt_levelrƒ  KUstrip_classesr„  NhNNUerror_encoding_error_handlerr…  Ubackslashreplacer†  Udebugr‡  NUembed_stylesheetrˆ  ‰Uoutput_encoding_error_handlerr‰  UstrictrŠ  Usectnum_xformr‹  KUdump_transformsrŒ  NUdocinfo_xformr  KUwarning_streamrŽ  NUpep_file_url_templater  Upep-%04dr  Uexit_status_levelr‘  KUconfigr’  NUstrict_visitorr“  NUcloak_email_addressesr”  ˆUtrim_footnote_reference_spacer•  ‰Uenvr–  NUdump_pseudo_xmlr—  NUexpose_internalsr˜  NUsectsubtitle_xformr™  ‰Usource_linkrš  NUrfc_referencesr›  NUoutput_encodingrœ  Uutf-8r  U
source_urlrž  NUinput_encodingrŸ  U	utf-8-sigr   U_disable_configr¡  NU	id_prefixr¢  U U	tab_widthr£  KUerror_encodingr¤  UUTF-8r¥  U_sourcer¦  h;Ugettext_compactr§  ˆU	generatorr¨  NUdump_internalsr©  NUsmart_quotesrª  ‰Upep_base_urlr«  Uhttp://www.python.org/dev/peps/r¬  Usyntax_highlightr­  Ulongr®  Uinput_encoding_error_handlerr¯  jŠ  Uauto_id_prefixr°  Uidr±  Udoctitle_xformr²  ‰Ustrip_elements_with_classesr³  NU_config_filesr´  ]rµ  Ufile_insertion_enabledr¶  ˆUraw_enabledr·  KUdump_settingsr¸  NubUsymbol_footnote_startr¹  K Uidsrº  }r»  (h!j  h+j’  h%h¤h-j&  h.h–h2h6h$j  h*hjh,jÇ  h/j_  h(ju  h)jI  h1jÝ  h0jú  h&hÝh"j<  h'j;  h#j   uUsubstitution_namesr¼  }r½  h<hHh>}r¾  (h@]hC]hB]Usourceh;hA]hE]uU	footnotesr¿  ]rÀ  UrefidsrÁ  }rÂ  ub.