1<!-- Originally created with blockdiag. See the Git history for the source. --> 2<svg height="511.50000000000006" viewBox="0 0 564 465" width="620.4000000000001" 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"> 3<defs id="defs_block"> 4<filter height="1.504" id="filter_blur" inkspace:collect="always" width="1.1575" x="-0.07875" y="-0.252"> 5<feGaussianBlur id="feGaussianBlur3780" inkspace:collect="always" stdDeviation="4.2"></feGaussianBlur> 6</filter> 7</defs> 8<title>Server Streaming RPC</title> 9<desc></desc> 10<rect fill="rgb(0,0,0)" height="284" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="8" x="171" y="159"></rect> 11<rect fill="rgb(0,0,0)" height="214" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1" width="8" x="363" y="159"></rect> 12<polygon fill="rgb(0,0,0)" points="27,126 151,126 159,134 159,193 27,193 27,126" stroke="rgb(0,0,0)" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1"></polygon> 13<polygon fill="rgb(0,0,0)" points="383,233 543,233 551,241 551,300 383,300 383,233" stroke="rgb(0,0,0)" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1"></polygon> 14<polygon fill="rgb(0,0,0)" points="383,340 513,340 521,348 521,407 383,407 383,340" stroke="rgb(0,0,0)" style="filter:url(#filter_blur);opacity:0.7;fill-opacity:1"></polygon> 15<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="111" y="46"></rect> 16<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="303" y="46"></rect> 17<path d="M 172 80 L 172 453" fill="none" stroke="rgb(0,0,0)" stroke-dasharray="8 4"></path> 18<rect fill="moccasin" height="284" stroke="rgb(0,0,0)" width="8" x="168" y="153"></rect> 19<path d="M 364 80 L 364 453" fill="none" stroke="rgb(0,0,0)" stroke-dasharray="8 4"></path> 20<rect fill="moccasin" height="214" stroke="rgb(0,0,0)" width="8" x="360" y="153"></rect> 21<rect fill="rgb(255,255,255)" height="40" stroke="rgb(0,0,0)" width="128" x="108" y="40"></rect> 22<text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="36" x="172.0" y="66">client</text> 23<rect fill="rgb(255,255,255)" height="40" stroke="rgb(0,0,0)" width="128" x="300" y="40"></rect> 24<text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="36" x="364.0" y="66">server</text> 25<path d="M 180 153 L 356 153" fill="none" stroke="rgb(0,0,0)"></path> 26<polygon fill="rgb(0,0,0)" points="348,149 356,153 348,157" stroke="rgb(0,0,0)"></polygon> 27<polygon fill="rgb(240,248,255)" points="24,120 148,120 156,128 156,187 24,187 24,120" stroke="rgb(0,0,0)"></polygon> 28<path d="M 148 120 L 148 128" fill="none" stroke="rgb(0,0,0)"></path> 29<path d="M 148 128 L 156 128" fill="none" stroke="rgb(0,0,0)"></path> 30<text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="108" x="86.0" y="133">PacketType.REQUEST</text> 31<text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="60" x="62.0" y="146">channel ID</text> 32<text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="60" x="62.0" y="159">service ID</text> 33<text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="54" x="59.0" y="172">method ID</text> 34<text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="42" x="53.0" y="185">payload</text> 35<path d="M 180 260 L 356 260" fill="none" stroke="rgb(0,0,0)" stroke-dasharray="4"></path> 36<polygon fill="rgb(0,0,0)" points="188,256 180,260 188,264" stroke="rgb(0,0,0)"></polygon> 37<polygon fill="rgb(240,248,255)" points="380,227 540,227 548,235 548,294 380,294 380,227" stroke="rgb(0,0,0)"></polygon> 38<path d="M 540 227 L 540 235" fill="none" stroke="rgb(0,0,0)"></path> 39<path d="M 540 235 L 548 235" fill="none" stroke="rgb(0,0,0)"></path> 40<text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="144" x="460.0" y="240">PacketType.SERVER_STREAM</text> 41<text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="60" x="418.0" y="253">channel ID</text> 42<text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="60" x="418.0" y="266">service ID</text> 43<text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="54" x="415.0" y="279">method ID</text> 44<text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="42" x="409.0" y="292">payload</text> 45<path d="M 180 367 L 356 367" fill="none" stroke="rgb(0,0,0)"></path> 46<polygon fill="rgb(0,0,0)" points="188,363 180,367 188,371" stroke="rgb(0,0,0)"></polygon> 47<polygon fill="rgb(240,248,255)" points="380,334 510,334 518,342 518,401 380,401 380,334" stroke="rgb(0,0,0)"></polygon> 48<path d="M 510 334 L 510 342" fill="none" stroke="rgb(0,0,0)"></path> 49<path d="M 510 342 L 518 342" fill="none" stroke="rgb(0,0,0)"></path> 50<text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="114" x="445.0" y="347">PacketType.RESPONSE</text> 51<text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="60" x="418.0" y="360">channel ID</text> 52<text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="60" x="418.0" y="373">service ID</text> 53<text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="54" x="415.0" y="386">method ID</text> 54<text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="36" x="406.0" y="399">status</text> 55<text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="42" x="205.0" y="151">request</text> 56<text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="138" x="287.0" y="258">messages (zero or more)</text> 57<text fill="rgb(0,0,0)" font-family="sans-serif" font-size="11" font-style="normal" font-weight="normal" text-anchor="middle" textLength="24" x="344.0" y="365">done</text> 58</svg> 59