public LinkDriver(NetIfManager manager, ILinkNetIf netIfDevice, byte netIfIndex, bool mappingEnabled, bool threaded, bool doesIO, bool hasTasks) { Manager = manager; IoNetIfDevice = netIfDevice; NetIfIndex = netIfIndex; MappingEnabled = mappingEnabled; DoesIO = doesIO; HasTasks = hasTasks; NumTasks = 0; DeviceContextIndex = 0; duplexKind = (byte)LinkMonitor.LINK_DUPLEX_KIND.LINK_DUPLEX_KIND_NONE; duplexApply = 0; Monitor = (DoesIO ? new LinkMonitor(this) : null); Parser = (DoesIO ? new PacketParser(this) : null); IOThreads = (threaded ? new LinkIOThreads(this) : null); NotStale = false; HasRead = false; SerialIndex = -1; SchedulerInterval = SchedulerIntervalDefault; ResponseInterval = ResponseIntervalDefault; LinkWriteQueue = new DequeBlockingCollection <int>(LinkWriteQSize, -1); LinkVerifyQueue = new DequeBlockingCollection <int>(LinkVerifyQSize, -1); LinkMissingQueue = new DequeBlockingCollection <byte>(LinkMissingQSize, ProtocolConstants.VNO_NULL); OutputMapBuffer = (mappingEnabled ? new byte[LinkMappingBufferSize] : null); ClearLinkDriver(); manager.SerialNumberManager.NetIfSerialNumberSetup(NetIfIndex); }
public LinkSchedulerThread(LinkIOThreads master, LinkDriver lp) { Master = master; LnkPrt = lp; Task = new Thread(new ThreadStart(Run)); Task.Name = "LinkSchedulerThread:" + LnkPrt.NetIfIndex; Task.Priority = ThreadPriority.Highest; }
public LinkWriteThread(LinkIOThreads master, LinkDriver lp) { Master = master; LnkPrt = lp; Task = new Thread(new ThreadStart(Run)); Task.Name = "LinkWriteThread:" + LnkPrt.NetIfIndex; Task.Priority = ThreadPriority.AboveNormal; }