aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/lib/lbxutil/delta/lbxdelta.c
diff options
context:
space:
mode:
Diffstat (limited to 'nx-X11/lib/lbxutil/delta/lbxdelta.c')
-rw-r--r--nx-X11/lib/lbxutil/delta/lbxdelta.c255
1 files changed, 0 insertions, 255 deletions
diff --git a/nx-X11/lib/lbxutil/delta/lbxdelta.c b/nx-X11/lib/lbxutil/delta/lbxdelta.c
deleted file mode 100644
index 5925a6a1b..000000000
--- a/nx-X11/lib/lbxutil/delta/lbxdelta.c
+++ /dev/null
@@ -1,255 +0,0 @@
-/*
- * $NCDXorg: @(#)lbxdelta.c,v 1.2 1994/01/22 02:23:40 dct Exp $
- * $Xorg: lbxdelta.c,v 1.5 2000/08/17 19:46:40 cpqbld Exp $
- * $XdotOrg: xc/lib/lbxutil/delta/lbxdelta.c,v 1.7 2005/07/30 21:07:25 alanc Exp $
- *
- * Copyright 1993 Network Computing Devices
- *
- * 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, and that the name of NCD. not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission. NCD. makes no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * NCD. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL NCD.
- * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
- * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * Author: Dale Tonogai, Network Computing Devices
- */
-/* $XFree86: xc/lib/lbxutil/delta/lbxdelta.c,v 1.7 2001/07/25 15:04:57 dawes Exp $ */
-
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#define _XLBX_SERVER_
-#include <X11/extensions/lbxstr.h>
-#include <X11/extensions/lbxdeltastr.h>
-
-#include <stddef.h>
-#include <string.h>
-
-#ifdef LBXREQSTATS
-#include "../lbx_zlib/reqstats.h"
-extern int LbxWhoAmI;
-extern struct ReqStats CoreRequestStats[128];
-extern struct ReqStats LbxRequestStats[LbxNumberReqs];
-
-#define LBX_CODE 136 /* XXX - this should not be hardcoded - on todo list */
-#endif
-
-/* Copied from xc/programs/Xserver/include/xorg/os.h */
-#ifndef _HAVE_XALLOC_DECLS
-#define _HAVE_XALLOC_DECLS
-#include <X11/Xdefs.h>
-
-extern pointer Xalloc(unsigned long /*amount*/);
-extern pointer Xcalloc(unsigned long /*amount*/);
-extern pointer Xrealloc(pointer /*ptr*/, unsigned long /*amount*/);
-extern void Xfree(pointer /*ptr*/);
-#endif
-
-/*
- * Allocate data structures needed for doing Delta compaction
- */
-int
-LBXInitDeltaCache(LBXDeltasPtr pcache,
- int nDeltas,
- int maxDeltasize)
-{
- int i;
- unsigned char *mem;
-
- if ((pcache->nDeltas = nDeltas)) {
- pcache->maxDeltasize = maxDeltasize;
- if ((pcache->deltas = (LBXDeltaElemPtr)
- Xalloc(pcache->nDeltas * sizeof(LBXDeltaElemRec) +
- pcache->nDeltas * pcache->maxDeltasize)) == NULL) {
- return -1;
- }
-
- mem = (unsigned char *) (pcache->deltas + pcache->nDeltas);
- for (i = 0; i < pcache->nDeltas; i++) {
- pcache->deltas[i].buf = mem;
- mem += pcache->maxDeltasize;
- }
- }
- else
- pcache->maxDeltasize = 0;
-
- pcache->nextDelta = 0;
- pcache->activeDeltas = 0;
- return 0;
-}
-
-/*
- * Free data structures used for doing Delta compaction
- */
-void
-LBXFreeDeltaCache(LBXDeltasPtr pcache)
-{
- if (pcache->nDeltas && pcache->deltas)
- Xfree(pcache->deltas);
-}
-
-static int
-BytesDiff(unsigned char *ptr1, unsigned char *ptr2,
- int n,
- int maxn)
-{
- int result = 0;
-
- while (n--)
- if (*(ptr1++) != *(ptr2++))
- if (++result >= maxn)
- break;
- return (result);
-}
-
-/*
- * Find the message in the outgoing delta cache with the least number of
- * differing bytes and return the number of differences. If all
- * messages have greater than maxdiff differences, return -1.
- */
-int
-LBXDeltaMinDiffs(LBXDeltasPtr pcache,
- unsigned char *inmsg,
- int inmsglen,
- int maxdiff,
- int *pindex)
-{
- int i, j, k = 0, l = maxdiff + 1;
- int m;
- LBXDeltaElemPtr dm;
-
- for (m = pcache->nextDelta-1, dm = &pcache->deltas[m], i = 0;
- i < pcache->activeDeltas;
- i++, m--, dm--
- ) {
- if (m < 0) {
- m = pcache->nDeltas - 1;
- dm = &pcache->deltas[m];
- }
- if (dm->length == inmsglen) {
- j = BytesDiff(inmsg, dm->buf, inmsglen, l);
- if (j < l) {
- k = m;
- l = j;
- }
- }
- }
-
- if (l > maxdiff)
- return -1;
- else {
- *pindex = k;
- return l;
- }
-}
-
-/*
- * Delta compact a given message
- */
-void
-LBXEncodeDelta(LBXDeltasPtr pcache,
- unsigned char *inmsg,
- int ndiff,
- int index,
- unsigned char *buf)
-{
- int i, off, diff;
- xLbxDiffItem *deltas = (xLbxDiffItem *)buf;
-
- for (off = i = 0; i < ndiff; off++) {
- if ((diff = inmsg[off] - pcache->deltas[index].buf[off])) {
- deltas[i].offset = off;
- deltas[i++].diff = diff;
- }
- }
-}
-
-/*
- * Uncompact a message
- */
-int
-LBXDecodeDelta(LBXDeltasPtr pcache,
- xLbxDiffItem *deltas,
- int ndiff,
- int index,
- unsigned char **buf)
-{
- int i;
- int newindex = pcache->nextDelta;
- int len = pcache->deltas[index].length;
- unsigned char *p = pcache->deltas[newindex].buf;
-#ifdef LBXREQSTATS
- xReq *req;
-#endif
-
- pcache->nextDelta = (pcache->nextDelta + 1) % pcache->nDeltas;
- if (index != newindex) {
- memcpy(p, pcache->deltas[index].buf, len);
- pcache->deltas[newindex].length = len;
- }
- for (i = 0; i < ndiff; i++)
- p[deltas[i].offset] += deltas[i].diff;
- *buf = p;
-
-#ifdef LBXREQSTATS
- req = (xReq *) p;
-
- if (LbxWhoAmI == 1) /* server */
- {
- struct ReqStats *reqStat = NULL;
-
- if (req->reqType == LBX_CODE)
- reqStat = &LbxRequestStats[req->data];
- else if (req->reqType < 128)
- reqStat = &CoreRequestStats[req->reqType];
-
- if (reqStat)
- {
- reqStat->delta_count++;
- reqStat->pre_delta_bytes += (req->length << 2);
- reqStat->post_delta_bytes +=
- (((sz_xLbxDeltaReq + sz_xLbxDiffItem * ndiff + 3) >> 2) << 2);
- }
- }
-#endif
-
- return len;
-}
-
-/*
- * Add a message to the outgoing delta cache
- */
-void
-LBXAddDeltaOut(LBXDeltasPtr pcache,
- unsigned char *inmsg,
- int inmsglen)
-{
- memcpy(pcache->deltas[pcache->nextDelta].buf, inmsg, inmsglen);
- pcache->deltas[pcache->nextDelta].length = inmsglen;
- pcache->nextDelta = (pcache->nextDelta + 1) % pcache->nDeltas;
- if (pcache->activeDeltas < pcache->nDeltas)
- pcache->activeDeltas++;
-}
-
-/*
- * Add a message to the incoming delta cache
- */
-void
-LBXAddDeltaIn(LBXDeltasPtr pcache,
- unsigned char *inmsg,
- int inmsglen)
-{
- memcpy(pcache->deltas[pcache->nextDelta].buf, inmsg, inmsglen);
- pcache->deltas[pcache->nextDelta].length = inmsglen;
- pcache->nextDelta = (pcache->nextDelta + 1) % pcache->nDeltas;
-}