diff --git a/src/modules/interface/module.h b/src/modules/interface/module.h index f2709789e..0a74f2a95 100644 --- a/src/modules/interface/module.h +++ b/src/modules/interface/module.h @@ -1,33 +1,58 @@ -#ifndef MODULE_H -#define MODULE_H +/* + * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. An additional intellectual property rights grant can be found + * in the file PATENTS. All contributing project authors may + * be found in the AUTHORS file in the root of the source tree. + */ + +#ifndef MODULES_INTERFACE_MODULE_H_ +#define MODULES_INTERFACE_MODULE_H_ #include "typedefs.h" -namespace webrtc -{ +namespace webrtc { -class Module -{ -public: - // Returns version of the module and its components. - virtual int32_t Version(char* version, - uint32_t& remainingBufferInBytes, - uint32_t& position) const = 0; +class Module { + public: + // Returns version of the module and its components. + virtual int32_t Version(char* version, + uint32_t& remaining_buffer_in_bytes, + uint32_t& position) const = 0; - // Change the unique identifier of this object. - virtual int32_t ChangeUniqueId(const int32_t id) = 0; + // Change the unique identifier of this object. + virtual int32_t ChangeUniqueId(const int32_t id) = 0; - // Returns the number of milliseconds until the module want a worker - // thread to call Process. - virtual int32_t TimeUntilNextProcess() = 0 ; + // Returns the number of milliseconds until the module want a worker + // thread to call Process. + virtual int32_t TimeUntilNextProcess() = 0; - // Process any pending tasks such as timeouts. - virtual int32_t Process() = 0 ; + // Process any pending tasks such as timeouts. + virtual int32_t Process() = 0; -protected: - virtual ~Module() {} + protected: + virtual ~Module() {} }; -} // namespace webrtc +// Reference counted version of the module interface. +class RefCountedModule : public Module { + public: + // Increase the reference count by one. + // Returns the incremented reference count. + virtual int32_t AddRef() = 0; -#endif // MODULE_H + // Decrease the reference count by one. + // Returns the decreased reference count. + // Returns 0 if the last reference was just released. + // When the reference count reach 0 the object will self-destruct. + virtual int32_t Release() = 0; + + protected: + virtual ~RefCountedModule() {} +}; + +} // namespace webrtc + +#endif // MODULES_INTERFACE_MODULE_H_