public void fireAndForgetMessage(RconMessageType type, string command) { if (this.isInit == false) { return; } this.internalSendMessage(type, command, true); }
public string sendMessage(RconMessageType type, string command) { if (this.isInit == false) { return(string.Empty); } return(this.internalSendMessage(type, command).Answer); }
private RconMessageAnswer internalSendMessage(RconMessageType type, string command, bool fireAndForget = false) { this.threadLock.EnterWriteLock(); try { var messageNumber = ++this.messageCounter; var msg = new List <byte>(); msg.AddRange(BitConverter.GetBytes(10 + command.Length)); msg.AddRange(BitConverter.GetBytes(messageNumber)); msg.AddRange(BitConverter.GetBytes(type.Value)); msg.AddRange(ASCIIEncoding.ASCII.GetBytes(command)); msg.AddRange(PADDING); this.writer.Write(msg.ToArray()); this.writer.Flush(); this.threadLock.ExitWriteLock(); if (fireAndForget && RconServerIsMultiThreaded) { var id = messageNumber; Task.Factory.StartNew(() => { waitReadMessage(id); }); return(RconMessageAnswer.EMPTY); } return(waitReadMessage(messageNumber)); } catch { return(RconMessageAnswer.EMPTY); } finally { try { this.threadLock.ExitWriteLock(); } catch { } } }
private RconMessageAnswer internalSendMessage(RconMessageType type, string command, bool fireAndForget = false) { this.threadLock.EnterWriteLock(); try { var messageNumber = ++this.messageCounter; var msg = new List<byte>(); msg.AddRange(BitConverter.GetBytes(10 + command.Length)); msg.AddRange(BitConverter.GetBytes(messageNumber)); msg.AddRange(BitConverter.GetBytes(type.Value)); msg.AddRange(ASCIIEncoding.ASCII.GetBytes(command)); msg.AddRange(PADDING); this.writer.Write(msg.ToArray()); this.writer.Flush(); this.threadLock.ExitWriteLock(); if (fireAndForget && RconServerIsMultiThreaded) { var id = messageNumber; Task.Factory.StartNew(() => { waitReadMessage(id); }); return RconMessageAnswer.EMPTY; } return waitReadMessage(messageNumber); } catch { return RconMessageAnswer.EMPTY; } finally { try { this.threadLock.ExitWriteLock(); } catch { } } }
public string sendMessage(RconMessageType type, string command) { if (this.isInit == false) { return string.Empty; } return this.internalSendMessage(type, command).Answer; }