Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 package org.easycluster.easycluster.serialization.bytebean.codec.primitive;
 
 

Author(s):
wangqi
Version:
$Id: CStyleStringCodec.java 14 2012-01-10 11:54:14Z archie $
public class CStyleStringCodec extends AbstractPrimitiveCodec implements ByteFieldCodec {
	private static final Logger	logger					= LoggerFactory.getLogger(CStyleStringCodec.class);
	private static final String	XIP_STR_CHARSET"UTF-8";
	public Class<?>[] getFieldType() {
		return new Class<?>[] { String.class };
	}
	public DecResult decode(DecContext ctx) {
		byte[] bytes = ctx.getDecBytes();
		Object ret = null;
		int index = ArrayUtils.indexOf(bytes, (byte) 0x00);
		if (-1 == index) {
			String errmsg = "CStyleString: could not found \\0 for string terminated.";
			if (null != ctx.getField()) {
				errmsg += "/ cause field is [" + ctx.getField() + "]";
			}
			.error(errmsg);
			throw new RuntimeException(errmsg);
		}
		try {
			byte[] tmp = ArrayUtils.subarray(bytes, 0, index);
			ret = new String(tmp);
			.error("CStyleString"e);
		}
		return new DecResult(ret, ArrayUtils.subarray(bytesindex + 1, bytes.length));
	}
	public byte[] encode(EncContext ctx) {
		String value = (Stringctx.getEncObject();
		byte[] bytes = null;
		if (null == value) {
			return new byte[] { 0 };
		}
		try {
			bytes = value.getBytes();
			.error("CStyleString"e);
		}
		return ArrayUtils.add(bytes, (byte) 0);
	}
New to GrepCode? Check out our FAQ X