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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 82c0c58d9b1daeffc9217b052959a5b67bf8547a2c51e58cb1fcfa4632fa1839
4
- data.tar.gz: 341d862e0b92956637f54c8bd482e93e6ac0ad907a07c6532605008a4a5dc66a
3
+ metadata.gz: 8dccd4410ecd8d6d3ad20d3ca30020736cd018ae14c7728f2313f0f9e4b87b7c
4
+ data.tar.gz: 4476c85fb65741600504908278d701d5f88b75b4258573b34e080715ad3bde13
5
5
  SHA512:
6
- metadata.gz: 3dbc4bc708a277f8d2d4b5277aecd1ba9c5ecd5f3075dcf2d7ac68849bd526e0ef821e747b140fd82aa3f1b6f61860a30dc737dc57b75470eea635a49d412f41
7
- data.tar.gz: 33db88a60ea8c9fd03562089312df3e6ddda6bfc41517d29177586a541278871e58075b4b9af057838935f8f089c3727373a682afc79a449a53de5b4377f34d8
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) #写入文件
@@ -9,7 +9,7 @@ else #指定了命令行参数。
9
9
 
10
10
  $clipDownloader=VictoriaFresh.new #创建下载器。
11
11
 
12
- $clipDownloader.diskFlush=true #向磁盘写入缓存
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
- # victoriaFreshDataFile=File.new("victoriafreshdata.v","wb") #数据文件。
31
- # victoriaFreshDataFile.syswrite(victoriaFreshData) #写入文件。
32
- # victoriaFreshDataFile.close #关闭文件。
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.18
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-04-17 00:00:00.000000000 Z
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.0.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: []