After having little luck on Linux with the IMRSDK for IDE-R Redirection, I've decided to take my chances with the C# High Level API that also supports redirection.
I've created a facade on top of the High Level API that my (web based) app can interact with. The facade is implemented using a .NET WCF webservice The results are good in the sense that IDE-R is actually running, and I can now finally trigger reboots using remote ISOs. All is well.
The facade is using the Intel.Manageability.Redirection.IRedirectionIDER interfaces (exposed via an Intel.Manageability.IAMTInstance) to stop and start IDER sessions.
My question involves around designing a stateless facade on top of these interfaces.
IDE-R Redirection is inherently stateful, as a TCP connection needs to be established between the management console and the AMT machine for the duration of the redirection. Only one IDE-R session can be established per AMT machine. In order to stop the IDE-R session, the StopIDER method needs to be invoked on the IAMTInstance that performed a StartIDER. Connecting to the AMT machine with a new IAMTInstance does not allow you to close the IDE-R session.
In that respect, the system using the High Level API also needs to be designed in a stateful way, as it needs to hold a reference to the IAMTInstance objects that have created an IDER session if it ever wants to close them.
Is there a way to design this using a stateless pattern ?
What if I don't have a reference to the IAMTInstance that created the IDE-R session. How would I be able to close the IDE-R session ? I'm not a C# / WCF expert, but I don't have any visibility on the internal processes that are being spawned by my webservice. Once an IDE-R session has started, I return control back to the client. In the background, the High Level API initiated the IDE-R session and it remains active untill I shutdown the webservice.
Any ideas ?