<html><head></head><body><div style="color:#000; background-color:#fff; font-family:Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:13px"><div id="yui_3_16_0_ym19_1_1507129101941_199392" dir="ltr"><span style="font-family: "Helvetica Neue", "Segoe UI", Helvetica, Arial, "Lucida Grande", sans-serif;" id="yui_3_16_0_ym19_1_1507129101941_199499">> I'm disagreeing with the false notion that this is what "remote</span><br clear="none" style="font-family: "Helvetica Neue", "Segoe UI", Helvetica, Arial, "Lucida Grande", sans-serif;" id="yui_3_16_0_ym19_1_1507129101941_199500"><span style="font-family: "Helvetica Neue", "Segoe UI", Helvetica, Arial, "Lucida Grande", sans-serif;" id="yui_3_16_0_ym19_1_1507129101941_199501">> procedure call" actually means.<br></span><br>RPC practically (not theoretically) means to send a message and get a reply back to the sender for that particular message.  It is different from the request/response model because it allows non-blocking multiplexing on 1 data channel. <br><br>Usually this is implemented by passing a unique ID in the message mapping to a callback on the sender, in erlangs case this is the pid of the sender, but it can be a service dedicated to RPC.<br></div> <div class="qtdSeparateBR"><br><br></div><div class="yahoo_quoted" style="display: block;"> <div style="font-family: Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 13px;"> <div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 16px;"> <div dir="ltr"><font size="2" face="Arial"> On Friday, October 6, 2017 10:48 AM, zxq9 <zxq9@zxq9.com> wrote:<br></font></div>  <br><br> <div class="y_msg_container"><div dir="ltr">On 2017年10月06日 金曜日 10:43:48 Roger Lipscombe wrote:<br clear="none">> On 6 October 2017 at 03:37, zxq9 <<a shape="rect" ymailto="mailto:zxq9@zxq9.com" href="mailto:zxq9@zxq9.com">zxq9@zxq9.com</a>> wrote:<br clear="none">> > Thinking that the rpc module is specially useful for tests, CLI<br clear="none">> > wrappers, or when you want to execute commands on a remote node (from<br clear="none">> > a script or otherwise) is a bit of an odd conclusion to draw, given<br clear="none">> > the way that the even-arity spawn_* functions work.<br clear="none">> <br clear="none">> On occasion, we've needed to (e.g.) tweak application settings in a<br clear="none">> remote node, at runtime, during system tests, synchronously. Sure, I<br clear="none">> could do that with spawn_*, but that's a lot of plumbing I'd need to<br clear="none">> write. Hey, look: someone already did; it's in the rpc module.<br clear="none"><br clear="none">Sure. I'm not disagreeing with that.<br clear="none"><br clear="none">I'm disagreeing with the false notion that this is what "remote<br clear="none">procedure call" actually means.<br clear="none"><br clear="none">-Craig<div class="yqt2711991369" id="yqtfd80922"><br clear="none">_______________________________________________<br clear="none">erlang-questions mailing list<br clear="none"><a shape="rect" ymailto="mailto:erlang-questions@erlang.org" href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br clear="none"><a shape="rect" href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br clear="none"></div></div><br><br></div>  </div> </div>  </div></div></body></html>