class CTI::Builder::StreamBuilder
- Version
-
$Id: StreamBuilder.rb 902 2013-04-23 05:07:04Z miyabe $
ในใใชใผใ ใซๅฏพใใฆ็ตๆใๆง็ฏใใใชใใธใงใฏใใงใใ
Public Class Methods
Source
# File src/code/CTI/Builder/StreamBuilder.rb 144 def initialize(out, &finish) 145 @tempFile = Tempfile.open(['cti', '.tmp']) 146 @tempFile.binmode 147 @out = out 148 @finish = finish 149 @frgs = [] 150 @first = nil 151 @last = nil 152 @onMemory = 0 153 @length = 0 154 @segment = 0 155 end
็ตๆๆง็ฏใชใใธใงใฏใใไฝๆใใพใใ
- out
-
ๅบๅๅ ในใใชใผใ
- &finish
-
็ตๆใๅฎ้ใซๅบๅใใๅใซๅผใณๅบใใใใใญใใฏใๅผๆฐใจใใฆ็ตๆใฎใใคใๆฐใๆธกใใใพใ
ไพ:
SingleResult.new(StreamBuilder.new($stdout) do |length| print "Content-Length: #{length}\r\n\r\n" end) do |opts| print "Content-Type: #{opts['mime_type']}\r\n" end
Public Instance Methods
Source
# File src/code/CTI/Builder/StreamBuilder.rb 157 def add_block 158 id = @frgs.size 159 frg = Fragment.new(id) 160 @frgs[id] = frg 161 unless @first 162 @first = frg 163 else 164 @last.nxt = frg 165 frg.prev = @last 166 end 167 @last = frg 168 end
Source
# File src/code/CTI/Builder/StreamBuilder.rb 188 def close_block(id) 189 end
Source
# File src/code/CTI/Builder/StreamBuilder.rb 195 def finish 196 begin 197 @finish.call(@length) if @finish 198 frg = @first 199 while frg 200 frg.flush(@tempFile, @out) 201 frg = frg.nxt 202 end 203 ensure 204 @tempFile.close 205 end 206 end
Source
# File src/code/CTI/Builder/StreamBuilder.rb 170 def insert_block_before(anchor_id) 171 id = @frgs.size 172 anchor = @frgs[anchor_id] 173 frg = Fragment.new(id) 174 @frgs[id] = frg 175 frg.prev = anchor.prev 176 frg.nxt = anchor 177 anchor.prev.nxt = frg 178 anchor.prev = frg 179 @first = frg if @first.id == anchor.id 180 end
Source
# File src/code/CTI/Builder/StreamBuilder.rb 191 def serial_write(data) 192 @out.write(data) 193 end
Source
# File src/code/CTI/Builder/StreamBuilder.rb 182 def write(id, data) 183 frg = @frgs[id] 184 @onMemory, @segment, len = frg.write(@tempFile, @onMemory, @segment, data) 185 @length += len 186 end