/// <summary>
/// Used to populate the chain based on a list of types
/// </summary>
/// <param name="gateway"></param>
/// <param name="side"> </param>
/// <param name="workersNeeded"></param>
/// <param name="client"></param>
/// <param name="server"></param>
/// <returns></returns>
static WorkerChain PopulateChain(Gateway gateway, ChainSide side, IEnumerable<Type> workersNeeded, IPEndPoint client, IPEndPoint server)
{
WorkerChain chain = new WorkerChain { ClientEndPoint = client, ServerEndPoint = server, Gateway = gateway, Side = side };
foreach (Type t in workersNeeded)
{
// ReSharper disable PossibleNullReferenceException
Worker w = (Worker)t.GetConstructor(new Type[] { }).Invoke(new object[] { });
// ReSharper restore PossibleNullReferenceException
w.Chain = chain;
w.ClientEndPoint = client;
w.ServerEndPoint = server;
chain.Add(w);
}
/*lock (lockChainManagement)
{
knownChains.Add(chain);
}*/
knownChains.Add(chain);
return chain;
}