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();