Пример #1
0
 private int writeClass(Class<?> type) throws IOException {
   SerializeCache cache = getSerializeCache(type, mode);
   if (cache == null) {
     cache = new SerializeCache();
     ByteArrayOutputStream cachestream = new ByteArrayOutputStream();
     Map<String, MemberAccessor> members = HproseHelper.getMembers(type, mode);
     int count = members.size();
     cachestream.write(HproseTags.TagClass);
     writeUTF8String(HproseHelper.getClassName(type), cachestream);
     if (count > 0) {
       writeInt(count, cachestream);
     }
     cachestream.write(HproseTags.TagOpenbrace);
     for (Entry<String, MemberAccessor> member : members.entrySet()) {
       cachestream.write(HproseTags.TagString);
       writeUTF8String(member.getKey(), cachestream);
       ++cache.refcount;
     }
     cachestream.write(HproseTags.TagClosebrace);
     cache.data = cachestream.toByteArray();
     putSerializeCache(type, mode, cache);
   }
   stream.write(cache.data);
   lastref += cache.refcount;
   int cr = lastclassref++;
   classref.put(type, cr);
   return cr;
 }