MCPcopy Create free account
hub / github.com/OpenTSDB/asynchbase / serializeOld

Method serializeOld

src/BatchGet.java:201–255  ·  view source on GitHub ↗
(final byte server_version)

Source from the content-addressed store, hash-verified

199 }
200
201 private ChannelBuffer serializeOld(final byte server_version) {
202 Collections.sort(batch, REGION_CMP);
203
204 ChannelBuffer buf = newBuffer(server_version,
205 predictSerializedSize(server_version));
206
207 buf.writeInt(1); // Only 1 parameter for multi (which is MultiAction.)
208 buf.writeByte(66); // Type code for 'MultiAction'.
209 buf.writeByte(66); // Type code again.
210
211 int nregion_index = buf.writerIndex();
212 buf.writeInt(0); // total number of regions. Will fill it at the end.
213
214 byte[] prev_region = EMPTY_BYTES;
215 int nregions = 0;
216 int ngets_index = 0;
217 int ngets = 0;
218 int i = 0;
219 for (ActionEntry entry : batch) {
220 GetRequest req = entry.rpc;
221 byte[] region_name = req.getRegion().name();
222 boolean new_region = !Bytes.equals(prev_region, region_name);
223 if (new_region) {
224 // new region starts. Let's first fill the num of rpcs for the previous region.
225 if (ngets_index > 0) {
226 buf.setInt(ngets_index, ngets);
227 ngets = 0;
228 }
229 writeByteArray(buf, region_name); // region name;
230 ngets_index = buf.writerIndex();
231 buf.writeInt(0); // will be filled when we pass this region.
232 prev_region = region_name;
233 nregions++;
234 }
235
236 buf.writeByte(65); // Code for an `Action' object.
237 buf.writeByte(65); // Code again (see HBASE-2877).
238
239 // Inside the action, serialize a `Get' object.
240 buf.writeByte(64); // Type code for a `Row' object.
241 buf.writeByte(32); // Type code for 'Get'.
242
243 req.serializePayloadInto(server_version, buf); // GET
244
245 buf.writeInt(i); // index of the get. we use its index in batch here.
246 writeHBaseNull(buf); // 'Action' ends with null result in our case.
247 ngets++;
248 i++;
249 }
250 if (ngets_index > 0) {
251 buf.setInt(ngets_index, ngets);
252 }
253 buf.setInt(nregion_index, nregions);
254 return buf;
255 }
256
257 @Override
258 Object deserialize(final ChannelBuffer buf, final int cell_size) {

Callers 1

serializeMethod · 0.95

Calls 9

predictSerializedSizeMethod · 0.95
equalsMethod · 0.95
serializePayloadIntoMethod · 0.95
newBufferMethod · 0.80
setIntMethod · 0.80
writeByteArrayMethod · 0.80
writeHBaseNullMethod · 0.80
nameMethod · 0.45
getRegionMethod · 0.45

Tested by

no test coverage detected