Class PanamaComponentEngine

java.lang.Object
ai.tegmentum.wasmtime4j.panama.PanamaComponentEngine
All Implemented Interfaces:
ai.tegmentum.wasmtime4j.component.ComponentEngine, Closeable, AutoCloseable

public final class PanamaComponentEngine extends Object implements ai.tegmentum.wasmtime4j.component.ComponentEngine
Panama implementation of the ComponentEngine interface.

This class provides WebAssembly Component Model functionality using Panama Foreign Function API to communicate with the native Wasmtime component library. It manages component lifecycle and instance creation through native bindings.

Key features:

  • Component compilation and instantiation
  • WIT interface resolution and type validation
  • Component dependency resolution
  • Automatic resource cleanup and error handling
Since:
1.0.0
  • Constructor Summary

    Constructors
    Constructor
    Description
    PanamaComponentEngine(ai.tegmentum.wasmtime4j.component.ComponentEngineConfig config)
    Creates a new Panama component engine with the given configuration.
    PanamaComponentEngine(ai.tegmentum.wasmtime4j.component.ComponentEngineConfig config, ai.tegmentum.wasmtime4j.WasmRuntime runtime)
    Creates a new Panama component engine with the given configuration and runtime reference.
  • Method Summary

    Modifier and Type
    Method
    Description
    ai.tegmentum.wasmtime4j.wit.WitCompatibilityResult
    checkCompatibility(ai.tegmentum.wasmtime4j.component.Component source, ai.tegmentum.wasmtime4j.component.Component target)
     
    void
     
    ai.tegmentum.wasmtime4j.component.Component
    compileComponent(byte[] wasmBytes)
     
    ai.tegmentum.wasmtime4j.component.Component
    compileComponent(byte[] wasmBytes, String name)
     
    ai.tegmentum.wasmtime4j.component.ComponentInstance
    createInstance(ai.tegmentum.wasmtime4j.component.Component component, ai.tegmentum.wasmtime4j.Store store)
     
    ai.tegmentum.wasmtime4j.component.ComponentInstance
    createInstance(ai.tegmentum.wasmtime4j.component.Component component, ai.tegmentum.wasmtime4j.Store store, List<ai.tegmentum.wasmtime4j.component.Component> imports)
     
    ai.tegmentum.wasmtime4j.component.Component
    deserializeComponent(byte[] bytes)
     
    ai.tegmentum.wasmtime4j.component.Component
     
    ai.tegmentum.wasmtime4j.Precompiled
    detectPrecompiled(byte[] bytes)
     
    ai.tegmentum.wasmtime4j.Engine
     
    Gets the unique identifier for this engine.
     
    ai.tegmentum.wasmtime4j.wit.WitSupportInfo
     
    boolean
     
    boolean
     
    boolean
    same(ai.tegmentum.wasmtime4j.Engine other)
     
    boolean
     

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface ai.tegmentum.wasmtime4j.component.ComponentEngine

    compileComponentFile
  • Constructor Details

    • PanamaComponentEngine

      public PanamaComponentEngine(ai.tegmentum.wasmtime4j.component.ComponentEngineConfig config) throws ai.tegmentum.wasmtime4j.exception.WasmException
      Creates a new Panama component engine with the given configuration.

      This constructor is intended for unit tests. Production code should use PanamaComponentEngine(ComponentEngineConfig, WasmRuntime).

      Parameters:
      config - the component engine configuration
      Throws:
      ai.tegmentum.wasmtime4j.exception.WasmException - if engine creation fails
    • PanamaComponentEngine

      public PanamaComponentEngine(ai.tegmentum.wasmtime4j.component.ComponentEngineConfig config, ai.tegmentum.wasmtime4j.WasmRuntime runtime) throws ai.tegmentum.wasmtime4j.exception.WasmException
      Creates a new Panama component engine with the given configuration and runtime reference.
      Parameters:
      config - the component engine configuration
      runtime - the runtime that owns this engine
      Throws:
      ai.tegmentum.wasmtime4j.exception.WasmException - if engine creation fails
  • Method Details

    • getId

      public String getId()
      Gets the unique identifier for this engine.
      Returns:
      the engine ID
    • compileComponent

      public ai.tegmentum.wasmtime4j.component.Component compileComponent(byte[] wasmBytes) throws ai.tegmentum.wasmtime4j.exception.WasmException
      Specified by:
      compileComponent in interface ai.tegmentum.wasmtime4j.component.ComponentEngine
      Throws:
      ai.tegmentum.wasmtime4j.exception.WasmException
    • compileComponent

      public ai.tegmentum.wasmtime4j.component.Component compileComponent(byte[] wasmBytes, String name) throws ai.tegmentum.wasmtime4j.exception.WasmException
      Specified by:
      compileComponent in interface ai.tegmentum.wasmtime4j.component.ComponentEngine
      Throws:
      ai.tegmentum.wasmtime4j.exception.WasmException
    • createInstance

      public ai.tegmentum.wasmtime4j.component.ComponentInstance createInstance(ai.tegmentum.wasmtime4j.component.Component component, ai.tegmentum.wasmtime4j.Store store) throws ai.tegmentum.wasmtime4j.exception.WasmException
      Specified by:
      createInstance in interface ai.tegmentum.wasmtime4j.component.ComponentEngine
      Throws:
      ai.tegmentum.wasmtime4j.exception.WasmException
    • createInstance

      public ai.tegmentum.wasmtime4j.component.ComponentInstance createInstance(ai.tegmentum.wasmtime4j.component.Component component, ai.tegmentum.wasmtime4j.Store store, List<ai.tegmentum.wasmtime4j.component.Component> imports) throws ai.tegmentum.wasmtime4j.exception.WasmException
      Specified by:
      createInstance in interface ai.tegmentum.wasmtime4j.component.ComponentEngine
      Throws:
      ai.tegmentum.wasmtime4j.exception.WasmException
    • checkCompatibility

      public ai.tegmentum.wasmtime4j.wit.WitCompatibilityResult checkCompatibility(ai.tegmentum.wasmtime4j.component.Component source, ai.tegmentum.wasmtime4j.component.Component target)
      Specified by:
      checkCompatibility in interface ai.tegmentum.wasmtime4j.component.ComponentEngine
    • getWitSupportInfo

      public ai.tegmentum.wasmtime4j.wit.WitSupportInfo getWitSupportInfo()
      Specified by:
      getWitSupportInfo in interface ai.tegmentum.wasmtime4j.component.ComponentEngine
    • supportsComponentModel

      public boolean supportsComponentModel()
      Specified by:
      supportsComponentModel in interface ai.tegmentum.wasmtime4j.component.ComponentEngine
    • getMaxLinkDepth

      public Optional<Integer> getMaxLinkDepth()
      Specified by:
      getMaxLinkDepth in interface ai.tegmentum.wasmtime4j.component.ComponentEngine
    • close

      public void close()
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
    • getEngine

      public ai.tegmentum.wasmtime4j.Engine getEngine()
      Specified by:
      getEngine in interface ai.tegmentum.wasmtime4j.component.ComponentEngine
    • isValid

      public boolean isValid()
      Specified by:
      isValid in interface ai.tegmentum.wasmtime4j.component.ComponentEngine
    • same

      public boolean same(ai.tegmentum.wasmtime4j.Engine other)
      Specified by:
      same in interface ai.tegmentum.wasmtime4j.component.ComponentEngine
    • isAsync

      public boolean isAsync()
      Specified by:
      isAsync in interface ai.tegmentum.wasmtime4j.component.ComponentEngine
    • deserializeComponent

      public ai.tegmentum.wasmtime4j.component.Component deserializeComponent(byte[] bytes) throws ai.tegmentum.wasmtime4j.exception.WasmException
      Specified by:
      deserializeComponent in interface ai.tegmentum.wasmtime4j.component.ComponentEngine
      Throws:
      ai.tegmentum.wasmtime4j.exception.WasmException
    • deserializeComponentFile

      public ai.tegmentum.wasmtime4j.component.Component deserializeComponentFile(String path) throws ai.tegmentum.wasmtime4j.exception.WasmException
      Specified by:
      deserializeComponentFile in interface ai.tegmentum.wasmtime4j.component.ComponentEngine
      Throws:
      ai.tegmentum.wasmtime4j.exception.WasmException
    • detectPrecompiled

      public ai.tegmentum.wasmtime4j.Precompiled detectPrecompiled(byte[] bytes)
      Specified by:
      detectPrecompiled in interface ai.tegmentum.wasmtime4j.component.ComponentEngine