MCPcopy Create free account
hub / github.com/DeNA/PacketProxy / encodeData

Method encodeData

src/main/java/core/packetproxy/common/Protobuf3.java:341–448  ·  view source on GitHub ↗
(Map<String, Object> messages)

Source from the content-addressed store, hash-verified

339 }
340
341 public static byte[] encodeData(Map<String, Object> messages) throws Exception {
342 ByteArrayOutputStream output = new ByteArrayOutputStream();
343 TreeMap<String, String> orderedKeys = new TreeMap<String, String>();
344 messages.keySet().stream().forEach(key -> {
345
346 String[] keyval = key.split(":");
347 String index = String.format("%s-%s", keyval[1], key);
348 orderedKeys.put(index, key);
349 });
350 for (String key : orderedKeys.values()) {
351
352 String[] keyval = key.split(":");
353 long fieldNumber = Long.parseLong(keyval[0], 16);
354 String type = keyval[2];
355
356 switch (type) {
357
358 case "Varint" : {
359
360 new Key(fieldNumber, Key.Type.Variant).writeTo(output);
361 Object d = messages.get(key);
362 long var = 0;
363 if (d instanceof Integer) {
364
365 var = ((Integer) d).longValue();
366 } else if (d instanceof Long) {
367
368 var = ((Long) d).longValue();
369 }
370 writeVar(var, output);
371 break;
372 }
373 case "String" : {
374
375 new Key(fieldNumber, Key.Type.LengthDelimited).writeTo(output);
376 String str = messages.get(key).toString();
377 writeVar(str.getBytes().length, output);
378 output.write(str.getBytes());
379 break;
380 }
381 case "32-bit" : {
382
383 new Key(fieldNumber, Key.Type.Bit32).writeTo(output);
384 int bit32 = (int) messages.get(key);
385 output.write(ByteBuffer.allocate(4).order(ByteOrder.LITTLE_ENDIAN).putInt(bit32).array());
386 break;
387 }
388 case "64-bit" : {
389
390 new Key(fieldNumber, Key.Type.Bit64).writeTo(output);
391 Object d = messages.get(key);
392 long bit64 = 0;
393 if (d instanceof Integer) {
394
395 bit64 = ((Integer) d).longValue();
396 } else if (d instanceof Long) {
397
398 bit64 = ((Long) d).longValue();

Callers 1

encodeMethod · 0.95

Calls 13

writeVarMethod · 0.95
encodeBytesMethod · 0.95
writeToMethod · 0.80
errMethod · 0.80
getBytesMethod · 0.65
writeMethod · 0.65
forEachMethod · 0.45
streamMethod · 0.45
formatMethod · 0.45
putMethod · 0.45
getMethod · 0.45
toStringMethod · 0.45

Tested by

no test coverage detected