VictoriaFreSh 2021.4.19 → 2021.5.6
Sign up to get free protection for your applications and to get access to all the features.
- 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
|