From 1fe7f7b2faf02483eed1a2f52bd1c57d7b410fe2 Mon Sep 17 00:00:00 2001 From: Evgeniy Kulikov Date: Wed, 5 Feb 2020 13:42:49 +0300 Subject: [PATCH] make object.GetRange to be server-side streaming RPC --- docs/object.md | 9 +++++---- object/service.pb.go | Bin 122795 -> 123088 bytes object/service.proto | 11 ++++++----- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/docs/object.md b/docs/object.md index dbdd6dc4..997991aa 100644 --- a/docs/object.md +++ b/docs/object.md @@ -64,7 +64,7 @@ rpc Put(stream PutRequest) returns (PutResponse); rpc Delete(DeleteRequest) returns (DeleteResponse); rpc Head(HeadRequest) returns (HeadResponse); rpc Search(SearchRequest) returns (stream SearchResponse); -rpc GetRange(GetRangeRequest) returns (GetRangeResponse); +rpc GetRange(GetRangeRequest) returns (stream GetRangeResponse); rpc GetRangeHash(GetRangeHashRequest) returns (GetRangeHashResponse); ``` @@ -119,8 +119,9 @@ package). | Search | [SearchRequest](#object.SearchRequest) | [SearchResponse](#object.SearchResponse) | #### Method GetRange -GetRange of data payload. Ranges are set of pairs (offset, length). -Fragments order in response corresponds to ranges order in request. +GetRange of data payload. Range is a pair (offset, length). +Requested range can be restored by concatenation of all chunks +keeping receiving order. | Name | Input | Output | | ---- | ----- | ------ | @@ -196,7 +197,7 @@ in distributed system. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | Address | [refs.Address](#refs.Address) | | Address of object (container id + object id) | -| Ranges | [Range](#object.Range) | repeated | Ranges of object's payload to return | +| Range | [Range](#object.Range) | | Range of object's payload to return | | Meta | [service.RequestMetaHeader](#service.RequestMetaHeader) | | RequestMetaHeader contains information about request meta headers (should be embedded into message) | | Verify | [service.RequestVerificationHeader](#service.RequestVerificationHeader) | | RequestVerificationHeader is a set of signatures of every NeoFS Node that processed request (should be embedded into message) | diff --git a/object/service.pb.go b/object/service.pb.go index 05e7c4b370689e275c5b1a56b1029b1b432003f8..0e40508d44a3d7fbbaffdeba7cf9aa903ba924ca 100644 GIT binary patch delta 5870 zcmbW5TZ~;*8OL)q4XkPGwhU$Eg9`Td!N0}-X_F{nvmdwIs}j!srw48W!j#Z z)PkK1($5)l1@9|KFmWXJ6LrS-0=@ z|Nh^%&KuXa-`Lpx%cD!?OG^)K3zmxIXHB?k;U4$VES?^nT0IpX2u`e=TK?1l%}qC! zF5G_G!9#(0=Gl+$o}GDVc4pM9o*gagZ1dtv)9*dKc=whhH@`iz(pB|h5RTKvjZNvs z!C-NACLH$%?w?8vmAzfN!mHwQd?nPAUoh zlnfyo`|<_h35OCuf|5Q2pv@LL2TJWNAus5Qa=X%Pt&*!0LVuit@SCSJ#qO*xY0=ZcvyEt#gO;L8v#pF2I zRqGA_g6q*Wl06|HmeTCz0K0N4N!9XbgL(3e*57EmmM)mj=fuKO*v7J}-edCRAFEr7CsD z*ILcDn(udVbYFhMKbADD$Dktu1DD{{M$&9HiuSa%kTQ-;Ex2SzEHw%_EMrEdQ;9$_ z?x{K@MS=~w$mW5)$b#5OAXrRsD})EEU~c9iR?rLiHe`b&lZ_;_4cgW9EX(1C@9ZqE@o}@$))vne;19L!lFo#C6&R0b_CMVFu zHrgbi(1BL*^cf&kNn)-52J9roI-*CD6P(!P`6*P%2VAWH}jwWiihH~_EO;^?p9_wHy0DM4x z)P}+xw*40f6ih=#IE6XYb2rNO`^+dzi`+ zS|QI((uJaF%ZQTz_FK7!!iQqE{8=~9RWa`y9636Yv|Oq}iZm)Rq#I{CZ0og?fR zt@N1QGL^zu$m;=Q0t0B0lIGO5@?i@sw+tmOk$juN2Ppw7FGo%SP_&I8nWh_8k^AJN ze+JO(VXft0*MHG4RPqeigFiS2Br>hWatTcZU7)W=@;Mo8gXc`ZZ`9OW`0x)TB`ct} z^G-g^1FXbWUPHb~B8w&8H+3}K(2?iHO(906?G)_Q!GuO!VmdToN0qS`N$cWVBlLw1&j-kk*hxB-*8j$$^DGHoLHiSjg4c2)9Zt89dD$#gnT+9@6e z_PyyO(0bB5@{07RQ^aU9C^GaEzMWKf8tf;1e9tGzv>CQ}auRqSP&+|7Z2_UAp^sz& zHI-x~m2qK2KFJI8I-otyIwa^cT_xJ{WKdmBz_AovSMUL@`>H}!)#9;u&lCP6M0DPg8v|8qZPx>WZv~-?yX9M~_ zp5^qj+>Ls8-dZjjARLX*D4gXRQwTz%&lPC_J|Pr-q2Ph)e}m|xr0rUq1Zn`agN_Uv zpaW>!zcl0w5R1+JTkfF-f?g_=0C;JkF!NSzg+Vs3z%g(G)%l-!-daM%X{o7VQL?^KuE4JRAZ15q0{`g1 z$Htr^XZfa5HTm?9-@3G8HaNZ#6v64@_{hv(`sn;pbLMQbvf9+a$o&9mj$M54BgM&+ zLG|3(<*%;H&Ky2$zHolQ{Na_y%rDOG+^JtAkDNT-EU!*~c4=?V{AaD6zWx1UcevGU zS~ai#@bNA2mrei2yG^&Y)0nl;eELUoJ05LTSucL@&Q|wj{`u{_CNpzpcwwJ;(mddg zzxQ&w_rtwNIutB5)wzS_@P+;6E3a-ff3{~HU7I)iCugSrSexJe|JgJzZ4N&Cp)7Ob z;vTQU?|*Xd^xCB-wmm#*&IC6%cvme3E2DG4nD1}`n}Kfu5OE3hHBJ+tvhY-pV-S52*G-*&04WtXw3zPj62O0MvoJKnXYpAdW zSDIJ@Nzp_&*`md^UJ9hXMerY&Y6vOMrQoh{H!>!bE{cA z{j$0J#uKy8-rm1&F3HTDrIkKu4v&Lr(z$0GyJwmn9u0$On7Du1R!?o3Xe9{UN}}~L zckfm0p0)OrsaEtg&fI$>q0z*>XOd7vQc$|j{j}DuTwl`C?TXQ$XCc{D;nu4_GSH*< zNM8dzbM1+ADoUiGlDJ9bj$v>nKO3z~+}3^?NA7bfD_i*!=)Kl@paZ$IwbIEG2SY$ z`WvB<=~?PSsrQDYtEHhNlrky8V7(`jO_nO4(^Tt?fB~uofDtD-WO!~JarjdX#J=IX z0LX+}D@nlPVFdssLn_%5ywbDNsZ82xJuRpXq)uMpdZbNZc(}LFXOh9^LMH;j5NJIU z=!w=_JsVkP58JbW1SPltl7$Yp0*QDAIzU-X;f_=vR5v*Z`9Kzd z_TXnjGLTgzVUX%vs8(6;KqLTg2HZg4Knd#sy(FzA0-QT(gPJUm&V^K;F%|yK70FPC ziQ7agMJWAH5V_BXPFn$nVuj2te>e>Q6G}#lKg!9H!02!)kccNWS;^;uJu2-t)@s-YSZBLK1yXl+)>1#K#NS<{i@dXMx>l(JMk z#17RLk_4qgoFtU1W!vkJ1}VidhL*NjDBZ%dWv?`)-Xh5$4Se4LF$to^eO=QVV8TdY zC@D~h;4nEv^uoKXf~M|DxYBS zo;J^T;^|E~=|Mn(b%}hATKgl6C z+S&Po0+|SIst$;0AQNe*gdWw!oayNp6r|Il>NEfe^DJr2fdmms0NSv94#5e$F zFhi1bXs)HfM$c)8bb#FRIVt1G$r^Eb`hk^fgxytKxSZP(bNY#=Hd$hK8fd)G5nZ!T zW)KVlz|048bH%XnwAILT2Gw)vuvF?4_?R$%kYg|uwEE5VS(mW?;5ZIsKsOW2N}m0&p5SS?M!f6~&O6DqCu>UMq`8_ZVJR zAni_tq0;;TCiE04&6A(pO*p3v1VchhPX+W`*+UI6y4VYdKq6NGiQET68CG=C?`w?C zBKsf(24ik_^c}x~4^(s@^JqwzO+i5o^g6hn>4=$%3suYf#eI*768WtQ5y!|69WZN>OB}1AY(SvP8@G*GFX%{0-c62rhIDoULcj zOQp@qIk-oGM zn1ikC^uM^Ml&Ey3HaiO{(83KfxFvXY)jB@{eg541|A`)rhL6sK*AMJmY?scpE31db z&%f|c?)j^GtkQ+SEWUnXt2uUYw|Vo{j(NY)e0^nX-n*I4{`uH7a*K)Y?KC?!hUVtRf_d=mf;qTx zV0K~S(qMM}-e|IRYRh1_et*kg%bfY~