//********************************************************************* public void SendData(SimulatorPacket pack) { CheckScanConditionOnSend(); int Rate = pack.getTransmitRate(); int sleep = (int)(600 / Rate); lock (RfSync) { try{ RF_STATUS = RFStatus.Tx; short OperateChannel = this.getOperateChannel(); int try_counter = 0; while (!Medium.Registration(this.Freq, OperateChannel, this.x, this.y, sleep)) { Thread.Sleep(new TimeSpan(randomWait.Next(20, 50))); if (try_counter++ > 200) { return; } } this.MACLastTrnsmitRate = pack.getTransmitRate(); Medium.SendData(pack); } catch (Exception ex) { AddToLog("SendData:[" + this.GetType() + "] " + ex.Message); MessageBox.Show("SendData :" + ex.Message); } RF_STATUS = RFStatus.None; } if (pack.GetType() == typeof(Data)) { _DataSent++; } }
//********************************************************************* private void ThreadableSendData(Key _Pk, object _ref) { ArrayList _temp = (ArrayList)_packets[_Pk]; SimulatorPacket p = (SimulatorPacket)_ref; int Rate = p.getTransmitRate(); int sleep = GetObjectSize(p) / Rate; //Thread.Sleep(sleep); Thread.Sleep(new TimeSpan(sleep * 500)); //AddToLog("Sleep for :" + sleep); if (_temp != null) { lock (_packets) { // if (_temp != null) // { if (_temp.Contains(_ref)) { _temp.Remove((SimulatorPacket)_ref); } if (_temp.Count > 0) { _packets[_Pk] = _temp; } else { _packets.Remove(_Pk); } // } } } }
//********************************************************************* // [MethodImpl(MethodImplOptions.Synchronized)] private static void ThreadableSendData(Key _Pk, object _ref) { EventArgs e = new EventArgs(); int sleep = 0; try { WeHavePacketsToSend(_ref, e); SimulatorPacket p = (SimulatorPacket)_ref; int Rate = p.getTransmitRate(); //long ps = GetObjectSize(p); sleep = (int)(600 / Rate); } catch (Exception ex) { MessageBox.Show("Medium 1 ThreadableSendData" + ex.Message); } Thread.Sleep(new TimeSpan(sleep * _MediumSendDataRatio * 100)); //AddToLog("Sleep for :" + sleep); _ev.WaitOne(); ArrayList _temp = (ArrayList)_packets[_Pk]; try { if (_temp != null) { if (_temp.Contains(_ref)) { _temp.Remove((SimulatorPacket)_ref); } //if (_temp.Count > 0) // ;// _packets[_Pk] = _temp; if (_temp.Count == 0) { _packets.Remove(_Pk); } } } catch (Exception ex) { MessageBox.Show("Medium ThreadableSendData" + ex.Message); } finally { _ev.Set(); //if(LockWasToken) Monitor.Exit(_packets); } }