Unverified Commit 74e7decb authored by Paul Yang's avatar Paul Yang Committed by GitHub

Provide discardUnknonwnFields API in php (#3976)

* Provide discardUnknownFields API in php implementation

* Provide discardUnknownFields API in php c extension.
parent cf65a794
...@@ -1614,3 +1614,12 @@ PHP_METHOD(Message, mergeFromJsonString) { ...@@ -1614,3 +1614,12 @@ PHP_METHOD(Message, mergeFromJsonString) {
stackenv_uninit(&se); stackenv_uninit(&se);
} }
} }
PHP_METHOD(Message, discardUnknownFields) {
MessageHeader* msg = UNBOX(MessageHeader, getThis());
stringsink* unknown = DEREF(message_data(msg), 0, stringsink*);
if (unknown != NULL) {
stringsink_uninit(unknown);
DEREF(message_data(msg), 0, stringsink*) = NULL;
}
}
...@@ -42,6 +42,7 @@ static void hex_to_binary(const char* hex, char** binary, int* binary_len); ...@@ -42,6 +42,7 @@ static void hex_to_binary(const char* hex, char** binary, int* binary_len);
static zend_function_entry message_methods[] = { static zend_function_entry message_methods[] = {
PHP_ME(Message, clear, NULL, ZEND_ACC_PUBLIC) PHP_ME(Message, clear, NULL, ZEND_ACC_PUBLIC)
PHP_ME(Message, discardUnknownFields, NULL, ZEND_ACC_PUBLIC)
PHP_ME(Message, serializeToString, NULL, ZEND_ACC_PUBLIC) PHP_ME(Message, serializeToString, NULL, ZEND_ACC_PUBLIC)
PHP_ME(Message, mergeFromString, NULL, ZEND_ACC_PUBLIC) PHP_ME(Message, mergeFromString, NULL, ZEND_ACC_PUBLIC)
PHP_ME(Message, serializeToJsonString, NULL, ZEND_ACC_PUBLIC) PHP_ME(Message, serializeToJsonString, NULL, ZEND_ACC_PUBLIC)
......
...@@ -969,6 +969,7 @@ PHP_METHOD(Message, serializeToString); ...@@ -969,6 +969,7 @@ PHP_METHOD(Message, serializeToString);
PHP_METHOD(Message, mergeFromString); PHP_METHOD(Message, mergeFromString);
PHP_METHOD(Message, serializeToJsonString); PHP_METHOD(Message, serializeToJsonString);
PHP_METHOD(Message, mergeFromJsonString); PHP_METHOD(Message, mergeFromJsonString);
PHP_METHOD(Message, discardUnknownFields);
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
// Type check / conversion. // Type check / conversion.
......
...@@ -576,6 +576,15 @@ class Message ...@@ -576,6 +576,15 @@ class Message
} }
} }
/**
* Clear all unknown fields previously parsed.
* @return null.
*/
public function discardUnknownFields()
{
$this->unknown = "";
}
/** /**
* Merges the contents of the specified message into current message. * Merges the contents of the specified message into current message.
* *
......
...@@ -466,6 +466,13 @@ class EncodeDecodeTest extends TestBase ...@@ -466,6 +466,13 @@ class EncodeDecodeTest extends TestBase
$m->mergeFromString($from); $m->mergeFromString($from);
$to = $m->serializeToString(); $to = $m->serializeToString();
$this->assertSame(bin2hex($from), bin2hex($to)); $this->assertSame(bin2hex($from), bin2hex($to));
$m = new TestMessage();
$from = hex2bin('F80601');
$m->mergeFromString($from);
$m->discardUnknownFields();
$to = $m->serializeToString();
$this->assertSame("", bin2hex($to));
} }
public function testJsonEncode() public function testJsonEncode()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment