15c10afb9Smrg 25c10afb9Smrg/* 35c10afb9SmrgCopyright 1996, 1998 The Open Group 45c10afb9Smrg 55c10afb9SmrgPermission to use, copy, modify, distribute, and sell this software and its 65c10afb9Smrgdocumentation for any purpose is hereby granted without fee, provided that 75c10afb9Smrgthe above copyright notice appear in all copies and that both that 85c10afb9Smrgcopyright notice and this permission notice appear in supporting 95c10afb9Smrgdocumentation. 105c10afb9Smrg 115c10afb9SmrgThe above copyright notice and this permission notice shall be included 125c10afb9Smrgin all copies or substantial portions of the Software. 135c10afb9Smrg 145c10afb9SmrgTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 155c10afb9SmrgOR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 165c10afb9SmrgMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 175c10afb9SmrgIN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR 185c10afb9SmrgOTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 195c10afb9SmrgARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 205c10afb9SmrgOTHER DEALINGS IN THE SOFTWARE. 215c10afb9Smrg 225c10afb9SmrgExcept as contained in this notice, the name of The Open Group shall 235c10afb9Smrgnot be used in advertising or otherwise to promote the sale, use or 245c10afb9Smrgother dealings in this Software without prior written authorization 255c10afb9Smrgfrom The Open Group. 265c10afb9Smrg*/ 275c10afb9Smrg 285c10afb9Smrg 295c10afb9Smrg#include <X11/ICE/ICElib.h> 305c10afb9Smrg 315c10afb9Smrg 325c10afb9Smrgtypedef struct _server_list { 335c10afb9Smrg char *serverAddress; 345c10afb9Smrg struct _server_list *next; 355c10afb9Smrg} server_list; 365c10afb9Smrg 375c10afb9Smrg 385c10afb9Smrgtypedef struct _request_list { 395c10afb9Smrg char *serviceName; 405c10afb9Smrg char *serverAddress; 415c10afb9Smrg char *hostAddress; 425c10afb9Smrg char *startOptions; 435c10afb9Smrg PMconn *requestor; 445c10afb9Smrg char *listData; 455c10afb9Smrg int authLen; 465c10afb9Smrg char *authName; 475c10afb9Smrg char *authData; 485c10afb9Smrg struct _request_list *next; 495c10afb9Smrg} request_list; 505c10afb9Smrg 515c10afb9Smrg 525c10afb9Smrgtypedef struct _running_proxy { 535c10afb9Smrg Bool active; 545c10afb9Smrg PMconn *pmConn; 555c10afb9Smrg request_list *requests; 565c10afb9Smrg server_list *servers; 575c10afb9Smrg Bool refused_service; 585c10afb9Smrg struct _running_proxy *next; 595c10afb9Smrg} running_proxy; 605c10afb9Smrg 615c10afb9Smrg 625c10afb9Smrgtypedef struct _proxy_service { 635c10afb9Smrg char *serviceName; 645c10afb9Smrg int proxyCount; 655c10afb9Smrg running_proxy *proxyList; 665c10afb9Smrg struct _proxy_service *next; 675c10afb9Smrg} proxy_service; 685c10afb9Smrg 695c10afb9Smrg 705c10afb9Smrgtypedef struct { 715c10afb9Smrg int count; 725c10afb9Smrg int current; 735c10afb9Smrg running_proxy **list; 745c10afb9Smrg} running_proxy_list; 755c10afb9Smrg 765c10afb9Smrg 775c10afb9Smrg 785c10afb9Smrgproxy_service 795c10afb9Smrg*FindProxyService ( 805c10afb9Smrg char *serviceName, 815c10afb9Smrg Bool createIf); 825c10afb9Smrg 835c10afb9Smrgrunning_proxy * 845c10afb9SmrgStartNewProxy ( 855c10afb9Smrg char *serviceName, 865c10afb9Smrg char *startCommand); 875c10afb9Smrg 885c10afb9Smrgrunning_proxy * 895c10afb9SmrgConnectToProxy ( 905c10afb9Smrg int pmOpcode, 915c10afb9Smrg char *serviceName, 925c10afb9Smrg char *proxyAddress); 935c10afb9Smrg 945c10afb9SmrgStatus 955c10afb9SmrgActivateProxyService ( 965c10afb9Smrg char *serviceName, 975c10afb9Smrg PMconn *proxy); 985c10afb9Smrg 995c10afb9Smrgvoid 1005c10afb9SmrgProxyGone ( 1015c10afb9Smrg IceConn proxyIceConn, 1025c10afb9Smrg Bool *activeReqs); 1035c10afb9Smrg 1045c10afb9Smrgrunning_proxy_list * 1055c10afb9SmrgGetRunningProxyList ( 1065c10afb9Smrg char *serviceName, 1075c10afb9Smrg char *serverAddress); 1085c10afb9Smrg 1095c10afb9Smrgvoid 1105c10afb9SmrgFreeProxyList ( 1115c10afb9Smrg running_proxy_list *list); 1125c10afb9Smrg 1135c10afb9SmrgStatus 1145c10afb9SmrgPushRequestorQueue ( 1155c10afb9Smrg running_proxy *proxy, 1165c10afb9Smrg PMconn *requestor, 1175c10afb9Smrg running_proxy_list *runList, 1185c10afb9Smrg char *serviceName, 1195c10afb9Smrg char *serverAddress, 1205c10afb9Smrg char *hostAddress, 1215c10afb9Smrg char *startOptions, 1225c10afb9Smrg int authLen, 1235c10afb9Smrg char *authName, 1245c10afb9Smrg char *authData); 1255c10afb9Smrg 1265c10afb9Smrg 1275c10afb9SmrgStatus 1285c10afb9SmrgPeekRequestorQueue ( 1295c10afb9Smrg PMconn *proxy, 1305c10afb9Smrg PMconn **requestor, 1315c10afb9Smrg running_proxy_list **runList, 1325c10afb9Smrg char **serviceName, 1335c10afb9Smrg char **serverAddress, 1345c10afb9Smrg char **hostAddress, 1355c10afb9Smrg char **startOptions, 1365c10afb9Smrg int *authLen, 1375c10afb9Smrg char **authName, 1385c10afb9Smrg char **authData); 1395c10afb9Smrg 1405c10afb9SmrgPMconn* 1415c10afb9SmrgPopRequestorQueue ( 1425c10afb9Smrg PMconn *pmConn, 1435c10afb9Smrg Bool addServer, 1445c10afb9Smrg Bool freeProxyList); 1455c10afb9Smrg 1465c10afb9Smrgrunning_proxy * 1475c10afb9SmrgProxyForPMconn( 1485c10afb9Smrg PMconn *pmConn); 149