1*61c4878aSAndroid Build Coastguard Worker<!-- Created with blockdiag from the source below: 2*61c4878aSAndroid Build Coastguard Worker 3*61c4878aSAndroid Build Coastguard Worker seqdiag { 4*61c4878aSAndroid Build Coastguard Worker default_note_color = aliceblue; 5*61c4878aSAndroid Build Coastguard Worker 6*61c4878aSAndroid Build Coastguard Worker client -> server [ 7*61c4878aSAndroid Build Coastguard Worker label = "start", 8*61c4878aSAndroid Build Coastguard Worker leftnote = "session_id\ntype=TRANSFER_START" 9*61c4878aSAndroid Build Coastguard Worker ]; 10*61c4878aSAndroid Build Coastguard Worker 11*61c4878aSAndroid Build Coastguard Worker client <- server [ 12*61c4878aSAndroid Build Coastguard Worker noactivate, 13*61c4878aSAndroid Build Coastguard Worker label = "set transfer parameters", 14*61c4878aSAndroid Build Coastguard Worker rightnote = "session_id\noffset\nwindow_end_offset\ntype=PARAMETERS_RETRANSMIT\nmax_chunk_size\nchunk_delay" 15*61c4878aSAndroid Build Coastguard Worker ]; 16*61c4878aSAndroid Build Coastguard Worker 17*61c4878aSAndroid Build Coastguard Worker client -\-> server [ 18*61c4878aSAndroid Build Coastguard Worker noactivate, 19*61c4878aSAndroid Build Coastguard Worker label = "requested bytes\n(zero or more chunks)", 20*61c4878aSAndroid Build Coastguard Worker leftnote = "session_id\noffset\ndata\n(remaining_bytes)" 21*61c4878aSAndroid Build Coastguard Worker ]; 22*61c4878aSAndroid Build Coastguard Worker 23*61c4878aSAndroid Build Coastguard Worker client <-\- server [ 24*61c4878aSAndroid Build Coastguard Worker noactivate, 25*61c4878aSAndroid Build Coastguard Worker label = "update transfer parameters\n(as needed)", 26*61c4878aSAndroid Build Coastguard Worker rightnote = "session_id\noffset\nwindow_end_offset\ntype=PARAMETERS_CONTINUE\n(max_chunk_size)\n(chunk_delay)" 27*61c4878aSAndroid Build Coastguard Worker ]; 28*61c4878aSAndroid Build Coastguard Worker 29*61c4878aSAndroid Build Coastguard Worker client -> server [ 30*61c4878aSAndroid Build Coastguard Worker noactivate, 31*61c4878aSAndroid Build Coastguard Worker label = "final chunk", 32*61c4878aSAndroid Build Coastguard Worker leftnote = "session_id\noffset\ndata\nremaining_bytes=0" 33*61c4878aSAndroid Build Coastguard Worker ]; 34*61c4878aSAndroid Build Coastguard Worker 35*61c4878aSAndroid Build Coastguard Worker client <- server [ 36*61c4878aSAndroid Build Coastguard Worker noactivate, 37*61c4878aSAndroid Build Coastguard Worker label = "acknowledge completion", 38*61c4878aSAndroid Build Coastguard Worker rightnote = "session_id\nstatus=OK" 39*61c4878aSAndroid Build Coastguard Worker ]; 40*61c4878aSAndroid Build Coastguard Worker } 41*61c4878aSAndroid Build Coastguard Worker 42*61c4878aSAndroid Build Coastguard Worker--> 43*61c4878aSAndroid Build Coastguard Worker<svg height="720" viewBox="0 0 585 720" xmlns="http://www.w3.org/2000/svg" xmlns:inkspace="http://www.inkscape.org/namespaces/inkscape" xmlns:xlink="http://www.w3.org/1999/xlink" style="background-color:white"> 44*61c4878aSAndroid Build Coastguard Worker <defs id="defs_block"> 45*61c4878aSAndroid Build Coastguard Worker <filter height="1.504" id="filter_blur" inkspace:collect="always" width="1.1575" x="-0.07875" y="-0.252"> 46*61c4878aSAndroid Build Coastguard Worker <feGaussianBlur id="feGaussianBlur3780" inkspace:collect="always" stdDeviation="4.2"></feGaussianBlur> 47*61c4878aSAndroid Build Coastguard Worker </filter> 48*61c4878aSAndroid Build Coastguard Worker </defs> 49*61c4878aSAndroid Build Coastguard Worker <title>blockdiag</title> 50*61c4878aSAndroid Build Coastguard Worker <desc></desc> 51*61c4878aSAndroid Build Coastguard Worker <rect fill="rgb(0,0,0)" height="558" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="8" x="178" y="140"></rect> 52*61c4878aSAndroid Build Coastguard Worker <rect fill="rgb(0,0,0)" height="558" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="8" x="370" y="140"></rect> 53*61c4878aSAndroid Build Coastguard Worker <polygon fill="rgb(0,0,0)" points="27,126 158,126 166,134 166,154 27,154 27,126" stroke="rgb(0,0,0)" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1"></polygon> 54*61c4878aSAndroid Build Coastguard Worker <polygon fill="rgb(0,0,0)" points="390,194 564,194 572,202 572,274 390,274 390,194" stroke="rgb(0,0,0)" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1"></polygon> 55*61c4878aSAndroid Build Coastguard Worker <polygon fill="rgb(0,0,0)" points="39,314 158,314 166,322 166,368 39,368 39,314" stroke="rgb(0,0,0)" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1"></polygon> 56*61c4878aSAndroid Build Coastguard Worker <polygon fill="rgb(0,0,0)" points="390,408 552,408 560,416 560,488 390,488 390,408" stroke="rgb(0,0,0)" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1"></polygon> 57*61c4878aSAndroid Build Coastguard Worker <polygon fill="rgb(0,0,0)" points="39,528 158,528 166,536 166,582 39,582 39,528" stroke="rgb(0,0,0)" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1"></polygon> 58*61c4878aSAndroid Build Coastguard Worker <polygon fill="rgb(0,0,0)" points="390,623 473,623 481,631 481,651 390,651 390,623" stroke="rgb(0,0,0)" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1"></polygon> 59*61c4878aSAndroid Build Coastguard Worker <rect fill="rgb(0,0,0)" height="40" stroke="rgb(0,0,0)" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="128" x="118" y="46"></rect> 60*61c4878aSAndroid Build Coastguard Worker <rect fill="rgb(0,0,0)" height="40" stroke="rgb(0,0,0)" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="128" x="310" y="46"></rect> 61*61c4878aSAndroid Build Coastguard Worker <path d="M 179 80 L 179 708" fill="none" stroke="rgb(0,0,0)" stroke-dasharray="8 4"></path> 62*61c4878aSAndroid Build Coastguard Worker <rect fill="moccasin" height="558" stroke="rgb(0,0,0)" width="8" x="175" y="134"></rect> 63*61c4878aSAndroid Build Coastguard Worker <path d="M 371 80 L 371 708" fill="none" stroke="rgb(0,0,0)" stroke-dasharray="8 4"></path> 64*61c4878aSAndroid Build Coastguard Worker <rect fill="moccasin" height="558" stroke="rgb(0,0,0)" width="8" x="367" y="134"></rect> 65*61c4878aSAndroid Build Coastguard Worker <rect fill="rgb(255,255,255)" height="40" stroke="rgb(0,0,0)" width="128" x="115" y="40"></rect> 66*61c4878aSAndroid Build Coastguard Worker <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="37" x="179" y="66">client</text> 67*61c4878aSAndroid Build Coastguard Worker <rect fill="rgb(255,255,255)" height="40" stroke="rgb(0,0,0)" width="128" x="307" y="40"></rect> 68*61c4878aSAndroid Build Coastguard Worker <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="37" x="371" y="66">server</text> 69*61c4878aSAndroid Build Coastguard Worker <path d="M 187 134 L 363 134" fill="none" stroke="rgb(0,0,0)"></path> 70*61c4878aSAndroid Build Coastguard Worker <polygon fill="rgb(0,0,0)" points="355,130 363,134 355,138" stroke="rgb(0,0,0)"></polygon> 71*61c4878aSAndroid Build Coastguard Worker <polygon fill="rgb(240,248,255)" points="24,120 155,120 163,128 163,148 24,148 24,120" stroke="rgb(0,0,0)"></polygon> 72*61c4878aSAndroid Build Coastguard Worker <path d="M 155 120 L 155 128" fill="none" stroke="rgb(0,0,0)"></path> 73*61c4878aSAndroid Build Coastguard Worker <path d="M 155 128 L 163 128" fill="none" stroke="rgb(0,0,0)"></path> 74*61c4878aSAndroid Build Coastguard Worker <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="67" x="65" y="133">session_id</text> 75*61c4878aSAndroid Build Coastguard Worker <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="115" x="89" y="146">type=TRANSFER_START</text> 76*61c4878aSAndroid Build Coastguard Worker <path d="M 187 228 L 363 228" fill="none" stroke="rgb(0,0,0)"></path> 77*61c4878aSAndroid Build Coastguard Worker <polygon fill="rgb(0,0,0)" points="195,224 187,228 195,232" stroke="rgb(0,0,0)"></polygon> 78*61c4878aSAndroid Build Coastguard Worker <polygon fill="rgb(240,248,255)" points="387,188 561,188 569,196 569,268 387,268 387,188" stroke="rgb(0,0,0)"></polygon> 79*61c4878aSAndroid Build Coastguard Worker <path d="M 561 188 L 561 196" fill="none" stroke="rgb(0,0,0)"></path> 80*61c4878aSAndroid Build Coastguard Worker <path d="M 561 196 L 569 196" fill="none" stroke="rgb(0,0,0)"></path> 81*61c4878aSAndroid Build Coastguard Worker <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="67" x="428" y="201">session_id</text> 82*61c4878aSAndroid Build Coastguard Worker <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="37" x="413" y="214">offset</text> 83*61c4878aSAndroid Build Coastguard Worker <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="103" x="446" y="227">window_end_offset</text> 84*61c4878aSAndroid Build Coastguard Worker <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="158" x="474" y="240">type=PARAMETERS_RETRANSMIT</text> 85*61c4878aSAndroid Build Coastguard Worker <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="85" x="437" y="253">max_chunk_size</text> 86*61c4878aSAndroid Build Coastguard Worker <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="67" x="428" y="266">chunk_delay</text> 87*61c4878aSAndroid Build Coastguard Worker <path d="M 187 335 L 363 335" fill="none" stroke="rgb(0,0,0)" stroke-dasharray="4"></path> 88*61c4878aSAndroid Build Coastguard Worker <polygon fill="rgb(0,0,0)" points="355,331 363,335 355,339" stroke="rgb(0,0,0)"></polygon> 89*61c4878aSAndroid Build Coastguard Worker <polygon fill="rgb(240,248,255)" points="36,308 155,308 163,316 163,362 36,362 36,308" stroke="rgb(0,0,0)"></polygon> 90*61c4878aSAndroid Build Coastguard Worker <path d="M 155 308 L 155 316" fill="none" stroke="rgb(0,0,0)"></path> 91*61c4878aSAndroid Build Coastguard Worker <path d="M 155 316 L 163 316" fill="none" stroke="rgb(0,0,0)"></path> 92*61c4878aSAndroid Build Coastguard Worker <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="67" x="77" y="321">session_id</text> 93*61c4878aSAndroid Build Coastguard Worker <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="37" x="62" y="334">offset</text> 94*61c4878aSAndroid Build Coastguard Worker <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="25" x="56" y="347">data</text> 95*61c4878aSAndroid Build Coastguard Worker <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="103" x="95" y="360">(remaining_bytes)</text> 96*61c4878aSAndroid Build Coastguard Worker <path d="M 187 442 L 363 442" fill="none" stroke="rgb(0,0,0)" stroke-dasharray="4"></path> 97*61c4878aSAndroid Build Coastguard Worker <polygon fill="rgb(0,0,0)" points="195,438 187,442 195,446" stroke="rgb(0,0,0)"></polygon> 98*61c4878aSAndroid Build Coastguard Worker <polygon fill="rgb(240,248,255)" points="387,402 549,402 557,410 557,482 387,482 387,402" stroke="rgb(0,0,0)"></polygon> 99*61c4878aSAndroid Build Coastguard Worker <path d="M 549 402 L 549 410" fill="none" stroke="rgb(0,0,0)"></path> 100*61c4878aSAndroid Build Coastguard Worker <path d="M 549 410 L 557 410" fill="none" stroke="rgb(0,0,0)"></path> 101*61c4878aSAndroid Build Coastguard Worker <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="67" x="428" y="415">session_id</text> 102*61c4878aSAndroid Build Coastguard Worker <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="37" x="413" y="428">offset</text> 103*61c4878aSAndroid Build Coastguard Worker <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="103" x="446" y="441">window_end_offset</text> 104*61c4878aSAndroid Build Coastguard Worker <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="146" x="468" y="454">type=PARAMETERS_CONTINUE</text> 105*61c4878aSAndroid Build Coastguard Worker <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="97" x="443" y="467">(max_chunk_size)</text> 106*61c4878aSAndroid Build Coastguard Worker <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="79" x="434" y="480">(chunk_delay)</text> 107*61c4878aSAndroid Build Coastguard Worker <path d="M 187 549 L 363 549" fill="none" stroke="rgb(0,0,0)"></path> 108*61c4878aSAndroid Build Coastguard Worker <polygon fill="rgb(0,0,0)" points="355,545 363,549 355,553" stroke="rgb(0,0,0)"></polygon> 109*61c4878aSAndroid Build Coastguard Worker <polygon fill="rgb(240,248,255)" points="36,522 155,522 163,530 163,576 36,576 36,522" stroke="rgb(0,0,0)"></polygon> 110*61c4878aSAndroid Build Coastguard Worker <path d="M 155 522 L 155 530" fill="none" stroke="rgb(0,0,0)"></path> 111*61c4878aSAndroid Build Coastguard Worker <path d="M 155 530 L 163 530" fill="none" stroke="rgb(0,0,0)"></path> 112*61c4878aSAndroid Build Coastguard Worker <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="67" x="77" y="535">session_id</text> 113*61c4878aSAndroid Build Coastguard Worker <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="37" x="62" y="548">offset</text> 114*61c4878aSAndroid Build Coastguard Worker <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="25" x="56" y="561">data</text> 115*61c4878aSAndroid Build Coastguard Worker <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="103" x="95" y="574">remaining_bytes=0</text> 116*61c4878aSAndroid Build Coastguard Worker <path d="M 187 631 L 363 631" fill="none" stroke="rgb(0,0,0)"></path> 117*61c4878aSAndroid Build Coastguard Worker <polygon fill="rgb(0,0,0)" points="195,627 187,631 195,635" stroke="rgb(0,0,0)"></polygon> 118*61c4878aSAndroid Build Coastguard Worker <polygon fill="rgb(240,248,255)" points="387,617 470,617 478,625 478,645 387,645 387,617" stroke="rgb(0,0,0)"></polygon> 119*61c4878aSAndroid Build Coastguard Worker <path d="M 470 617 L 470 625" fill="none" stroke="rgb(0,0,0)"></path> 120*61c4878aSAndroid Build Coastguard Worker <path d="M 470 625 L 478 625" fill="none" stroke="rgb(0,0,0)"></path> 121*61c4878aSAndroid Build Coastguard Worker <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="67" x="428" y="630">session_id</text> 122*61c4878aSAndroid Build Coastguard Worker <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="55" x="422" y="643">status=OK</text> 123*61c4878aSAndroid Build Coastguard Worker <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="31" x="206" y="132">start</text> 124*61c4878aSAndroid Build Coastguard Worker <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="140" x="293" y="226">set transfer parameters</text> 125*61c4878aSAndroid Build Coastguard Worker <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="91" x="236" y="320">requested bytes</text> 126*61c4878aSAndroid Build Coastguard Worker <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="128" x="255" y="333">(zero or more chunks)</text> 127*61c4878aSAndroid Build Coastguard Worker <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="158" x="284" y="427">update transfer parameters</text> 128*61c4878aSAndroid Build Coastguard Worker <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="67" x="329" y="440">(as needed)</text> 129*61c4878aSAndroid Build Coastguard Worker <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="67" x="224" y="547">final chunk</text> 130*61c4878aSAndroid Build Coastguard Worker <text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="134" x="296" y="629">acknowledge completion</text> 131*61c4878aSAndroid Build Coastguard Worker</svg> 132