/// <summary> /// Processus background qui traite les messages à l'infini /// </summary> private void BackgroundThradProcess() { while (true) { if (this.terminate) { break; } this.mre.Reset(); if (this.elementsDiffusion.Count >= 0) { ElementDiffusion ed = null; if (this.elementsDiffusion.TryDequeue(out ed)) { this.DiffuserMessage(ed); } } else if (this.elementsFTP.Count >= 0) { ElementFTP element = null; if (this.elementsFTP.TryDequeue(out element)) { this.DiffuserFTP(element); } } else { this.mre.WaitOne(300000); } } }
/// <summary> /// Empile un message afin de le difuser avec signalr /// </summary> /// <param name="type"></param> /// <param name="message"></param> public void DiffuserMessageBluetooth(Chat.ChronoSignalR.TypeMessage type, string message) { ElementDiffusion ed = new ElementDiffusion() { TypeMessage = type, Message = message }; ed.SignalRHub = ParamCommuns.Instance.SignalRHub; ed.SignalRServer = ParamCommuns.Instance.SignalRServer; this.elementsDiffusion.Enqueue(ed); this.mre.Set(); //if (this.pret.HasValue && this.pret.Value) //{ // ElementDiffusion ed = new ElementDiffusion() { TypeMessage = type, Message = message }; // ed.SignalRHub = ParamCommuns.Instance.SignalRHub; // ed.SignalRServer = ParamCommuns.Instance.SignalRServer; // Messenger.Default.Send(ed); // return; //} //else if (this.pret.HasValue && ! this.pret.Value) //{ // lock (this.boquant) // { // if (this.pret.HasValue && this.pret.Value) // { // ElementDiffusion ed = new ElementDiffusion() { TypeMessage = type, Message = message }; // ed.SignalRHub = ParamCommuns.Instance.SignalRHub; // ed.SignalRServer = ParamCommuns.Instance.SignalRServer; // Messenger.Default.Send(ed); // } // else { // this.pile.Push(new ElementDiffusion() { TypeMessage = type, Message = message }); // } // } // return; //} //this.pile.Push(new ElementDiffusion() { TypeMessage = type, Message = message }); }
//BluetoothClient globalClient = null; //Stream globalStream = null; private void DiffuserMessage(ElementDiffusion ed) { try { using (BluetoothClient bluetoothClient = new BluetoothClient()) { var ep = new BluetoothEndPoint(this.dev.DeviceInfo.DeviceAddress, _serviceClassId); bluetoothClient.Connect(ep); using (var bluetoothStream = bluetoothClient.GetStream()) { using (MemoryStream ms = new MemoryStream()) { this.ser.WriteObject(ms, ed); string s = System.Text.UTF8Encoding.UTF8.GetString(ms.GetBuffer()); ms.Seek(0, SeekOrigin.Begin); this.Ecrivain(s); int longueur = (int)ms.Length; byte[] bx = BitConverter.GetBytes(longueur); int longueurTest = bx.Length; bluetoothStream.Write(bx, 0, 4); byte[] sender = ms.GetBuffer(); int depart = 0; while (longueur > 0) { if (longueur >= 1024) { bluetoothStream.Write(sender, depart, 1024); bluetoothStream.Flush(); depart += 1024; longueur -= 1024; } else { bluetoothStream.Write(sender, depart, longueur); bluetoothStream.Flush(); longueur = 0; } } } } } } catch (Exception e) { this.Ecrivain("ERREUR --------------------------"); this.Ecrivain(e.ToString()); } ////////lock (this.boquant) ////////{ //////// try //////// { //////// if (this.globalClient == null) //////// { //////// this.globalClient = new BluetoothClient(); //////// var ep = new BluetoothEndPoint(this.dev.DeviceInfo.DeviceAddress, _serviceClassId); //////// this.globalClient.Connect(ep); //////// this.globalStream = this.globalClient.GetStream(); //////// } //////// using (MemoryStream ms = new MemoryStream()) //////// { //////// this.ser.WriteObject(ms, ed); //////// int longueur = (int)ms.Length; //////// byte[] bx = BitConverter.GetBytes(longueur); //////// int longueurTest = bx.Length; //////// globalStream.Write(bx, 0, 4); //////// byte[] sender = ms.GetBuffer(); //////// int depart = 0; //////// while (longueur > 0) //////// { //////// if (longueur >= 1024) //////// { //////// globalStream.Write(sender, depart, 1024); //////// globalStream.Flush(); //////// depart += 1024; //////// longueur -= 1024; //////// } //////// else //////// { //////// globalStream.Write(sender, depart, longueur); //////// globalStream.Flush(); //////// longueur = 0; //////// } //////// } //////// //globalStream.Write(ms.GetBuffer(), 0, longueur); //////// //globalStream.Flush(); //////// } //////// //using (BluetoothClient bluetoothClient = new BluetoothClient()) //////// //{ //////// // var bep = new BluetoothEndPoint(this.dev.DeviceInfo.DeviceAddress, _serviceClassId); //////// // // connecting //////// // bluetoothClient.Connect(bep); //////// // using (var bluetoothStream = bluetoothClient.GetStream()) //////// // { //////// // using (MemoryStream ms = new MemoryStream()) //////// // { //////// // this.ser.WriteObject(ms, ed); //////// // var buffer = ms.GetBuffer(); //////// // bluetoothStream.Write(buffer, 0, buffer.Length); //////// // bluetoothStream.Flush(); //////// // bluetoothStream.Close(); //////// // } //////// // } //////// //} //////// } //////// catch (Exception e) //////// { //////// Console.WriteLine("Erreur de messagerie"); //////// } ////////} }