1
/**************************************************************************/
3
/* Copyright (c) 2001, 2007 NoMachine, http://www.nomachine.com/. */
5
/* NXCOMP, NX protocol compression and NX extensions to this software */
6
/* are copyright of NoMachine. Redistribution and use of the present */
7
/* software is allowed according to terms specified in the file LICENSE */
8
/* which comes in the source distribution. */
10
/* Check http://www.nomachine.com/licensing.html for applicability. */
12
/* NX and NoMachine are trademarks of NoMachine S.r.l. */
14
/* All rights reserved. */
16
/**************************************************************************/
18
#include "PolyFillArc.h"
20
#include "ClientCache.h"
22
#include "EncodeBuffer.h"
23
#include "DecodeBuffer.h"
26
// Set the verbosity level.
36
// Here are the methods to handle messages' content.
39
int PolyFillArcStore::parseIdentity(Message *message, const unsigned char *buffer,
40
unsigned int size, int bigEndian) const
42
PolyFillArcMessage *polyFillArc = (PolyFillArcMessage *) message;
45
// Here is the fingerprint.
48
polyFillArc -> drawable = GetULONG(buffer + 4, bigEndian);
49
polyFillArc -> gcontext = GetULONG(buffer + 8, bigEndian);
52
*logofs << name() << ": Parsed Identity for message at " << this << ".\n" << logofs_flush;
58
int PolyFillArcStore::unparseIdentity(const Message *message, unsigned char *buffer,
59
unsigned int size, int bigEndian) const
61
PolyFillArcMessage *polyFillArc = (PolyFillArcMessage *) message;
64
// Fill all the message's fields.
67
PutULONG(polyFillArc -> drawable, buffer + 4, bigEndian);
68
PutULONG(polyFillArc -> gcontext, buffer + 8, bigEndian);
71
*logofs << name() << ": Unparsed identity for message at " << this << ".\n" << logofs_flush;
77
void PolyFillArcStore::dumpIdentity(const Message *message) const
81
PolyFillArcMessage *polyFillArc = (PolyFillArcMessage *) message;
83
*logofs << name() << ": Identity drawable " << polyFillArc -> drawable
84
<< ", gcontext " << polyFillArc -> gcontext
85
<< ", size " << polyFillArc -> size_ << ".\n" << logofs_flush;
89
void PolyFillArcStore::identityChecksum(const Message *message, const unsigned char *buffer,
90
unsigned int size, int bigEndian) const
94
void PolyFillArcStore::updateIdentity(EncodeBuffer &encodeBuffer, const Message *message,
95
const Message *cachedMessage,
96
ChannelCache *channelCache) const
98
PolyFillArcMessage *polyFillArc = (PolyFillArcMessage *) message;
99
PolyFillArcMessage *cachedPolyFillArc = (PolyFillArcMessage *) cachedMessage;
101
ClientCache *clientCache = (ClientCache *) channelCache;
104
*logofs << name() << ": Encoding value " << polyFillArc -> drawable
105
<< " as drawable field.\n" << logofs_flush;
108
encodeBuffer.encodeXidValue(polyFillArc -> drawable, clientCache -> drawableCache);
110
cachedPolyFillArc -> drawable = polyFillArc -> drawable;
113
*logofs << name() << ": Encoding value " << polyFillArc -> gcontext
114
<< " as gcontext field.\n" << logofs_flush;
117
encodeBuffer.encodeXidValue(polyFillArc -> gcontext, clientCache -> gcCache);
119
cachedPolyFillArc -> gcontext = polyFillArc -> gcontext;
122
void PolyFillArcStore::updateIdentity(DecodeBuffer &decodeBuffer, const Message *message,
123
ChannelCache *channelCache) const
125
PolyFillArcMessage *polyFillArc = (PolyFillArcMessage *) message;
127
ClientCache *clientCache = (ClientCache *) channelCache;
131
decodeBuffer.decodeXidValue(value, clientCache -> drawableCache);
133
polyFillArc -> drawable = value;
136
*logofs << name() << ": Decoded value " << polyFillArc -> drawable
137
<< " as drawable field.\n" << logofs_flush;
140
decodeBuffer.decodeXidValue(value, clientCache -> gcCache);
142
polyFillArc -> gcontext = value;
145
*logofs << name() << ": Decoded value " << polyFillArc -> gcontext
146
<< " as gcontext field.\n" << logofs_flush;