private MapMessage WorkMapMessage(MapMessage message) { MapMessage mm = new MapMessage(); try { byte[] dll = (byte[])message.MapDLL; Assembly assembly = Assembly.Load(dll); var type = typeof(IMapping); var types = assembly.GetTypes().Where(x => type.IsAssignableFrom(x)).ToArray(); IMapping instanceOfMyType = (IMapping)Activator.CreateInstance(types[0]); MappedAnswer[] answer = instanceOfMyType.Map(message.Data); mm.Data = answer; mm.Piece = message.Piece; mm.TaskNumber = message.TaskNumber; mm.Port = message.Port; mm.ReturnIP = message.ReturnIP; } finally { this.Message = null; } return mm; }
public bool SendMap(Routing Route) { bool sentMessage = false; if (OriginalTasks.Count() > 0) { TaskInfoOriginal taskToWork = OriginalTasks.GetPieceToWork(); TaskIdentifier individualTask = taskToWork.GetPieceToWork(Route.IP); if (individualTask != null) { individualTask.SentItem(); MapMessage mapMessage = new MapMessage(); mapMessage.MapDLL = taskToWork.WorkDLL; mapMessage.Piece = taskToWork.position; mapMessage.Port = ManagerActor.LocalPort; mapMessage.TaskNumber = taskToWork.ID; mapMessage.Data = individualTask.DataObject; new NetworkResponseActor(mapMessage, Route.Port, Route.IP).Start(); Console.WriteLine("Sent a Map job out."); sentMessage = true; } } return sentMessage; }