@@ -496,7 +496,7 @@ public LongArraySerializer(Fory fory) {
496496 @ Override
497497 public void write (MemoryBuffer buffer , long [] value ) {
498498 if (fory .getBufferCallback () == null ) {
499- if (fory .getConfig ().compressLongArray ()) {
499+ if (fory .getConfig ().compressLongArray () && fory . getConfig (). longEncoding () != LongEncoding . LE_RAW_BYTES ) {
500500 writeInt64s (buffer , value , fory .getConfig ().longEncoding ());
501501 return ;
502502 }
@@ -526,7 +526,7 @@ public long[] read(MemoryBuffer buffer) {
526526 }
527527 return values ;
528528 }
529- if (fory .getConfig ().compressLongArray ()){
529+ if (fory .getConfig ().compressLongArray () && fory . getConfig (). longEncoding () != LongEncoding . LE_RAW_BYTES ){
530530 return readInt64s (buffer , fory .getConfig ().longEncoding ());
531531 }
532532 int size = buffer .readVarUint32Small7 ();
@@ -541,16 +541,30 @@ public long[] read(MemoryBuffer buffer) {
541541 private void writeInt64s (MemoryBuffer buffer , long [] value , LongEncoding longEncoding ) {
542542 int length = value .length ;
543543 buffer .writeVarUint32Small7 (length );
544+
545+ if (longEncoding == LongEncoding .SLI ){
546+ for (int i = 0 ; i < length ; i ++) {
547+ buffer .writeSliInt64 (value [i ]);
548+ }
549+ return ;
550+ }
544551 for (int i = 0 ; i < length ; i ++) {
545- PrimitiveSerializers . LongSerializer . writeInt64 ( buffer , value [i ], longEncoding );
552+ buffer . writeVarInt64 ( value [i ]);
546553 }
547554 }
548555
549556 public long [] readInt64s (MemoryBuffer buffer , LongEncoding longEncoding ) {
550557 int numElements = buffer .readVarUint32Small7 ();
551558 long [] values = new long [numElements ];
552- for (int i = 0 ; i < numElements ; i ++) {
553- values [i ] = PrimitiveSerializers .LongSerializer .readInt64 (buffer , longEncoding );
559+
560+ if (longEncoding == LongEncoding .SLI ){
561+ for (int i = 0 ; i < numElements ; i ++) {
562+ values [i ] = buffer .readSliInt64 ();
563+ }
564+ } else {
565+ for (int i = 0 ; i < numElements ; i ++) {
566+ values [i ] = buffer .readVarInt64 ();
567+ }
554568 }
555569 return values ;
556570 }
0 commit comments