Blame plugin/sequence.md

Packit 534379
```mermaid
Packit 534379
sequenceDiagram
Packit 534379
    participant ClientApp
Packit 534379
    ClientApp->PluginManager: Initialize(cfile)
Packit 534379
    loop ForEachNativePlugin(N)
Packit 534379
        N->N: CreateAdapterTable()
Packit 534379
        N->>PluginManager: Register(AdapterTable)
Packit 534379
    end
Packit 534379
    PluginManager->PluginManager: ParseConfig(cfile)
Packit 534379
    loop ForEachPlugin(P)
Packit 534379
        PluginManager->>PluginLoader: LoadPlugin(A)
Packit 534379
        P->P: CreateAdapterTable()
Packit 534379
        Note over P: Map Plugin FN Ptrs
Packit 534379
        P->>PluginManager: Register(AdapterTable)
Packit 534379
        PluginLoader->>P: Configure(cdata)
Packit 534379
        PluginLoader->>P: Initialize()
Packit 534379
    end
Packit 534379
    ClientApp->>PluginManager: fpgaEnumerate
Packit 534379
    Note over PluginManager: ForEachAdapterTable
Packit 534379
    PluginManager->>PluginA: fpgaEnumerate()
Packit 534379
    PluginA-->>PluginManager: ReturnTokenList(PluginA)
Packit 534379
    loop ForEachToken(PluginA)
Packit 534379
        PluginManager->>PluginManager: tag(Token, PluginA)
Packit 534379
    end
Packit 534379
    PluginManager->>PluginManager: ExtendTokenList(TokensA)
Packit 534379
    PluginManager->>ProxyPlugin: fpgaEnumerate()
Packit 534379
    ProxyPlugin->>RemoteEndpoint: send_msg(enumerate, filter)
Packit 534379
    RemoteEndpoint->>ProxyPlugin: recv_msg(tokens)
Packit 534379
    loop ForEachToken
Packit 534379
        ProxyPlugin->ProxyPlugin:deserialize(messageToken, fpga_token)
Packit 534379
        ProxyPlugin->ProxyPlugin:associate(fpga_token, endpoint_connection)
Packit 534379
    end
Packit 534379
    ProxyPlugin-->>PluginManager: ReturnTokenList(ProxyPlugin)
Packit 534379
    loop ForEachToken(ProxyPlugin)
Packit 534379
        PluginManager->>PluginManager: tag(Token, ProxyPlugin)
Packit 534379
    end
Packit 534379
    PluginManager->>PluginManager: ExtendTokenList(TokensB)
Packit 534379
    PluginManager-->>ClientApp: ReturnAllTokenList
Packit 534379
Packit 534379
    ClientApp->>PluginManager: fpgaOpen(Token)
Packit 534379
    PluginManager->>PluginManager: untag(Token, AdapterTableB)
Packit 534379
    PluginManager->>ProxyPlugin: fpgaOpen(Token)
Packit 534379
    ProxyPlugin->>RemoteEndpoint: send_msg(open, token)
Packit 534379
    RemoteEndpoint-->>ProxyPlugin: recv_msg(handle)
Packit 534379
    ProxyPlugin->>ProxyPlugin: make_fpga_handle(handle)
Packit 534379
    Note over ProxyPlugin: associate handle to endpoint
Packit 534379
    ProxyPlugin-->>PluginManager: return FPGA_OK, handle
Packit 534379
    Note over PluginManager: associate handle to ProxyPlugin
Packit 534379
```