// SPDX-FileCopyrightText: 2023 The Pion community <https://pion.ly>
// SPDX-License-Identifier: MIT

// Package closer provides signaling channel for shutdown
package closer import ( ) // Closer allows for each signaling a channel for shutdown. type Closer struct { ctx context.Context //nolint:containedctx closeFunc func() } // NewCloser creates a new instance of Closer. func () *Closer { , := context.WithCancel(context.Background()) return &Closer{ ctx: , closeFunc: , } } // NewCloserWithParent creates a new instance of Closer with a parent context. func ( context.Context) *Closer { , := context.WithCancel() return &Closer{ ctx: , closeFunc: , } } // Done returns a channel signaling when it is done. func ( *Closer) () <-chan struct{} { return .ctx.Done() } // Err returns an error of the context. func ( *Closer) () error { return .ctx.Err() } // Close sends a signal to trigger the ctx done channel. func ( *Closer) () { .closeFunc() }