VictoriaFreSh 2021.4.19 → 2021.5.6
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 +87 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 37e81c76bedab62d7f24f3a32a522f7e2b34d89ce5b9674bf5d8d9abd0b633e3
|
4
|
+
data.tar.gz: 9cb68fb7da462cded5735b6f5cf545502dd7c6f15d97afe82504634d864ad983
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5a6fb40b33d588ed426b0914a33e01b582749d5e5c75832c55d017be8b07374b13215d7a15c2ae5571c8a1d4d2471c24304ab69144b81bb299fe9121408d5b3a
|
7
|
+
data.tar.gz: 0cb6a7e591ca99ea1572888a14b07af0a13a5414147f181d1ee4cf124416d88885d2c912ae9041a0e1f71223a31abfbacd8e870631980855db471a3334a72238
|
data/lib/victoriafresh.rb
CHANGED
@@ -24,6 +24,7 @@ class VictoriaFresh
|
|
24
24
|
@contentPartArray=[] #内容片段数组
|
25
25
|
@currentDiskFlushSuffix=0 #当前的磁盘文件后缀
|
26
26
|
@bufferLength=0 #缓冲区总长度
|
27
|
+
@externalDataFile={} #外部数据文件对象
|
27
28
|
end
|
28
29
|
|
29
30
|
def checkMemoryUsage(lineNumber)
|
@@ -33,17 +34,54 @@ class VictoriaFresh
|
|
33
34
|
|
34
35
|
end #def checkMemoryUsage
|
35
36
|
|
36
|
-
|
37
37
|
def releaseFiles(victoriaFreshPackagedFileString, contentString) #释放目录树
|
38
|
-
# packagedFile=Com::Stupidbeauty::Victoriafresh::FileMessage.decode(victoriaFreshPackagedFileString) #解码文件消息对象。
|
39
38
|
packagedFile=CBOR.decode(victoriaFreshPackagedFileString) #解码
|
40
39
|
|
41
|
-
|
42
40
|
puts packagedFile #Debug
|
43
41
|
|
44
42
|
releaseFile('.', packagedFile, contentString) #释放一个文件
|
45
43
|
end #def releaseFiles(victoriaFreshPackagedFile, contentString) #释放目录树
|
46
44
|
|
45
|
+
def releaseFilesExternalDataFile(victoriaFreshPackagedFileString, externalDataFileName) #释放目录树
|
46
|
+
packagedFile=CBOR.decode(victoriaFreshPackagedFileString) #解码
|
47
|
+
|
48
|
+
puts packagedFile #Debug
|
49
|
+
|
50
|
+
@externalDataFile=File.open(externalDataFileName, 'rb') #打开文件
|
51
|
+
|
52
|
+
releaseFileExternalDataFile('.', packagedFile) #释放一个文件
|
53
|
+
|
54
|
+
@externalDataFile.close #关闭文件
|
55
|
+
end #def releaseFiles(victoriaFreshPackagedFile, contentString) #释放目录树
|
56
|
+
|
57
|
+
def writeFileExternalDataFile(pathPrefix, packagedFile) #写入文件
|
58
|
+
timeObject=getTimeObject(packagedFile) #构造时间戳对象
|
59
|
+
|
60
|
+
@externalDataFile.seek(packagedFile['file_start_index']) #定位到起始位置
|
61
|
+
|
62
|
+
victoriaFreshData=@externalDataFile.read(packagedFile['file_length']) #读取内容
|
63
|
+
|
64
|
+
# victoriaFreshData=contentString[packagedFile.file_start_index, packagedFile.file_length] #获取内容
|
65
|
+
# victoriaFreshData=contentString[ packagedFile['file_start_index'], packagedFile['file_length'] ] #获取内容
|
66
|
+
|
67
|
+
# pathToMake=pathPrefix + '/' + packagedFile.name #构造文件名
|
68
|
+
pathToMake=pathPrefix + '/' + packagedFile['name'] #构造文件名
|
69
|
+
|
70
|
+
victoriaFreshDataFile=File.new(pathToMake , "wb", packagedFile['permission']) #数据文件。
|
71
|
+
victoriaFreshDataFile.syswrite(victoriaFreshData) #写入文件。
|
72
|
+
victoriaFreshDataFile.close #关闭文件。
|
73
|
+
|
74
|
+
FileUtils.touch pathToMake, :mtime => timeObject #设置修改时间
|
75
|
+
|
76
|
+
permissionNumber=packagedFile['permission'] #获取权限数字
|
77
|
+
|
78
|
+
if (permissionNumber.nil?) #不带权限字段
|
79
|
+
elsif #带权限字段
|
80
|
+
File.chmod(permissionNumber, pathToMake) #设置权限
|
81
|
+
end #if (permissionNumber.nil?) #不带权限字段
|
82
|
+
|
83
|
+
end #def writeFileExternalDataFile(pathPrefix, packagedFile) #写入文件
|
84
|
+
|
47
85
|
def writeFile(pathPrefix, packagedFile, contentString) #写入文件
|
48
86
|
|
49
87
|
timeObject=getTimeObject(packagedFile) #构造时间戳对象
|
@@ -69,6 +107,34 @@ class VictoriaFresh
|
|
69
107
|
|
70
108
|
end #writeFile(pathPrefix, packagedFile, contentString) #写入文件
|
71
109
|
|
110
|
+
#创建符号链接
|
111
|
+
def makeSymlinkExternalDataFile(pathPrefix, packagedFile)
|
112
|
+
puts("start index: #{packagedFile['file_start_index']}, length: #{packagedFile['file_length']}, content string length: #{contentString.bytesize}") #Debug
|
113
|
+
|
114
|
+
@externalDataFile.seek(packagedFile['file_start_index']) #定位到起始位置
|
115
|
+
|
116
|
+
victoriaFreshData=@externalDataFile.read(packagedFile['file_length']) #读取内容
|
117
|
+
# victoriaFreshData=contentString[ packagedFile['file_start_index'], packagedFile['file_length'] ] #获取内容
|
118
|
+
|
119
|
+
pathToMake=pathPrefix + '/' + packagedFile['name'] #构造文件名
|
120
|
+
|
121
|
+
puts("data: #{victoriaFreshData}, path: #{pathToMake}") #Debug
|
122
|
+
|
123
|
+
FileUtils.symlink(victoriaFreshData, pathToMake, force: true) #创建符号链接
|
124
|
+
|
125
|
+
permissionNumber=packagedFile['permission'] #获取权限数字
|
126
|
+
|
127
|
+
if (permissionNumber.nil?) #不带权限字段
|
128
|
+
elsif #带权限字段
|
129
|
+
# File.chmod(permissionNumber, pathToMake) #设置权限
|
130
|
+
begin #尝试修改链接本身的权限
|
131
|
+
File.lchmod(permissionNumber, pathToMake) #设置权限
|
132
|
+
rescue NotImplementedError #未实现
|
133
|
+
puts 'File.lchmod not implemented' #Debug
|
134
|
+
end #begin #尝试修改链接本身的权限
|
135
|
+
end #if (permissionNumber.nil?) #不带权限字段
|
136
|
+
end #def makeSymlinkExternalDataFile(pathPrefix, packagedFile)
|
137
|
+
|
72
138
|
#创建符号链接
|
73
139
|
def makeSymlink(pathPrefix, packagedFile, contentString)
|
74
140
|
puts("start index: #{packagedFile['file_start_index']}, length: #{packagedFile['file_length']}, content string length: #{contentString.bytesize}") #Debug
|
@@ -135,6 +201,24 @@ class VictoriaFresh
|
|
135
201
|
end #if (permissionNumber.nil?) #不带权限字段
|
136
202
|
end #makeDirectory(pathPrefix, packagedFile) #创建目录
|
137
203
|
|
204
|
+
def releaseFileExternalDataFile(pathPrefix, packagedFile) #释放一个文件
|
205
|
+
if packagedFile['is_file'] #是文件,则直接写入文件
|
206
|
+
writeFileExternalDataFile(pathPrefix, packagedFile) #写入文件
|
207
|
+
elsif packagedFile['is_symlink'] #是符号链接,则创建符号链接
|
208
|
+
makeSymlinkExternalDataFile(pathPrefix, packagedFile) #创建符号链接
|
209
|
+
else #是目录,则创建目录,并递归处理
|
210
|
+
makeDirectory(pathPrefix, packagedFile) #创建目录
|
211
|
+
|
212
|
+
direcotryPathPrefix=pathPrefix + '/' + packagedFile['name'] #构造针对该目录的路径前缀
|
213
|
+
|
214
|
+
subFiles=packagedFile['sub_files'] #获取子文件列表。
|
215
|
+
|
216
|
+
subFiles.each do |currentSubFile| #一个个子文件地释放
|
217
|
+
releaseFileExternalDataFile(direcotryPathPrefix, currentSubFile) #释放子文件
|
218
|
+
end #subFiles.each do |currentSubFile| #一个个子文件地释放
|
219
|
+
end #if packagedFile.is_file #是文件,则直接写入文件
|
220
|
+
end #def releaseFileExternalDataFile(pathPrefix, packagedFile) #释放一个文件
|
221
|
+
|
138
222
|
def releaseFile( pathPrefix, packagedFile, contentString) #释放一个文件
|
139
223
|
if packagedFile['is_file'] #是文件,则直接写入文件
|
140
224
|
writeFile(pathPrefix, packagedFile, contentString) #写入文件
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: VictoriaFreSh
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2021.
|
4
|
+
version: 2021.5.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hxcan Cai
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-05-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cbor
|