/* 9P Protocol JAVA
 * P9P/type/String9P.java
 * Autor: Jaime Garzon (2006) jgarzon@gmail.com
 *
 * Esta clase es una implementacion del tipo de dato
 * String, usado en el protocolo 9P de Plan9P.
 * Los metodos Write y Read, permiten escribir el valor
 * de la forma little-endian en un Buffer o leerlo de un
 * array de bytes, respectivamente.
*/

package P9P.type;
import java.io.*;

public class String9P extends type9P {

   public String value="";

   /* CONSTRUCTORES */

   public String9P (byte[] b, int i) {
      read(b,i);
   }

   public String9P() {}


   /* METODOS */

   public void read(byte[] b, int i) {
      short9P size = new short9P(b,i);
      String s = new String(b);

      if (size.value>0)
         value = s.substring(i+2, size.value+i+2);
      else
         value="";
   }

   public void write(ByteArrayOutputStream buf) {
      short9P size = new short9P(value.length());

      size.write(buf);
      buf.write(value.getBytes(),0,size.value);
   }

   public int len() {
      return value.length() + 2;
   }

   public String toString() {
      return value+" ";
   }
}