23 lines
764 B
Python
23 lines
764 B
Python
# Copyright (c) 2022, Dell Inc. or its subsidiaries. All rights reserved.
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
# See the LICENSE file for details.
|
|
#
|
|
# This file is part of NVMe STorage Appliance Services (nvme-stas).
|
|
#
|
|
# Authors: Martin Belanger <Martin.Belanger@dell.com>
|
|
#
|
|
'''Implementation of a singleton pattern'''
|
|
|
|
|
|
class Singleton(type):
|
|
'''metaclass implementation of a singleton pattern'''
|
|
|
|
_instances = {}
|
|
|
|
def __call__(cls, *args, **kwargs):
|
|
if cls not in cls._instances:
|
|
# This variable declaration is required to force a
|
|
# strong reference on the instance.
|
|
instance = super(Singleton, cls).__call__(*args, **kwargs)
|
|
cls._instances[cls] = instance
|
|
return cls._instances[cls]
|