VictoriaFreSh 2022.1.8 → 2022.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/victoriafresh.rb +16 -8
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d6d26d764e0e7243cad77fbf9b9bfa0ab0e3a622dd55df6d606d897cf79cf2ae
|
4
|
+
data.tar.gz: 5beff4aba458395347cb1c58ef5af643fc92b9061593571336ee73ad603b328e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 02c1a6374fe1a446bcd471956fd31e96491826a7dbfe24249f8ffd0e5e6d5d07308dc68fa33334752af9b44a517fdba6e98c3ffcf05f8fface38bb14fd505528
|
7
|
+
data.tar.gz: 414857f4e1c24ce4a72350769661cdeef8a9f6c67d67e2d9a3c83e71d2b96b415c697ddf36b24b1d2f579ba2b7efe16a1e23a26eff9a489727b3955b8d780b88
|
data/lib/victoriafresh.rb
CHANGED
@@ -28,6 +28,7 @@ class VictoriaFresh
|
|
28
28
|
@externalDataFile={} #外部数据文件对象
|
29
29
|
@nextFileIdToUse=1 # 下一个要用的文件编号。
|
30
30
|
@md5FileIdMap={} # MD5 与文件编号之间的映射
|
31
|
+
@fileIdPathMap={} # 文件编号与它的实际路径之间的映射
|
31
32
|
end
|
32
33
|
|
33
34
|
# 计算文件内容的MD5。
|
@@ -72,15 +73,24 @@ class VictoriaFresh
|
|
72
73
|
def writeFileExternalDataFile(pathPrefix, packagedFile) #写入文件
|
73
74
|
timeObject=getTimeObject(packagedFile) #构造时间戳对象
|
74
75
|
|
75
|
-
|
76
|
-
|
77
|
-
victoriaFreshData=@externalDataFile.read(packagedFile['file_length']) #读取内容
|
76
|
+
is_duplicate=packagedFile['is_duplicate'] # 是否是重复文件。
|
77
|
+
|
78
78
|
|
79
|
-
#
|
80
|
-
|
79
|
+
if is_duplicate # 是重复文件。
|
80
|
+
sameFileId=packagedFile['same_file_id'] # 找到相同文件的编号。
|
81
|
+
|
82
|
+
sameFilePath=@fileIdPathMap[sameFileId] # 获取原始相同文件的路径。
|
83
|
+
|
84
|
+
victoriaFreshData=File.read(sameFilePath) # 读取原始相同文件的内容。
|
85
|
+
else # 不是重复文件。
|
86
|
+
@externalDataFile.seek(packagedFile['file_start_index']) #定位到起始位置
|
87
|
+
|
88
|
+
victoriaFreshData=@externalDataFile.read(packagedFile['file_length']) #读取内容
|
89
|
+
end # if is_duplicate # 是重复文件。
|
81
90
|
|
82
|
-
# pathToMake=pathPrefix + '/' + packagedFile.name #构造文件名
|
83
91
|
pathToMake=pathPrefix + '/' + packagedFile['name'] #构造文件名
|
92
|
+
|
93
|
+
@fileIdPathMap[fileId]=pathToMake # 记录文件编号与路径之间的映射。
|
84
94
|
|
85
95
|
begin
|
86
96
|
victoriaFreshDataFile=File.new(pathToMake , "wb", packagedFile['permission']) #数据文件。
|
@@ -95,8 +105,6 @@ class VictoriaFresh
|
|
95
105
|
elsif #带权限字段
|
96
106
|
File.chmod(permissionNumber, pathToMake) #设置权限
|
97
107
|
end #if (permissionNumber.nil?) #不带权限字段
|
98
|
-
|
99
|
-
|
100
108
|
rescue Errno::ENOENT # File not exist
|
101
109
|
puts "Rescued by Errno::ENOENT statement. #{pathToMake}" #报告错误
|
102
110
|
rescue Errno::EACCES # File permission error
|