Mercurial > hg > svcore
comparison base/StorageAdviser.cpp @ 384:6f6ab834449d spectrogram-cache-rejig
* Merge from trunk
| author | Chris Cannam |
|---|---|
| date | Wed, 27 Feb 2008 11:59:42 +0000 |
| parents | 02d2ad95ea52 |
| children | 52303ec15cd2 |
comparison
equal
deleted
inserted
replaced
| 337:a6fab10ff9e6 | 384:6f6ab834449d |
|---|---|
| 20 | 20 |
| 21 #include "system/System.h" | 21 #include "system/System.h" |
| 22 | 22 |
| 23 #include <iostream> | 23 #include <iostream> |
| 24 | 24 |
| 25 //#define DEBUG_STORAGE_ADVISER 1 | |
| 26 | |
| 25 long StorageAdviser::m_discPlanned = 0; | 27 long StorageAdviser::m_discPlanned = 0; |
| 26 long StorageAdviser::m_memoryPlanned = 0; | 28 long StorageAdviser::m_memoryPlanned = 0; |
| 27 | 29 |
| 28 StorageAdviser::Recommendation | 30 StorageAdviser::Recommendation |
| 29 StorageAdviser::recommend(Criteria criteria, | 31 StorageAdviser::recommend(Criteria criteria, |
| 30 int minimumSize, | 32 int minimumSize, |
| 31 int maximumSize) | 33 int maximumSize) |
| 32 { | 34 { |
| 35 #ifdef DEBUG_STORAGE_ADVISER | |
| 33 std::cerr << "StorageAdviser::recommend: Criteria " << criteria | 36 std::cerr << "StorageAdviser::recommend: Criteria " << criteria |
| 34 << ", minimumSize " << minimumSize | 37 << ", minimumSize " << minimumSize |
| 35 << ", maximumSize " << maximumSize << std::endl; | 38 << ", maximumSize " << maximumSize << std::endl; |
| 39 #endif | |
| 36 | 40 |
| 37 QString path = TempDirectory::getInstance()->getPath(); | 41 QString path = TempDirectory::getInstance()->getPath(); |
| 38 int discFree = GetDiscSpaceMBAvailable(path.toLocal8Bit()); | 42 int discFree = GetDiscSpaceMBAvailable(path.toLocal8Bit()); |
| 39 int memoryFree, memoryTotal; | 43 int memoryFree, memoryTotal; |
| 40 GetRealMemoryMBAvailable(memoryFree, memoryTotal); | 44 GetRealMemoryMBAvailable(memoryFree, memoryTotal); |
| 49 memoryFree -= m_memoryPlanned / 1024 + 1; | 53 memoryFree -= m_memoryPlanned / 1024 + 1; |
| 50 } else if (memoryFree > 0) { // can also be -1 for unknown | 54 } else if (memoryFree > 0) { // can also be -1 for unknown |
| 51 memoryFree = 0; | 55 memoryFree = 0; |
| 52 } | 56 } |
| 53 | 57 |
| 58 #ifdef DEBUG_STORAGE_ADVISER | |
| 54 std::cerr << "Disc space: " << discFree << ", memory free: " << memoryFree << ", memory total: " << memoryTotal << ", min " << minimumSize << ", max " << maximumSize << std::endl; | 59 std::cerr << "Disc space: " << discFree << ", memory free: " << memoryFree << ", memory total: " << memoryTotal << ", min " << minimumSize << ", max " << maximumSize << std::endl; |
| 60 #endif | |
| 55 | 61 |
| 56 //!!! We have a potentially serious problem here if multiple | 62 //!!! We have a potentially serious problem here if multiple |
| 57 //recommendations are made in advance of any of the resulting | 63 //recommendations are made in advance of any of the resulting |
| 58 //allocations, as the allocations that have been recommended for | 64 //allocations, as the allocations that have been recommended for |
| 59 //won't be taken into account in subsequent recommendations. | 65 //won't be taken into account in subsequent recommendations. |
| 84 else if (minmb > (discFree * 3) / 4) discStatus = Insufficient; | 90 else if (minmb > (discFree * 3) / 4) discStatus = Insufficient; |
| 85 else if (maxmb > (discFree / 4)) discStatus = Marginal; | 91 else if (maxmb > (discFree / 4)) discStatus = Marginal; |
| 86 else if (minmb > (discFree / 10)) discStatus = Marginal; | 92 else if (minmb > (discFree / 10)) discStatus = Marginal; |
| 87 else discStatus = Sufficient; | 93 else discStatus = Sufficient; |
| 88 | 94 |
| 95 #ifdef DEBUG_STORAGE_ADVISER | |
| 89 std::cerr << "Memory status: " << memoryStatus << ", disc status " | 96 std::cerr << "Memory status: " << memoryStatus << ", disc status " |
| 90 << discStatus << std::endl; | 97 << discStatus << std::endl; |
| 98 #endif | |
| 91 | 99 |
| 92 int recommendation = NoRecommendation; | 100 int recommendation = NoRecommendation; |
| 93 | 101 |
| 94 if (memoryStatus == Insufficient || memoryStatus == Unknown) { | 102 if (memoryStatus == Insufficient || memoryStatus == Unknown) { |
| 95 | 103 |
