Return-Path: Delivered-To: apmail-hadoop-zookeeper-commits-archive@minotaur.apache.org Received: (qmail 40090 invoked from network); 19 Feb 2010 06:30:44 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 19 Feb 2010 06:30:44 -0000 Received: (qmail 45099 invoked by uid 500); 19 Feb 2010 06:30:44 -0000 Delivered-To: apmail-hadoop-zookeeper-commits-archive@hadoop.apache.org Received: (qmail 45056 invoked by uid 500); 19 Feb 2010 06:30:43 -0000 Mailing-List: contact zookeeper-commits-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: zookeeper-dev@ Delivered-To: mailing list zookeeper-commits@hadoop.apache.org Received: (qmail 45046 invoked by uid 99); 19 Feb 2010 06:30:43 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 19 Feb 2010 06:30:43 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED,OBSCURED_EMAIL X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 19 Feb 2010 06:30:36 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 106F723888DD; Fri, 19 Feb 2010 06:30:16 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r911713 - in /hadoop/zookeeper/trunk: CHANGES.txt docs/bookkeeperProgrammer.html docs/bookkeeperProgrammer.pdf src/docs/src/documentation/content/xdocs/bookkeeperProgrammer.xml Date: Fri, 19 Feb 2010 06:30:15 -0000 To: zookeeper-commits@hadoop.apache.org From: mahadev@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20100219063016.106F723888DD@eris.apache.org> Author: mahadev Date: Fri Feb 19 06:30:15 2010 New Revision: 911713 URL: http://svn.apache.org/viewvc?rev=911713&view=rev Log: ZOOKEEPER-664. BookKeeper API documentation (flavio via mahadev) Modified: hadoop/zookeeper/trunk/CHANGES.txt hadoop/zookeeper/trunk/docs/bookkeeperProgrammer.html hadoop/zookeeper/trunk/docs/bookkeeperProgrammer.pdf hadoop/zookeeper/trunk/src/docs/src/documentation/content/xdocs/bookkeeperProgrammer.xml Modified: hadoop/zookeeper/trunk/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/CHANGES.txt?rev=911713&r1=911712&r2=911713&view=diff ============================================================================== --- hadoop/zookeeper/trunk/CHANGES.txt (original) +++ hadoop/zookeeper/trunk/CHANGES.txt Fri Feb 19 06:30:15 2010 @@ -281,6 +281,8 @@ ZOOKEEPER-665. Add BookKeeper streaming documentation (flavio via mahadev) + ZOOKEEPER-664. BookKeeper API documentation (flavio via mahadev) + NEW FEATURES: ZOOKEEPER-539. generate eclipse project via ant target. (phunt via mahadev) Modified: hadoop/zookeeper/trunk/docs/bookkeeperProgrammer.html URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/docs/bookkeeperProgrammer.html?rev=911713&r1=911712&r2=911713&view=diff ============================================================================== --- hadoop/zookeeper/trunk/docs/bookkeeperProgrammer.html (original) +++ hadoop/zookeeper/trunk/docs/bookkeeperProgrammer.html Fri Feb 19 06:30:15 2010 @@ -307,7 +307,7 @@

- There is one BookKeeper constructor: + There are three BookKeeper constructors:

@@ -315,12 +315,83 @@ public BookKeeper(String servers) throws KeeperException, IOException - +

+

+ where: +

+
    + +
  • +

    - where servers is a comma-separated list of ZooKeeper servers. + +servers is a comma-separated list of ZooKeeper servers. +

    + +
  • + +
+

+ + + public BookKeeper(ZooKeeper zk) + throws InterruptedException, KeeperException + + +

+

+ where: +

+
    + +
  • + +

    + +zk is a ZooKeeper object. This constructor is useful when + the application also using ZooKeeper and wants to have a single instance of ZooKeeper. +

    + +
  • + +
+

+ + + public BookKeeper(ZooKeeper zk, ClientSocketChannelFactory channelFactory) + throws InterruptedException, KeeperException + + +

+

+ where:

- +
    + +
  • + +

    + +zk is a ZooKeeper object. This constructor is useful when + the application also using ZooKeeper and wants to have a single instance of ZooKeeper. +

    + +
  • + + +
  • + +

    + +channelFactory is a netty channel object + (org.jboss.netty.channel.socket). +

    + +
  • + +
+

Creating a ledger.

Before writing entries to BookKeeper, it is necessary to create a ledger. With the current BookKeeper API, it is possible to create a ledger both synchronously @@ -335,7 +406,7 @@

- public LedgerHandle createLedger(int ensSize, int qSize, QMode mode, byte passwd[]) + public LedgerHandle createLedger(int ensSize, int qSize, DigestType type, byte passwd[]) throws KeeperException, InterruptedException, IOException, BKException @@ -370,10 +441,7 @@

-mode is the ledger mode (QMode.GENERIC, QMode.VERIFIABLE). - If mode is QMode.GENERIC, then ensSize has to - be at least 3t+1, and qSize has to be 2t+1. - t is the maximum number of tolerated bookie failures. +type is the type of digest used with entries: either MAC or CRC32.

@@ -396,7 +464,7 @@

As a convenience, we provide a createLedger with default parameters (3,2,VERIFIABLE), - and the only input parameter it requires is a password. + and the only two input parameters it requires are a digest type and a password.

@@ -408,13 +476,11 @@ public void asyncCreateLedger(int ensSize, int qSize, - QMode mode, + DigestType type, byte passwd[], CreateCallback cb, Object ctx ) - throws KeeperException, InterruptedException, - IOException, BKException

@@ -441,7 +507,7 @@

-rc is a return code (please refer to org.apache.bookeeper.client.BKDefs for a list); +rc is a return code (please refer to org.apache.bookeeper.client.BKException for a list);

@@ -461,7 +527,7 @@

-ctx is a control object for accountability purposes; +ctx is a control object for accountability purposes. It can be essentially any object the application is happy with.

@@ -471,7 +537,7 @@ The ctx object passed as a parameter to the call to create a ledger is the one same returned in the callback.

- +

Adding entries to a ledger.

Once we have a ledger handle lh obtained through a call to create a ledger, we @@ -508,7 +574,7 @@

- A call to addEntry returns the status of the operation ((please refer to org.apache.bookeeper.client.BKDefs for a list); + A call to addEntry returns the status of the operation (please refer to org.apache.bookeeper.client.BKDefs for a list);

@@ -519,7 +585,6 @@ public void asyncAddEntry(byte[] data, AddCallback cb, Object ctx) - throws InterruptedException

@@ -576,13 +641,13 @@

-ctx is control object used for accountability purposes. +ctx is control object used for accountability purposes. It can be any object the application is happy with.

- +

Closing a ledger.

Once a client is done writing, it closes the ledger. The following methods belong @@ -597,7 +662,7 @@ public void close() - throws KeeperException, InterruptedException + throws InterruptedException

@@ -665,7 +730,7 @@ - +

Opening a ledger.

To read from a ledger, a client must open it first. The following methods belong @@ -679,8 +744,8 @@

- public LedgerHandle openLedger(long lId, byte passwd[]) - throws KeeperException, InterruptedException, IOException, BKException + public LedgerHandle openLedger(long lId, DigestType type, byte passwd[]) + throws InterruptedException, BKException

@@ -696,6 +761,16 @@ +
  • + +

    + +type is the type of digest used with entries: either MAC or CRC32. +

    + +
  • + +
  • @@ -714,8 +789,7 @@

    - public void asyncOpenLedger(long lId, byte passwd[], OpenCallback cb, Object ctx) - throws InterruptedException + public void asyncOpenLedger(long lId, DigestType type, byte passwd[], OpenCallback cb, Object ctx)

    @@ -768,7 +842,7 @@
  • - +

    Reading from ledger

    Read calls may request one or more consecutive entries. The following methods belong @@ -803,7 +877,7 @@

    -lastEntry is the identifier of the last entry in the sequence of entries to read; +lastEntry is the identifier of the last entry in the sequence of entries to read.

    @@ -833,7 +907,7 @@

    - void readComplete(int rc, LedgerHandle lh, LedgerSequence seq, Object ctx) + void readComplete(int rc, LedgerHandle lh, Enumeration<LedgerEntry> seq, Object ctx)

    @@ -866,7 +940,7 @@

    -seq is a LedgerSequence object to containing the list of entries requested; +seq is a Enumeration<LedgerEntry> object to containing the list of entries requested;

    Modified: hadoop/zookeeper/trunk/docs/bookkeeperProgrammer.pdf URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/docs/bookkeeperProgrammer.pdf?rev=911713&r1=911712&r2=911713&view=diff ============================================================================== --- hadoop/zookeeper/trunk/docs/bookkeeperProgrammer.pdf (original) +++ hadoop/zookeeper/trunk/docs/bookkeeperProgrammer.pdf Fri Feb 19 06:30:15 2010 @@ -5,10 +5,10 @@ /Producer (FOP 0.20.5) >> endobj 5 0 obj -<< /Length 643 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 646 /Filter [ /ASCII85Decode /FlateDecode ] >> stream -Gb!$E966RV&BF6e$6>[)[sA.s30SI<*r6/OZj1%CAr;^$P\0LRbJQf4V\=)j'0)@bG.%>L`(F3GdJFl;-jP^:1;^rT-Gl^=#f?O7:ce@sa1u5;Z5pM\XgS0$=fK(i([)m!PQ(OGKt(0an2`4RNVJ6.]93Hee86D3a#ria0h'[kLX0N'_+J/Qr[?"Zj!,OO.DbE+]=u"JeqgZtBsmqEaSB9O2M;3skhXJiJZtS2`%R.VE#So8R\GlI%lY`q/!LLUQC_@blX&ehkYhCNlAP3bA;h!hAnt:l4,h~> +Gb!$E966RV&BF6e$6>[)[sA.s30SI<*r6/OZj1%CAr;^$P\0LRbJQf4V\=)j'0)@bG.%>L`(F3GdJFl;-jP^:1;^rT-Gl^=#f?O7:ce@sa1u5;Z5pM\XgS0$=fK(i([)m!PQ(OGK4\gWmgp^,hX*k"RQo^7s]J&X/RT^oTK*!KV\dI2)(+1G7%@u,I`j57^="YpFMdC3dP*#@b^$:@.8V8/W:L_,Y?J^U,YI-:gKIkl/S[I,=0K*pThMK.XWCoa(G\^*4KIB-$ endstream endobj 6 0 obj @@ -102,10 +102,10 @@ >> endobj 22 0 obj -<< /Length 2221 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 1815 /Filter [ /ASCII85Decode /FlateDecode ] >> stream -GatU5=``=U&:W67i1iG0:]^bj0R^5_NpAT?%XZot7X:XP87Fq!1.bJcIsmY2!1pJXRE5RCG5'aU%f&-n>(>$nCe?PYR2Maq/^Lq$_illCtnlWUZkGg1&^YjGVnYZ?ZXMsCEa[P4\rRD9(q2QLdK$":E$lC%>@ellINQ]ER>SeYJ^eW,c',L/F;ADK2]==^K8Om];ODSqAUl;`H)Ot7-,4:Lf/%)W?U'7kod&G1eOfV>-5j=SfK9HdEM5W)%BOCP(e>V9%@a_W\4931<,_-pae%5&o&heP=qL"kh3N-JZL>o)0-('e\qp&#t4B^TLL]+8gcu2+eMQQmk`lB"q2uH7n+ApUhU/Mf("'$n197&P=#*Sg^XGU4U`L?+Bpl1ni7injQ,Y=?tJe-4gi"K@0i+=/(#FK,+3AK8q,U\`oN2gH3^+Y,*TkFf.;?V>4H*e6/"fTgJRF(i]EEVcMsLH=hhrj83_8n\Q+CdEONC=TjpoeIYfld%6KZGE:Qgi"[Q0N\XEcck%\.gJl1fXjpf`aRLV=oGMm#!s0.$K?67&Q;@Ua_Ouki=K7mr.'O`14PhVhqHDG&./KtY)Vq6g&"O+jbq=^TO,1&4Z/JE7Ee4S"Q$Cph-$:0(=g!cf/e7/G9G5UbO-phkqjP,N)^YttFYsB>1bZE 9>HIETXeG\*[9RCpNES*nU#6K`pB%IIjgWBs]`iQ67c7p^fdITQ]#eL&&8MRjVoNp4ds2BV#D^ks&'%ZaY(;^NGF1$:mU?)GUS[rA'Bq_*c'F^].c7/pPc8^mHLlP:%XBId=#Cal^(%KSOam,!I6;-nLJnpaVoi,:RUQ>0+1ijsXh]T4lnRRDa`L;]]$97pGb'[YO@#ISe.5ETLUZ'=J,^g+f5ier1m$Xmp8fZ7X@[<(-+@&j#>gjpUn?KRFck.%.3TOkrLE4t*.iR)emAHr4h!qR?364aKcq:)WnF[9JN(/XWa-k5E2j=\R(u\a#!tD6db3brUX43#?(*Wj4tT!*+Y@hX%9m"%bpWS!0pH[CA;Lk5eF`/p$D*3Yib2U41lGuS.-+tF6$9R)k.*08NH,Qh[/!:W?!eF9jh"p-BU$fkTqT:`[bO=g$1RM^DZ-S=U5hK;*QhOZFp*L0.TJATB[.;at^&`#jfK*'-cC!BZDf:kaa_)>\/`e&069i+bns:-Vu25tia%C^#t:92-^qE]W595U&Tp1:aL&qqk%NYJ5SG=YiSE\m<.7he#$WgOc*',%*l`MSR&Z OaN'q;.YDT9eKa(t-9SGBM'+;Hg3m:'t\m$4LjI#^01ES17^?6-pi`>-bbhM"1kEi\D*>VjmfX2&VehmfJZg/HGQcp=68eGcM)@KT7U%SGpeZp-7J^Od`A.R*D5"QFr'2:[*^e"rr@\&`23~> +Gb!Sm9lo&I&A@C2i+UHT-ijq`Qs8p64`1d%A"?ft5YI3WQm,OnMX13:0),U#T9;s?:1c6^K\cBQI9>hk\')`DpDabU4(u0-3,#oHaFQPY"V/cPSr8HkUZEQqGt%3[\tMgB?[^2ID&2R6;6n`9Dc*dgUY@VRrCtFebc]?#B_guRo5a@[\5s4PMora!@H%+).kPYO^rHq+;'s]6iqLEo,"E3<'fha#A[&Q$oh6ej+f],;gB1Uj8!Jop9KCfOiZ#cP3ERtqhU#1'``fV#8%(ieVRTc!.'QR:`I/JSUk>anEX?E:A8?l,$o-gm]*fQ\oD7_XiJrC!HK,PESLPirK0M-OKDbf^"e)Nd^&N3bYM$L72p<`mXR[7-I]3CP!=P.fM'?=O^nMHmVh^U1J-A@.Ws&F/?;CmCZ_@0tFPiHi`a%FETVLX$`QHDt.$Gj5A3S#\p'X-;9EOl,f]uQ48L_AVVN%:c[7J>Og.iB?2i5t,i,p%CV>=e<2MMF\dCWrdKT,-A8W^*-c?baR=a?@r=LNqgbB*(aGHlA_?/gB7$(>:(OfKf]]M/AXRY2TWq:'Pmi"Wnm`:#c!*=!!.'rRf:oVH:22:qAGCACgOrZk%lJ_tGIZ%jN6Q=Od/8Y..-0W-9kJLhsdqQ1GQmA7Gq?8CLu]p&m3'il^$L-$h[:eXHoM<.KIe4l1hKc]B14Qqp-,as3)F#i%L202VYC`'S72&q:u^=&A:E`IL '%ltQ\Q4FLKZ`Q(=ip[M^FqVQ?bLc#-HO]98)*sdHECQ?ff,PL:9[90I.YUT0a&S76q>;k$J=tK/LZ;#IXh^.hFM'hF4[BN\.]31sQe;n;jj2P)$FlpN\K4hLTDr'96P60:LRO-\mm''Qn/oEPMrtSo'qQ2kRl[d7"8U>&nU8U_hFikrB2bW`fB535onFiM&Q"-n)k"8Gbn0::iCtp8@0XkZlQ>--]Fa%\_N.83Zg;pe4\UXaV7r6u7i/M*2C3BIW2\^BT+u)jK\"Vuf;U1!Y9*E6OXL`nXNE+a5$mYNA)lhak;GkaRq$8^&DP=F9Fb[g3#j'f@[.TJ'`h[3.emA.:'X0ibfPZM2^mj'q"_=I?u&$)VC=_r.=f%P!J1_$AF)ib_ngG9gA*@OMF*HU0-a]Ii!eEpHO+(`Zjk=07I6g_*SQGHpS"$&1A2DgCY/GZ7+Rh&6B-C8IS)iHFrnI4^Up#KoiSBYUicHpAH;^F'Nb$2)NV%gHVr'Qh%l"kA,M@'FD8OL4r,;$r$`]E*!>T\f]8KDP?\5\51N&"-BL_oQKZ%#d_*Od-H_>>1tRP[OTr:Zl>Oc't^6T%R@_AdJrgc+if+t.pNd5=R_d6f5N5l1hpie37W:>(IPaRN';n[T,[P66((1jWBUlhL\E@Rm`GllX13`M(ssSn3'r\k?r+J1\^,g=dQT7)eO)k#:4P2N+H-XXc8Y0?[4[/pA~> endstream endobj 23 0 obj @@ -188,10 +188,10 @@ >> endobj 31 0 obj -<< /Length 1998 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 1938 /Filter [ /ASCII85Decode /FlateDecode ] >> stream -Gatm<968iG&AII3n7^---ijsVfUQd08^jK!VUkAPjT(F)`0r"e5,>^'^<;kITL_]CF>D,I";^mkrNLL(fu%:mI7C=Jr4S^+2R+j[oAG+b=23X3f-YS,=IHNsZS/YsZNQ:)&;H5FoT!+>_9QLQZYM$0r_]_ij;t"9f31:@?a#cSnS@H[[J12eJg4,_5j`hiiRog%:?;3o3n!Lr)X`22##1Up>AmUql]og]l`3u#kqC"V'^045CfM8N,BJ6!l:%)Y1.;>"d_?;q>fbkUj,QMs)k#s`9#g*"Z,i^hA40UT9hVdB\=JYh8YW38AHkiTX_K4>;8aqQWi1$d.Xck9L89gX]m>ir`A1G2[QW_A*U!iaNl-_0V`hs%Z?@MFU.bn6e!YHHL!9*2"7Q;.lu$!53B-,]_cYppZZ+3N>)S0N!-4SP8>2M]5i]j3am9rHPpHUT?a5Z3L[uQ0i+R,muY)'kt;p]5c1PLf7kJ@I\(LUEt;o^`g!ML%cIW_3[t]e@k4&W4SfraK\nmqmOL>t&e\=Up>\B/kR#<\JT8Bie#'r;$jCB]Qc1eQ3rBdbhqW3qTsUSo1n0TbkmfrO^5C_f/!u:WMTf.A>$Lr!;DeW\oU]LD42A.sFh4#.HhWY6/%.UZ;(9j72V,o$hc!5]q0"E"q=p)6@pLbi`p\A\`WYfMMA1JOcbX=%nPe2K"U[1X'\mG$V&EHuA3eY,7*?ga>CKT[*4-(*'?8A+t7JOYY(46\Q$H,ii2;])Gs4?pB+\gO0&*^n`i&$F42I"lWX<7R&sbQ,cb2aYlQR7(ALmV:4"tcpC`J:UA)qg31]fXh\U>%GWqa*cbh mOCV?gPuD,/!/>chREV/?GHWJs`Dj$bpmejBC(m/+MVoa`X!COI__?AK8Hg4=H+"Bnj9Na??HjkVZ4?q9@)dJ,+(.M-D.kmsD,sK)`+JK4mnPJiU)AjB5oMX5\e@UdVaE9[L^g&R7n&DcXHJ-i;b=?t!"6hcuYY3%7j&+gNc9E@BMI_(j5PTWP5NAhMQhV%HM(_9^b]*sVe+SnbY!()TNH\qX$98qcc'.5$,sc)@3_R$i%o;pVd"cim_+:NB$_k]VHB%STY64#[(l#%a$aGSQ\3RiU=(XOZbP^a(78$5e8"*?\Ji,ib+o$KCL>8J^K6lePV'^20JYfa(d`f'3%""kIN&$TV63=Q*td$oW%-pY8([m6CA?U79O[P,nA=Hgd[FRZ(Oj'YoN#Y-Pko*T+5V'k7QVE]29#[+WQG@pP&822tbk$nC0Ep)^lt4P5'4tQtFt>o[3:QA.j+!Xm:nR$omS>-4_fSh6.!gEJH!/_)JZmu':*^0$oU)7sS"ITlPiMPP#_uFiPWSLPh797>L/b"gACCTfCf65!kB:rfI.M"173`1P_7S_qF<>m+=jW0N+HDmV7s,2)cbT:BFnK&V>oFd!4]^h)PTkOYN0!"j\lr/;o#XubBs;W>>1@HVAWo,2+c_ +Gau0D968iG&AII3n7^--#QYL4R%@j=:>I1Z1tK$h-jPW],hbi&;e&Gg,bAP0\;XEFfMACl-'L?V.L'>W.*`/u;N&[oP:"G=+cZMB>:=[$*.eBBZT6H(HQbrf_*\og1nqo&hR\88Z\+Y`1VEd+j7!ectRWiVm?8$l6qO"DA74ooP6f]eIrCL?>UT]2YSfh"Ou`mk=]1dUDL?*nf?@[hdKo?RS<,!IJS(Y#s)cSlD*ik#,<<#S(]Q,11`"GdQj"IG#kp^EXD+N!Ad0@l7Ps<6(c,cY$c1CS_/Od$m%'J.Q9Cn;k02qJ/&qiGK!n(kh).`ZIgk1jH!jr@OR0kEanY0P`?VKpDJpa:2S$Pfd\eDS,"L4m&/7ZF=G,TE5!`f$P=3"Ad;+fM`ApBmcY.s8IJ*8P+qCIj8u/dXQRr.KWh[2Ut$9jC-*fVCBn33ZpkiVHOg)dVa)<8P/1?_-q(85)CFTXM\GYFNIIPH)h.Jo>i^hl:H$%$4R5",Ofta,JkC4V&N&Nn3Ncq:R<3Hmife!`qQ1k2fg;I6n+u"j)j+!Z%ZUjb9I^0(i%-@SsjI4M@lE-"227&@il"7H`_3([oT]$GUbNFkF==)ql:c&Z\:*phh,p-PFP`>8t#eE<+&3N6`1quj6NH,NTY9:1lI%=uJp>+Rn24nL+Rac&-HY)ET8J:j&u3+JJt*dQiU?Vqf<5M_iQ"?bR]7/p8YLB:(Ai\Q-DU")]gU$Vnu=Cej;QL)b9pt8JJOuTHM]J*lH.Dd@;4`1J(]*1B<0&H3Z:`>CApI-?cAgGdear6r=GN\6c]5a/VW'\ip3P1*OlG7agG]:Z'a[-MtK3#30d@)"U;4n\J)ah2M9EL9+GBD%G$@V&qQ"A(2)2d7V9\,]eW56!h(rEL`&N/t><= endstream endobj 32 0 obj @@ -203,10 +203,10 @@ >> endobj 33 0 obj -<< /Length 1783 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 1922 /Filter [ /ASCII85Decode /FlateDecode ] >> stream -Gau0D968iG&AII3n7^,n-iq':;sYiFR`qRup_N#mOcY6N-57#Km=4$T93BOd,q&(nChX4B@^46tH$-H>IC&dYU>?[bhQAW+pg+r\n3;l#h_-4?O>mS0/\LcAn(#r[L4BIR7b`E<'7#hYb0=P[[p2+EW7Q$D0o>kU]=IMs?bEuB?F!VQ7F'*);FXrWD.Y]+^!PP*fUrb/JHn2_o/-4HE-1<[]PWl-hW7!7?%J=;q)\)r'lQnV)B@VsPS#5b5ANDZ)ZP#J5(-k*Sq9i6'Bt$gqI\-&K7+=2hO)$>urfB.+Ei#_R5pNHnXMj-6b[#I-fY_7B`XNM>T(rWYQd"$#K+95t$0_e#',&oBT<9j''YO_#f4,9`fhl'BE!7%L#V'MssP-,5fU;OZ7\2&d5UYNlK6bA->i_=2flB6%t.4m8Ct@fj[#-)"p;*9oRa?SYJ[D5nmOsrr=.,_EKPqBM5=.ja*r/D=<@gH:\rd:3P[S3n#.e0X\00^D#6*FG9t92+i4]>K3B`#j%s9#AUn4?clFcOjMo;V[IO#Vf53Y:e(I),%=+WDlKeX:P#6rKb/h \M(L9!]\&^3,"Sp8!OQ3jVs&O(h5&C9dLQ*eLHnn!*#rdV:f;Apak5$[b@7[8Ks8>hGWCDNp:9_V^K87@1XK;+#ZuaPNLI_uf5&"]!-.XY(DZJ(g1ehHFYqo\e>^,=J^WmhhO,MJnr)6tL(jZ-OHpL,SS2p%rT,_Jm,r,%"kHs?%(+(DYbjcd8Zj]bL*@nKZdfS6_a"78.:tmM9]G0']SnD^mkp9X;*JUl$49#X[_[]C-jMJ_Nih.^Y*A^WDqYZbXCSdoSFp?_Luk,#AW>LmJ-A9mYXpi`kB3(8AuL^U((=;Q,6\H36g8Lh(Md5r5:;2tOH25AIab[2)E`(8\?n>)E@A[T)^QNd0(iG>!E`)fs=_HL_9/HdTPE-&A[Me_:]'feoKm/bF6aT[s#o*XQ%?~> +GatU4hfG8H&:X@\_.,7LlB":/\3;4P[b'iioPWZtV@N`=_hA'o\Z,W+>JR[J(_N[:9KWTfX4?XI]:X2W?G0RH^9+??L&V[afHm[6"9JGs]RPCT4[pX`3N[Cde\A0>B*CVg6tl:4n#8YlHrt;fmNCT-+*C%=*Y97ccMGraEco\F^NR=Plb>\54p`55W#Ha&!r!h"WZNShIP(Vd#Gsc6>s#7C@-L^#>ph.&LpBFk7('LnUN1Y4pV])+8,VCR7FRJi.TB9?Fg2$hR"6#u.TB.iC<%IEJ?Yg"okE[D(fCGn,RTg:-Vi.,.*MF#Be+n#ZO1FH6A#c,d\BjC?!I!6R;oV"&bcFYC;KO1U^uPIeI]B,H?E')6]Y'd7Wjr?#a[JQ<`E9+6,7sn]6TI-H/Q4'Gp2)H-e&ZfV82j%B]E98%Y.E:;\F+3RejQed<;--7dTlm,*Rp7/!ke/]TB?O0GcA5"e[X=P@,k;-V>'f`hpo5HFM/^bKS:bma\s;N1/0DdAf33EA&O6B_#)+W4CPjFA.Zo@%7J?5FJO`dX2B`Jf2@LG88cJO/LdBnBrE51$KSP^4B#]>3b/6si\pO!7D/2Cuu\F#3>/02A0c,%q$WIbRGH7UV&G3\=Sa0i22cQo.n/hB"B'-=O+8D;;GT8ljVfS^pd8!?Y4q!*;G[D^&^O:jU:<4T7$iTsN-H7qN?@>9JZ`O:AAMFid:J\J1Cl(eRJ%GgaqdpLfCQ$/@ET"&'dVO0biW,3W_Mn0"#JW\cu>?]__F1Kq^2T?^i\0.i^'eF2!@[NVj'K`!g5LYAkNtL;\3ZduIe03LomjRVEgucHIRI%Ir,o:4R0NiD<9U(*=T3=>-8^&+RL--h4GpjniF$1PIJEP;-IrF=MW\-\j2(USs&^="YTZTD'V,4+EYGIFKhZWOq4dW(aoSAA-D@ZG)WC$B/H.^aPeTQ7\GgCq"jBqI(,!o%ZKVCl:pk_.G1Pf9E.[u^rhL0WqB6/KOg^mqG9;B>Y[l.oWp4#38"kO"/n)#3&FX1t;KIIHl(nSjNm$hO?5CSPgT-cU-[b)8@eN`&`!YjEO;Q,[Q&g)P7U:q.d&p;54j39?[K!I#a'*'6RMD;FR5@[dmI$_sE60M_:s6+tX?"$%8)2ac!>j1BW4Sj\Ln]WZNZ2Or2$&f]/fj'Z!$6Y"fkp:JPq7H"3nl*:Z~> endstream endobj 34 0 obj @@ -218,10 +218,10 @@ >> endobj 35 0 obj -<< /Length 1775 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 1691 /Filter [ /ASCII85Decode /FlateDecode ] >> stream -Gau`T968iG&AII3n7^/##k?oL4k[!/Wl^4S>16-/"%>NhCPkq[.$"=U5uJsE1`oVa:<$e)!FckWh`e!fnN!kmkqe-!Qr3Gghp0/;=[>U(ig5,)sD952Q]?(g.H!L;"69lWmYKP*$5YB_>k9@*qm:@f@3d?1n[1W+m,YLK!BY\m`MC)f#&e3Zlb-';f4+E*USf'3[o9\D)`m:cXAR[ClE_dQZ/NmWnM7+=*-;[!gm.NdZYc@LTf3R)Gk+&#WaV&FRuhg>@5icRqcKr?2K3k]NJm]QP2b64c?l8OD0.f)[i8,pgVe#p>J+9Nl"fjV>eSDe35@f,3DfX?`j_?Mr'PBHW?q`&L0]K%mn[KC7OU'dZ>'#0tj-f3XbhTeP;cZ03?fb"%*0+9a.rc=;#'Bo#aQ.5,Y,gDt<QJ(F'BPrs9iaZ:FU>&#ljp-B%];p)_709H]Joso(VtA"Wo3/B!NNhNE*f87T8Q$!BY2^2D.V0[lcVoMmXkQi6*E,>7M8Z2-BHg&L15j@)"DLirVs;%`,\3;i+S3V;!1V>K;WN-,$:[1s*7%UNYPUQI&+c:FO8!.7<$5):%D#10*4?L_+\st8',9PTjP+.8kaLK@`Osk=#K89Us!clQ,EK@9p$@9[qm't*k1+QDh+]/)H"!`Q-ChNaSATPKOoncb_6`?LiAY>N0-mHfJor>hMKTY%EM5^\]RnQNqN:.GpX`oC(`c99$-!YGGpoJc9'`aIF$tk7^c4e)Mf`-(ksD464aO*hp5o1miZW3="$Dcg>a:IF?N,&hk`R_ZQ#"$,QX#l(F7bhfhcaMDT[sTS)JV"ms`e_kif=q3@.(GmEnWJUlO`)hFYa1ij1Hau6]CV$E#`?.nQj-X#01m,o'V'2]%;30[AuG/'E?]FK/_(u+enEd`4C1H<#r]thNJ:%:qLC?NfR-Y&RIRsfC]dlpIaR`IGCT*^BY]d>fD7tfWL=_kui3T*6b]CkK%kWjY +GauHL966jf&AJ$CE-/)m/J8\Wh:!Y@f^):3Ft::dk9,CnZb_G$H(=g0'k"*Y#+Xa.jbdOS[JKiE2n+^uVoA#;)0Rq7n&m8&OmDeVYJ2NeJ);pj,L?%R;E1`15I9+&"J1Z&3;qTElsQP0/ClVd+`d5\4"VWI&IteHfK%jP91%9ro>=`/V2:o[;+H/mn4;NM7uCD3T*X(0JObf?';X0DF$gj+kHW62.5S:R=9".[RJ"9,M-6rlBbigkjZZanQ"I"A1&Jr(/7^%VA@CpBNA8c(@O8gJ!&7/N%N&'9em0W'1uA9Jbg/s.)c:dfT8*f4,/e/6$5aBuhhmeB?ab'MNY[@RE?=[Q%!%E8<9.fH#`6b+d@j7!f&7O;L!IhU:\NR_VII$>J5=cPbN-JpcVCF@9If9*9Ypm(:;hU^IR$`ZW@uF(iWYCP!j/8GH4lt!o!H!'DiJjgniY%47"TY,6c?^i$Ah%l(e-f8qXGkm\#%=1^?XD=pP[1=/n3X"`I=Y9='spubnWHSR[@)riGuZF10[@l4]H$AT.To%S9eb]eG2:b7#1EOhIpfQMCS((VGTF:ZpnOO5X.C1UkG$&\KPJnh5rYOD]hF/)A=2b37*0LicHCi8cX69%:UjRt$E=q++]<_u6hWfbWHI=W`'RR]a+pIWADB\Z')=P?gf.X+<.Fq&a-3#R?r0f<[T<,4nrWD1g!^i>jU'TkS!=pNTH6c`'pMlG]fH8,_n9gZQ\2D68c\ZtQ+eRLEi11!r_R^*DP[!)$:/O.qc> \D(h[F1r+AFPe4h65]uQ%M9bV3_f+au4jPo%;oVb<0k!,'Xn1d2ba(TM5)18I!.QT`g7l4mnGHISG*J$-=eOa"%;e+OH"s2?mFRD.>tsP%#Xr2%`hmf!kat#tRP]cdCKd_!eK5V+j(\^GRt"\)'%uuaJ)L-oJ&YVgM?7(h/E0_hKZ'VkpM%sn&HFpTSu9Okj(c(=DnG(gQ6a$Pp"j6$RNcu^_/-#7Mr5CHJ^a3*Tb.W7eBM&'eFA;\jR8YC#fS3NBK';KeX4!]^*4gj1^[H,((qrOLGgRBDF1Ml_.W_Gb\fP=eol9F>Gl&/IdNXoYTA]`1JG4d[sI4QZSPSm!uH[bV&-$5*)Yd?V['-$g0tjK,1`MpfNlsu'o#@eI;f!n3BnFb.t[L%W.H,?NMt@dV#[kpYJ?:NMsA'eBVf/MnkW0Jf'&3Cs7+\)%e.%-H9Pu#+:Y2o2[J;k1c<6$-e\R8:T!'ifDW6SPto(^!-+X\:#S-eO@^F_P@o1E)GVtH!XF\$S%>IdJPVg3(SSDMo\epQIG`]m;R;TGB1'D%7HOtqVMWdOHXH"^V/j;,VCY"PeXU_uH4.eBh-dB7Z"N[mm//m@[=Goe95=GW=pj^\R$)R~> endstream endobj 36 0 obj @@ -233,10 +233,10 @@ >> endobj 37 0 obj -<< /Length 1753 /Filter [ /ASCII85Decode /FlateDecode ] +<< /Length 1883 /Filter [ /ASCII85Decode /FlateDecode ] >> stream -Gau`T8TWWE'Y`m7n7^,n-j^Mkg6:nbBq!>SNHM:JJ4N3t9b@^=H271<\D_uc.4N_W4SBU7hLb2Jpjh,\idSH5]'u5lqYdop>i[qS(ok=OdJprl&eAF14!et!Mr,>[-O!%o6Epq`5okm4@NKK3a3(1K9)m;@<,,=0+UDY_n^iCmt6Y'F"Di9381%KsqY9VYkX:*dV0L,s7)Mb[-!%=3Ra+K^U,5XaYLHdTn:/ENC;02#I:5?JG\ZSXRH9Sb#fp#i/ZOj8OZ@=HP?pY;P2raKMaMo\*([?<0sRH[TNRRjGHeQLQ((Ok1JsBe-^)2Ngu*lFA\1:PE=jGs"W`h7ocP+LrnNU"dolm&I5D;Z2:2;;GK=qLji^ne!'O`>]W]W.^)Y2ia\;Cc$:83bmh851RTCWGP!1XjL.tXN3ZZ3Hd;2;G\IB(aRk3TG$T,&>e#enuGa4^G%+rg 8C'=o0M'(H-V!AluM9a#4`"7H]Qk=/W@$64.Dl=0"+GIfJ+<>jgrc'#OM;]Vs7h&@a"jI\CLk1_hT!-*JE0aP`$YJI5\P)FPo-K)Nge!%7bCHWbXcm;V1"%4CL)2RtN8qhmu%'JJQjth@f_,5kj2n&Z%Pdj`P\"A.\Rqf+TirI%cNV/:`$>KrM!%>\FY:E^\fIu:U>,"g\1L=.aopMC!4"Pj3.VBK2[SY]icn8OsL#-p7g4VAPO6;kLHZ'!A>">_-!82@1u!sj_E\J`o*.kkQM/"]pu%!I+&lB[6`~> +GauHL968iG&AII3n7^.D-ijs.UaOo:;E*jI[5GWc3D^tHZ)1'WK];4QG&3p5@2@S8[QMlg^FiU&J)H8!O#pAkXQAf0g$MoC(4*nfbC=n8/^!"pHo86G.3&7`X-)HaTn."(\(9`C"_7JaqI7^!!MQ_2C'COV*$m`E-m9*_d7Nh+#q%!L.?RZ_TOP%fQ.uX%W4-M3`Cg/*d^?$L*q(VAkg<$Q2gQ`i=f.p>Me:nZ./!AeRlb^#qJc1Rk:k=e6Vjdt!-82S?3V6si3qe:U8iN2VBFnO@AXHf/CHcKXbm`W+UbY2N^Yg[FXE8/`amK7[)fS+*i8\R2K;^h>W)qC$a@0J?lJb%rStfmLR[$opJZT!+>T"^$V*Wan`j2iaGCEpg%>h^M_rhV8=f;jD#1-^EcI?Zq-&9n*g/I.oWA\kGn^%p3L'k`ampS/'Jib[>b+kh=FL1#jHL!q;3if/pfYq_9>"g2Q\Zsa.).@:-X>&hlT3aP%k'$)X?uG)ULu;$\']F?V?u=%\k;KtPUD[R:\<.2P,'ibngHT46(?$KBGG<]g;#\B1E%.$;Sq5)6mQ*1"jjMs.$%LI(Jr21liM$;i'Up.G6`muBZ'1un=BbLF)IlO(d.21]>lcih_*'Dh#%V=cL7Cabm/rDT>/;rN`=brUs8XuVb(9*56.s,jgOSJdFhjb5G3/^c3*lr]_dAh\!oY3pD&9JnIKV<%YVeYO'Tam5a1r3`5EVct]'9/H3,BHjq=n,DEIgVJLJ%Hn-V<^7,qbiq9pTB9Up11_S-8&9QktblLC2ME/IKk"/W7GUNIp7q=2phBk!_`i%2aUqX825Q*KlJ-5K=?f;\i$] lf3CO,?V1@%aDo0lOB36"J>bae9!Q6M6&"m.f$%4;(79F?db2_(gQ1gAWg^/M1D`Ba\)U*.7jI5XE)FOhE4\anM+PmXJ&)#LEH3AQKmC*emiT3VkF[SLkn;l^VQ^rhj/p=@$15q03s_uagF,jAq^dn>0R+MqE#)"m?l+uK-c!ECZ@.X7nilBfa&e\a-_K9a^fe)0a>f1?ALcVjoXP.2C(X;IRlnE74d"2su,`Nc,mCZ>EGG"8kd0H^T=OPK1;o(r\e#`9`(H\YV9kq:AT>`c.:S>Jhg+`@Fm/#rk1fChn^AO:j+?`,A^A%GcV.E66eAaF%Y@m5FpOfVnhG*1"XD`MoEs)s$m?TiG8s;LLX"0%_^8D<6]Y7;ED=EmtAp#2*:P^oE_nNuo&B/GD4TP5B1&fVtnP3p?9I2g_]f0Sk&4Tbl2jk1VlQ[@L7X,]NU#UMhGGpE]ZG@M0r/\sW`*\_L9?P630PF(r.//!lm1c&=Bo0>j$JR-u5,$oDLY,/)tml`!BseuOG;mn%#j7%bGPHp"Y!/ff`48V\Uu![(OW$SA]5bD-9r=kIP1$W[4:?1jIYJ>J"7a/leX5O.rhZkgYq*\rc09q]9JSbXm.ccD>l&pi=?JDmaX;Kp+J:oJeO*^_'XQ3#RU7(bkNKQi+:QS\Eks9`@KuTi"j]Bj+&7G5C,?TqA~> endstream endobj 38 0 obj @@ -247,104 +247,112 @@ /Contents 37 0 R >> endobj +39 0 obj +<< /Length 1227 /Filter [ /ASCII85Decode /FlateDecode ] + >> +stream +Gat%#gMZ%0&:O:SkV3*9Y"4D\ZpfOVS)&7s5dt%6eU=*eOj-?2*K&]1J)?B)RA=T@0ao!BMK@aERA8`YI.fOl4jRfG_XGNJ*g/3JOp$8EhYmJ7d?Go-L1!%=A+jm7p3.U'5T)bR=0o-_$LpK9]d@A;$0,F-$3%O3e_HmFDrjIH+Q_cN:255Q5F7u'36rf&S?AdaaY,LGH:n[76_>Fs5Orkhbi.uGLngO#?.@*I5r]^ie,8,tn`W5Yb53,R9ihHU0:oO5J3%<0F`8ZmsoC#)?1^cl=mbsVR//?jf3_1L)c,.=4J"'I,HoE;B%9o<-6Z,h@jg(\I]/]nrfICj]i)l(3oBMY9MS!@@Q-OL1G0-"6!Kk&*#ao"-d2dk4:oWo(i"F,mG":O(1Y.O&"cB3Z,K]8AP@pQDV:2'V]gq'Rd?)nbPQ<(.,@k[47b%&JA5?TKg4?K-`+8Y@I@rj;@-XbbWjJhO&QSl:Gcnd0(6tpg@=YRjn==;f\3*A@dn+Irg0iBg@$HZ''fYH.2;c#rneQ6uOPapaW_0kA9FE*mSUD%gJ@-trD+WHJ:4gs`Mel/8h2Z'H>^7?g1cKd+hh5K4XTj^PkI^gC@C[ph1:^qUNH8;cG=Y;i?p-l'uF-Sf,U>b'?5r+bGgpp`fNq7A0K+'i5dClORCAY$mC>HdsAj*sd:9DHrXfZ]49D?;O:YAeJW[dTa['T<(P>V%%6QEMF[R0GpF_#/OItNndi;Ng3&1I;~> +endstream +endobj 40 0 obj +<< /Type /Page +/Parent 1 0 R +/MediaBox [ 0 0 612 792 ] +/Resources 3 0 R +/Contents 39 0 R +>> +endobj +42 0 obj << /Title (\376\377\0\61\0\40\0\120\0\162\0\157\0\147\0\162\0\141\0\155\0\155\0\151\0\156\0\147\0\40\0\167\0\151\0\164\0\150\0\40\0\102\0\157\0\157\0\153\0\113\0\145\0\145\0\160\0\145\0\162) - /Parent 39 0 R - /First 41 0 R - /Last 46 0 R + /Parent 41 0 R + /First 43 0 R + /Last 48 0 R /Count -6 /A 9 0 R >> endobj -41 0 obj +43 0 obj << /Title (\376\377\0\61\0\56\0\61\0\40\0\111\0\156\0\163\0\164\0\141\0\156\0\164\0\151\0\141\0\164\0\151\0\156\0\147\0\40\0\102\0\157\0\157\0\153\0\113\0\145\0\145\0\160\0\145\0\162\0\56) - /Parent 40 0 R - /Next 42 0 R + /Parent 42 0 R + /Next 44 0 R /A 11 0 R >> endobj -42 0 obj +44 0 obj << /Title (\376\377\0\61\0\56\0\62\0\40\0\103\0\162\0\145\0\141\0\164\0\151\0\156\0\147\0\40\0\141\0\40\0\154\0\145\0\144\0\147\0\145\0\162\0\56) - /Parent 40 0 R - /Prev 41 0 R - /Next 43 0 R + /Parent 42 0 R + /Prev 43 0 R + /Next 45 0 R /A 13 0 R >> endobj -43 0 obj +45 0 obj << /Title (\376\377\0\61\0\56\0\63\0\40\0\101\0\144\0\144\0\151\0\156\0\147\0\40\0\145\0\156\0\164\0\162\0\151\0\145\0\163\0\40\0\164\0\157\0\40\0\141\0\40\0\154\0\145\0\144\0\147\0\145\0\162\0\56) - /Parent 40 0 R - /Prev 42 0 R - /Next 44 0 R + /Parent 42 0 R + /Prev 44 0 R + /Next 46 0 R /A 15 0 R >> endobj -44 0 obj +46 0 obj << /Title (\376\377\0\61\0\56\0\64\0\40\0\103\0\154\0\157\0\163\0\151\0\156\0\147\0\40\0\141\0\40\0\154\0\145\0\144\0\147\0\145\0\162\0\56) - /Parent 40 0 R - /Prev 43 0 R - /Next 45 0 R + /Parent 42 0 R + /Prev 45 0 R + /Next 47 0 R /A 17 0 R >> endobj -45 0 obj +47 0 obj << /Title (\376\377\0\61\0\56\0\65\0\40\0\117\0\160\0\145\0\156\0\151\0\156\0\147\0\40\0\141\0\40\0\154\0\145\0\144\0\147\0\145\0\162\0\56) - /Parent 40 0 R - /Prev 44 0 R - /Next 46 0 R + /Parent 42 0 R + /Prev 46 0 R + /Next 48 0 R /A 19 0 R >> endobj -46 0 obj +48 0 obj << /Title (\376\377\0\61\0\56\0\66\0\40\0\122\0\145\0\141\0\144\0\151\0\156\0\147\0\40\0\146\0\162\0\157\0\155\0\40\0\154\0\145\0\144\0\147\0\145\0\162) - /Parent 40 0 R - /Prev 45 0 R + /Parent 42 0 R + /Prev 47 0 R /A 21 0 R >> endobj -47 0 obj +49 0 obj << /Type /Font /Subtype /Type1 /Name /F3 /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding >> endobj -48 0 obj +50 0 obj << /Type /Font /Subtype /Type1 /Name /F5 /BaseFont /Times-Roman /Encoding /WinAnsiEncoding >> endobj -49 0 obj -<< /Type /Font -/Subtype /Type1 -/Name /F6 -/BaseFont /Times-Italic -/Encoding /WinAnsiEncoding >> -endobj -50 0 obj +51 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /Helvetica /Encoding /WinAnsiEncoding >> endobj -51 0 obj +52 0 obj << /Type /Font /Subtype /Type1 /Name /F9 /BaseFont /Courier /Encoding /WinAnsiEncoding >> endobj -52 0 obj +53 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding >> endobj -53 0 obj +54 0 obj << /Type /Font /Subtype /Type1 /Name /F7 @@ -353,19 +361,19 @@ endobj 1 0 obj << /Type /Pages -/Count 6 -/Kids [6 0 R 23 0 R 32 0 R 34 0 R 36 0 R 38 0 R ] >> +/Count 7 +/Kids [6 0 R 23 0 R 32 0 R 34 0 R 36 0 R 38 0 R 40 0 R ] >> endobj 2 0 obj << /Type /Catalog /Pages 1 0 R - /Outlines 39 0 R + /Outlines 41 0 R /PageMode /UseOutlines >> endobj 3 0 obj << -/Font << /F3 47 0 R /F5 48 0 R /F1 50 0 R /F6 49 0 R /F9 51 0 R /F2 52 0 R /F7 53 0 R >> +/Font << /F3 49 0 R /F5 50 0 R /F1 51 0 R /F9 52 0 R /F2 53 0 R /F7 54 0 R >> /ProcSet [ /PDF /ImageC /Text ] >> endobj 9 0 obj @@ -383,100 +391,101 @@ 13 0 obj << /S /GoTo -/D [23 0 R /XYZ 85.0 369.413 null] +/D [32 0 R /XYZ 85.0 659.0 null] >> endobj 15 0 obj << /S /GoTo -/D [32 0 R /XYZ 85.0 289.8 null] +/D [34 0 R /XYZ 85.0 588.2 null] >> endobj 17 0 obj << /S /GoTo -/D [34 0 R /XYZ 85.0 345.4 null] +/D [36 0 R /XYZ 85.0 622.6 null] >> endobj 19 0 obj << /S /GoTo -/D [36 0 R /XYZ 85.0 502.2 null] +/D [36 0 R /XYZ 85.0 264.947 null] >> endobj 21 0 obj << /S /GoTo -/D [38 0 R /XYZ 85.0 601.4 null] +/D [38 0 R /XYZ 85.0 362.6 null] >> endobj -39 0 obj +41 0 obj << - /First 40 0 R - /Last 40 0 R + /First 42 0 R + /Last 42 0 R >> endobj xref -0 54 +0 55 0000000000 65535 f -0000015819 00000 n -0000015912 00000 n -0000016004 00000 n +0000016858 00000 n +0000016958 00000 n +0000017050 00000 n 0000000015 00000 n 0000000071 00000 n -0000000805 00000 n -0000000925 00000 n -0000000992 00000 n -0000016149 00000 n -0000001127 00000 n -0000016212 00000 n -0000001264 00000 n -0000016278 00000 n -0000001401 00000 n -0000016344 00000 n -0000001538 00000 n -0000016408 00000 n -0000001674 00000 n -0000016472 00000 n -0000001811 00000 n -0000016536 00000 n -0000001948 00000 n -0000004262 00000 n -0000004385 00000 n -0000004447 00000 n -0000004584 00000 n -0000004721 00000 n -0000004858 00000 n -0000004994 00000 n -0000005131 00000 n -0000005268 00000 n -0000007359 00000 n -0000007467 00000 n -0000009343 00000 n -0000009451 00000 n -0000011319 00000 n -0000011427 00000 n -0000013273 00000 n -0000016600 00000 n -0000013381 00000 n -0000013658 00000 n -0000013908 00000 n -0000014129 00000 n -0000014402 00000 n -0000014617 00000 n -0000014832 00000 n -0000015046 00000 n -0000015159 00000 n -0000015269 00000 n -0000015380 00000 n -0000015488 00000 n -0000015594 00000 n -0000015710 00000 n +0000000808 00000 n +0000000928 00000 n +0000000995 00000 n +0000017184 00000 n +0000001130 00000 n +0000017247 00000 n +0000001267 00000 n +0000017313 00000 n +0000001404 00000 n +0000017377 00000 n +0000001541 00000 n +0000017441 00000 n +0000001677 00000 n +0000017505 00000 n +0000001814 00000 n +0000017571 00000 n +0000001951 00000 n +0000003859 00000 n +0000003982 00000 n +0000004044 00000 n +0000004181 00000 n +0000004318 00000 n +0000004455 00000 n +0000004591 00000 n +0000004728 00000 n +0000004865 00000 n +0000006896 00000 n +0000007004 00000 n +0000009019 00000 n +0000009127 00000 n +0000010911 00000 n +0000011019 00000 n +0000012995 00000 n +0000013103 00000 n +0000014423 00000 n +0000017635 00000 n +0000014531 00000 n +0000014808 00000 n +0000015058 00000 n +0000015279 00000 n +0000015552 00000 n +0000015767 00000 n +0000015982 00000 n +0000016196 00000 n +0000016309 00000 n +0000016419 00000 n +0000016527 00000 n +0000016633 00000 n +0000016749 00000 n trailer << -/Size 54 +/Size 55 /Root 2 0 R /Info 4 0 R >> startxref -16651 +17686 %%EOF Modified: hadoop/zookeeper/trunk/src/docs/src/documentation/content/xdocs/bookkeeperProgrammer.xml URL: http://svn.apache.org/viewvc/hadoop/zookeeper/trunk/src/docs/src/documentation/content/xdocs/bookkeeperProgrammer.xml?rev=911713&r1=911712&r2=911713&view=diff ============================================================================== --- hadoop/zookeeper/trunk/src/docs/src/documentation/content/xdocs/bookkeeperProgrammer.xml (original) +++ hadoop/zookeeper/trunk/src/docs/src/documentation/content/xdocs/bookkeeperProgrammer.xml Fri Feb 19 06:30:15 2010 @@ -83,7 +83,7 @@ - There is one BookKeeper constructor: + There are three BookKeeper constructors: @@ -91,12 +91,67 @@ public BookKeeper(String servers) throws KeeperException, IOException - - - - where servers is a comma-separated list of ZooKeeper servers. + + + + where: - + + + + servers is a comma-separated list of ZooKeeper servers. + + + + + + + public BookKeeper(ZooKeeper zk) + throws InterruptedException, KeeperException + + + + + where: + + + + + zk is a ZooKeeper object. This constructor is useful when + the application also using ZooKeeper and wants to have a single instance of ZooKeeper. + + + + + + + + public BookKeeper(ZooKeeper zk, ClientSocketChannelFactory channelFactory) + throws InterruptedException, KeeperException + + + + + where: + + + + + zk is a ZooKeeper object. This constructor is useful when + the application also using ZooKeeper and wants to have a single instance of ZooKeeper. + + + + + + channelFactory is a netty channel object + (org.jboss.netty.channel.socket). + + + + + +
    @@ -114,7 +169,7 @@ - public LedgerHandle createLedger(int ensSize, int qSize, QMode mode, byte passwd[]) + public LedgerHandle createLedger(int ensSize, int qSize, DigestType type, byte passwd[]) throws KeeperException, InterruptedException, IOException, BKException @@ -138,10 +193,7 @@ - mode is the ledger mode (QMode.GENERIC, QMode.VERIFIABLE). - If mode is QMode.GENERIC, then ensSize has to - be at least 3t+1, and qSize has to be 2t+1. - t is the maximum number of tolerated bookie failures. + type is the type of digest used with entries: either MAC or CRC32. @@ -160,7 +212,7 @@ As a convenience, we provide a createLedger with default parameters (3,2,VERIFIABLE), - and the only input parameter it requires is a password. + and the only two input parameters it requires are a digest type and a password. @@ -171,13 +223,11 @@ public void asyncCreateLedger(int ensSize, int qSize, - QMode mode, + DigestType type, byte passwd[], CreateCallback cb, Object ctx ) - throws KeeperException, InterruptedException, - IOException, BKException @@ -201,7 +251,7 @@ - rc is a return code (please refer to org.apache.bookeeper.client.BKDefs for a list); + rc is a return code (please refer to org.apache.bookeeper.client.BKException for a list); @@ -213,7 +263,7 @@ - ctx is a control object for accountability purposes; + ctx is a control object for accountability purposes. It can be essentially any object the application is happy with. @@ -257,7 +307,7 @@ - A call to addEntry returns the status of the operation ((please refer to org.apache.bookeeper.client.BKDefs for a list); + A call to addEntry returns the status of the operation (please refer to org.apache.bookeeper.client.BKDefs for a list); @@ -267,7 +317,6 @@ public void asyncAddEntry(byte[] data, AddCallback cb, Object ctx) - throws InterruptedException @@ -309,7 +358,7 @@ - ctx is control object used for accountability purposes. + ctx is control object used for accountability purposes. It can be any object the application is happy with. @@ -328,7 +377,7 @@ public void close() - throws KeeperException, InterruptedException + throws InterruptedException @@ -397,8 +446,8 @@ - public LedgerHandle openLedger(long lId, byte passwd[]) - throws KeeperException, InterruptedException, IOException, BKException + public LedgerHandle openLedger(long lId, DigestType type, byte passwd[]) + throws InterruptedException, BKException @@ -409,6 +458,12 @@ + + + type is the type of digest used with entries: either MAC or CRC32. + + + passwd is a password to access the ledger (used only in the case of VERIFIABLE ledgers); @@ -421,8 +476,7 @@ - public void asyncOpenLedger(long lId, byte passwd[], OpenCallback cb, Object ctx) - throws InterruptedException + public void asyncOpenLedger(long lId, DigestType type, byte passwd[], OpenCallback cb, Object ctx) @@ -491,7 +545,7 @@ - lastEntry is the identifier of the last entry in the sequence of entries to read; + lastEntry is the identifier of the last entry in the sequence of entries to read. @@ -517,7 +571,7 @@ - void readComplete(int rc, LedgerHandle lh, LedgerSequence seq, Object ctx) + void readComplete(int rc, LedgerHandle lh, Enumeration<LedgerEntry> seq, Object ctx) @@ -539,7 +593,7 @@ - seq is a LedgerSequence object to containing the list of entries requested; + seq is a Enumeration<LedgerEntry> object to containing the list of entries requested;