@@ -10,9 +10,15 @@ import (
1010
1111// Manager handles deduplication operations for a vault
1212type Manager struct {
13- vaultRoot string
14- config config.DeduplicationConfig
15- index * DeduplicationIndex
13+ vaultRoot string
14+ config config.DeduplicationConfig
15+ index * DeduplicationIndex
16+ progressMgr ProgressManager
17+ }
18+
19+ // ProgressManager is an interface for progress reporting
20+ type ProgressManager interface {
21+ PrintVerbose (format string , args ... interface {})
1622}
1723
1824// NewManager creates a new deduplication manager
@@ -23,12 +29,18 @@ func NewManager(vaultRoot string, dedupConfig config.DeduplicationConfig) (*Mana
2329 }
2430
2531 return & Manager {
26- vaultRoot : vaultRoot ,
27- config : dedupConfig ,
28- index : index ,
32+ vaultRoot : vaultRoot ,
33+ config : dedupConfig ,
34+ index : index ,
35+ progressMgr : nil , // Will be set later if needed
2936 }, nil
3037}
3138
39+ // SetProgressManager sets the progress manager for verbose output
40+ func (m * Manager ) SetProgressManager (pm ProgressManager ) {
41+ m .progressMgr = pm
42+ }
43+
3244// ProcessChunk processes a chunk for deduplication
3345// Returns: (chunkRef, deduplicated, error)
3446func (m * Manager ) ProcessChunk (chunkRef config.ChunkRef , chunkData []byte , storageHash string ) (config.ChunkRef , bool , error ) {
@@ -55,8 +67,10 @@ func (m *Manager) ProcessChunk(chunkRef config.ChunkRef, chunkData []byte, stora
5567 if deduplicated {
5668 // Chunk already exists, no need to store it again
5769 chunkRef .Deduplicated = true
58- fmt .Printf (" └─ Deduplicated chunk %s (ref count: %d)\n " ,
59- chunkRef .Hash [:12 ], entry .RefCount )
70+ if m .progressMgr != nil {
71+ m .progressMgr .PrintVerbose (" └─ Deduplicated chunk %s (ref count: %d)\n " ,
72+ chunkRef .Hash [:12 ], entry .RefCount )
73+ }
6074 } else {
6175 // New chunk, store it
6276 if err := m .storeChunk (storageHash , chunkData ); err != nil {
0 commit comments