28. Fluent::BasicBuffer#emit
def
emit(key,
data,
chain)
key
=
key.to_s
top
=
(@map[key]
||=
new_chunk(key))
if
top.size
+
data.bytesize
<=
@buffer_chunk_limit
chain.next
top
<<
data
return
false
elsif
@queue.size
>=
@buffer_queue_limit
raise
BufferQueueLimitError,
"queue
size
exceeds
limit"
end
nc
=
new_chunk(key)
Sunday, June 2, 13
29. Fluent::BasicBuffer#emit
def
emit(key,
data,
chain)
...
top
=
(@map[key]
||=
new_chunk(key))
if
top.size
+
data.bytesize
<=
@buffer_chunk_limit
...
top
<<
data
return
false
top=@map[key]
Sunday, June 2, 13
30. Fluent::BasicBuffer#emit
def
emit(key,
data,
chain)
...
top
=
(@map[key]
||=
new_chunk(key))
if
top.size
+
data.bytesize
<=
@buffer_chunk_limit
...
top
<<
data
return
false
top=@map[key]
emit(key,data)
Sunday, June 2, 13
31. Fluent::BasicBuffer#emit
def
emit(key,
data,
chain)
...
top
=
(@map[key]
||=
new_chunk(key))
if
top.size
+
data.bytesize
<=
@buffer_chunk_limit
...
top
<<
data
return
false
top=@map[key]
emit(key,data)
←chunk
Sunday, June 2, 13
32. Fluent::BasicBuffer#emit
def
emit(key,
data,
chain)
...
top
=
(@map[key]
||=
new_chunk(key))
if
top.size
+
data.bytesize
<=
@buffer_chunk_limit
...
top
<<
data
return
false
top=@map[key]
emit(key,data)
data
←chunk
Sunday, June 2, 13
33. Fluent::BasicBuffer#emit
def
emit(key,
data,
chain)
...
top
=
(@map[key]
||=
new_chunk(key))
if
top.size
+
data.bytesize
<=
@buffer_chunk_limit
...
top
<<
data
return
false
top=@map[key]
emit(key,data)
data
emit(key,data)
←chunk
Sunday, June 2, 13
34. Fluent::BasicBuffer#emit
def
emit(key,
data,
chain)
...
top
=
(@map[key]
||=
new_chunk(key))
if
top.size
+
data.bytesize
<=
@buffer_chunk_limit
...
top
<<
data
return
false
top=@map[key]
emit(key,data)
data
data
emit(key,data)
←chunk
Sunday, June 2, 13
35. Fluent::BasicBuffer#emit
def
emit(key,
data,
chain)
...
top
=
(@map[key]
||=
new_chunk(key))
if
top.size
+
data.bytesize
<=
@buffer_chunk_limit
...
top
<<
data
return
false
top=@map[key]
emit(key,data)
data
data
emit(key,data)
emit(key,data)
←chunk
Sunday, June 2, 13
36. Fluent::BasicBuffer#emit
end
nc
=
new_chunk(key)
ok
=
false
begin
nc
<<
data
chain.next
flush_trigger
=
false
top=@map[key]
emit(key,data)
data
data
emit(key,data)
emit(key,data) nc
Sunday, June 2, 13
37. Fluent::BasicBuffer#emit
end
nc
=
new_chunk(key)
ok
=
false
begin
nc
<<
data
chain.next
flush_trigger
=
false
top=@map[key]
emit(key,data)
data
data
emit(key,data)
emit(key,data) nc
data
Sunday, June 2, 13
38. Fluent::BasicBuffer#emit
flush_trigger
=
false
@queue.synchronize
{
enqueue(top)
flush_trigger
=
@queue.empty?
@queue
<<
top
@map[key]
=
nc
}
top=@map[key]
emit(key,data)
data
data
emit(key,data)
emit(key,data) nc
data
Sunday, June 2, 13
39. Fluent::BasicBuffer#emit
flush_trigger
=
false
@queue.synchronize
{
enqueue(top)
flush_trigger
=
@queue.empty?
@queue
<<
top
@map[key]
=
nc
}
top=@map[key]
emit(key,data)
data
data
emit(key,data)
emit(key,data) nc
data
@queue
Sunday, June 2, 13
40. Fluent::BasicBuffer#emit
flush_trigger
=
false
@queue.synchronize
{
enqueue(top)
flush_trigger
=
@queue.empty?
@queue
<<
top
@map[key]
=
nc
}
top=@map[key]
emit(key,data)
data
data
emit(key,data)
emit(key,data) nc
data
@queue
Sunday, June 2, 13
41. Fluent::BasicBuffer#emit
flush_trigger
=
false
@queue.synchronize
{
enqueue(top)
flush_trigger
=
@queue.empty?
@queue
<<
top
@map[key]
=
nc
}
top=@map[key]
emit(key,data)
data
data
emit(key,data)
emit(key,data)
data
@queue
Sunday, June 2, 13
42. Fluent::BasicBuffer#emit
flush_trigger
=
false
@queue.synchronize
{
enqueue(top)
flush_trigger
=
@queue.empty?
@queue
<<
top
@map[key]
=
nc
}
top=@map[key]
emit(key,data)
data
data
emit(key,data)
emit(key,data)
data
@queue
Sunday, June 2, 13
44. Fluent::BasicBuffer#push
def
push(key)
top
=
@map[key]
if
!top
||
top.empty?
return
false
end
@queue.synchronize
do
enqueue(top)
@queue
<<
top
@map.delete(key)
end
return
true
end
Sunday, June 2, 13