diff options
author | Matthew Heon <matthew.heon@pm.me> | 2019-03-25 15:43:38 -0400 |
---|---|---|
committer | Matthew Heon <matthew.heon@pm.me> | 2019-03-27 20:00:31 -0400 |
commit | 5ed62991dcbe85e28774b036a7c89033af80136f (patch) | |
tree | ea5b57abb6290bf0afac083292aad6dc653f52be /libpod/util.go | |
parent | 340eeec1b654880f9d339c9ac2957bcaeaee6829 (diff) | |
download | podman-5ed62991dcbe85e28774b036a7c89033af80136f.tar.gz podman-5ed62991dcbe85e28774b036a7c89033af80136f.tar.bz2 podman-5ed62991dcbe85e28774b036a7c89033af80136f.zip |
Remove ulele/deepcopier in favor of JSON deep copy
We have a very high performance JSON library that doesn't need to
perform code generation. Let's use it instead of our questionably
performant, reflection-dependent deep copy library.
Most changes because some functions can now return errors.
Also converts cmd/podman to use jsoniter, instead of pkg/json,
for increased performance.
Signed-off-by: Matthew Heon <matthew.heon@pm.me>
Diffstat (limited to 'libpod/util.go')
-rw-r--r-- | libpod/util.go | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/libpod/util.go b/libpod/util.go index b7578135a..7e2dff21a 100644 --- a/libpod/util.go +++ b/libpod/util.go @@ -187,3 +187,13 @@ func validPodNSOption(p *Pod, ctrPod string) error { } return nil } + +// JSONDeepCopy performs a deep copy by performing a JSON encode/decode of the +// given structures. From and To should be identically typed structs. +func JSONDeepCopy(from, to interface{}) error { + tmp, err := json.Marshal(from) + if err != nil { + return err + } + return json.Unmarshal(tmp, to) +} |