#region Copyright 2010-2014 by Roger Knapp, Licensed under the Apache License, Version 2.0
/* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#endregion
using System.Collections.Generic;
namespace CSharpTest.Net.IpcChannel
{
///
/// Interface to provide a means of channel member registration and cross-process serialization
/// of arguments for specific events. Implementations must be thread-safe even across process
/// boundaries.
///
public interface IIpcChannelRegistrar
{
/// Registers a member (instanceId) for the provided channel name
void RegisterInstance(string channelName, string instanceId, string instanceName);
/// Unregisters a member (instanceId) from the provided channel name
void UnregisterInstance(string channelName, string instanceId);
/// Enumerates the registered instanceIds for the provided channel name
IEnumerable GetRegisteredInstances(string channelName);
/// Enumerates the registered instanceIds who's name is instanceName for the provided channel name
IEnumerable GetRegisteredInstances(string channelName, string instanceName);
/// Enumerates the registered instanceIds who's name is instanceName for the provided channel name
IEnumerable GetRegisteredInstances(string channelName, IEnumerable instanceNames);
/// Serializes the arguments for the event being sent to the specified instance
bool WriteParameters(string channelName, string instanceId, string eventName, string[] arguments);
/// Retreives the arguments for the event being sent to the specified instance
string[] ReadParameters(string channelName, string instanceId, string eventName);
}
}