15.5 Close Down Mode
Normally all resources associated with a client will be destroyed
when the connection between the client and the server closes. This can
happen without prior warning to either the server or the client when,
for example, the network cable is accidentally pulled out of one of the
machines or the machine running the server crashes. Therefore, robust
applications need a way of recovering from that occurrence.
XSetCloseDownMode()
helps implement one method of
recovery.
Clients in the default DestroyAll
close down
mode will have all their resources killed when the connection to the
server dies. XSetCloseDownMode()
can set two other
modes, RetainPermanent
and
RetainTemporary
, which allow client resources to live on for a time. A client may want its resources to live on to assist in the process of recovering from a broken connection with the server, usually caused by a network failure. When next run after the problem has been corrected, the application could somehow determine which resources were its own and continue operating where it left off. The “somehow” is the crux of the problem. The only way we can think of to allow the client to find out the IDs of its resources after the client is resurrected is for the client to save all the resource IDs in a file (or perhaps in a property, but this would not survive a server crash) immediately after they are created. Then upon startup, it can read this information and see if the specified resources still exist. If they do, ...
Get XLIB Programming Manual, Rel. 5, Third Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.