* Some refactoring: put the GC options / results in separate structs.
* The garbage collector now also prints the number of blocks freed.
This commit is contained in:
		
							parent
							
								
									934c58aa38
								
							
						
					
					
						commit
						a72709afd8
					
				
					 15 changed files with 252 additions and 166 deletions
				
			
		| 
						 | 
				
			
			@ -395,23 +395,24 @@ static void performOp(unsigned int clientVersion,
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    case wopCollectGarbage: {
 | 
			
		||||
        GCAction action = (GCAction) readInt(from);
 | 
			
		||||
        PathSet pathsToDelete = readStorePaths(from);
 | 
			
		||||
        bool ignoreLiveness = readInt(from);
 | 
			
		||||
        GCOptions options;
 | 
			
		||||
        options.action = (GCOptions::GCAction) readInt(from);
 | 
			
		||||
        options.pathsToDelete = readStorePaths(from);
 | 
			
		||||
        options.ignoreLiveness = readInt(from);
 | 
			
		||||
        options.maxFreed = readLongLong(from);
 | 
			
		||||
        options.maxLinks = readInt(from);
 | 
			
		||||
 | 
			
		||||
        PathSet result;
 | 
			
		||||
        unsigned long long bytesFreed;
 | 
			
		||||
        GCResults results;
 | 
			
		||||
        
 | 
			
		||||
        startWork();
 | 
			
		||||
        if (ignoreLiveness)
 | 
			
		||||
        if (options.ignoreLiveness)
 | 
			
		||||
            throw Error("you are not allowed to ignore liveness");
 | 
			
		||||
        store->collectGarbage(action, pathsToDelete, ignoreLiveness,
 | 
			
		||||
            result, bytesFreed);
 | 
			
		||||
        store->collectGarbage(options, results);
 | 
			
		||||
        stopWork();
 | 
			
		||||
        
 | 
			
		||||
        writeStringSet(result, to);
 | 
			
		||||
        writeInt(bytesFreed & 0xffffffff, to);
 | 
			
		||||
        writeInt(bytesFreed >> 32, to);
 | 
			
		||||
        writeStringSet(results.paths, to);
 | 
			
		||||
        writeLongLong(results.bytesFreed, to);
 | 
			
		||||
        writeLongLong(results.blocksFreed, to);
 | 
			
		||||
        
 | 
			
		||||
        break;
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue