Communicator is based on marshaling via hard drive and polling.
pyServer.run() polls content of a certain file ("serverCounter file"). If the
contents change then it executes a protocol for assembling an R command,
executes the command, writes results into a file, signals completion (by
writing into a "clientCounter" file) and returns to polling.
Any r_com-module function writes R requests according to the protocol expected
by pyServer, alters the contents of the "serverCounter" file and polls the
"clientCounter" file. When the contents of the "clientCounter" file signals
completion of R operation, the r_com function reads the results and returns.
Several Python shells may communicate with one R Shell as long as no round
trips overlap in time.
|