aboutsummaryrefslogtreecommitdiff
path: root/nxcomp/Control.h
diff options
context:
space:
mode:
authorMike Gabriel <mike.gabriel@das-netzwerkteam.de>2017-06-30 20:13:51 +0200
committerMike Gabriel <mike.gabriel@das-netzwerkteam.de>2017-07-26 10:12:43 +0200
commitf76c82403888bb498973ec974dbfd20e4edb02fe (patch)
treebe0cb6c112d9d9fb46387fbd114727510197ddec /nxcomp/Control.h
parent9193d11eeeea933e293acd5e0f03fa4e9887186b (diff)
downloadnx-libs-f76c82403888bb498973ec974dbfd20e4edb02fe.tar.gz
nx-libs-f76c82403888bb498973ec974dbfd20e4edb02fe.tar.bz2
nx-libs-f76c82403888bb498973ec974dbfd20e4edb02fe.zip
nxcomp: Switch to autoreconf.
Diffstat (limited to 'nxcomp/Control.h')
-rw-r--r--nxcomp/Control.h764
1 files changed, 0 insertions, 764 deletions
diff --git a/nxcomp/Control.h b/nxcomp/Control.h
deleted file mode 100644
index 764fca2c1..000000000
--- a/nxcomp/Control.h
+++ /dev/null
@@ -1,764 +0,0 @@
-/**************************************************************************/
-/* */
-/* Copyright (c) 2001, 2011 NoMachine (http://www.nomachine.com) */
-/* Copyright (c) 2008-2014 Oleksandr Shneyder <o.shneyder@phoca-gmbh.de> */
-/* Copyright (c) 2014-2016 Ulrich Sibiller <uli42@gmx.de> */
-/* Copyright (c) 2014-2016 Mihai Moldovan <ionic@ionic.de> */
-/* Copyright (c) 2011-2016 Mike Gabriel <mike.gabriel@das-netzwerkteam.de>*/
-/* Copyright (c) 2015-2016 Qindel Group (http://www.qindel.com) */
-/* */
-/* NXCOMP, NX protocol compression and NX extensions to this software */
-/* are copyright of the aforementioned persons and companies. */
-/* */
-/* Redistribution and use of the present software is allowed according */
-/* to terms specified in the file LICENSE.nxcomp which comes in the */
-/* source distribution. */
-/* */
-/* All rights reserved. */
-/* */
-/* NOTE: This software has received contributions from various other */
-/* contributors, only the core maintainers and supporters are listed as */
-/* copyright holders. Please contact us, if you feel you should be listed */
-/* as copyright holder, as well. */
-/* */
-/**************************************************************************/
-
-#ifndef Control_H
-#define Control_H
-
-#include "NXpack.h"
-
-#include "Misc.h"
-#include "Types.h"
-#include "Timestamp.h"
-#include "Statistics.h"
-
-#define PANIC
-#define WARNING
-#undef TEST
-#undef DEBUG
-
-//
-// This is the mode proxy is running.
-//
-
-typedef enum
-{
- proxy_undefined = -1,
- proxy_client,
- proxy_server,
- proxy_last_tag
-}
-T_proxy_mode;
-
-//
-// Handle advances in the connection
-// procedure.
-//
-
-typedef enum
-{
- stage_undefined,
- stage_initializing,
- stage_connecting,
- stage_connected,
- stage_waiting_forwarder_version,
- stage_waiting_forwarder_options,
- stage_sending_forwarder_options,
- stage_waiting_proxy_version,
- stage_waiting_proxy_options,
- stage_sending_proxy_options,
- stage_waiting_proxy_caches,
- stage_sending_proxy_caches,
- stage_operational,
- stage_terminating,
- stage_terminated
-}
-T_proxy_stage;
-
-//
-// Hint about whether or not the proxy is
-// connected to a NX agen.
-//
-
-typedef enum
-{
- session_undefined = -1,
- session_agent,
- session_shadow,
- session_proxy,
- session_last_tag
-}
-T_session_mode;
-
-//
-// Set how data will be written to the peer
-// socket.
-//
-
-typedef enum
-{
- policy_undefined = -1,
- policy_immediate,
- policy_deferred
-}
-T_flush_policy;
-
-//
-// Link mode, after negotiation, will be set to
-// any of the values defined in the NXproto.h.
-//
-
-#define link_undefined -1;
-
-//
-// This class collects functioning parameters,
-// to be configurable at run-time. They are for
-// the most part regarding timeouts, transport
-// and message stores handling.
-//
-
-class Control
-{
- public:
-
- //
- // Does proxy run in client mode or server mode?
- // As soon as we'll have gone through parsing of
- // the command line options the current mode will
- // be propagated to the control class.
- //
-
- T_proxy_mode ProxyMode;
-
- //
- // Goes from initializing to operational.
- //
-
- T_proxy_stage ProxyStage;
-
- //
- // Hint about type of session currently running.
- //
-
- T_session_mode SessionMode;
-
- //
- // Either immediate or defferred flushes.
- //
-
- T_flush_policy FlushPolicy;
-
- //
- // If set, the channels will try to flush the
- // encoded data whenever there is a prioritized
- // message. Depending on the flush policy, this
- // may determine an immediate flush or an event
- // being generated telling to the agent that it
- // should flush the proxy link.
- //
-
- int FlushPriority;
-
- //
- // Id corresponding to link speed negotiated
- // between proxies.
- //
-
- int LinkMode;
-
- //
- // Set if the proxy is connected to a program
- // providing the encryption of the point to
- // point communication.
- //
-
- int LinkEncrypted;
-
- //
- // Maximum number of bytes sent for each token.
- //
-
- int TokenSize;
-
- //
- // Maximum number of tokens that can be spent
- // by the client proxy before having to block
- // waiting for a reply.
- //
-
- int TokenLimit;
-
- //
- // Bitmask used to determine the distribution
- // of channel ids between the client and server
- // proxies.
- //
-
- int ChannelMask;
-
- //
- // Kill session if control parameters cannot
- // be negotiated before this timeout.
- //
-
- int InitTimeout;
-
- //
- // Enter the congestion state if the remote does
- // not reply to the ping within the given amount
- // of time.
- //
-
- int PingTimeout;
-
- //
- // Enqueue motion notify events in server channel.
- //
-
- int MotionTimeout;
-
- //
- // Force an update of the congestion counter if
- // the proxy is idle for this time.
- //
-
- int IdleTimeout;
-
- //
- // Close the connection if can't write before
- // this timeout.
- //
-
- int ChannelTimeout;
-
- //
- // Close connection if can't write before
- // this timeout.
- //
-
- int ProxyTimeout;
-
- //
- // How many milliseconds to wait for the shared
- // memory completion event to become available.
- //
-
- int ShmemTimeout;
-
- //
- // Wait for applications to complete at the time
- // proxy is shut down.
- //
-
- int CleanupTimeout;
-
- //
- // Wait this amount of milliseconds before any
- // iteration of the house-keeping process.
- //
-
- int KeeperTimeout;
-
- //
- // Adjust timeout calculations.
- //
-
- int LatencyTimeout;
-
- //
- // Maximum allowed size of log files.
- //
-
- int FileSizeLimit;
- int FileSizeCheckTimeout;
-
- //
- // What do we do at the end of session? If
- // this flag is set we launch a new client
- // letting the user run a new NX session.
- //
-
- int EnableRestartOnShutdown;
-
- //
- // The client can request the proxy to kill
- // a number of processes before exiting.
- //
-
- int *KillDaemonOnShutdown;
- int KillDaemonOnShutdownNumber;
- int KillDaemonOnShutdownLimit;
-
- //
- // Do we generate a core dump and exit in
- // case of program errors?
- //
-
- int EnableCoreDumpOnAbort;
-
- //
- // Is statistic output enabled?
- //
-
- int EnableStatistics;
-
- //
- // Version number of local and remote proxy.
- //
-
- /*
- * LocalVersionMaintenancePatch, RemoteVersionMaintenancePatch
- * CompatVersionMaintenancePatch
- *
- * currently not used, for future compatibility checks
- */
- int LocalVersionMajor;
- int LocalVersionMinor;
- int LocalVersionPatch;
- int LocalVersionMaintenancePatch;
-
- int RemoteVersionMajor;
- int RemoteVersionMinor;
- int RemoteVersionPatch;
- int RemoteVersionMaintenancePatch;
-
- int CompatVersionMajor;
- int CompatVersionMinor;
- int CompatVersionPatch;
- int CompatVersionMaintenancePatch;
-
- //
- // Compatibility version for the proxy
- //
-
- static const char* const NXPROXY_COMPATIBILITY_VERSION;
-
- //
- // Which unpack methods are implemented in proxy?
- //
-
- unsigned char *LocalUnpackMethods;
- unsigned char *RemoteUnpackMethods;
-
- //
- // Memory restriction imposed by user.
- //
-
- int LocalMemoryLevel;
-
- //
- // Use or not differential compression
- // and caching of X protocol messages.
- //
-
- int LocalDeltaCompression;
- int RemoteDeltaCompression;
-
- //
- // Compression of images and replies.
- //
-
- int LocalDataCompression;
- int LocalDataCompressionLevel;
-
- int RemoteDataCompression;
- int RemoteDataCompressionLevel;
-
- //
- // Minimum packet size to be compressed.
- //
-
- int LocalDataCompressionThreshold;
-
- //
- // Compress or not data flowing through the proxy
- // link. Level should be one of the ZLIB level as
- // Z_DEFAULT_COMPRESSION or Z_BEST_COMPRESSION.
- //
-
- int LocalStreamCompression;
- int LocalStreamCompressionLevel;
-
- int RemoteStreamCompression;
- int RemoteStreamCompressionLevel;
-
- //
- // Size of read operations in read buffer classes.
- //
-
- int ClientInitialReadSize;
- int ClientMaximumBufferSize;
-
- int ServerInitialReadSize;
- int ServerMaximumBufferSize;
-
- int ProxyInitialReadSize;
- int ProxyMaximumBufferSize;
-
- int GenericInitialReadSize;
- int GenericMaximumBufferSize;
-
- //
- // Set initial size and resize policy of
- // transport buffers. If maximum size is
- // exceeded, print a warning.
- //
-
- int TransportXBufferSize;
- int TransportProxyBufferSize;
- int TransportGenericBufferSize;
-
- int TransportXBufferThreshold;
- int TransportProxyBufferThreshold;
- int TransportGenericBufferThreshold;
-
- int TransportMaximumBufferSize;
-
- //
- // Flush the data produced for the channel
- // connection if it exceeds this size.
- //
-
- int TransportFlushBufferSize;
-
- //
- // Socket options.
- //
-
- int OptionProxyKeepAlive;
- int OptionProxyLowDelay;
- int OptionProxyClientNoDelay;
- int OptionProxyServerNoDelay;
- int OptionClientNoDelay;
- int OptionServerNoDelay;
-
- int OptionProxyReceiveBuffer;
- int OptionClientReceiveBuffer;
- int OptionServerReceiveBuffer;
-
- int OptionProxySendBuffer;
- int OptionClientSendBuffer;
- int OptionServerSendBuffer;
-
- int OptionProxyRetryAccept;
- int OptionProxyRetryConnect;
- int OptionServerRetryConnect;
-
- //
- // Calculate current bitrate on proxy link
- // using these observation periods. Value
- // is in milliseconds.
- //
-
- int ShortBitrateTimeFrame;
- int LongBitrateTimeFrame;
-
- //
- // Limit the bandwidth usage of the proxy
- // link.
- //
-
- int LocalBitrateLimit;
-
- int ClientBitrateLimit;
- int ServerBitrateLimit;
-
- //
- // This is the limit imposed by user on
- // total cache size.
- //
-
- int ClientTotalStorageSize;
- int ServerTotalStorageSize;
-
- int LocalTotalStorageSize;
- int RemoteTotalStorageSize;
-
- //
- // Discard messages in store older than
- // this amount of seconds.
- //
-
- int StoreTimeLimit;
-
- //
- // Any new message in store starts with
- // this amount of hits.
- //
-
- int StoreHitsAddBonus;
-
- //
- // Unless it is loaded from persistent
- // cache.
- //
-
- int StoreHitsLoadBonus;
-
- //
- // Stop increasing hits at this threshold.
- //
-
- int StoreHitsLimit;
-
- //
- // Give a special weight to messages put or
- // taken from cache during startup time.
- //
-
- int StoreHitsStartup;
-
- //
- // Weight of touch and untoch operations.
- //
-
- int StoreHitsTouch;
- int StoreHitsUntouch;
-
- //
- // Directives on size of messages to cache.
- //
-
- int MinimumMessageSize;
- int MaximumMessageSize;
-
- //
- // Maximum size of a single X request.
- //
-
- int MaximumRequestSize;
-
- //
- // Currently selected streaming mode.
- //
-
- int SplitMode;
-
- //
- // Send new split data any given amount of
- // milliseconds.
- //
-
- int SplitTimeout;
-
- //
- // Maximum number of distinct messages and
- // maximum size in bytes of the temporary
- // storage.
- //
-
- int SplitTotalSize;
- int SplitTotalStorageSize;
-
- //
- // Don't split messages smaller that this
- // threshold and send no more than the
- // given amount of bytes in a single data
- // shot when streaming the split messages.
- //
-
- int SplitDataThreshold;
- int SplitDataPacketLimit;
-
- //
- // Agent related parameters. These values apply
- // to the agent which, at startup, must query
- // the user's settings.
- //
-
- int PackMethod;
- int PackQuality;
- int HideRender;
- int TaintReplies;
- int TaintThreshold;
-
- //
- // Do we allow shared memory image support in
- // client and or server?
- //
-
- int ShmemClient;
- int ShmemServer;
-
- //
- // Default size of shared memory segments used
- // in MIT-SHM support.
- //
-
- int ShmemClientSize;
- int ShmemServerSize;
-
- //
- // The user's home directory.
- //
-
- char *HomePath;
-
- //
- // The ".nx" directory, usually in
- // the user's home.
- //
-
- char *RootPath;
-
- //
- // Usually the /usr/NX" directory.
- //
-
- char *SystemPath;
-
- //
- // Usually the "/tmp" directory.
- //
-
- char *TempPath;
-
- //
- // The complete path to the client.
- //
-
- char *ClientPath;
-
- //
- // String containing path of cache
- // file selected for load or save.
- //
-
- char *PersistentCachePath;
-
- //
- // Name of selected cache file.
- //
-
- char *PersistentCacheName;
-
- //
- // Minimum size of cache in memory
- // to proceed to its storage on disk.
- //
-
- int PersistentCacheThreshold;
-
- //
- // Is persistent cache enabled?
- //
-
- int PersistentCacheEnableLoad;
- int PersistentCacheEnableSave;
-
- //
- // This is used just for test because
- // it requires that client and server
- // reside on the same machine.
- //
-
- int PersistentCacheCheckOnShutdown;
-
- //
- // Load packed image and render extension
- // message stores. This currently depends
- // on the type of session.
- //
-
- int PersistentCacheLoadPacked;
- int PersistentCacheLoadRender;
-
- //
- // Maximum disk consumption of message
- // caches on disk.
- //
-
- int PersistentCacheDiskLimit;
-
- //
- // String containing the base path
- // of image cache files.
- //
-
- char *ImageCachePath;
-
- //
- // Is image cache enabled?
- //
-
- int ImageCacheEnableLoad;
- int ImageCacheEnableSave;
-
- //
- // Maximum disk consumption of image
- // caches on disk.
- //
-
- int ImageCacheDiskLimit;
-
- //
- // Only constructor, destructor
- // and a few utility functions.
- //
-
- Control();
-
- ~Control();
-
- //
- // Should not leverage control to find channel
- // stores' size limits. As most of values in
- // control, this info must be moved elsewhere.
- //
-
- int getUpperStorageSize() const
- {
- return (ClientTotalStorageSize >
- ServerTotalStorageSize ?
- ClientTotalStorageSize :
- ServerTotalStorageSize);
- }
-
- int getLowerStorageSize() const
- {
- return (ClientTotalStorageSize <
- ServerTotalStorageSize ?
- ClientTotalStorageSize :
- ServerTotalStorageSize);
- }
-
- void setProtoStep(int step);
-
- int getProtoStep();
-
- private:
-
- //
- // Look in Control.cpp.
- //
-
- void setLocalUnpackMethods();
-
- //
- // Manage the encoding according
- // to the protocol version.
- //
-
- int protoStep_;
-
- //
- // Min and max values allowed for protocol step
- // depending on protocol version compatibility
- //
-
- static const int NX_MIN_PROTO_STEP;
- static const int NX_MAX_PROTO_STEP;
-
- //
- // Check the validity of protocol step
- //
-
- bool isValidProtoStep(int step)
- {
- return ((step >= NX_MIN_PROTO_STEP) && (step <= NX_MAX_PROTO_STEP));
- }
-
-};
-
-#endif /* Control_H */