public boolean decode() {
    	try {
	    	configVersion 	= byteBuffer.getInt();
	    	version 		= byteBuffer.getShort();
			resultCode = byteBuffer.getInt();

			int valuesize = byteBuffer.getInt();
			if (valuesize > 0) {
				try {
					value = transcoder.decode(byteBuffer.array(),
							byteBuffer.position(), valuesize);
				} catch (Throwable e) {
					resultCode = ResultCode.SERIALIZEERROR.getCode();
					return false;
				}
				if (value == null) {
					resultCode = ResultCode.SERIALIZEERROR.getCode();
					return false;
				}
				byteBuffer.position(byteBuffer.position() + valuesize);
			}
    	} catch (BufferUnderflowException e) {
    		resultCode =  ResultCode.SERIALIZEERROR.getCode();
			return false;
    	}
    	
		return true;
	}