mirror of
https://github.com/ZuneDev/Xune.git
synced 2026-07-27 13:13:10 -07:00
59 lines
1.9 KiB
C#
59 lines
1.9 KiB
C#
// Decompiled with JetBrains decompiler
|
|||
|
|
// Type: Microsoft.Iris.Render.Protocol.RemoteChannel
|
||
|
|
// Assembly: UIX.RenderApi, Version=4.8.0.0, Culture=neutral, PublicKeyToken=ddd0da4d3e678217
|
||
|
|
// MVID: D47658B8-A8EA-43D6-8837-ECE823BFFFC1
|
||
|
|
// Assembly location: C:\Program Files\Zune\UIX.RenderApi.dll
|
||
|
|
|
||
|
|
using Microsoft.Iris.Render.Common;
|
||
|
|
using System;
|
||
|
|
|
||
|
|
namespace Microsoft.Iris.Render.Protocol
|
||
|
|
{
|
||
|
|
internal class RemoteChannel : RenderObject, IChannel
|
||
|
|
{
|
||
|
|
private string m_sessionName;
|
||
|
|
private TransportProtocol m_protocol;
|
||
|
|
private IntPtr m_pSendStream;
|
||
|
|
private IntPtr m_pReceiveStream;
|
||
|
|
private IntPtr m_pSession;
|
||
|
|
|
||
|
|
public RemoteChannel(RemoteConnectionInfo connectionInfo)
|
||
|
|
{
|
||
|
|
this.m_sessionName = connectionInfo.SessionName;
|
||
|
|
this.m_protocol = connectionInfo.TransportProtocol;
|
||
|
|
EngineApi.IFC(EngineApi.SpRemoteCreateServerStreams(this.m_sessionName, this.m_protocol, out this.m_pSendStream, out this.m_pReceiveStream));
|
||
|
|
}
|
||
|
|
|
||
|
|
protected override void Dispose(bool inDispose)
|
||
|
|
{
|
||
|
|
try
|
||
|
|
{
|
||
|
|
if (!(this.m_pSession != IntPtr.Zero))
|
||
|
|
return;
|
||
|
|
EngineApi.IFC(EngineApi.SpRemoteServerUninit(this.m_pSession, true, out ShutdownReason _));
|
||
|
|
this.m_pSession = IntPtr.Zero;
|
||
|
|
}
|
||
|
|
finally
|
||
|
|
{
|
||
|
|
base.Dispose(inDispose);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
public bool IsConnected => this.m_pSession != IntPtr.Zero;
|
||
|
|
|
||
|
|
public void Connect(
|
||
|
|
ContextID idRemoteContext,
|
||
|
|
RENDERHANDLE hBrokerClass,
|
||
|
|
MessageCookieLayout layout)
|
||
|
|
{
|
||
|
|
EngineApi.IFC(EngineApi.SpRemoteWaitServerStreamsConnected(this.m_protocol, this.m_pSendStream, this.m_pReceiveStream));
|
||
|
|
EngineApi.IFC(EngineApi.SpRemoteServerInit(this.m_pSendStream, this.m_pReceiveStream, new EngineApi.InitArgs(layout, idRemoteContext)
|
||
|
|
{
|
||
|
|
idObjectBrokerClass = hBrokerClass
|
||
|
|
}, out this.m_pSession));
|
||
|
|
EngineApi.SpObjectRelease(this.m_pSendStream);
|
||
|
|
EngineApi.SpObjectRelease(this.m_pReceiveStream);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|