int ReplicateInfoMessage::build(char* data, int32_t len)
    {
      int32_t size = replicating_map_.size();
      if (set_int32(&data, &len, size) == TFS_ERROR)
      {
        return TFS_ERROR;
      }

      for (REPL_BLOCK_MAP::const_iterator it = replicating_map_.begin(); it != replicating_map_.end(); ++it)
      {
        if (set_int32(&data, &len, static_cast<int32_t> (it->first)) == TFS_ERROR)
        {
          return TFS_ERROR;
        }
        if (set_object(&data, &len, reinterpret_cast<void*> (const_cast<ReplBlock*>(&it->second)), sizeof(ReplBlock)) == TFS_ERROR)
        {
          return TFS_ERROR;
        }
      }
      if (set_counter_map(&data, &len, source_ds_counter_, source_ds_counter_.size()))
      {
        return TFS_ERROR;
      }
      if (set_counter_map(&data, &len, dest_ds_counter_, dest_ds_counter_.size()))
      {
        return TFS_ERROR;
      }
      return TFS_SUCCESS;
    }
 int AccessStatInfoMessage::serialize(common::Stream& output) const 
 {
   int32_t size = stats_.size();
   size -= from_row_;
   if (size < 0)
   {
     size = 0;
   }
   if (size > return_row_)
   {
     has_next_ = 1;
     size = return_row_;
   }
   int32_t iret = output.set_int32(has_next_);
   if (common::TFS_SUCCESS == iret)
   {
     iret = set_counter_map(output, stats_, from_row_, return_row_, size);
   }
   return iret;
 }
 int AccessStatInfoMessage::build(char* data, int32_t len)
 {
   int32_t size = stats_.size();
   size -= from_row_;
   if (size < 0)
   {
     size = 0;
   }
   if (size > return_row_)
   {
     has_next_ = 1;
     size = return_row_;
   }
   if (set_int32(&data, &len, has_next_) == TFS_ERROR)
   {
     return TFS_ERROR;
   }
   if (set_counter_map(&data, &len, stats_, from_row_, return_row_, size))
   {
     return TFS_ERROR;
   }
   return TFS_SUCCESS;
 }