aboutsummaryrefslogtreecommitdiff
path: root/nxcomp/Keeper.h
diff options
context:
space:
mode:
Diffstat (limited to 'nxcomp/Keeper.h')
-rwxr-xr-xnxcomp/Keeper.h191
1 files changed, 191 insertions, 0 deletions
diff --git a/nxcomp/Keeper.h b/nxcomp/Keeper.h
new file mode 100755
index 000000000..3318811d6
--- /dev/null
+++ b/nxcomp/Keeper.h
@@ -0,0 +1,191 @@
+/**************************************************************************/
+/* */
+/* Copyright (c) 2001, 2007 NoMachine, http://www.nomachine.com/. */
+/* */
+/* NXCOMP, NX protocol compression and NX extensions to this software */
+/* are copyright of NoMachine. Redistribution and use of the present */
+/* software is allowed according to terms specified in the file LICENSE */
+/* which comes in the source distribution. */
+/* */
+/* Check http://www.nomachine.com/licensing.html for applicability. */
+/* */
+/* NX and NoMachine are trademarks of NoMachine S.r.l. */
+/* */
+/* All rights reserved. */
+/* */
+/**************************************************************************/
+
+#ifndef Keeper_H
+#define Keeper_H
+
+#include "Misc.h"
+#include "Types.h"
+
+//
+// Set the verbosity level.
+//
+
+#define PANIC
+#define WARNING
+#undef TEST
+#undef DEBUG
+
+//
+// Define this to check how many file
+// nodes are allocated and deallocated.
+//
+
+#undef REFERENCES
+
+class Keeper;
+
+class File
+{
+ friend class Keeper;
+
+ public:
+
+ File();
+
+ ~File();
+
+ //
+ // Allow sort by time and size. If time
+ // is the same, keep the bigger element.
+ //
+
+ bool compare(File *b) const;
+
+ private:
+
+ char *name_;
+
+ int size_;
+ time_t time_;
+
+ #ifdef REFERENCES
+
+ static int references_;
+
+ #endif
+};
+
+class Keeper
+{
+ public:
+
+ Keeper(int caches, int images, const char *root,
+ int sleep, int parent);
+
+ ~Keeper();
+
+ //
+ // Call this just once.
+ //
+
+ int cleanupCaches();
+
+ //
+ // Call this at any given interval.
+ //
+
+ int cleanupImages();
+
+ //
+ // Call this if it's time to exit.
+ //
+
+ void setSignal(int signal)
+ {
+ signal_ = signal;
+ }
+
+ int getSignal()
+ {
+ return signal_;
+ }
+
+ int getParent()
+ {
+ return parent_;
+ }
+
+ private:
+
+ //
+ // Get a list of files in directory.
+ //
+
+ int collect(const char *path);
+
+ //
+ // Sort the collected files according to
+ // last modification time and delete the
+ // older ones until disk size is below
+ // the threshold.
+ //
+
+ int cleanup(int threshold);
+
+ //
+ // Empty the files repository.
+ //
+
+ void empty();
+
+ //
+ // Size in bytes of total allowed
+ // storage for persistent caches.
+ //
+
+ int caches_;
+
+ //
+ // Size in bytes of total allowed
+ // storage for images cache.
+ //
+
+ int images_;
+
+ //
+ // Path of the NX root directory.
+ //
+
+ char *root_;
+
+ //
+ // The little delay to be introduced
+ // before reading a new entry.
+ //
+
+ int sleep_;
+
+ //
+ // Total size of files in repository.
+ //
+
+ int total_;
+
+ //
+ // The parent process, so we can exit
+ // if it is gone.
+ //
+
+ int parent_;
+
+ //
+ // Set if we need to give up because
+ // of a signal.
+ //
+
+ int signal_;
+
+ //
+ // Repository where to collect files.
+ //
+
+ T_files *files_;
+};
+
+#endif /* Keeper_H */
+