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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/victoriafresh.rb +87 -3
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1f8a1b21b33f86f42e6c3712cca0f5a7ec76e2c060493df051609e476b20a2df
4
- data.tar.gz: 326eafeb9d1f68828348edde6c0b7f7fbb9876c5e4affe8e463fdd2e89662245
3
+ metadata.gz: 37e81c76bedab62d7f24f3a32a522f7e2b34d89ce5b9674bf5d8d9abd0b633e3
4
+ data.tar.gz: 9cb68fb7da462cded5735b6f5cf545502dd7c6f15d97afe82504634d864ad983
5
5
  SHA512:
6
- metadata.gz: d8e1eae45302abf8da5fd780fdedecc449f80668022b5310b7e77a2c6ebb4ea0e98f2395e16ceef3a975973f25a87b945d8840d541cf935d86ae1d58c74ce7a4
7
- data.tar.gz: f75da9a9c352ba6511a0c35f3e21cd0f66e2c771b7c91f15f81795ddff1b5d6b69ba38b84ba2e4dfe8fb6952484c5c3c012827b46ebc69b2e8571a4a4c9cc1ec
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.19
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-04-17 00:00:00.000000000 Z
11
+ date: 2021-05-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cbor