private Object decodeSync(final IoBuffer buff, final String[] sa) {
                    this.assertCommand(sa[0], "sync");
                    final int valueLen = Integer.parseInt(sa[3]);
                    if (buff.remaining() < valueLen) {
                        buff.reset();
                        return null;
                    }
                    else {
                        final byte[] data = new byte[valueLen];
                        buff.get(data);
                        switch (sa.length) {
                        case 7:
                            // old master before 1.4.4
                            return new SyncCommand(sa[1], Integer.parseInt(sa[2]), data, Integer.parseInt(sa[4]),
                                Long.valueOf(sa[5]), -1, Integer.parseInt(sa[6]));
                        case 8:
                            // new master since 1.4.4
                            return new SyncCommand(sa[1], Integer.parseInt(sa[2]), data, Integer.parseInt(sa[4]),
                                Long.valueOf(sa[5]), Integer.parseInt(sa[6]), Integer.parseInt(sa[7]));
                        default:
                            throw new MetaCodecException("Invalid Sync command:" + StringUtils.join(sa));
                        }
                    }
                }
result code length opaque\r\n message

@param buff
@param sa
@return
metamorphosis-commons/src/main/java/com/taobao/metamorphosis/network/MetamorphosisWireFormatType.java