class CTI::Builder::Fragment

Public Class Methods

new(id) click to toggle source
   # File CTI/Builder/StreamBuilder.rb
 9 def initialize(id)
10   @id = id
11   @prev = nil
12   @nxt = nil
13   @length = 0
14   @buffer = ''
15 end

Public Instance Methods

flush(tempFile, out) click to toggle source

フラグメントの内容を吐き出して、フラグメントを破棄します。

tempFile

一時ファイル

out

出力先ストリーム( IO )

end

   # File CTI/Builder/StreamBuilder.rb
74 def flush(tempFile, out)
75   unless @segments
76     out.write(@buffer)
77     @buffer = nil
78   else
79     segcount = @segments.size
80     for seg in @segments
81       tempFile.pos = seg * CTIP2::SEGMENT_SIZE
82       buff = tempFile.read(seg == @segments.last ? @segLen : CTIP2::SEGMENT_SIZE)
83       out.write(buff)
84     end
85   end
86 end
id() click to toggle source
   # File CTI/Builder/StreamBuilder.rb
17 def id
18   @id
19 end
nxt() click to toggle source
   # File CTI/Builder/StreamBuilder.rb
33 def nxt
34   @nxt
35 end
nxt=(nxt) click to toggle source
   # File CTI/Builder/StreamBuilder.rb
29 def nxt=(nxt)
30   @nxt = nxt
31 end
prev() click to toggle source
   # File CTI/Builder/StreamBuilder.rb
25 def prev
26   @prev
27 end
prev=(prev) click to toggle source
   # File CTI/Builder/StreamBuilder.rb
21 def prev=(prev)
22   @prev = prev
23 end
write(tempFile, onMemory, segment, bytes) click to toggle source

フラグメントにデータを書き込みます。

tempFile

一時ファイル

onMemory

メモリ上に置かれたデータの合計サイズ

segment

セグメント番号シーケンス

bytes

データ

戻り値

書き込んだバイト数

end

   # File CTI/Builder/StreamBuilder.rb
48 def write(tempFile, onMemory, segment, bytes)
49   len = bytes.bytesize
50   if (!@segments &&
51   @length + len <= CTIP2::FRG_MEM_SIZE &&
52   onMemory + len <= CTIP2::ON_MEMORY)
53     @buffer += bytes
54     onMemory += len
55   else
56     if @buffer
57       segment, wlen = raf_write(tempFile, segment, @buffer)
58       onMemory -= wlen
59       @buffer = nil
60     end
61     segment, len = raf_write(tempFile, segment, bytes)
62   end
63   @length += len
64   return onMemory, segment, len
65 end