1 // This may look like C code, but it is really -*- C++ -*-
2 //
3 // Copyright Dirk Lemstra 2014-2018
4 //
5 // Definition of resource limits.
6 //
7 
8 #if !defined(Magick_ResourceLimits_header)
9 #define Magick_ResourceLimits_header
10 
11 #include "Magick++/Include.h"
12 
13 namespace Magick
14 {
15   class MagickPPExport ResourceLimits
16   {
17   public:
18 
19     // Pixel cache limit in bytes. Requests for memory above this limit
20     // are automagically allocated on disk.
21     static void area(const MagickSizeType limit_);
22     static MagickSizeType area(void);
23 
24     // Pixel cache limit in bytes. Requests for memory above this limit
25     // will fail.
26     static void disk(const MagickSizeType limit_);
27     static MagickSizeType disk(void);
28 
29     // The maximum number of open pixel cache files. When this limit is
30     // exceeded, any subsequent pixels cached to disk are closed and reopened
31     // on demand. This behavior permits a large number of images to be accessed
32     // simultaneously on disk, but with a speed penalty due to repeated
33     // open/close calls.
34     static void file(const MagickSizeType limit_);
35     static MagickSizeType file(void);
36 
37     // The maximum height of an image.
38     static void height(const MagickSizeType limit_);
39     static MagickSizeType height(void);
40 
41     // The maximum number of images in an image list.
42     static void listLength(const MagickSizeType limit_);
43     static MagickSizeType listLength();
44 
45     // Pixel cache limit in bytes.  Once this memory limit is exceeded,
46     // all subsequent pixels cache operations are to/from disk.
47     static void map(const MagickSizeType limit_);
48     static MagickSizeType map(void);
49 
50     // Pixel cache limit in bytes. Once this memory limit is exceeded,
51     // all subsequent pixels cache operations are to/from disk or to/from
52     // memory mapped files.
53     static void memory(const MagickSizeType limit_);
54     static MagickSizeType memory(void);
55 
56     // Limits the number of threads used in multithreaded operations.
57     static void thread(const MagickSizeType limit_);
58     static MagickSizeType thread(void);
59 
60     // Periodically yield the CPU for at least the time specified in
61     // milliseconds.
62     static void throttle(const MagickSizeType limit_);
63     static MagickSizeType throttle(void);
64 
65     // The maximum width of an image.
66     static void width(const MagickSizeType limit_);
67     static MagickSizeType width(void);
68 
69   private:
70     ResourceLimits(void);
71 
72   }; // class ResourceLimits
73 
74 } // Magick namespace
75 
76 #endif // Magick_ResourceLimits_header
77