alex@hpgnd.grenoble.hp.com (Alexis MERMET-GRANDFILLES) (04/09/91)
Hello, 1/ I am looking for the latest Inter Client Communication Conventions document. I have got the O'reily books which say that it should appear in the Appendix L of the volume 0 : X protocol Reference Manual. Unfortunately, my volume 0 book ends at appendix K. too bad... Does anybody know where to find this text or this document ? 2/ I am trying to find out what is the best way to transfer quite a big amount of Data ( Several KBytes ) between 2 X clients. In fact, I am thinking of a X11 client which acts as a server for many other clients. On the request of those clients, this 'server' would send somehow some kind of data, from a few bytes to several KBytes to the requesting client. I was thinking of writing the complete buffer into a pre-defined root window property, and then , sending a ClientMessage to the waiting client to tell him the data is ready and where it is. Does this sound feasable ? Any performance concerns ? Any better ideas ? What is the limitted amount of data that a X11-server may store in a single property ? Thank very much for any help ! -------------------------------------------------------------------------- Alexis MERMET-GRANDFILLES HEWLETT-PACKARD Tel: 76 62 12 11 Grenoble Network Division Fax: 76 62 52 00 5 avenue Raymond Chanas - EYBENS alex@hpgndxo.hp.com 38053 GRENOBLE CEDEX 9 -------------------------------------------------------------------------
klee@wsl.dec.com (Ken Lee) (04/13/91)
In article <2190001@hpgnd.grenoble.hp.com>, alex@hpgnd.grenoble.hp.com (Alexis MERMET-GRANDFILLES) writes: |> What is the limitted amount of data that a X11-server may store in |> a single property ? This is undefined. I understand that some implementations put severe restrictions on the maximum property size. I'd recommend that you use a more general purpose IPC mechanism, such as sockets or streams, for your purposes. -- Ken Lee DEC Western Software Laboratory, Palo Alto, Calif. Internet: klee@wsl.dec.com uucp: uunet!decwrl!klee
smarks@eng.sun.COM (Stuart Marks) (04/13/91)
alex@hpgnd.grenoble.hp.com (Alexis MERMET-GRANDFILLES) writes:
I am looking for the latest Inter Client Communication Conventions
document. I have got the O'reily books which say that it should appear
in the Appendix L of the volume 0 : X protocol Reference Manual.
Unfortunately, my volume 0 book ends at appendix K. too bad...
Sounds like you have an old version of this book. I have the second
printing (May 1990) which includes the ICCCM and some other stuff. The
ICCCM is also also reprinted in Scheifler/Gettys, The X Window System,
Digital Press. The ICCCM can also be found in troff and PostScript formats
in the X11R4 distribution under doc/ICCCM and hardcopy/ICCCM, respectively.
I am trying to find out what is the best way to transfer quite a big
amount of Data ( Several KBytes ) between 2 X clients.
In fact, I am thinking of a X11 client which acts as a server for many
other clients. On the request of those clients, this 'server'
would send somehow some kind of data, from a few bytes to several KBytes
to the requesting client.
I was thinking of writing the complete buffer into a pre-defined root
window property, and then , sending a ClientMessage to the waiting client
to tell him the data is ready and where it is.
The ICCCM defines a way to transfer arbitrary amounts of data through the
server. See the section on selections, in particular, section 2.5: Large
Data Transfers. It's somewhat similar to the scheme you describe, but more
robust.
What is the limitted amount of data that a X11-server may store in
a single property ?
This is one of the problems. The protocol says, under ChangeProperty,
"The maximum size of a property is server-dependent and may vary
dynamically." You can't tell whether you can store data except by trying
to store it and seeing whether it succeeds.
Does this sound feasable ?
Any performance concerns ?
I would say that a client-server design based on transport through the X
server is pretty fragile. The means to do it certainly exist. Whether
it's a good idea is another story. It might be feasible under very
controlled circumstances, where you own all the clients and servers, and
where you control the amount of data and the frequency with which it's
transferred.
I would be very concerned if you advertised this mechanism to, for example,
your customers. It may work fine on your test bench. But sooner or later
someone is going to use your system in a way you didn't intend for it to be
used. For example, they might try to transfer large files using this
method. Or they might be running your system on an X terminal connected
over a serial line. You can be sure there will be performance problems if
that happens.
Any better ideas ?
Yes. Use a real network. Transferring stuff through the X server should
be avoided unless you have no other choice.
Alexis MERMET-GRANDFILLES HEWLETT-PACKARD
Tel: 76 62 12 11 Grenoble Network Division
Fax: 76 62 52 00 5 avenue Raymond Chanas - EYBENS
alex@hpgndxo.hp.com 38053 GRENOBLE CEDEX 9
Oh... you work for a competitor... Well, in that case, disregard
everything I just said. Go ahead and transfer everything through the X
server. It will be fast and will work perfectly every time. :-)
s'marks
Stuart W. Marks ARPA: smarks@eng.sun.com
Windows & Graphics Software UUCP: sun!smarks
Sun Microsystems, Inc.