Files
Xune/UIX.RenderApi.Skia/Microsoft/Iris/Render/Protocol/RemoteChannel.cs
T

59 lines
1.9 KiB
C#
Raw Normal View History

2021-07-11 22:59:29 -05:00
// 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);
}
}
}