count the bytes we receive/send
[fanfix.git] / src / be / nikiroo / utils / serial / CustomSerializer.java
index fa03f02e141c5056df9ad8bc89f9d59937500a74..be89316eae07b74f6a67ccaeb589641ba81f8cea 100644 (file)
@@ -1,10 +1,12 @@
 package be.nikiroo.utils.serial;
 
+import java.io.IOException;
+
 public abstract class CustomSerializer {
 
        protected abstract String toString(Object value);
 
-       protected abstract Object fromString(String content);
+       protected abstract Object fromString(String content) throws IOException;
 
        protected abstract String getType();
 
@@ -21,7 +23,7 @@ public abstract class CustomSerializer {
        public boolean encode(StringBuilder builder, Object value) {
                int prev = builder.length();
                String customString = toString(value);
-               builder.append("custom:").append(getType()).append(":");
+               builder.append("custom^").append(getType()).append("^");
                if (!SerialUtils.encode(builder, customString)) {
                        builder.delete(prev, builder.length());
                        return false;
@@ -30,28 +32,28 @@ public abstract class CustomSerializer {
                return true;
        }
 
-       public Object decode(String encodedValue) {
+       public Object decode(String encodedValue) throws IOException {
                return fromString((String) SerialUtils.decode(contentOf(encodedValue)));
        }
 
        public static boolean isCustom(String encodedValue) {
-               int pos1 = encodedValue.indexOf(':');
-               int pos2 = encodedValue.indexOf(':', pos1 + 1);
+               int pos1 = encodedValue.indexOf('^');
+               int pos2 = encodedValue.indexOf('^', pos1 + 1);
 
-               return pos1 >= 0 && pos2 >= 0 && encodedValue.startsWith("custom:");
+               return pos1 >= 0 && pos2 >= 0 && encodedValue.startsWith("custom^");
        }
 
        public static String typeOf(String encodedValue) {
-               int pos1 = encodedValue.indexOf(':');
-               int pos2 = encodedValue.indexOf(':', pos1 + 1);
+               int pos1 = encodedValue.indexOf('^');
+               int pos2 = encodedValue.indexOf('^', pos1 + 1);
                String type = encodedValue.substring(pos1 + 1, pos2);
 
                return type;
        }
 
        public static String contentOf(String encodedValue) {
-               int pos1 = encodedValue.indexOf(':');
-               int pos2 = encodedValue.indexOf(':', pos1 + 1);
+               int pos1 = encodedValue.indexOf('^');
+               int pos2 = encodedValue.indexOf('^', pos1 + 1);
                String encodedContent = encodedValue.substring(pos2 + 1);
 
                return encodedContent;