OLD | NEW |
| (Empty) |
1 // UpdateProduce.cpp | |
2 | |
3 #include "StdAfx.h" | |
4 | |
5 #include "UpdateProduce.h" | |
6 | |
7 using namespace NUpdateArchive; | |
8 | |
9 static const char *kUpdateActionSetCollision = "Internal collision in update act
ion set"; | |
10 | |
11 void UpdateProduce( | |
12 const CRecordVector<CUpdatePair> &updatePairs, | |
13 const CActionSet &actionSet, | |
14 CRecordVector<CUpdatePair2> &operationChain, | |
15 IUpdateProduceCallback *callback) | |
16 { | |
17 for (int i = 0; i < updatePairs.Size(); i++) | |
18 { | |
19 const CUpdatePair &pair = updatePairs[i]; | |
20 | |
21 CUpdatePair2 up2; | |
22 up2.IsAnti = false; | |
23 up2.DirIndex = pair.DirIndex; | |
24 up2.ArcIndex = pair.ArcIndex; | |
25 up2.NewData = up2.NewProps = true; | |
26 | |
27 switch(actionSet.StateActions[pair.State]) | |
28 { | |
29 case NPairAction::kIgnore: | |
30 /* | |
31 if (pair.State != NPairState::kOnlyOnDisk) | |
32 IgnoreArchiveItem(m_ArchiveItems[pair.ArcIndex]); | |
33 // cout << "deleting"; | |
34 */ | |
35 if (callback) | |
36 callback->ShowDeleteFile(pair.ArcIndex); | |
37 continue; | |
38 | |
39 case NPairAction::kCopy: | |
40 if (pair.State == NPairState::kOnlyOnDisk) | |
41 throw kUpdateActionSetCollision; | |
42 up2.NewData = up2.NewProps = false; | |
43 break; | |
44 | |
45 case NPairAction::kCompress: | |
46 if (pair.State == NPairState::kOnlyInArchive || | |
47 pair.State == NPairState::kNotMasked) | |
48 throw kUpdateActionSetCollision; | |
49 break; | |
50 | |
51 case NPairAction::kCompressAsAnti: | |
52 up2.IsAnti = true; | |
53 break; | |
54 } | |
55 operationChain.Add(up2); | |
56 } | |
57 operationChain.ReserveDown(); | |
58 } | |
OLD | NEW |