VorpalSword
VorpalSword

Reputation: 1293

Can I delete a field from a protobuf message?

I'm implementing a policy enforcement point between a client and a server that receives messages from the server, and, if the client doesn't have adequate authorization to see some parts of the message deletes those parts before sending them to the client.

message {
  string not_sensitive = 1;
  optional string sensitive = 2;
}

pseudo code

from_server >> my_msg;
if (!authorized) {
  my_msg.delete("sensitive");
}
to_client << my_msg;

Upvotes: 0

Views: 3369

Answers (1)

bazza
bazza

Reputation: 8424

Yes.

As I understand current v3 pb schema language, all fields are optional. But regardless of that, a field marked optional in v2 is something that need not be there. So expanding your pseudo code to, say, C++ (see here), one can see that the generated class would end up with a has_sensitive() method and a clear_sensitive() method. Calling the latter and then serialising the object would result in wire format data that omitted the sensitive field.

Upvotes: 1

Related Questions