|
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 |
```
|