Class: Fairy::InputLocalFile::SplittedFile

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/fairy/client/input-local-file.rb

Overview

def split_opens(split_size, &block)

begin

seek = 0 size = File.stat(@filename).size while seek < size io = SplittedFile.open(@filename, seek, seek + split_size) seek = io.seek_end + 1 yield io end

rescue

Log::warn_exception(self) raise

  end
end

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(fd, seek_start, seek_end) ⇒ SplittedFile

Returns a new instance of SplittedFile.



137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
# File 'lib/fairy/client/input-local-file.rb', line 137

def initialize(fd, seek_start, seek_end)
	@io = File.open(fd)
	@seek_start = seek_start

	@io.seek(seek_end)
	c = @io.read(1)
	case c
	when nil, "\n"
	  @seek_end = seek_end
	else
	  @io.gets
	  @seek_end = @io.pos - 1
	end
	@io.seek(seek_start)
end

Instance Attribute Details

#seek_endObject (readonly)

Returns the value of attribute seek_end.



154
155
156
# File 'lib/fairy/client/input-local-file.rb', line 154

def seek_end
  @seek_end
end

#seek_startObject (readonly)

Returns the value of attribute seek_start.



153
154
155
# File 'lib/fairy/client/input-local-file.rb', line 153

def seek_start
  @seek_start
end

Class Method Details

.open(fd, seek_start, seek_end, &block) ⇒ Object



124
125
126
127
128
129
130
131
132
133
134
135
# File 'lib/fairy/client/input-local-file.rb', line 124

def self.open(fd, seek_start, seek_end, &block)
	sf = new(fd, seek_start, seek_end)
	if block_given?
	  begin
	    yield sf
	  ensure
	    sf.close
	  end
	else
	  sf
	end
end

Instance Method Details

#closeObject



160
161
162
163
# File 'lib/fairy/client/input-local-file.rb', line 160

def close
	@io.close
	@io = nil
end

#each(&block) ⇒ Object



165
166
167
168
169
170
171
172
173
174
# File 'lib/fairy/client/input-local-file.rb', line 165

def each(&block)
	begin
	  while @io.pos < @seek_end && l = @io.gets
	    yield l
	  end
	rescue
	  Log::warn_exception(self)
	  raise
	end
end

#external_encodingObject



156
157
158
# File 'lib/fairy/client/input-local-file.rb', line 156

def external_encoding
	@io.external_encoding
end

#read(length) ⇒ Object



176
177
178
179
180
181
182
183
184
185
# File 'lib/fairy/client/input-local-file.rb', line 176

def read(length)
	if @seek_end - @io.pos + 1 < length
	  length = @seek_end - @io.pos + 1
	end
	if length == 0
	  nil
	else
	  @io.read(length)
	end
end