Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Restyle Introduce a Shutdown method to DeviceControllerFactory #14724

Closed
wants to merge 2 commits into from

Conversation

restyled-io[bot]
Copy link
Contributor

@restyled-io restyled-io bot commented Feb 2, 2022

A duplicate of #14723 with additional commits that automatically address
incorrect style, created by Restyled.

⚠️ Even though this PR is not a Fork, it contains outside contributions.
Please review accordingly.

Since the original Pull Request was opened as a fork in a contributor's
repository, we are unable to create a Pull Request branching from it with only
the style fixes.

The following Restylers made fixes:

To incorporate these changes, you can either:

  1. Merge this Pull Request instead of the original, or

  2. Ask your contributor to locally incorporate these commits and push them to
    the original Pull Request

    Expand for example instructions
    ```console
    git remote add upstream https://github.com/project-chip/connectedhomeip.git
    git fetch upstream pull/<this PR number>/head
    git merge --ff-only FETCH_HEAD
    git push
    ```
    

NOTE: As work continues on the original Pull Request, this process will
re-run and update (force-push) this Pull Request with updated style fixes as
necessary. If the style is fixed manually at any point (i.e. this process finds
no fixes to make), this Pull Request will be closed automatically.

Sorry if this was unexpected. To disable it, see our documentation.

kianooshkarami and others added 2 commits February 2, 2022 15:49
The new method would the symmetrical API for DeviceControllerFactory's
already existing `Init()` API.

What is the root of the problem?

The problem we intend to solve is that we'd like to use `Shutdown()` method
to shut down and clean up any memory/functionality enabled by `Init()` as
opposed to waiting for the DeviceControllerFactory desctructor, which only
happens once the program shuts down due to the nature of how
DeviceControllerFactory is instantiated.

DeviceControllerFactory can only be instantiated through ::GetInstance(),
this method constructs DeviceControllerFactory only once for the life of
the program (the constructor is a private method). Once the Init() is
invoked, the `mSystemState` is allocated as shown in the following:

```
    mSystemState = chip::Platform::New<DeviceControllerSystemState>(stateParams);
```

However, in DeviceControllerFactory's destructor, which currently is only
invoked once the program shuts down, the deallocation of `mSystemState`
is requested via `chip::Platform::Delete`. This can be problematic since
the application will need to ensure `chip::Platform` memory stays initailized
throughout the memory shutdown.

Adding a shutdown methods allows the applications to have a symmetry between
the initialization and shutdown sequence related to the
DeviceControllerFactory
@restyled-io restyled-io bot added the restyled label Feb 2, 2022
@restyled-io restyled-io bot closed this Feb 3, 2022
@restyled-io restyled-io bot deleted the restyled/add-shutdown-to-dev-ctrl-factory branch February 3, 2022 17:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants