Skip to content

Session

Constructor - Session(SessionSettings settings) - rejects nullptr settings.

Methods - Start() - Terminate() - CreateContainer(ContainerSettings containerSettings) - PullImage(PullImageOptions options) - PullImageAsync(PullImageOptions options) - ImportImage(hstring path, hstring imageName) - ImportImageAsync(hstring path, hstring imageName) - LoadImage(hstring path) - LoadImageAsync(hstring path) - PushImage(PushImageOptions options) - PushImageAsync(PushImageOptions options) - DeleteImage(hstring nameOrId) - TagImage(TagImageOptions options) - CreateVhdVolume(VhdOptions options) - DeleteVhdVolume(hstring name) - Authenticate(Uri serverAddress, hstring username, hstring password) - GetImages() - event Terminated - event ProcessCrashed - Close()

Behavior notes - Start() is one-shot; calling it twice throws. - Most methods call EnsureStarted() first. - ImportImage / ImportImageAsync and LoadImage / LoadImageAsync are path-based only. - Authenticate requires a non-null Uri and non-empty username. - GetImages() materializes WinRT ImageInfo objects from the C array returned by WslcListSessionImages.

Examples

Session session{ settings };
session.Terminated([](SessionTerminationReason reason)
{
    printf("session terminated: %d\n", static_cast<int>(reason));
});
session.ProcessCrashed([](ProcessCrashInformation const& info)
{
    printf("process crashed: %ws\n", info.ProcessName().c_str());
});
session.Start();
auto container = session.CreateContainer(containerSettings);
auto importOp = session.ImportImageAsync(L"C:\\images\\alpine.tar", L"demo/alpine:latest");
importOp.Progress([](auto&&, ImageProgress const& p) { /* progress */ });
co_await importOp;
auto loadOp = session.LoadImageAsync(L"C:\\images\\bundle.tar");
co_await loadOp;
session.DeleteImage(L"demo/alpine:latest");
auto token = session.Authenticate(
    winrt::Windows::Foundation::Uri{ L"https://registry.example.com" },
    L"user",
    L"password");
auto images = session.GetImages();
for (auto const& image : images)
{
    printf("%ws\n", image.Name().c_str());
}
PullImageOptions pullOptions = ;
auto pullOp = session.PullImageAsync(pullOptions);
pullOp.Progress([](auto&&, ImageProgress const& p) { /* progress */ });
co_await pullOp;

PushImageOptions pushOptions = ;
co_await session.PushImageAsync(pushOptions);

TagImageOptions tagOptions = ;
session.TagImage(tagOptions);

VhdOptions vhdOptions = ;
session.CreateVhdVolume(vhdOptions);
session.DeleteVhdVolume(L"build-cache");
session.Terminate();