[comp.windows.x] ICCM and Properties

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.