示例#1
0
 int ECMarshallingMessage::deserialize(common::Stream& input)
 {
   int32_t ret = input.get_int64(&family_id_);
   if (common::TFS_SUCCESS == ret)
   {
     ret = input.get_int64(&seqno_);
   }
   if (common::TFS_SUCCESS == ret)
   {
     ret = input.get_int32(&expire_time_);
   }
   if (common::TFS_SUCCESS == ret)
   {
     ret = input.get_int32(&family_aid_info_);
   }
   if (common::TFS_SUCCESS == ret)
   {
     const int32_t MEMBER_NUM = GET_DATA_MEMBER_NUM(family_aid_info_) + GET_CHECK_MEMBER_NUM(family_aid_info_);
     ret = (MEMBER_NUM > 0 && MEMBER_NUM <= MAX_MARSHALLING_NUM) ? common::TFS_SUCCESS : common::EXIT_PARAMETER_ERROR;
     if (TFS_SUCCESS == ret)
     {
       family_members_ = new (std::nothrow)FamilyMemberInfo[MEMBER_NUM];
       assert(family_members_);
       for (int32_t index = 0; index < MEMBER_NUM && TFS_SUCCESS == ret; ++index)
       {
         int64_t pos = 0;
         ret = family_members_[index].deserialize(input.get_data(), input.get_data_length() , pos);
         if (TFS_SUCCESS == ret)
           input.drain(family_members_[index].length());
       }
     }
   }
   return ret;
 }
示例#2
0
 int ECMarshallingMessage::serialize(common::Stream& output) const
 {
   const int32_t MEMBER_NUM = GET_DATA_MEMBER_NUM(family_aid_info_) + GET_CHECK_MEMBER_NUM(family_aid_info_);
   int32_t ret = output.set_int64(family_id_);
   if (common::TFS_SUCCESS == ret)
   {
     ret = output.set_int64(seqno_);
   }
   if (common::TFS_SUCCESS == ret)
   {
     ret = output.set_int32(expire_time_);
   }
   if (common::TFS_SUCCESS == ret)
   {
     ret = (NULL != family_members_ && MEMBER_NUM > 0 && MEMBER_NUM <= MAX_MARSHALLING_NUM) ? common::TFS_SUCCESS : common::EXIT_PARAMETER_ERROR;
     if (TFS_SUCCESS == ret)
     {
       ret = output.set_int32(family_aid_info_);
     }
   }
   if (common::TFS_SUCCESS == ret)
   {
     for (int32_t index = 0; index < MEMBER_NUM && TFS_SUCCESS == ret; ++index)
     {
       int64_t pos = 0;
       ret = family_members_[index].serialize(output.get_free(), output.get_free_length() , pos);
       if (TFS_SUCCESS == ret)
         output.pour(family_members_[index].length());
     }
   }
  return ret;
 }
示例#3
0
 int64_t ECMarshallingMessage::length() const
 {
   int64_t len = 0;
   const int32_t MEMBER_NUM = GET_DATA_MEMBER_NUM(family_aid_info_) + GET_CHECK_MEMBER_NUM(family_aid_info_);
   for (int32_t index = 0; index < MEMBER_NUM; ++index)
   {
     len += family_members_[index].length();
   }
   return len + INT64_SIZE * 2 + INT_SIZE * 2;
 }
示例#4
0
 int ECMarshallingMessage::set_family_member_info(const FamilyMemberInfo* members, const int32_t family_aid_info)
 {
   const int32_t MEMBER_NUM = GET_DATA_MEMBER_NUM(family_aid_info) + GET_CHECK_MEMBER_NUM(family_aid_info);
   int32_t ret = (NULL != members && MEMBER_NUM > 0 && MEMBER_NUM <= MAX_MARSHALLING_NUM * 2) ? common::TFS_SUCCESS : common::EXIT_PARAMETER_ERROR;
   if (TFS_SUCCESS == ret)
   {
     family_aid_info_ = family_aid_info;
     family_members_ = new (std::nothrow)FamilyMemberInfo[MEMBER_NUM];
     assert(family_members_);
     memcpy(family_members_, members, MEMBER_NUM * sizeof(FamilyMemberInfo));
   }
   return ret;
 }
示例#5
0
 int GetFamilyInfoResponseMessage::serialize(common::Stream& output)  const
 {
   int32_t ret = output.set_int64(family_id_);
   if (common::TFS_SUCCESS == ret)
   {
     ret = output.set_int32(family_aid_info_);
   }
   if (common::TFS_SUCCESS == ret)
   {
     const int32_t MEMBER_NUM = GET_DATA_MEMBER_NUM(family_aid_info_) + GET_CHECK_MEMBER_NUM(family_aid_info_);
     for (int32_t index = 0; index < MEMBER_NUM; ++index)
       {
         ret = output.set_int64(members_[index].first);
         if (common::TFS_SUCCESS == ret)
           ret = output.set_int64(members_[index].second);
       }
   }
   return ret;
 }
示例#6
0
 int GetFamilyInfoResponseMessage::deserialize(common::Stream& input)
 {
   int32_t ret = input.get_int64(&family_id_);
   if (common::TFS_SUCCESS == ret)
   {
     ret = input.get_int32(&family_aid_info_);
   }
   if (common::TFS_SUCCESS == ret)
   {
     int32_t index = 0;
     const int32_t MEMBER_NUM = GET_DATA_MEMBER_NUM(family_aid_info_) + GET_CHECK_MEMBER_NUM(family_aid_info_);
     for (index = 0; index < MEMBER_NUM && common::TFS_SUCCESS == ret; ++index)
     {
       std::pair<uint64_t, uint64_t>* item = &members_[index];
       ret = input.get_int64(reinterpret_cast<int64_t*>(&item->first));
       if (common::TFS_SUCCESS == ret)
         ret = input.get_int64(reinterpret_cast<int64_t*>(&item->second));
     }
     if (common::TFS_SUCCESS == ret)
       ret = index == MEMBER_NUM ? common::TFS_SUCCESS : common::EXIT_DESERIALIZE_ERROR;
   }
   return ret;
 }
示例#7
0
 int64_t GetFamilyInfoResponseMessage::length() const
 {
   const uint32_t MEMBER_NUM = GET_DATA_MEMBER_NUM(family_aid_info_) + GET_CHECK_MEMBER_NUM(family_aid_info_);
   return common::INT64_SIZE + common::INT_SIZE + MEMBER_NUM * (common::INT64_SIZE + common::INT64_SIZE);
 }