public void UnregisterChannelType(string remoteServiceType, Guid sessionGuid, bool requireLock) { IDisposable @lock = null; try { var pluginInst = RunningPluginMap.SafeGet(sessionGuid); if (pluginInst == null) { throw new ArgumentException($"Plugin not found for service {remoteServiceType}"); } if (requireLock) { @lock = pluginInst.Lock.Lock(); } pluginInst.InterfaceChannelMap.TryRemove(remoteServiceType, out _); InterfaceChannelMap.TryRemove(remoteServiceType, out _); Task.Run(() => NotifyServiceRevoked(remoteServiceType)); } finally { @lock?.Dispose(); } }
/// <inheritdoc /> public string GetService(string remoteInterfaceType) { if (remoteInterfaceType == null) { throw new ArgumentNullException(nameof(remoteInterfaceType)); } return(InterfaceChannelMap.SafeGet(remoteInterfaceType)); }