package com.xagasoft.gats; import java.io.InputStream; import java.io.OutputStream; /** * Represents a Gats string, that is, a string of 8-bit bytes. Unlike the * standard Java string, a Gats string is a string of 8-bit bytes, not 16-bit * UCS characters. If you want to transmit textual data, we highly recommend * encoding it into UTF-8. You can do this by constructing a GatsString from * a java string thusly: new GatsString( myStr.getBytes("UTF8") ) *

* If you pass a java string into a GatsString instead of an array of bytes it * will simply call the getBytes function. This may not be what you want in * many cases, but will work great for simple cases. */ public class GatsString extends GatsObject { private byte[] aValue = null; public GatsString() { } public GatsString( String sValue ) { this.aValue = sValue.getBytes(); } public GatsString( byte[] aValue ) { this.aValue = aValue; } public byte[] getValue() { return aValue; } public void setValue( String sValue ) { this.aValue = sValue.getBytes(); } public void setValue( byte[] aValue ) { this.aValue = aValue; } public String toString() { return new String( aValue ); } public int getType() { return GatsObject.STRING; } void read( InputStream is, char cType ) throws java.io.IOException { int lSize = (int)GatsInteger.readPackedInt( is ); aValue = new byte[lSize]; int lRead = 0; do { lRead += is.read( aValue, lRead, lSize-lRead ); } while( lRead < lSize ); } void write( OutputStream os ) throws java.io.IOException { os.write( (int)'s' ); if( aValue == null ) { GatsInteger.writePackedInt( os, 0 ); } else { GatsInteger.writePackedInt( os, aValue.length ); os.write( aValue ); } } };