private void connectMon(SocketGroup socketGroup) { SocketAsyncEventArgs monReceive, monSend; if (monConnector.createConnection(out monReceive, out monSend)) { monConnectionFailed = 0; ((DataHoldingUserToken)monReceive.UserToken).socketGroup = socketGroup; ((DataHoldingUserToken)monSend.UserToken).socketGroup = socketGroup; socketGroup.monReceiveSAEA = monReceive; socketGroup.monSendSAEA = monSend; monConnector.startReceive(monReceive); } else { socketGroup.monReceiveSAEA = null; socketGroup.monSendSAEA = null; // LOCK THIS lock (monConnectionCheckLocker) { monConnectionFailed++; if (monConnectionFailed >= 5 && !monConnectionCheckStarted) { blocksAcceptor.stop(); monConnectionCheckThread = new Thread(() => monConnectionCheckProcess()); monConnectionCheckThread.Start(); monConnectionCheckStarted = true; } } } }
private static void AddSockets(SocketGroup socketGroup, string socketGroupString) { socketGroupString.Split(socketLinkIndicators, StringSplitOptions.RemoveEmptyEntries) .Select(GetSocket) .ToList() .ForEach(socketGroup.Sockets.Add); }
private void ParseItemSockets() { if (_itemFields.ContainsKey("Sockets")) { _item.Sockets = SocketGroup.Parse(_itemFields["Sockets"]); } }
private void blockConnectionAccepted(SocketAsyncEventArgs saea) { var socketGroup = new SocketGroup(); ((DataHoldingUserToken)saea.UserToken).socketGroup = socketGroup; socketGroup.blockReceiveSAEA = saea; blocksAcceptor.startReceive(saea); }
public void SocketGroupCanParseAbyssalSockets() { var sg = SocketGroup.Parse("B-B-B A A"); Assert.AreEqual(2, sg.AbyssalSockets); Assert.AreEqual(5, sg.Sockets); Assert.AreEqual(3, sg.LargestLink); }
private static SocketGroup GetSocketGroup(string socketGroupString) { var socketGroup = new SocketGroup(); AddSockets(socketGroup, socketGroupString); return(socketGroup); }
public void SocketGroupParseReturnsSocketGroupObjWithCorrectSockets() { var sg = SocketGroup.Parse("R R B G W W W"); Assert.AreEqual(2, sg.RedSockets); Assert.AreEqual(1, sg.GreenSockets); Assert.AreEqual(1, sg.BlueSockets); Assert.AreEqual(3, sg.WhiteSockets); }
public void SocketCountIsEqualToItemSocketCount() { var item = new MockModdableItem() { Sockets = SocketGroup.Parse("B B") }; var vm = ItemViewModel.CreateViewModel(item); Assert.AreEqual(2, vm.SocketCount.Value); }
/// <summary>Преобразование группы разъёмов в CSV строку</summary> /// <param name="group">Группа разъёмов</param> /// <returns></returns> public static string Serialize(SocketGroup group) { var result = group.GroupName + Delimiter; foreach (var socketName in group.SocketNames) { result += socketName + Delimiter; } return(result); }
public void LinkIsSetFromSocketGroup() { var item = new MockModdableItem() { Sockets = SocketGroup.Parse("B-B-B") }; var vm = ItemViewModel.CreateViewModel(item); Assert.AreEqual(3, vm.Link.Value); }
public void LinkIsCheckedIfEqualTo6() { var item = new MockModdableItem() { Sockets = SocketGroup.Parse("B-B-B-B-B-B") }; var vm = ItemViewModel.CreateViewModel(item); Assert.IsTrue(vm.Link.Checked); }
public void LinkIsAddedToStatListIfValueIsGreaterThanZero() { var item = new MockModdableItem() { Sockets = SocketGroup.Parse("B") }; var vm = ItemViewModel.CreateViewModel(item); Assert.IsTrue(vm.ItemStats.Contains(vm.Link)); }
private static bool SocketGroupHasRequiredSocketColors(SocketGroup itemLinkedSocketGroup, SocketGroup blockItemSocketGroup) { var blockSocketGroupColorCounts = blockItemSocketGroup.GroupBy(i => i.Color, (key, values) => new { SocketColor = key, Count = values.Count() }).ToList(); var itemSocketGroupColorCounts = itemLinkedSocketGroup.GroupBy(i => i.Color, (key, values) => new { SocketColor = key, Count = values.Count() }).ToList(); foreach (var blockItemSocketColorCount in blockSocketGroupColorCounts) { var match = itemSocketGroupColorCounts.FirstOrDefault(i => i.SocketColor == blockItemSocketColorCount.SocketColor && i.Count >= blockItemSocketColorCount.Count); if (match == null) { return(false); } } return(true); }
private void messageReceivedFromMon2(byte[] message, SocketAsyncEventArgs saea) { // log command { string str = Encoding.ASCII.GetString(message); commandLog.Debug(str); } SocketGroup socketGroup = (saea.UserToken as DataHoldingUserToken).socketGroup; if (socketGroup.blockSendSAEA == null) { socketGroup.blockSendSAEA = blocksAcceptor.createSaeaForSend(socketGroup.blockReceiveSAEA.AcceptSocket); ((DataHoldingUserToken)socketGroup.blockSendSAEA.UserToken).socketGroup = socketGroup; } blocksAcceptor.startSend(socketGroup.blockSendSAEA, message); }
private void connectMon2(SocketGroup socketGroup) { SocketAsyncEventArgs mon2Receive, mon2Send; if (mon2Connector.createConnection(out mon2Receive, out mon2Send)) { ((DataHoldingUserToken)mon2Receive.UserToken).socketGroup = socketGroup; ((DataHoldingUserToken)mon2Send.UserToken).socketGroup = socketGroup; socketGroup.mon2ReceiveSAEA = mon2Receive; socketGroup.mon2SendSAEA = mon2Send; mon2Connector.startReceive(mon2Receive); } else { socketGroup.mon2ReceiveSAEA = null; socketGroup.mon2SendSAEA = null; } }
private static ItemSockets GetLinkedItemSockets(int linkCount) { var result = new ItemSockets(); if (linkCount > 0) { var socketGroup = new SocketGroup(); for (int i = 0; i < linkCount; i++) { socketGroup.Sockets.Add(new Socket()); } result.SocketGroups.Add(socketGroup); } AddSocketsTillMaxSocketCount(linkCount, result); return(result); }
private void messageReceivedFromMon(byte[] message, SocketAsyncEventArgs saea) { if (log.IsDebugEnabled) { var receivedData = Encoding.ASCII.GetString(message); log.Debug("--- messageReceivedFromMon --- " + receivedData); } if (Settings.Default.PureRetranslate) { string filename = Path.Combine(appPath, "purelog"); //((IPEndPoint)saea.AcceptSocket.RemoteEndPoint).Address.ToString(); var fs = new FileStream(filename, FileMode.Append); string messageHead = "^server:"; var messageHeadBytes = Encoding.ASCII.GetBytes(messageHead); fs.Write(messageHeadBytes, 0, messageHeadBytes.Length); fs.Write(message, 0, message.Length); var lineEnd = "\r\n"; var lineEndBytes = Encoding.ASCII.GetBytes(lineEnd); fs.Write(lineEndBytes, 0, lineEndBytes.Length); fs.Close(); } else { string str = Encoding.ASCII.GetString(message); commandLog.Debug(str); } SocketGroup socketGroup = (saea.UserToken as DataHoldingUserToken).socketGroup; if (socketGroup.blockSendSAEA == null) { socketGroup.blockSendSAEA = blocksAcceptor.createSaeaForSend(socketGroup.blockReceiveSAEA.AcceptSocket); ((DataHoldingUserToken)socketGroup.blockSendSAEA.UserToken).socketGroup = socketGroup; } blocksAcceptor.startSend(socketGroup.blockSendSAEA, message); }
PmpSearcher(SocketGroup sockets) : base(sockets) { }
/// <summary>Создать новую группу разъёмов</summary> /// <param name="socketGroup">Группа разъёмов</param> /// <returns>Созданная группа разъёмов</returns> public SocketGroup CreateSocketGroup(SocketGroup socketGroup) { return(_groupRepository.Insert(socketGroup)); }
public void SocketGroupReturnsCorrectSocketCount() { var sg = SocketGroup.Parse("R R R"); Assert.AreEqual(3, sg.Sockets); }
public void SocketGroupReturnsLinkArray() { var sg = SocketGroup.Parse("R-R-R R-R"); CollectionAssert.AreEqual(new int[] { 3, 2 }, sg.Links); }
public void SocketGroupReturnsLargestLink() { var sg = SocketGroup.Parse("R R-R R-R-R"); Assert.AreEqual(3, sg.LargestLink); }
UpnpSearcher(SocketGroup sockets) : base(sockets) { LastFetched = new Dictionary <Uri, DateTime> (); Locker = new SemaphoreSlim(1, 1); }
public byte[] processMessage(byte[] message, out string imei, SocketGroup socketGroup, out Action action) { action = Action.Send2Mon; string receivedData = string.Empty; imei = null; try { receivedData = Encoding.ASCII.GetString(message); if (receivedData.StartsWith("$$")) { var basePacket = BasePacket.GetFromGlonass(receivedData); imei = basePacket.IMEI; if (basePacket.State.Equals('V')) { basePacket.Latitude = 0.0d; basePacket.Longitude = 0.0d; } this.mintransMoscowCitySink.SendLocationAndState(basePacket); this.mintransMoscowRegionSink.SendLocationAndState(basePacket); this.retranslatorPilotka.retranslate(basePacket); this.gisHandler.handle(basePacket); if (telemaximaEnabled) { retranslatorTelemaxima.checkAndRetranslate(basePacket); } if (versions.ContainsKey(basePacket.IMEI)) { var pair = versions[basePacket.IMEI]; basePacket.VERSION = pair.version; pair.cnt = pair.cnt - 1; if (pair.cnt <= 0) { versions.Remove(basePacket.IMEI); } } var gpsData = basePacket.ToPacketGps(); packetLog.DebugFormat("src: {0}{1}dst: {2}", receivedData, Environment.NewLine, gpsData); return(Encoding.ASCII.GetBytes(gpsData)); } else { try { if (receivedData.ToUpper().Contains("VER:")) { if (socketGroup.IMEI != null) { versions[socketGroup.IMEI] = new Pair(receivedData.Replace("\n", " ").Replace("\r", " "), 5); } if (!receivedData.ToUpper().Contains("VER:9.44") && socketGroup.IMEI != null) { using (var db = new somereasonEntities()) { var blockInfo = db.block_info.FirstOrDefault(_ => _.imei == socketGroup.IMEI); if (blockInfo == null) { blockInfo = new block_info(); blockInfo.imei = socketGroup.IMEI; blockInfo.info = receivedData; blockInfo.arrived = DateTime.Now; db.block_info.AddObject(blockInfo); db.SaveChanges(); log.Info("VER YES_SAVE IMEI=" + socketGroup.IMEI); } else { log.Info("VER EXISTS IMEI=" + socketGroup.IMEI); } } } else { log.Info("VER NOT_SAVE IMEI=" + socketGroup.IMEI ?? "NULL"); } } } catch (Exception e) { log.Error(e.ToString()); } return(message); } } catch (ReflectionTypeLoadException ex) { StringBuilder sb = new StringBuilder(); foreach (Exception exSub in ex.LoaderExceptions) { sb.AppendLine(exSub.Message); if (exSub is FileNotFoundException) { FileNotFoundException exFileNotFound = exSub as FileNotFoundException; if (!string.IsNullOrEmpty(exFileNotFound.FusionLog)) { sb.AppendLine("Fusion Log:"); sb.AppendLine(exFileNotFound.FusionLog); } } sb.AppendLine(); } string errorMessage = sb.ToString(); //Display or log the error based on your application. log.Error("DLL = " + errorMessage, ex); return(null); } catch (Exception e) { log.Error(String.Format("ProcessMessage packet={0}", receivedData), e); if (e is BadPacketException || e is ArgumentOutOfRangeException) { log.Warn("Send special command"); action = Action.Send2Block; return(scbytes); } return(null); } }
private void messageReceivedFromBlock(byte[] message, SocketAsyncEventArgs saea) { if (log.IsDebugEnabled) { var receivedData = Encoding.ASCII.GetString(message); log.Debug("--- messageReceivedFromBlock --- " + receivedData); } SocketGroup socketGroup = (saea.UserToken as DataHoldingUserToken).socketGroup; if (Settings.Default.PureRetranslate) { string filename = Path.Combine(appPath, "purelog"); //((IPEndPoint)saea.AcceptSocket.RemoteEndPoint).Address.ToString(); var fs = new FileStream(filename, FileMode.Append); string messageHead = "^device:"; var messageHeadBytes = Encoding.ASCII.GetBytes(messageHead); fs.Write(messageHeadBytes, 0, messageHeadBytes.Length); fs.Write(message, 0, message.Length); var lineEnd = "\r\n"; var lineEndBytes = Encoding.ASCII.GetBytes(lineEnd); fs.Write(lineEndBytes, 0, lineEndBytes.Length); fs.Close(); if (socketGroup.monSendSAEA == null) { connectMon(socketGroup); } monConnector.startSend(socketGroup.monSendSAEA, message); } else { string imei; Action action; byte[] processedBytes = receivePacketProcessor.processMessage(message, out imei, socketGroup, out action); if (processedBytes == null) { blocksAcceptor.closeSocket(socketGroup.blockReceiveSAEA); if (socketGroup.monSendSAEA != null) { monConnector.closeSocket(socketGroup.monSendSAEA); } return; } if (action == Action.Send2Block) { messageReceivedFromMon(processedBytes, saea); } else { if (imei != null && socketGroup.IMEI == null) { socketGroup.IMEI = imei; } if (socketGroup.monSendSAEA == null) { connectMon(socketGroup); } monConnector.startSend(socketGroup.monSendSAEA, processedBytes); // mon2 if (Settings.Default.Mon2_Enabled && (Settings.Default.Mon2_Allboards || mon2Imeis.Contains(imei))) { if (socketGroup.mon2SendSAEA == null) { connectMon2(socketGroup); } if (Settings.Default.Mon2_Format) { mon2Connector.startSend(socketGroup.mon2SendSAEA, processedBytes); } else { mon2Connector.startSend(socketGroup.mon2SendSAEA, message); } } } } }