use crate::dbgeng::{output_stream::DebugOutputStream, *};
use windy::WStr;
impl_debug_interface!(
DebugPlmClient,
DebugPlmClientRef,
IDebugPlmClient3,
IDebugPlmClient
);
impl DebugPlmClient {
pub fn launch_plm_package_for_debug_wide(
&self,
server: PlmPackageServer,
timeout: u32,
package_full_name: impl AsRef<WStr>,
app_name: impl AsRef<WStr>,
arguments: impl AsRef<WStr>,
) -> WinResult<(ProcessId, ThreadId)> {
let mut process_id = ProcessId(0);
let mut thread_id = ThreadId(0);
unsafe {
self.0.LaunchPlmPackageForDebugWide(
server.into(),
timeout,
pcw!(package_full_name),
pcw!(app_name),
pcw!(arguments),
&mut process_id.0,
&mut thread_id.0,
)?;
Ok((process_id, thread_id))
}
}
}
impl DebugPlmClient {
pub fn launch_plm_bg_task_for_debug_wide(
&self,
server: PlmPackageServer,
timeout: u32,
package_full_name: impl AsRef<WStr>,
background_task_id: impl AsRef<WStr>,
) -> WinResult<(ProcessId, ThreadId)> {
let mut process_id = ProcessId(0);
let mut thread_id = ThreadId(0);
unsafe {
self.0.LaunchPlmBgTaskForDebugWide(
server.into(),
timeout,
pcw!(package_full_name),
pcw!(background_task_id),
&mut process_id.0,
&mut thread_id.0,
)?;
Ok((process_id, thread_id))
}
}
}
impl DebugPlmClient {
pub fn query_plm_package_wide(
&self,
server: PlmPackageServer,
package_full_name: impl AsRef<WStr>,
stream: &DebugOutputStream,
) -> WinResult<()> {
unsafe {
self.0.QueryPlmPackageWide(
server.into(),
pcw!(package_full_name),
stream.as_raw(),
)
}
}
pub fn query_plm_package_list(
&self,
server: PlmPackageServer,
stream: &DebugOutputStream,
) -> WinResult<()> {
unsafe { self.0.QueryPlmPackageList(server.into(), stream.as_raw()) }
}
pub fn enable_plm_package_debug_wide(
&self,
server: PlmPackageServer,
package_full_name: impl AsRef<WStr>,
) -> WinResult<()> {
unsafe {
self.0.EnablePlmPackageDebugWide(
server.into(),
pcw!(package_full_name),
)
}
}
pub fn disable_plm_package_debug_wide(
&self,
server: PlmPackageServer,
package_full_name: impl AsRef<WStr>,
) -> WinResult<()> {
unsafe {
self.0.DisablePlmPackageDebugWide(
server.into(),
pcw!(package_full_name),
)
}
}
pub fn suspend_plm_package_wide(
&self,
server: PlmPackageServer,
package_full_name: impl AsRef<WStr>,
) -> WinResult<()> {
unsafe {
self.0
.SuspendPlmPackageWide(server.into(), pcw!(package_full_name))
}
}
pub fn resume_plm_package_wide(
&self,
server: PlmPackageServer,
package_full_name: impl AsRef<WStr>,
) -> WinResult<()> {
unsafe {
self.0
.ResumePlmPackageWide(server.into(), pcw!(package_full_name))
}
}
pub fn terminate_plm_package_wide(
&self,
server: PlmPackageServer,
package_full_name: impl AsRef<WStr>,
) -> WinResult<()> {
unsafe {
self.0
.TerminatePlmPackageWide(server.into(), pcw!(package_full_name))
}
}
pub fn launch_and_debug_plm_app_wide(
&self,
server: PlmPackageServer,
package_full_name: impl AsRef<WStr>,
app_name: impl AsRef<WStr>,
arguments: impl AsRef<WStr>,
) -> WinResult<()> {
unsafe {
self.0.LaunchAndDebugPlmAppWide(
server.into(),
pcw!(package_full_name),
pcw!(app_name),
pcw!(arguments),
)
}
}
pub fn activate_and_debug_plm_bg_task_wide(
&self,
server: PlmPackageServer,
package_full_name: impl AsRef<WStr>,
background_task_id: impl AsRef<WStr>,
) -> WinResult<()> {
unsafe {
self.0.ActivateAndDebugPlmBgTaskWide(
server.into(),
pcw!(package_full_name),
pcw!(background_task_id),
)
}
}
}