mirror of
https://github.com/openvswitch/ovs
synced 2025-08-22 09:58:01 +00:00
Creating and destroying JSON objects may be time consuming. Add json_serialized_object_create_with_yield() and json_destroy_with_yield() functions that make use of the cooperative multitasking module to yield during processing, allowing time sensitive tasks in other parts of the program to be completed during processing. We keep these new functions private to OVS by adding a new lib/json.h header file. The include guard in the public include/openvswitch/json.h is updated to contain the OPENVSWITCH prefix to be in line with the other public header files, allowing us to use the non-prefixed version in our private lib/json.h. Signed-off-by: Frode Nordahl <frode.nordahl@canonical.com> Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
33 lines
908 B
C
33 lines
908 B
C
/*
|
|
* Copyright (c) 2024 Canonical Ltd.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at:
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#ifndef JSON_H
|
|
#define JSON_H 1
|
|
|
|
#include "openvswitch/json.h"
|
|
|
|
static inline void
|
|
json_destroy_with_yield(struct json *json)
|
|
{
|
|
if (json && !--json->count) {
|
|
json_destroy__(json, true);
|
|
}
|
|
}
|
|
|
|
struct json *json_serialized_object_create_with_yield(const struct json *);
|
|
|
|
#endif /* JSON_H */
|