aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/lib/ICE/shutdown.c
diff options
context:
space:
mode:
Diffstat (limited to 'nx-X11/lib/ICE/shutdown.c')
-rw-r--r--nx-X11/lib/ICE/shutdown.c330
1 files changed, 0 insertions, 330 deletions
diff --git a/nx-X11/lib/ICE/shutdown.c b/nx-X11/lib/ICE/shutdown.c
deleted file mode 100644
index 5c957c7bb..000000000
--- a/nx-X11/lib/ICE/shutdown.c
+++ /dev/null
@@ -1,330 +0,0 @@
-/* $Xorg: shutdown.c,v 1.4 2001/02/09 02:03:26 xorgcvs Exp $ */
-/******************************************************************************
-
-
-Copyright 1993, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-Author: Ralph Mor, X Consortium
-******************************************************************************/
-/* $XFree86: xc/lib/ICE/shutdown.c,v 3.3 2001/08/01 00:44:37 tsi Exp $ */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/ICE/ICElib.h>
-#include "ICElibint.h"
-#include <X11/Xtrans/Xtrans.h>
-
-
-Status
-IceProtocolShutdown (iceConn, majorOpcode)
-
-IceConn iceConn;
-int majorOpcode;
-
-{
- if (iceConn->proto_ref_count == 0 || iceConn->process_msg_info == NULL ||
- majorOpcode < 1 || majorOpcode > _IceLastMajorOpcode)
- {
- return (0);
- }
- else
- {
- /*
- * Make sure this majorOpcode is really being used.
- */
-
- int i;
-
- for (i = iceConn->his_min_opcode; i <= iceConn->his_max_opcode; i++)
- {
- if (iceConn->process_msg_info[
- i - iceConn->his_min_opcode].in_use &&
- iceConn->process_msg_info[
- i - iceConn->his_min_opcode].my_opcode == majorOpcode)
- break;
- }
-
- if (i > iceConn->his_max_opcode)
- {
- return (0);
- }
- else
- {
- /*
- * OK, we can shut down the protocol.
- */
-
- iceConn->process_msg_info[
- i - iceConn->his_min_opcode].in_use = False;
- iceConn->proto_ref_count--;
-
- return (1);
- }
- }
-}
-
-
-
-void
-IceSetShutdownNegotiation (iceConn, negotiate)
-
-IceConn iceConn;
-Bool negotiate;
-
-{
- iceConn->skip_want_to_close = negotiate ? False : True;
-}
-
-
-
-Bool
-IceCheckShutdownNegotiation (iceConn)
-
-IceConn iceConn;
-
-{
- return (iceConn->skip_want_to_close ? False : True);
-}
-
-
-
-IceCloseStatus
-IceCloseConnection (iceConn)
-
-IceConn iceConn;
-
-{
- int refCountReachedZero;
- IceCloseStatus status;
-
- /*
- * If this connection object was never valid, we can close
- * it right now. This happens if IceAcceptConnection was
- * called, but after calling IceProcessMessages several times
- * the connection was rejected (because of authentication or
- * some other reason).
- */
-
- if (iceConn->listen_obj &&
- iceConn->connection_status != IceConnectAccepted)
- {
- _IceConnectionClosed (iceConn); /* invoke watch procs */
- _IceFreeConnection (iceConn);
- return (IceClosedNow);
- }
-
-
- /*---------------------------------------------------------------
-
- ACTIONS:
-
- A = Invoke Watch Procedures
- B = Set free-asap bit
- C = Free connection
- D = Initialize shutdown negotiation
- N = do nothing
-
-
- ACTION TABLE:
-
- IO free- dispatch protocol shutdown
- error asap bit level refcount negotiation ACTION
- occured set reached 0 reached 0
-
- 0 0 0 0 0 N
- 0 0 0 0 1 N
- 0 0 0 1 0 AB
- 0 0 0 1 1 N
- 0 0 1 0 0 N
- 0 0 1 0 1 N
- 0 0 1 1 0 AC
- 0 0 1 1 1 D
- 0 1 0 0 0 N
- 0 1 0 0 1 N
- 0 1 0 1 0 N
- 0 1 0 1 1 N
- 0 1 1 0 0 C
- 0 1 1 0 1 D
- 0 1 1 1 0 C
- 0 1 1 1 1 D
- 1 0 0 0 0 AB
- 1 0 0 0 1 AB
- 1 0 0 1 0 AB
- 1 0 0 1 1 AB
- 1 0 1 0 0 AC
- 1 0 1 0 1 AC
- 1 0 1 1 0 AC
- 1 0 1 1 1 AC
- 1 1 0 0 0 N
- 1 1 0 0 1 N
- 1 1 0 1 0 N
- 1 1 0 1 1 N
- 1 1 1 0 0 C
- 1 1 1 0 1 C
- 1 1 1 1 0 C
- 1 1 1 1 1 C
-
- ---------------------------------------------------------------*/
-
- if (iceConn->open_ref_count > 0)
- iceConn->open_ref_count--;
-
- refCountReachedZero = iceConn->open_ref_count == 0 &&
- iceConn->proto_ref_count == 0;
-
- status = IceConnectionInUse;
-
- if (!iceConn->free_asap && (!iceConn->io_ok ||
- (iceConn->io_ok && refCountReachedZero &&
- iceConn->skip_want_to_close)))
- {
- /*
- * Invoke the watch procedures now.
- */
-
- _IceConnectionClosed (iceConn);
- status = IceClosedNow; /* may be overwritten by IceClosedASAP */
- }
-
- if (!iceConn->free_asap && iceConn->dispatch_level != 0 &&
- (!iceConn->io_ok ||
- (iceConn->io_ok && refCountReachedZero &&
- iceConn->skip_want_to_close)))
- {
- /*
- * Set flag so we free the connection as soon as possible.
- */
-
- iceConn->free_asap = True;
- status = IceClosedASAP;
- }
-
- if (iceConn->io_ok && iceConn->dispatch_level == 0 &&
- !iceConn->skip_want_to_close && refCountReachedZero)
- {
- /*
- * Initiate shutdown negotiation.
- */
-
- IceSimpleMessage (iceConn, 0, ICE_WantToClose);
- IceFlush (iceConn);
-
- iceConn->want_to_close = 1;
-
- status = IceStartedShutdownNegotiation;
- }
- else if (iceConn->dispatch_level == 0 &&
- (!iceConn->io_ok || (iceConn->io_ok && iceConn->skip_want_to_close &&
- (iceConn->free_asap || (!iceConn->free_asap && refCountReachedZero)))))
- {
- /*
- * Free the connection.
- */
-
- _IceFreeConnection (iceConn);
-
- status = IceClosedNow;
- }
-
- return (status);
-}
-
-
-
-void
-_IceFreeConnection (iceConn)
-
-IceConn iceConn;
-
-{
- if (iceConn->listen_obj == NULL)
- {
- /*
- * This iceConn was created with IceOpenConnection.
- * We keep track of all open IceConn's, so we need
- * to remove it from the list.
- */
-
- int i;
-
- for (i = 0; i < _IceConnectionCount; i++)
- if (_IceConnectionObjs[i] == iceConn)
- break;
-
- if (i < _IceConnectionCount)
- {
- if (i < _IceConnectionCount - 1)
- {
- _IceConnectionObjs[i] =
- _IceConnectionObjs[_IceConnectionCount - 1];
- _IceConnectionStrings[i] =
- _IceConnectionStrings[_IceConnectionCount - 1];
- }
-
- _IceConnectionCount--;
- }
- }
-
- if (iceConn->trans_conn)
- _IceTransClose (iceConn->trans_conn);
-
- if (iceConn->connection_string)
- free (iceConn->connection_string);
-
- if (iceConn->vendor)
- free (iceConn->vendor);
-
- if (iceConn->release)
- free (iceConn->release);
-
- if (iceConn->inbuf)
- free (iceConn->inbuf);
-
- if (iceConn->outbuf)
- free (iceConn->outbuf);
-
- if (iceConn->scratch)
- free (iceConn->scratch);
-
- if (iceConn->process_msg_info)
- free ((char *) iceConn->process_msg_info);
-
- if (iceConn->connect_to_you)
- free ((char *) iceConn->connect_to_you);
-
- if (iceConn->protosetup_to_you)
- free ((char *) iceConn->protosetup_to_you);
-
- if (iceConn->connect_to_me)
- free ((char *) iceConn->connect_to_me);
-
- if (iceConn->protosetup_to_me)
- free ((char *) iceConn->protosetup_to_me);
-
- free ((char *) iceConn);
-}
-
-
-
-