int SetUnpackColormapCompatStore::decodeIdentity(DecodeBuffer &decodeBuffer, unsigned char *&buffer, unsigned int &size, int bigEndian, WriteBuffer *writeBuffer, ChannelCache *channelCache) const { ClientCache *clientCache = (ClientCache *) channelCache; #ifdef DEBUG *logofs << name() << ": Decoding full message identity.\n" << logofs_flush; #endif unsigned int value; unsigned char cValue; // Client. decodeBuffer.decodeCachedValue(cValue, 8, clientCache -> resourceCache); // Entries. decodeBuffer.decodeValue(value, 32, 9); size = (value << 2) + 8; buffer = writeBuffer -> addMessage(size); *(buffer + 1) = cValue; PutULONG(value, buffer + 4, bigEndian); #ifdef DEBUG *logofs << name() << ": Decoded full message identity.\n" << logofs_flush; #endif return 1; }
void SetUnpackColormapCompatStore::updateIdentity(DecodeBuffer &decodeBuffer, const Message *message, ChannelCache *channelCache) const { SetUnpackColormapCompatMessage *setUnpackColormap = (SetUnpackColormapCompatMessage *) message; ClientCache *clientCache = (ClientCache *) channelCache; unsigned int value; decodeBuffer.decodeCachedValue(setUnpackColormap -> client, 8, clientCache -> resourceCache); #ifdef DEBUG *logofs << name() << ": Decoded value " << (unsigned int) setUnpackColormap -> client << " as client field.\n" << logofs_flush; #endif decodeBuffer.decodeBoolValue(value); if (value) { decodeBuffer.decodeValue(value, 32, 9); setUnpackColormap -> entries = value; #ifdef DEBUG *logofs << name() << ": Decoded value " << setUnpackColormap -> entries << " as entries field.\n" << logofs_flush; #endif } }
int GetPropertyReplyStore::decodeIdentity(DecodeBuffer &decodeBuffer, unsigned char *&buffer, unsigned int &size, int bigEndian, WriteBuffer *writeBuffer, ChannelCache *channelCache) const { ServerCache *serverCache = (ServerCache *) channelCache; #ifdef DEBUG *logofs << name() << ": Decoding full message identity.\n" << logofs_flush; #endif unsigned char format; decodeBuffer.decodeCachedValue(format, 8, serverCache -> getPropertyFormatCache); unsigned int length; decodeBuffer.decodeValue(length, 32, 9); unsigned int numBytes = length; if (format == 16) { numBytes <<= 1; } else if (format == 32) { numBytes <<= 2; } size = 32 + RoundUp4(numBytes); buffer = writeBuffer -> addMessage(size); *(buffer + 1) = format; PutULONG(length, buffer + 16, bigEndian); unsigned int value; decodeBuffer.decodeCachedValue(value, 29, serverCache -> getPropertyTypeCache, 9); PutULONG(value, buffer + 8, bigEndian); decodeBuffer.decodeValue(value, 32, 9); PutULONG(value, buffer + 12, bigEndian); #ifdef DEBUG *logofs << name() << ": Decoded full message identity.\n" << logofs_flush; #endif return 1; }
void ImageText16Store::updateIdentity(DecodeBuffer &decodeBuffer, const Message *message, ChannelCache *channelCache) const { ImageText16Message *imageText16 = (ImageText16Message *) message; ClientCache *clientCache = (ClientCache *) channelCache; unsigned int value; decodeBuffer.decodeXidValue(value, clientCache -> drawableCache); imageText16 -> drawable = value; #ifdef DEBUG *logofs << name() << ": Decoded value " << imageText16 -> drawable << " as " << "drawable" << " field.\n" << logofs_flush; #endif decodeBuffer.decodeXidValue(value, clientCache -> gcCache); imageText16 -> gcontext = value; #ifdef DEBUG *logofs << name() << ": Decoded value " << imageText16 -> gcontext << " as gcontext field.\n" << logofs_flush; #endif decodeBuffer.decodeCachedValue(value, 16, clientCache -> imageTextCacheX); imageText16 -> x += value; imageText16 -> x &= 0xffff; #ifdef DEBUG *logofs << name() << ": Decoded value " << imageText16 -> x << " as x field.\n" << logofs_flush; #endif decodeBuffer.decodeCachedValue(value, 16, clientCache -> imageTextCacheY); imageText16 -> y += value; imageText16 -> y &= 0xffff; #ifdef DEBUG *logofs << name() << ": Decoded value " << imageText16 -> y << " as y field.\n" << logofs_flush; #endif }
int CreatePixmapStore::decodeIdentity(DecodeBuffer &decodeBuffer, unsigned char *&buffer, unsigned int &size, int bigEndian, WriteBuffer *writeBuffer, ChannelCache *channelCache) const { ClientCache *clientCache = (ClientCache *) channelCache; unsigned char cValue; unsigned int value; size = 16; buffer = writeBuffer -> addMessage(size); decodeBuffer.decodeCachedValue(cValue, 8, clientCache -> depthCache); *(buffer + 1) = cValue; decodeBuffer.decodeNewXidValue(value, clientCache -> lastId, clientCache -> lastIdCache, clientCache -> drawableCache, clientCache -> freeDrawableCache); PutULONG(value, buffer + 4, bigEndian); decodeBuffer.decodeXidValue(value, clientCache -> windowCache); PutULONG(value, buffer + 8, bigEndian); decodeBuffer.decodeCachedValue(value, 16, clientCache -> createPixmapXCache, 8); PutUINT(value, buffer + 12, bigEndian); decodeBuffer.decodeCachedValue(value, 16, clientCache -> createPixmapYCache, 8); PutUINT(value, buffer + 14, bigEndian); #ifdef TEST *logofs << name() << ": Decoded message. Size is " << size << ".\n" << logofs_flush; #endif return 1; }
void FillPolyStore::updateIdentity(DecodeBuffer &decodeBuffer, const Message *message, ChannelCache *channelCache) const { FillPolyMessage *fillPoly = (FillPolyMessage *) message; ClientCache *clientCache = (ClientCache *) channelCache; decodeBuffer.decodeXidValue(fillPoly -> drawable, clientCache -> drawableCache); #ifdef TEST *logofs << name() << ": Decoded value " << fillPoly -> drawable << " as drawable field.\n" << logofs_flush; #endif decodeBuffer.decodeXidValue(fillPoly -> gcontext, clientCache -> gcCache); #ifdef TEST *logofs << name() << ": Decoded value " << fillPoly -> gcontext << " as gcontext field.\n" << logofs_flush; #endif if (control -> isProtoStep8() == 1 && fillPoly -> size_ >= dataOffset) { unsigned int value; decodeBuffer.decodeCachedValue(value, 16, *clientCache -> fillPolyXAbsCache[0], 8); fillPoly -> x_origin = value; #ifdef TEST *logofs << name() << ": Decoded value " << fillPoly -> x_origin << " as x_origin field.\n" << logofs_flush; #endif decodeBuffer.decodeCachedValue(value, 16, *clientCache -> fillPolyYAbsCache[0], 8); fillPoly -> y_origin = value; #ifdef TEST *logofs << name() << ": Decoded value " << fillPoly -> y_origin << " as y_origin field.\n" << logofs_flush; #endif } }
int SetUnpackColormapStore::decodeIdentity(DecodeBuffer &decodeBuffer, unsigned char *&buffer, unsigned int &size, int bigEndian, WriteBuffer *writeBuffer, ChannelCache *channelCache) const { ClientCache *clientCache = (ClientCache *) channelCache; #ifdef DEBUG *logofs << name() << ": Decoding full message identity.\n" << logofs_flush; #endif unsigned int value; unsigned char cValue; // SrcLength. decodeBuffer.decodeValue(value, 32, 9); size = RoundUp4(value) + 16; buffer = writeBuffer -> addMessage(size); PutULONG(value, buffer + 8, bigEndian); // Client. decodeBuffer.decodeCachedValue(cValue, 8, clientCache -> resourceCache); *(buffer + 1) = cValue; // Method. decodeBuffer.decodeCachedValue(cValue, 8, clientCache -> methodCache); *(buffer + 4) = cValue; // DstLength. decodeBuffer.decodeValue(value, 32, 9); PutULONG(value, buffer + 12, bigEndian); #ifdef DEBUG *logofs << name() << ": Decoded full message identity.\n" << logofs_flush; #endif return 1; }
void SetUnpackColormapStore::updateIdentity(DecodeBuffer &decodeBuffer, const Message *message, ChannelCache *channelCache) const { SetUnpackColormapMessage *setUnpackColormap = (SetUnpackColormapMessage *) message; ClientCache *clientCache = (ClientCache *) channelCache; decodeBuffer.decodeCachedValue(setUnpackColormap -> client, 8, clientCache -> resourceCache); }
void CopyAreaStore::updateIdentity(DecodeBuffer &decodeBuffer, const Message *message, ChannelCache *channelCache) const { CopyAreaMessage *copyArea = (CopyAreaMessage *) message; ClientCache *clientCache = (ClientCache *) channelCache; unsigned int value; decodeBuffer.decodeXidValue(value, clientCache -> drawableCache); copyArea -> src_drawable = value; #ifdef DEBUG *logofs << name() << ": Decoded value " << copyArea -> src_drawable << " as " << "src_drawable" << " field.\n" << logofs_flush; #endif decodeBuffer.decodeXidValue(value, clientCache -> drawableCache); copyArea -> dst_drawable = value; #ifdef DEBUG *logofs << name() << ": Decoded value " << copyArea -> dst_drawable << " as " << "dst_drawable" << " field.\n" << logofs_flush; #endif decodeBuffer.decodeXidValue(value, clientCache -> gcCache); copyArea -> gcontext = value; #ifdef DEBUG *logofs << name() << ": Decoded value " << copyArea -> gcontext << " as gcontext field.\n" << logofs_flush; #endif }
void SetClipRectanglesStore::updateIdentity(DecodeBuffer &decodeBuffer, const Message *message, ChannelCache *channelCache) const { SetClipRectanglesMessage *setClipRectangles = (SetClipRectanglesMessage *) message; ClientCache *clientCache = (ClientCache *) channelCache; unsigned int value; decodeBuffer.decodeXidValue(value, clientCache -> gcCache); setClipRectangles -> gcontext = value; #ifdef DEBUG *logofs << name() << ": Decoded value " << setClipRectangles -> gcontext << " as gcontext field.\n" << logofs_flush; #endif }
void ChangePropertyStore::updateIdentity(DecodeBuffer &decodeBuffer, const Message *message, ChannelCache *channelCache) const { ChangePropertyMessage *changeProperty = (ChangePropertyMessage *) message; ClientCache *clientCache = (ClientCache *) channelCache; unsigned int value; decodeBuffer.decodeXidValue(value, clientCache -> windowCache); changeProperty -> window = value; #ifdef DEBUG *logofs << name() << ": Decoded value " << changeProperty -> window << " as window field.\n" << logofs_flush; #endif }
void GetImageStore::updateIdentity(DecodeBuffer &decodeBuffer, const Message *message, ChannelCache *channelCache) const { GetImageMessage *getImage = (GetImageMessage *) message; ClientCache *clientCache = (ClientCache *) channelCache; unsigned int value; decodeBuffer.decodeXidValue(value, clientCache -> drawableCache); getImage -> drawable = value; #ifdef DEBUG *logofs << name() << ": Decoded value " << getImage -> drawable << " as drawable field.\n" << logofs_flush; #endif }
void CreatePixmapStore::updateIdentity(DecodeBuffer &decodeBuffer, const Message *message, ChannelCache *channelCache) const { CreatePixmapMessage *createPixmap = (CreatePixmapMessage *) message; ClientCache *clientCache = (ClientCache *) channelCache; decodeBuffer.decodeNewXidValue(createPixmap -> id, clientCache -> lastId, clientCache -> lastIdCache, clientCache -> drawableCache, clientCache -> freeDrawableCache); #ifdef TEST *logofs << name() << ": Decoded update. Size is " << createPixmap -> size_ << " identity is " << createPixmap -> i_size_ << ".\n" << logofs_flush; #endif }
int StaticCompressor::decompressBuffer(unsigned char *plainBuffer, unsigned int plainSize, const unsigned char *&compressedBuffer, unsigned int &compressedSize, DecodeBuffer &decodeBuffer) { #ifdef DEBUG *logofs << "StaticCompressor: Called for buffer at " << (void *) plainBuffer << ".\n" << logofs_flush; #endif unsigned int value; decodeBuffer.decodeBoolValue(value); if (value == 0) { memcpy(plainBuffer, decodeBuffer.decodeMemory(plainSize), plainSize); return 0; } unsigned int checkSize = plainSize; decodeBuffer.decodeValue(value, 32, 14); compressedSize = value; decodeBuffer.decodeValue(value, 32, 14); checkSize = value; // // If caller needs the original compressed // data it must copy this to its own buffer // before using any further decode function. // compressedBuffer = decodeBuffer.decodeMemory(compressedSize); int result = ZDecompress(&decompressionStream_, plainBuffer, &checkSize, compressedBuffer, compressedSize); if (result != Z_OK) { #ifdef PANIC *logofs << "StaticCompressor: PANIC! Failure decompressing buffer. " << "Error is '" << zError(result) << "'.\n" << logofs_flush; #endif cerr << "Error" << ": Failure decompressing buffer. " << "Error is '" << zError(result) << "'.\n"; return -1; } else if (plainSize != checkSize) { #ifdef PANIC *logofs << "StaticCompressor: PANIC! Expected decompressed size was " << plainSize << " while it is " << checkSize << ".\n" << logofs_flush; #endif cerr << "Error" << ": Expected decompressed size was " << plainSize << " while it is " << checkSize << ".\n"; return -1; } return 1; }
void SendEventStore::updateIdentity(DecodeBuffer &decodeBuffer, const Message *message, ChannelCache *channelCache) const { SendEventMessage *sendEvent = (SendEventMessage *) message; ClientCache *clientCache = (ClientCache *) channelCache; unsigned int value; decodeBuffer.decodeBoolValue(value); sendEvent -> propagate = value; #ifdef DEBUG *logofs << name() << ": Decoded value " << (unsigned int) sendEvent -> propagate << " as propagate field.\n" << logofs_flush; #endif decodeBuffer.decodeBoolValue(value); if (value) { decodeBuffer.decodeBoolValue(value); } else { decodeBuffer.decodeXidValue(value, clientCache -> windowCache); } sendEvent -> window = value; #ifdef DEBUG *logofs << name() << ": Decoded value " << sendEvent -> window << " as window field.\n" << logofs_flush; #endif decodeBuffer.decodeCachedValue(sendEvent -> mask, 32, clientCache -> sendEventMaskCache); #ifdef DEBUG *logofs << name() << ": Decoded value " << sendEvent -> mask << " as mask field.\n" << logofs_flush; #endif decodeBuffer.decodeCachedValue(sendEvent -> code, 8, clientCache -> sendEventCodeCache); #ifdef DEBUG *logofs << name() << ": Decoded value " << sendEvent -> code << " as code field.\n" << logofs_flush; #endif decodeBuffer.decodeCachedValue(sendEvent -> byte_data, 8, clientCache -> sendEventByteDataCache); #ifdef DEBUG *logofs << name() << ": Decoded value " << sendEvent -> byte_data << " as byte_data field.\n" << logofs_flush; #endif decodeBuffer.decodeValue(value, 16, 4); clientCache -> sendEventLastSequence += value; clientCache -> sendEventLastSequence &= 0xffff; sendEvent -> sequence = clientCache -> sendEventLastSequence; #ifdef DEBUG *logofs << name() << ": Decoded value " << sendEvent -> sequence << " as sequence field.\n" << logofs_flush; #endif decodeBuffer.decodeCachedValue(sendEvent -> int_data, 32, clientCache -> sendEventIntDataCache); #ifdef DEBUG *logofs << name() << ": Decoded value " << sendEvent -> int_data << " as int_data field.\n" << logofs_flush; #endif }