VictoriaFreSh 2021.4.18 → 2021.5.28
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 +89 -4
- data/victoriafresh.example.rb +4 -4
- metadata +20 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8dccd4410ecd8d6d3ad20d3ca30020736cd018ae14c7728f2313f0f9e4b87b7c
|
4
|
+
data.tar.gz: 4476c85fb65741600504908278d701d5f88b75b4258573b34e080715ad3bde13
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d7189f646a689dd8c2973a65566255f4bb2cc98922b0d25a1bb87d3f758db40a81c4e6eb8b040508bb4e372c97b400727d79aa3de3ff5553b18529bdced02853
|
7
|
+
data.tar.gz: 5bc32692595af2ed94f54c53368ebbd39bcdbb9582c95606a706353ee624c0fc6ee499a1ad49a54c544d17ac33ec10ff8f5af135097f487ade184cc17ee790c4
|
data/lib/victoriafresh.rb
CHANGED
@@ -12,6 +12,7 @@ class VictoriaFresh
|
|
12
12
|
attr_accessor :diskFileName #向磁盘写入数据时的文件名或前缀
|
13
13
|
attr_accessor :diskMultiFile #向磁盘写入时,是否要写多个文件
|
14
14
|
attr_accessor :diskFlush #要提前磁盘写入文件,以节省内存吗?
|
15
|
+
attr_accessor :currentDiskFlushSuffix #当前的文件后缀。也等价于已经写入的文件片段个数
|
15
16
|
|
16
17
|
def initialize
|
17
18
|
@diskFlush=false #要向磁盘写入文件
|
@@ -23,6 +24,7 @@ class VictoriaFresh
|
|
23
24
|
@contentPartArray=[] #内容片段数组
|
24
25
|
@currentDiskFlushSuffix=0 #当前的磁盘文件后缀
|
25
26
|
@bufferLength=0 #缓冲区总长度
|
27
|
+
@externalDataFile={} #外部数据文件对象
|
26
28
|
end
|
27
29
|
|
28
30
|
def checkMemoryUsage(lineNumber)
|
@@ -32,17 +34,54 @@ class VictoriaFresh
|
|
32
34
|
|
33
35
|
end #def checkMemoryUsage
|
34
36
|
|
35
|
-
|
36
37
|
def releaseFiles(victoriaFreshPackagedFileString, contentString) #释放目录树
|
37
|
-
# packagedFile=Com::Stupidbeauty::Victoriafresh::FileMessage.decode(victoriaFreshPackagedFileString) #解码文件消息对象。
|
38
38
|
packagedFile=CBOR.decode(victoriaFreshPackagedFileString) #解码
|
39
39
|
|
40
|
-
|
41
|
-
puts packagedFile #Debug
|
40
|
+
# puts packagedFile #Debug
|
42
41
|
|
43
42
|
releaseFile('.', packagedFile, contentString) #释放一个文件
|
44
43
|
end #def releaseFiles(victoriaFreshPackagedFile, contentString) #释放目录树
|
45
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
|
+
|
46
85
|
def writeFile(pathPrefix, packagedFile, contentString) #写入文件
|
47
86
|
|
48
87
|
timeObject=getTimeObject(packagedFile) #构造时间戳对象
|
@@ -68,6 +107,34 @@ class VictoriaFresh
|
|
68
107
|
|
69
108
|
end #writeFile(pathPrefix, packagedFile, contentString) #写入文件
|
70
109
|
|
110
|
+
#创建符号链接
|
111
|
+
def makeSymlinkExternalDataFile(pathPrefix, packagedFile)
|
112
|
+
@externalDataFile.seek(packagedFile['file_start_index']) #定位到起始位置
|
113
|
+
|
114
|
+
victoriaFreshData=@externalDataFile.read(packagedFile['file_length']) #读取内容
|
115
|
+
# victoriaFreshData=contentString[ packagedFile['file_start_index'], packagedFile['file_length'] ] #获取内容
|
116
|
+
|
117
|
+
pathToMake=pathPrefix + '/' + packagedFile['name'] #构造文件名
|
118
|
+
|
119
|
+
puts("data: #{victoriaFreshData}, path: #{pathToMake}") #Debug
|
120
|
+
|
121
|
+
FileUtils.symlink(victoriaFreshData, pathToMake, force: true) #创建符号链接
|
122
|
+
|
123
|
+
permissionNumber=packagedFile['permission'] #获取权限数字
|
124
|
+
|
125
|
+
if (permissionNumber.nil?) #不带权限字段
|
126
|
+
elsif #带权限字段
|
127
|
+
# File.chmod(permissionNumber, pathToMake) #设置权限
|
128
|
+
begin #尝试修改链接本身的权限
|
129
|
+
File.lchmod(permissionNumber, pathToMake) #设置权限
|
130
|
+
rescue NotImplementedError #未实现
|
131
|
+
puts 'File.lchmod not implemented' #Debug
|
132
|
+
rescue Errno::ENOENT => e
|
133
|
+
puts "Rescued by Errno::ENOENT statement. #{pathToMake}" #报告错误
|
134
|
+
end #begin #尝试修改链接本身的权限
|
135
|
+
end #if (permissionNumber.nil?) #不带权限字段
|
136
|
+
end #def makeSymlinkExternalDataFile(pathPrefix, packagedFile)
|
137
|
+
|
71
138
|
#创建符号链接
|
72
139
|
def makeSymlink(pathPrefix, packagedFile, contentString)
|
73
140
|
puts("start index: #{packagedFile['file_start_index']}, length: #{packagedFile['file_length']}, content string length: #{contentString.bytesize}") #Debug
|
@@ -134,6 +201,24 @@ class VictoriaFresh
|
|
134
201
|
end #if (permissionNumber.nil?) #不带权限字段
|
135
202
|
end #makeDirectory(pathPrefix, packagedFile) #创建目录
|
136
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
|
+
|
137
222
|
def releaseFile( pathPrefix, packagedFile, contentString) #释放一个文件
|
138
223
|
if packagedFile['is_file'] #是文件,则直接写入文件
|
139
224
|
writeFile(pathPrefix, packagedFile, contentString) #写入文件
|
data/victoriafresh.example.rb
CHANGED
@@ -9,7 +9,7 @@ else #指定了命令行参数。
|
|
9
9
|
|
10
10
|
$clipDownloader=VictoriaFresh.new #创建下载器。
|
11
11
|
|
12
|
-
$clipDownloader.diskFlush=
|
12
|
+
$clipDownloader.diskFlush=false #不向磁盘写入缓存
|
13
13
|
$clipDownloader.diskMultiFile=true #写多个磁盘文件
|
14
14
|
$clipDownloader.diskFileName='victoriafreshdata.v.' #磁盘文件名前缀
|
15
15
|
$clipDownloader.diskFlushSize=32*1024*1024 #磁盘文件大小
|
@@ -27,7 +27,7 @@ else #指定了命令行参数。
|
|
27
27
|
|
28
28
|
victoriaFreshFile.close #关闭文件。
|
29
29
|
|
30
|
-
|
31
|
-
|
32
|
-
|
30
|
+
victoriaFreshDataFile=File.new("victoriafreshdata.v","wb") #数据文件。
|
31
|
+
victoriaFreshDataFile.syswrite(victoriaFreshData) #写入文件。
|
32
|
+
victoriaFreshDataFile.close #关闭文件。
|
33
33
|
end
|
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.28
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hxcan Cai
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-05-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cbor
|
@@ -30,6 +30,20 @@ dependencies:
|
|
30
30
|
- - ">="
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: 0.5.9.6
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: get_process_mem
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: 0.2.7
|
40
|
+
type: :runtime
|
41
|
+
prerelease: false
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: 0.2.7
|
33
47
|
description: Virtual file system.
|
34
48
|
email: caihuosheng@gmail.com
|
35
49
|
executables: []
|
@@ -43,7 +57,7 @@ homepage: http://rubygems.org/gems/VictoriaFreSh
|
|
43
57
|
licenses:
|
44
58
|
- MIT
|
45
59
|
metadata: {}
|
46
|
-
post_install_message:
|
60
|
+
post_install_message:
|
47
61
|
rdoc_options: []
|
48
62
|
require_paths:
|
49
63
|
- lib
|
@@ -58,8 +72,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
58
72
|
- !ruby/object:Gem::Version
|
59
73
|
version: '0'
|
60
74
|
requirements: []
|
61
|
-
rubygems_version: 3.
|
62
|
-
signing_key:
|
75
|
+
rubygems_version: 3.2.15
|
76
|
+
signing_key:
|
63
77
|
specification_version: 4
|
64
78
|
summary: VictoriaFreSh
|
65
79
|
test_files: []
|