public static ControllerConfig ReadConfig(string path) { FileInfo file = new FileInfo(path); XmlSerializer xml = new XmlSerializer(typeof(ControllerConfig)); ControllerConfig cfg = new ControllerConfig(); if (!file.Exists) { cfg.ListenPrefixes.Add("http://localhost:80"); HostConnection c = new HostConnection(); c.Name = "A host"; c.CryptoCache = new RijndaelManaged(); c.CryptoKey = EncodingTools.Encryption.GetTokenSalt(c.CryptoCache); cfg.Hosts.Add(c); cfg.RootTempFolder = Path.GetTempPath(); var fs = file.OpenWrite(); xml.Serialize(fs, cfg); fs.Close(); } else { var fs = file.OpenText(); cfg = xml.Deserialize(fs) as ControllerConfig; fs.Close(); } return(cfg); }
public AddHostViewModel(INavigation navigation) { Title = "Add Host"; HostConnection = new HostConnection(); _navigation = navigation; AddHostCommand = new RelayCommand(async() => await ExecuteAddHostCommand(), CanExecuteAddHostCommand); }
public void AddHost(HostConnection host) { _hostStates.TryAdd(host.Id, new HostState(host)); // This part of the code is not concurrent, but only ASP.NET uses concurrent calls, MVVM projects are not. // ASP.NET don't use ObservableCollections if (_useObservableCollections) { Hosts.Add(new ObservableHost(GetHostState(host.Id))); } }
public void Equal_Ok() { const string host = "localhost"; const int port = 5432; var hostConnection = new HostConnection(host, port); int hostConnectionHash = HashCode.Combine(host, port); Assert.Equal(hostConnectionHash, hostConnection.GetHashCode()); }
public void GetHostConnection_Ok() { const string host = "localhost"; const string port = "5032"; var hostConnectionResult = DatabaseConnectionFactory.GetHostConnection(host, port); var hostConnectionAssert = new HostConnection(host, Int32.Parse(port)); Assert.True(hostConnectionResult.OkStatus); Assert.True(hostConnectionAssert.Equals(hostConnectionResult.Value)); }
public void UpdateHost(HostConnection host) { var found = _hostStates.TryGetValue(host.Id, out HostState hostState); if (found) { hostState.Update(host); } // This part of the code is not concurrent, but only ASP.NET uses concurrent calls, MVVM projects are not. // ASP.NET don't use ObservableCollections UpdateObservableHost(hostState); }
/// <summary> /// Add connection settings for a new host. /// </summary> /// <param name="host">The host name</param> /// <param name="messengerFactory">Factory for creating a messenger which forwards messages to the host</param> public void AddConnection(string host, Func <IMessenger> messengerFactory) { var hostConnection = new HostConnection { Host = host, MessengerFactory = messengerFactory }; this.hosts[hostConnection.Host] = hostConnection; if (hostConnection.Messenger != null) { hostConnection.Messenger.MessageReceived += (sender, @event) => MessageReceived?.Invoke(this, @event); hostConnection.Messenger.ConnectionReestablished += (sender, @event) => ConnectionReestablished?.Invoke(this, @event); } }
private void TryConnect(HostConnection hostConnection) { try { hostConnection.Messenger = hostConnection.MessengerFactory(); hostConnection.Messenger.MessageReceived += (sender, @event) => MessageReceived?.Invoke(this, @event); hostConnection.Messenger.ConnectionReestablished += (sender, @event) => ConnectionReestablished?.Invoke(this, @event); } catch (Exception ex) { Log.Warning(ex.Message); } }
public static IList <IPO> GetNextPO(long value, POValueType valueType, int facilityNumber = 960) { List <IPO> poList = new List <IPO>(); string whereClause = string.Empty; switch (valueType) { case POValueType.VBU_UNKNOWN: case POValueType.HOVBU: long vbu = GetSFVBU(value, facilityNumber); value = vbu == -1? value : vbu; goto case POValueType.SFVBU; case POValueType.PO: PO tempPO = new PO(value); value = tempPO.ShipFromVBU; goto case POValueType.SFVBU; case POValueType.SFVBU: whereClause = "(((LOWES.W001_PO_DAL_HDR.T063_LCT_NBR)={1}) " + "AND ((LOWES.W001_PO_DAL_HDR.RCP_CD_TXT)='N') " + "AND ((LOWES.W001_PO_DAL_HDR.P028_VND_NBR)={0}) " + "AND ((LOWES.W002_PO_DAL_DTL.RCV_QTY)=0))"; break; case POValueType.ITEM: whereClause = "(((LOWES.W002_PO_DAL_DTL.T063_LCT_NBR)={1}) " + "AND LOWES.W002_PO_DAL_DTL.RCV_QTY = 0 " + "AND ((LOWES.W002_PO_DAL_DTL.T024_ITM_NBR)={0}) " + "AND ((LOWES.W001_PO_DAL_HDR.RCP_CD_TXT)='N'))"; break; default: break; } whereClause = string.Format(whereClause, value, facilityNumber); ADODB.Recordset rs = HostConnection.GetInstance().Recordset(string.Format(Properties.Resources.GetNextAvailPO, whereClause)); if (!(rs.BOF && rs.EOF)) { poList = rs.GetPOsFromList().ToList(); rs.Close(); rs = null; } return(poList); }
public async Task <IActionResult> OnGetAsync(int?id) { if (id == null) { return(NotFound()); } HostConnection = await _context.Host.FirstOrDefaultAsync(m => m.Id == id); if (HostConnection == null) { return(NotFound()); } return(Page()); }
public async Task <IActionResult> OnPostAsync(int?id) { if (id == null) { return(NotFound()); } HostConnection = await _context.Host.FindAsync(id); if (HostConnection != null) { _context.Host.Remove(HostConnection); await _context.SaveChangesAsync(); _manager.RemoveHost(HostConnection.Id); } return(RedirectToPage("./Index")); }
// checks whether face params data was requested by any connection private bool IsFaceParamsRequested() { bool bFaceParams = false; foreach (int connId in alConnectionId) { HostConnection conn = dictConnection [connId]; if (conn.keepAlive && conn.reqDataType != null) { if (conn.reqDataType.Contains(",fp")) { bFaceParams = true; break; } } } return(bFaceParams); }
private static long GetSFVBU(long HOVBU, int facilityNumber) { string sql = Properties.Resources.FindSFVBU; sql = string.Format(sql, HOVBU, facilityNumber); ADODB.Recordset rs = HostConnection.GetInstance().Recordset(sql); if (rs.BOF && rs.EOF) { return(-1); } long VBU = (long)rs.Fields[0].Value; rs.Close(); rs = null; return(VBU); }
/// <summary> /// Ensure everything is set to run the Application. /// - Ensure database folder exists. /// - Ensure the database is created and up to date. /// - Initialize BoincManager /// </summary> /// <param name="context"></param> /// <param name="manager"></param> /// <param name="useObservableCollections">Initialize the Observable Collections which can be used in MVVM framework.</param> public static void InitializeApplication(ApplicationDbContext context, Manager manager, bool useObservableCollections) { // Ensure the database is created and up to date at the start of the application context.Database.Migrate(); // If the database is empty, add localhost to it. var hosts = context.Host.ToList(); if (hosts.Count == 0) { var localhostPassword = GetLocalhostGuiRpcPassword(); if (!string.IsNullOrEmpty(localhostPassword)) { var host = new HostConnection("Localhost", "localhost", localhostPassword); context.Add(host); context.SaveChanges(); hosts = context.Host.ToList(); } } // Initialize the BoincManager manager.Initialize(hosts, useObservableCollections); }
void Update() { int recHostId; int connectionId; int recChannelId; int dataSize; bool connListUpdated = false; if (backgroundImage && backgroundImage.texture == null) { backgroundImage.texture = manager ? manager.GetUsersLblTex() : null; } if (faceManager == null) { faceManager = FacetrackingManager.Instance; } if (gestureManager == null) { gestureManager = VisualGestureManager.Instance; } if (speechManager == null) { speechManager = SpeechManager.Instance; } try { byte error = 0; NetworkEventType recData = NetworkTransport.Receive(out recHostId, out connectionId, out recChannelId, recBuffer, bufferSize, out dataSize, out error); switch (recData) { case NetworkEventType.Nothing: //1 break; case NetworkEventType.ConnectEvent: //2 if (recHostId == serverHostId && recChannelId == serverChannelId && !dictConnection.ContainsKey(connectionId)) { HostConnection conn = new HostConnection(); conn.hostId = recHostId; conn.connectionId = connectionId; conn.channelId = recChannelId; conn.keepAlive = true; conn.reqDataType = "ka,kb,km,kh"; //conn.matrixSent = false; dictConnection[connectionId] = conn; connListUpdated = true; //LogToConsole(connectionId + "-conn: " + conn.reqDataType); } // // reset chunked face messages // sendFvMsg = string.Empty; // sendFvNextOfs = 0; // // sendFtMsg = string.Empty; // sendFtNextOfs = 0; break; case NetworkEventType.DataEvent: //3 if (recHostId == serverHostId && recChannelId == serverChannelId && dictConnection.ContainsKey(connectionId)) { HostConnection conn = dictConnection[connectionId]; int decompSize = 0; if (decompressor != null && (recBuffer[0] > 127 || recBuffer[0] < 32)) { decompSize = decompressor.Decompress(recBuffer, 0, compressBuffer, 0, dataSize); } else { System.Buffer.BlockCopy(recBuffer, 0, compressBuffer, 0, dataSize); decompSize = dataSize; } string sRecvMessage = System.Text.Encoding.UTF8.GetString(compressBuffer, 0, decompSize); if (sRecvMessage.StartsWith("ka")) { if (sRecvMessage == "ka") // vr-examples v1.0 keep-alive message { sRecvMessage = "ka,kb,km,kh"; } conn.keepAlive = true; conn.reqDataType = sRecvMessage; dictConnection[connectionId] = conn; //LogToConsole(connectionId + "-recv: " + conn.reqDataType); // check for SR phrase-reset int iIndexSR = sRecvMessage.IndexOf(",sr"); if (iIndexSR >= 0 && speechManager) { speechManager.ClearPhraseRecognized(); //LogToConsole("phrase cleared"); } } } break; case NetworkEventType.DisconnectEvent: //4 if (dictConnection.ContainsKey(connectionId)) { dictConnection.Remove(connectionId); connListUpdated = true; } break; } if (connListUpdated) { // get all connection IDs alConnectionId.Clear(); alConnectionId.AddRange(dictConnection.Keys); // display the number of connections StringBuilder sbConnStatus = new StringBuilder(); sbConnStatus.AppendFormat("Server running: {0} connection(s)", dictConnection.Count); foreach (int connId in dictConnection.Keys) { HostConnection conn = dictConnection[connId]; int iPort = 0; string sAddress = string.Empty; NetworkID network; NodeID destNode; NetworkTransport.GetConnectionInfo(conn.hostId, conn.connectionId, out sAddress, out iPort, out network, out destNode, out error); if (error == (int)NetworkError.Ok) { sbConnStatus.AppendLine().Append(" ").Append(sAddress).Append(":").Append(iPort); } } LogToConsole(sbConnStatus.ToString()); if (connStatusText) { connStatusText.text = sbConnStatus.ToString(); } } // send body frame to available connections const char delimiter = ','; string sBodyFrame = manager ? manager.GetBodyFrameData(ref liRelTime, ref fCurrentTime, delimiter) : string.Empty; if (sBodyFrame.Length > 0 && dictConnection.Count > 0) { StringBuilder sbSendMessage = new StringBuilder(); bool bFaceParamsRequested = IsFaceParamsRequested(); sbSendMessage.Append(manager.GetWorldMatrixData(delimiter)).Append('|'); sbSendMessage.Append(sBodyFrame).Append('|'); sbSendMessage.Append(manager.GetBodyHandData(ref liRelTime, delimiter)).Append('|'); if (bFaceParamsRequested && faceManager && faceManager.IsFaceTrackingInitialized()) { sbSendMessage.Append(faceManager.GetFaceParamsAsCsv(delimiter)).Append('|'); } if (gestureManager && gestureManager.IsVisualGestureInitialized()) { sbSendMessage.Append(gestureManager.GetGestureDataAsCsv(delimiter)).Append('|'); } if (speechManager && speechManager.IsSapiInitialized()) { sbSendMessage.Append(speechManager.GetSpeechDataAsCsv(delimiter)).Append('|'); } if (sbSendMessage.Length > 0 && sbSendMessage[sbSendMessage.Length - 1] == '|') { sbSendMessage.Remove(sbSendMessage.Length - 1, 1); } byte[] btSendMessage = System.Text.Encoding.UTF8.GetBytes(sbSendMessage.ToString()); //Debug.Log("Message " + sbSendMessage.Length + " chars: " + sbSendMessage.ToString()); //Debug.Log("Encoded into " + btSendMessage.Length + " bytes: " + ByteArrayToString(btSendMessage, btSendMessage.Length)); int compSize = 0; if (compressor != null && btSendMessage.Length > 100 && !websocketHost) { compSize = compressor.Compress(btSendMessage, 0, btSendMessage.Length, compressBuffer, 0); } else { System.Buffer.BlockCopy(btSendMessage, 0, compressBuffer, 0, btSendMessage.Length); compSize = btSendMessage.Length; } //Debug.Log("Compressed into " + compSize + " bytes: " + ByteArrayToString(compressBuffer, compSize)); // // check face-tracking requests // bool bFaceParams = false, bFaceVertices = false, bFaceUvs = false, bFaceTriangles = false; // if(faceManager && faceManager.IsFaceTrackingInitialized()) // CheckFacetrackRequests(out bFaceParams, out bFaceVertices, out bFaceUvs, out bFaceTriangles); // // byte[] btFaceParams = null; // if(bFaceParams) // { // string sFaceParams = faceManager.GetFaceParamsAsCsv(); // if(!string.IsNullOrEmpty(sFaceParams)) // btFaceParams = System.Text.Encoding.UTF8.GetBytes(sFaceParams); // } // // // next chunk of data for face vertices // byte[] btFaceVertices = null; // string sFvMsgHead = string.Empty; // GetNextFaceVertsChunk(bFaceVertices, bFaceUvs, ref btFaceVertices, out sFvMsgHead); // // // next chunk of data for face triangles // byte[] btFaceTriangles = null; // string sFtMsgHead = string.Empty; // GetNextFaceTrisChunk(bFaceTriangles, ref btFaceTriangles, out sFtMsgHead); foreach (int connId in alConnectionId) { HostConnection conn = dictConnection[connId]; if (conn.keepAlive) { conn.keepAlive = false; dictConnection[connId] = conn; if (conn.reqDataType != null && conn.reqDataType.Contains("kb,")) { //LogToConsole(conn.connectionId + "-sendkb: " + conn.reqDataType); error = 0; //if(!NetworkTransport.Send(conn.hostId, conn.connectionId, conn.channelId, btSendMessage, btSendMessage.Length, out error)) if (!NetworkTransport.Send(conn.hostId, conn.connectionId, conn.channelId, compressBuffer, compSize, out error)) { string sMessage = "Error sending body data via conn " + conn.connectionId + ": " + (NetworkError)error; LogErrorToConsole(sMessage); if (serverStatusText) { serverStatusText.text = sMessage; } } } // if(bFaceParams && btFaceParams != null && // conn.reqDataType != null && conn.reqDataType.Contains("fp,")) // { // //Debug.Log(conn.connectionId + "-sendfp: " + conn.reqDataType); // // error = 0; // if(!NetworkTransport.Send(conn.hostId, conn.connectionId, conn.channelId, btFaceParams, btFaceParams.Length, out error)) // { // string sMessage = "Error sending face params via conn " + conn.connectionId + ": " + (NetworkError)error; // Debug.LogError(sMessage); // // if(serverStatusText) // { // serverStatusText.text = sMessage; // } // } // } // // if(bFaceVertices && btFaceVertices != null && // conn.reqDataType != null && conn.reqDataType.Contains("fv,")) // { // //Debug.Log(conn.connectionId + "-sendfv: " + conn.reqDataType + " - " + sFvMsgHead); // // error = 0; // if(!NetworkTransport.Send(conn.hostId, conn.connectionId, conn.channelId, btFaceVertices, btFaceVertices.Length, out error)) // { // string sMessage = "Error sending face verts via conn " + conn.connectionId + ": " + (NetworkError)error; // Debug.LogError(sMessage); // // if(serverStatusText) // { // serverStatusText.text = sMessage; // } // } // } // // if(bFaceTriangles && btFaceTriangles != null && // conn.reqDataType != null && conn.reqDataType.Contains("ft,")) // { // //Debug.Log(conn.connectionId + "-sendft: " + conn.reqDataType + " - " + sFtMsgHead); // // error = 0; // if(!NetworkTransport.Send(conn.hostId, conn.connectionId, conn.channelId, btFaceTriangles, btFaceTriangles.Length, out error)) // { // string sMessage = "Error sending face tris via conn " + conn.connectionId + ": " + (NetworkError)error; // Debug.LogError(sMessage); // // if(serverStatusText) // { // serverStatusText.text = sMessage; // } // } // } } } } } catch (System.Exception ex) { LogErrorToConsole(ex.Message + "\n" + ex.StackTrace); if (serverStatusText) { serverStatusText.text = ex.Message; } } }
private string GetDescription() { string sql = string.Empty; ADODB.Recordset rs; switch (ItemTypeID) { case 1: if (DMSConnection.GetInstance().Connection != null) { sql = "SELECT itm_desc FROM dbo.item WHERE itm_num=" + Value; } else if (HostConnection.GetInstance().Connection != null) { sql = "SELECT ITM_DES_TXT FROM Lowes.T024_ITM WHERE T024_ITM_NBR=" + Value; } break; case 2: if (DMSConnection.GetInstance().Connection != null) { sql = "SELECT vnd_nme FROM dbo.e537a_rcv_hdr WHERE e058_po_nbr =" + Value; } else if (HostConnection.GetInstance().Connection != null) { sql = "SELECT VND_NME FROM Lowes.W001_PO_DAL_HDR WHERE E058_PO_NBR=" + Value; } break; case 3: Facility fac = new Facility().Where("fac_num=" + Value).SingleOrDefault(); return(fac == null ? string.Empty : fac.Name); case 4: string retVal = "Unknown vendor."; if (HostConnection.GetInstance().Connection != null) { sql = "SELECT VBU_NME FROM LOWES.T616_VBU WHERE T616_VBU_NBR=" + Value + " AND T617_FNC_TYP_CD=1"; try { retVal = HostConnection.GetInstance().Recordset(sql).Fields[0].Value.ToString(); } catch (Exception) { retVal = "Unknown Vendor."; } } return(retVal); default: return("Unknown."); } if (DMSConnection.GetInstance().Connection != null) { rs = DMSConnection.GetInstance().Recordset(sql); } else { rs = HostConnection.GetInstance().Recordset(sql); } string output; try { if (!(rs.BOF && rs.EOF)) { output = rs.Fields[0].Value.ToString(); } else { output = "Unknown."; } } catch (Exception) { output = "Unknown error occured."; } rs.Close(); rs = null; //string output = "Not implimented yet."; return(output); }
static HostConnection() { _instance = new HostConnection(); }
void Update() { int recHostId; int connectionId; int recChannelId; int dataSize; bool connListUpdated = false; // if(manager == null) // { // manager = KinectManager.Instance; // } if(backgroundImage && backgroundImage.texture == null) { backgroundImage.texture = manager ? manager.GetUsersLblTex() : null; } try { byte error = 0; NetworkEventType recData = NetworkTransport.Receive(out recHostId, out connectionId, out recChannelId, recBuffer, bufferSize, out dataSize, out error); switch (recData) { case NetworkEventType.Nothing: //1 break; case NetworkEventType.ConnectEvent: //2 if(recHostId == serverHostId && recChannelId == serverChannelId && !dictConnection.ContainsKey(connectionId)) { HostConnection conn = new HostConnection(); conn.hostId = recHostId; conn.connectionId = connectionId; conn.channelId = recChannelId; conn.keepAlive = true; //conn.matrixSent = false; dictConnection[connectionId] = conn; connListUpdated = true; } break; case NetworkEventType.DataEvent: //3 if(recHostId == serverHostId && recChannelId == serverChannelId && dictConnection.ContainsKey(connectionId)) { HostConnection conn = dictConnection[connectionId]; string sRecvMessage = System.Text.Encoding.UTF8.GetString(recBuffer, 0, dataSize); if(sRecvMessage == "ka") { conn.keepAlive = true; dictConnection[connectionId] = conn; } } break; case NetworkEventType.DisconnectEvent: //4 if(dictConnection.ContainsKey(connectionId)) { dictConnection.Remove(connectionId); connListUpdated = true; } break; } if(connListUpdated) { // get all connection IDs alConnectionId.Clear(); alConnectionId.AddRange(dictConnection.Keys); // display the number of connections StringBuilder sbConnStatus = new StringBuilder(); sbConnStatus.AppendFormat("Server running: {0} connection(s)", dictConnection.Count); Debug.Log(sbConnStatus); if(statusText) { statusText.text = sbConnStatus.ToString(); } } // send body frame to available connections string sBodyFrame = manager ? manager.GetBodyFrameData(ref liRelTime, ref fCurrentTime) : string.Empty; if(sBodyFrame.Length > 0 && dictConnection.Count > 0) { StringBuilder sbSendMessage = new StringBuilder(); sbSendMessage.Append(manager.GetWorldMatrixData()).Append('|'); sbSendMessage.Append(sBodyFrame).Append('|'); sbSendMessage.Append(manager.GetBodyHandData(ref liRelTime)).Append('|'); if(sbSendMessage.Length > 0 && sbSendMessage[sbSendMessage.Length - 1] == '|') { sbSendMessage.Remove(sbSendMessage.Length - 1, 1); } byte[] btSendMessage = System.Text.Encoding.UTF8.GetBytes(sbSendMessage.ToString()); foreach(int connId in alConnectionId) { HostConnection conn = dictConnection[connId]; if(conn.keepAlive) { conn.keepAlive = false; dictConnection[connId] = conn; error = 0; if(!NetworkTransport.Send(conn.hostId, conn.connectionId, conn.channelId, btSendMessage, btSendMessage.Length, out error)) { Debug.LogError("Error sending packet via connection " + conn.connectionId + ": " + (NetworkError)error); } } } } } catch (System.Exception ex) { Debug.LogError(ex.Message + "\n" + ex.StackTrace); if(statusText) { statusText.text = ex.Message; } } }
void Update() { int recHostId; int connectionId; int recChannelId; int dataSize; bool connListUpdated = false; // if(manager == null) // { // manager = KinectManager.Instance; // } if (backgroundImage && backgroundImage.texture == null) { backgroundImage.texture = manager ? manager.GetUsersLblTex() : null; } try { byte error = 0; NetworkEventType recData = NetworkTransport.Receive(out recHostId, out connectionId, out recChannelId, recBuffer, bufferSize, out dataSize, out error); switch (recData) { case NetworkEventType.Nothing: //1 break; case NetworkEventType.ConnectEvent: //2 if (recHostId == serverHostId && recChannelId == serverChannelId && !dictConnection.ContainsKey(connectionId)) { HostConnection conn = new HostConnection(); conn.hostId = recHostId; conn.connectionId = connectionId; conn.channelId = recChannelId; conn.keepAlive = true; //conn.matrixSent = false; dictConnection[connectionId] = conn; connListUpdated = true; } break; case NetworkEventType.DataEvent: //3 if (recHostId == serverHostId && recChannelId == serverChannelId && dictConnection.ContainsKey(connectionId)) { HostConnection conn = dictConnection[connectionId]; string sRecvMessage = System.Text.Encoding.UTF8.GetString(recBuffer, 0, dataSize); if (sRecvMessage == "ka") { conn.keepAlive = true; dictConnection[connectionId] = conn; } } break; case NetworkEventType.DisconnectEvent: //4 if (dictConnection.ContainsKey(connectionId)) { dictConnection.Remove(connectionId); connListUpdated = true; } break; } if (connListUpdated) { // get all connection IDs alConnectionId.Clear(); alConnectionId.AddRange(dictConnection.Keys); // display the number of connections StringBuilder sbConnStatus = new StringBuilder(); sbConnStatus.AppendFormat("Server running: {0} connection(s)", dictConnection.Count); Debug.Log(sbConnStatus); if (statusText) { statusText.text = sbConnStatus.ToString(); } } // send body frame to available connections string sBodyFrame = manager ? manager.GetBodyFrameData(ref liRelTime, ref fCurrentTime) : string.Empty; if (sBodyFrame.Length > 0 && dictConnection.Count > 0) { StringBuilder sbSendMessage = new StringBuilder(); sbSendMessage.Append(manager.GetWorldMatrixData()).Append('|'); sbSendMessage.Append(sBodyFrame).Append('|'); sbSendMessage.Append(manager.GetBodyHandData(ref liRelTime)).Append('|'); if (sbSendMessage.Length > 0 && sbSendMessage[sbSendMessage.Length - 1] == '|') { sbSendMessage.Remove(sbSendMessage.Length - 1, 1); } byte[] btSendMessage = System.Text.Encoding.UTF8.GetBytes(sbSendMessage.ToString()); foreach (int connId in alConnectionId) { HostConnection conn = dictConnection[connId]; if (conn.keepAlive) { conn.keepAlive = false; dictConnection[connId] = conn; error = 0; if (!NetworkTransport.Send(conn.hostId, conn.connectionId, conn.channelId, btSendMessage, btSendMessage.Length, out error)) { Debug.LogError("Error sending packet via connection " + conn.connectionId + ": " + (NetworkError)error); } } } } } catch (System.Exception ex) { Debug.LogError(ex.Message + "\n" + ex.StackTrace); if (statusText) { statusText.text = ex.Message; } } }