Chromium Code Reviews| Index: remoting/host/chromoting_param_traits.cc |
| diff --git a/remoting/host/chromoting_param_traits.cc b/remoting/host/chromoting_param_traits.cc |
| index 0a5f26b372a7c96349f63f1345db4d272515a5b8..965c7cadc26007a9c807f4c5ad05d06caae9dd10 100644 |
| --- a/remoting/host/chromoting_param_traits.cc |
| +++ b/remoting/host/chromoting_param_traits.cc |
| @@ -280,14 +280,31 @@ void ParamTraits<remoting::DesktopEnvironmentOptions>::Log( |
| l->append("DesktopEnvironmentOptions()"); |
| } |
| +// static |
| +void ParamTraits<remoting::protocol::AggregatedProcessResourceUsage>::GetSize( |
| + base::PickleSizer* s, const param_type& p) { |
| + GetParamSize(s, p.usages_size()); |
| + for (int i = 0; i < p.usages_size(); i++) { |
| + const auto& usage = p.usages().Get(i); |
| + GetParamSize(s, usage.process_name()); |
| + GetParamSize(s, usage.processor_usage()); |
| + GetParamSize(s, usage.working_set_size()); |
| + GetParamSize(s, usage.pagefile_size()); |
| + } |
| +} |
| + |
| // static |
| void ParamTraits<remoting::protocol::AggregatedProcessResourceUsage>::Write( |
| base::Pickle* m, |
| const remoting::protocol::AggregatedProcessResourceUsage& p) { |
| - m->WriteString(p.name()); |
| - m->WriteDouble(p.processor_usage()); |
| - m->WriteUInt64(p.working_set_size()); |
| - m->WriteUInt64(p.pagefile_size()); |
| + m->WriteInt(p.usages_size()); |
|
estark
2017/07/02 00:24:04
Can this be a WriteUint64?
Hzj_jie
2017/07/02 20:59:05
According to the generated code (https://cs.chromi
dcheng
2017/07/06 00:01:56
Since this is specified to return int (currently),
Hzj_jie
2017/07/06 00:45:37
Since RepeatedField<T> is a standard instead of an
dcheng
2017/07/06 08:08:10
Well, it seems like this CL introduces serializati
Hzj_jie
2017/07/07 00:59:49
Definitely, the change is at https://codereview.ch
|
| + for (int i = 0; i < p.usages_size(); i++) { |
| + const auto& usage = p.usages().Get(i); |
| + m->WriteString(usage.process_name()); |
| + m->WriteDouble(usage.processor_usage()); |
| + m->WriteUInt64(usage.working_set_size()); |
| + m->WriteUInt64(usage.pagefile_size()); |
| + } |
| } |
| // static |
| @@ -295,21 +312,30 @@ bool ParamTraits<remoting::protocol::AggregatedProcessResourceUsage>::Read( |
| const base::Pickle* m, |
| base::PickleIterator* iter, |
| remoting::protocol::AggregatedProcessResourceUsage* p) { |
| - std::string name; |
| - double processor_usage; |
| - uint64_t working_set_size; |
| - uint64_t pagefile_size; |
| - if (!iter->ReadString(&name) || |
| - !iter->ReadDouble(&processor_usage) || |
| - !iter->ReadUInt64(&working_set_size) || |
| - !iter->ReadUInt64(&pagefile_size)) { |
| + int usages_size = 0; |
| + if (!iter->ReadInt(&usages_size)) { |
| return false; |
| } |
| - p->set_name(name); |
| - p->set_processor_usage(processor_usage); |
| - p->set_working_set_size(working_set_size); |
| - p->set_pagefile_size(pagefile_size); |
| + for (int i = 0; i < usages_size; i++) { |
|
dcheng
2017/07/06 00:01:57
Most importantly, that lets us consolidate checks
Hzj_jie
2017/07/06 00:45:37
I have replaced GetInt() with GetLength(). But I d
dcheng
2017/07/06 08:08:09
It won't crash here. But in general, it's preferab
Hzj_jie
2017/07/07 00:59:49
Got you. The newly prepared change should also fix
|
| + std::string process_name; |
| + double processor_usage; |
| + uint64_t working_set_size; |
| + uint64_t pagefile_size; |
| + if (!iter->ReadString(&process_name) || |
| + !iter->ReadDouble(&processor_usage) || |
| + !iter->ReadUInt64(&working_set_size) || |
| + !iter->ReadUInt64(&pagefile_size)) { |
| + return false; |
| + } |
| + |
| + remoting::protocol::ProcessResourceUsage usage; |
| + usage.set_process_name(process_name); |
| + usage.set_processor_usage(processor_usage); |
| + usage.set_working_set_size(working_set_size); |
| + usage.set_pagefile_size(pagefile_size); |
| + *p->add_usages() = usage; |
| + } |
| return true; |
| } |