On Mon, 29 Oct 2012, 印場 乃亜 wrote:

Greetings,

I am familiar with the basic underlying methods available for transferring data 
between processes on Windows and Unix, i.e. Pipes, Shared memory, and TCP/IP - 
but what I am not familiar with is any higher level functionality that may be 
available on FPC.

As an example:  I have one application with a daemon that uses the IPC 
component to write to a file in CSV format, and then the user application reads 
this (GPS location) data via IPC.  Then I have to re-convert this string data 
into a series of floating point values manually, though.  The IPC component 
doesn't seem to be reliable on all platforms either (it sometimes blocks on OS 
X, and at least the debug client doesn't seem to work at all on Windows 7).

Another disadvantage is that the sequence of launching the applications matters, and what's more, 
it seems there can only be one "client" per "server" in many cases.

More to the point, if I want to pass around structures, records, etc.between processes - 
what is the best day?  For example, Javascript uses JSON.  I know there are JSON 
libraries and various other libraries for Pascal - but I don't know what is the most 
standard way.  (I think this kind of marshalling/unmarshalling may be more standard in 
Java and C#, but I don't know the "normal" way in Delphi/FPC).

I would prefer to use built-in functionality, rather than learn yet
another library - and if learning a library, I would prefer to use one
with lots of users that is actively maintained.  Likewise, I would prefer
to actually "pass" the data, rather than just pass a pointer to it.  I
plan to have the processes run on the same machine, so I don't need a
solution that works with networking, though that would be fine, of course.

Along the same lines, a convenient way to call functions/procedures with
parameters from the "other" process would be greatly appreciated. (i.e. something like RPC that handles OOP).

You should try WST.

It's perfectly suitable for all this. It is actively used and maintained.
You can choose which encoding (binary, soap, JSON) is used, and which protocol (Direct library, TCP socket, http).

Michael.
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to