82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
# File 'lib/ls4/service/data_server.rb', line 82
def rpc_replicate_pull(pos, limit)
mkeys = []
msgs = []
msize = 0
while true
raw, npos = UpdateLogBus.get(pos)
unless raw
break
end
d = UpdateLogData.load(raw)
if mkeys.include?(d.key)
pos = npos
else
if d.offset && d.size
data = StorageBus.read(d.vtime, d.key, d.offset, d.size)
else
data = StorageBus.get(d.vtime, d.key)
mkeys << d.key
end
if data
msgs << [d.vtime, d.key, d.offset, data]
msize += data.size
else
msgs << [d.vtime, d.key, 0, nil]
end
pos = npos
break if msize > limit
end
end
[pos, msgs]
end
|