Class: Droonga::BufferedTCPSocket::Chunk

Inherits:
Object
  • Object
show all
Defined in:
lib/droonga/buffered_tcp_socket.rb

Constant Summary collapse

SUFFIX =
".chunk"
WRITING_SUFFIX =
".writing"

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params) ⇒ Chunk

Returns a new instance of Chunk.



150
151
152
153
154
155
156
# File 'lib/droonga/buffered_tcp_socket.rb', line 150

def initialize(params)
  @data_directory = params[:directory]
  @data = params[:data]
  @time_stamp = params[:time_stamp] || Time.now
  @uniqueness = params[:uniqueness]
  @revision = params[:revision] || 0
end

Instance Attribute Details

#dataObject (readonly)

Returns the value of attribute data.



149
150
151
# File 'lib/droonga/buffered_tcp_socket.rb', line 149

def data
  @data
end

#time_stampObject (readonly)

Returns the value of attribute time_stamp.



149
150
151
# File 'lib/droonga/buffered_tcp_socket.rb', line 149

def time_stamp
  @time_stamp
end

Class Method Details

.load(path) ⇒ Object



135
136
137
138
139
140
141
142
143
144
145
146
# File 'lib/droonga/buffered_tcp_socket.rb', line 135

def load(path)
  data_directory = path.dirname
  time_stamp1, time_stamp2, uniqueness, revision, = path.basename.to_s.split(".", 5)
  data = path.open("rb") {|file| file.read}
  time_stamp = Time.iso8601("#{time_stamp1}.#{time_stamp2}")
  revision = Integer(revision)
  new(:directory  => data_directory,
      :data       => data,
      :time_stamp => time_stamp,
      :uniqueness => uniqueness,
      :revision   => revision)
end

Instance Method Details

#bufferingObject



158
159
160
161
162
# File 'lib/droonga/buffered_tcp_socket.rb', line 158

def buffering
  path.open("wb") do |file|
    file.write(@data)
  end
end

#failedObject



173
174
175
176
# File 'lib/droonga/buffered_tcp_socket.rb', line 173

def failed
  return unless writing?
  FileUtils.mv(writing_path.to_s, path.to_s)
end

#writingObject



164
165
166
167
# File 'lib/droonga/buffered_tcp_socket.rb', line 164

def writing
  raise AlreadyInWritingByOthers.new if writing?
  FileUtils.mv(path.to_s, writing_path.to_s)
end

#writing?Boolean

Returns:

  • (Boolean)


169
170
171
# File 'lib/droonga/buffered_tcp_socket.rb', line 169

def writing?
  not path.exist?
end

#writtenObject



178
179
180
181
# File 'lib/droonga/buffered_tcp_socket.rb', line 178

def written
  FileUtils.rm_f(path.to_s)
  FileUtils.rm_f(writing_path.to_s)
end

#written_partial(size) ⇒ Object



183
184
185
186
187
188
# File 'lib/droonga/buffered_tcp_socket.rb', line 183

def written_partial(size)
  written
  @data = data[size..-1]
  @revision += 1
  buffering
end