6e70c4ae07
#### ⚠️ targets #10051 ## Summary of the Pull Request This PR does one big, primary thing. It removes all the constructors from any TerminalConnections, and changes them to use an `Initialize` method that accepts a `ValueSet` of properties. Why? For the upcoming window/content process work, we'll need the content process to be able to initialize the connection _in the content process_. However, the window process will be the one that knows what type of connection to make. Enter `ConnectionInformation`. This class will let us specify the class name of the type we want to create, and a set of settings to use when initializing that connection. **IMPORTANT**: As a part of this, the constructor for a connection must have 0 arguments. `RoActivateInstance` lets you just conjure a WinRT type just by class name, but that class must have a 0 arg ctor. Hence the need for `Initialize`, to actually pass the settings. We're using a `ValueSet` here because it's basically a json blob, with more steps. In the future, when extension authors want to have custom connections, we can always deserialize the json into a `ValueSet`, pass it to their connection's `Initialize`, and let then get what they need out of it. ## References * Tear-out: #1256 * Megathread: #5000 * Project: https://github.com/microsoft/terminal/projects/5 ## PR Checklist * [x] Closes https://github.com/microsoft/terminal/projects/5#card-50760298 * [x] I work here * [n/a] Tests added/passed * [n/a] Requires documentation to be updated ## Detailed Description of the Pull Request / Additional comments `ConnectionInformation` was included as a part of this PR, to demonstrate how this will eventually be used. `ConnectionInformation` is not _currently_ used. ## Validation Steps Performed It still builds and runs.
44 lines
1.5 KiB
C++
44 lines
1.5 KiB
C++
/*++
|
|
Copyright (c) Microsoft Corporation
|
|
Licensed under the MIT license.
|
|
|
|
Class Name:
|
|
- ConnectionInformation.h
|
|
|
|
Abstract:
|
|
- This is a helper object for storing both the name of a type of connection, and
|
|
a bag of settings to use to initialize that connection.
|
|
- This helper is used primarily in cross-proc scenarios, to allow the window
|
|
process to tell the content process the name of the connection type it wants
|
|
created, and how to set that connection up. This is done so the connection can
|
|
live entirely in the content process, without having to go through the window
|
|
process at all.
|
|
--*/
|
|
|
|
#pragma once
|
|
#include "../inc/cppwinrt_utils.h"
|
|
#include "ConnectionInformation.g.h"
|
|
|
|
namespace winrt::Microsoft::Terminal::TerminalConnection::implementation
|
|
{
|
|
struct ConnectionInformation : ConnectionInformationT<ConnectionInformation>
|
|
{
|
|
ConnectionInformation(hstring const& className,
|
|
const Windows::Foundation::Collections::ValueSet& settings);
|
|
|
|
static TerminalConnection::ITerminalConnection CreateConnection(TerminalConnection::ConnectionInformation info);
|
|
|
|
winrt::hstring ClassName() const { return _ClassName; }
|
|
void ClassName(const winrt::hstring& value) { _ClassName = value; }
|
|
|
|
WINRT_PROPERTY(Windows::Foundation::Collections::ValueSet, Settings);
|
|
|
|
private:
|
|
winrt::hstring _ClassName{};
|
|
};
|
|
}
|
|
namespace winrt::Microsoft::Terminal::TerminalConnection::factory_implementation
|
|
{
|
|
BASIC_FACTORY(ConnectionInformation);
|
|
}
|