*/
//
-// CapsList class declaration.
-// FIXME: Extend the comment.
+// CapsList - a list of server-side protocol capabilities. This class makes
+// it easy to prepare a capability list and send it via OutStream transport.
//
#ifndef __RFB_CAPSLIST_H__
// NOTE: Here we use the CapsContainer class for an off-design purpose.
// However, that class is so good that I believe it's better to
- // use its well-tested reliable code instead of writing new class
- // from the scratch.
+ // use its well-tested code instead of writing new class from the
+ // scratch.
- class CapsList : private CapsContainer {
+ class CapsList : private CapsContainer
+ {
public:
+
+ // Constructor.
+ // The maxCaps value is the maximum number of capabilities in the list.
CapsList(int maxCaps = 64);
+
virtual ~CapsList();
+ // Current number of capabilities in the list.
int getSize() const { return numEnabled(); }
+ // Add capability ("standard" vendor).
void addStandard(rdr::U32 code, const char *name);
+ // Add capability (TightVNC vendor).
void addTightExt(rdr::U32 code, const char *name);
+ // Add capability (any other vendor).
void add3rdParty(rdr::U32 code, const char *name, const char *vendor);
+ // Send the list of capabilities (not including the counter).
void write(rdr::OutStream* os) const;
protected:
+
+ // Pre-defined signatures for known vendors.
static const char *const VENDOR_STD;
static const char *const VENDOR_TIGHT;
};