content: /*
   * Copyright (C) 2016-2023 ActionTech.
   * based on code by MyCATCopyrightHolder Copyright (c) 2013, OpenCloudDB/MyCAT.
   * License: http://www.gnu.org/licenses/gpl.html GPL version 2 or higher.
   */
  package com.actiontech.dble.net.mysql;
  
  import com.actiontech.dble.backend.mysql.BufferUtil;
  import com.actiontech.dble.backend.mysql.StreamUtil;
  import com.actiontech.dble.net.connection.AbstractConnection;
  
  import java.io.IOException;
  import java.io.OutputStream;
  import java.nio.ByteBuffer;
  
  /**
   * @author mycat
   */
  public class Reply323Packet extends MySQLPacket {
  
      private byte[] seed;
  
      public void write(OutputStream out) throws IOException {
          StreamUtil.writeUB3(out, calcPacketSize());
          StreamUtil.write(out, packetId);
          if (seed == null) {
              StreamUtil.write(out, (byte) 0);
          } else {
              StreamUtil.writeWithNull(out, seed);
          }
      }
  
      @Override
      public void bufferWrite(AbstractConnection c) {
          ByteBuffer buffer = c.allocate();
          BufferUtil.writeUB3(buffer, calcPacketSize());
          buffer.put(packetId);
          if (seed == null) {
              buffer.put((byte) 0);
          } else {
              BufferUtil.writeWithNull(buffer, seed);
          }
          c.getService().writeDirectly(buffer, getLastWriteFlag());
      }
  
      @Override
      public int calcPacketSize() {
          return seed == null ? 1 : seed.length + 1;
      }
  
      @Override
      protected String getPacketInfo() {
          return "MySQL Auth323 Packet";
      }
  
      public byte[] getSeed() {
          return seed;
      }
  
      public void setSeed(byte[] seed) {
          this.seed = seed;
      }
  
      @Override
      public boolean isEndOfQuery() {
          return true;
      }
  }
  