public void StoreParamValue(ushort id, byte[] encodedValue) { _log.Debug($"Requesting to set param {id}"); var messageBuilder = new MessageBuilder((byte)CrtpPort.PARAM, (byte)ParamConfigurator.ParamChannel.WRITE_CHANNEL); int expectedReplyLength; if (_useV2) { messageBuilder.Add(id); expectedReplyLength = 2; } else { messageBuilder.Add((byte)(id & 0xFF)); expectedReplyLength = 1; } messageBuilder.Add(encodedValue); var msg = messageBuilder.Build(); lock (_lock) { _requests.Enqueue(new ParameterRequest(id, msg, msg.Data.Take(expectedReplyLength).ToArray())); _waitForContent.Set(); } }
// Update is called once per frame void Update() { if (Input.GetButton("Fire1") && Time.time > nextFire) { MessageBuilder msg = new MessageBuilder(MessageType.SHOOTING_MASTER_SIMPLE); msg.Add(humanEntity.Position.x).Add(humanEntity.Position.y).Add(humanEntity.Position.z); msg.Add(humanEntity.Rotation.x).Add(humanEntity.Rotation.y).Add(humanEntity.Rotation.z).Add(humanEntity.Rotation.w); msg.Add("qwe"); Debug.Log("123123"); TCPHandler.getInstance().send(msg.Build()); nextFire = Time.time + fireRate; Vector3 position = transform.TransformPoint(0, 0, 0.2f); ProjectileFactory.CreateProjectile(humanEntity, "qwe"); /* Instantiate(blaster, position, Quaternion.Euler( cameraHeadTransform.eulerAngles.x + 90, transform.eulerAngles.y, 0 ));*/ } }
public void TestTypes() { byte[] buffer = new byte[100]; MessageBuilder builder = new MessageBuilder(buffer, 0); builder.Add(1, "Föo"); byte[] blob = Encoding.UTF8.GetBytes("hihi"); builder.Add(200, blob); builder.Add(3, true); builder.Add(40, false); Assert.AreEqual(17, builder.GetPosition()); // string '1' Assert.AreEqual((byte)10, buffer[0]); Assert.AreEqual((byte)4, buffer[1]); // serialized string length Assert.AreEqual((byte)70, buffer[2]); Assert.AreEqual((byte)195, buffer[3]); Assert.AreEqual((byte)182, buffer[4]); Assert.AreEqual((byte)111, buffer[5]); // blob '200' Assert.AreEqual((byte)251, buffer[6]); Assert.AreEqual((byte)128, buffer[7]); Assert.AreEqual((byte)72, buffer[8]); Assert.AreEqual((byte)4, buffer[9]); // length of bytearray Assert.AreEqual((byte)104, buffer[10]); // 'h' Assert.AreEqual((byte)105, buffer[11]); // 'i' Assert.AreEqual((byte)104, buffer[12]); // 'h' Assert.AreEqual((byte)105, buffer[13]); // 'i' // bool-true '3' Assert.AreEqual((byte)28, buffer[14]); // bool-false '40' Assert.AreEqual((byte)253, buffer[15]); Assert.AreEqual((byte)40, buffer[16]); MessageParser parser = new MessageParser(buffer, 0, builder.GetPosition()); Assert.AreEqual(MessageParser.State.FoundTag, parser.Next()); Assert.AreEqual(1, parser.GetTag()); Assert.AreEqual("Föo", parser.GetString()); Assert.AreEqual(MessageParser.State.FoundTag, parser.Next()); Assert.AreEqual(200, parser.GetTag()); byte[] parsed = parser.getByteArray(); Assert.AreEqual(blob.Length, parsed.Length); for (int i = 0; i < blob.Length; ++i) { Assert.AreEqual(blob[i], parsed[i]); } Assert.AreEqual(MessageParser.State.FoundTag, parser.Next()); Assert.AreEqual(3, parser.GetTag()); Assert.AreEqual(true, parser.GetBoolean()); Assert.AreEqual(MessageParser.State.FoundTag, parser.Next()); Assert.AreEqual(40, parser.GetTag()); Assert.AreEqual(false, parser.GetBoolean()); Assert.AreEqual(MessageParser.State.EndOfDocument, parser.Next()); }
public MessageBuilderWithNewModelTests() { model = new PersonModel(); bulder = new MessageBuilder<PersonModel>(model); bulder.Add(new CreatePersonMessageMap()); bulder.Add(new ChangeAddressMessageMap()); }
/// <summary> /// Publish a message received over the connection /// /// If the connection is subscribing to the topic the message is published /// to it will receive the message back. /// </summary> /// <param name="data"></param> private void ProcessMessage(IDictionary <string, object> data) { // Must be authenticated to send messages if (!m_authenticated) { return; } // Make sure the data is valid ITopic topic = m_messagebus.Create(data[MessageTopic].ToString()); if (topic == null) { return; } // Create the message IDictionary <string, object> message = data[MessagePayload] as IDictionary <string, object>; if (message == null) { return; } // Convert to a message instance and send lock (m_builder) { m_builder.Clear(); foreach (string key in message.Keys) { m_builder.Add(key, message[key]); } m_messagebus.Publish(topic, m_builder.CreateMessage()); } }
public void Write(string message, LogLevel logLevel) { // If we haven't been configured we just send the output to the console if (m_targets == null) { System.Console.WriteLine("{0}:{1}", logLevel, message); return; } // Get the target information if (!m_targets.ContainsKey(logLevel)) { return; } LogTarget target = m_targets[logLevel]; // Split the source out of the message (if it exists) lock (this) { DateTime now = DateTime.Now; Match match = SourceRegex.Match(message); string source = ""; if (match.Success) { source = message.Substring(0, match.Length - 2); message = message.Substring(match.Length); } if (target.m_output != null) { target.m_output.WriteLine("{0:hh:mm:ss} {1} ({2}) {3}", now, logLevel, source, message); target.m_output.Flush(); } if (target.m_topic != null) { IMessageBus messageBus = Locator.Current.GetService <IMessageBus>(); m_builder.Add("logLevel", logLevel.ToString()); m_builder.Add("source", source); m_builder.Add("message", message); messageBus.Publish(target.m_topic, m_builder.CreateMessage()); } // Check for log file rollover if (now.DayOfYear != m_lastLogOpen.DayOfYear) { Enable(Level); } } }
public void testAddingAndGettingAnIncompleteMessage() { MessageBuilder builder = new MessageBuilder('#', '%'); builder.Add("#"); Assert.AreEqual(0, builder.MessageCount); Assert.AreEqual(null, builder.GetNextMessage()); builder.Add("He"); Assert.AreEqual(0, builder.MessageCount); Assert.AreEqual(null, builder.GetNextMessage()); builder.Add("llo%"); Assert.AreEqual(1, builder.MessageCount); Assert.AreEqual("Hello", builder.GetNextMessage()); Assert.AreEqual(null, builder.GetNextMessage()); }
private static void LogIn(Command cmd) { string str = cmd.Parameters[0]; instance.token = str; MessageBuilder mb = new MessageBuilder(MessageType.LOGIN); mb.Add(str); TCPHandler.getInstance().send(mb.Build()); }
/// <summary> /// Save the log configuration in the Crazyflie /// </summary> internal void Create() { if (!Identifier.HasValue) { throw new InvalidOperationException("LogConfig not yet correctly added (no identifier)."); } var messageBuilder = new MessageBuilder( (byte)CrtpPort.LOGGING, (byte)Logger.LogChannel.CHAN_SETTINGS); if (UseV2) { messageBuilder.Add((byte)Logger.LogConfigCommand.CMD_CREATE_BLOCK_V2); } else { messageBuilder.Add((byte)Logger.LogConfigCommand.CMD_CREATE_BLOCK); } messageBuilder.Add(Identifier.Value); foreach (var variable in _logVariables) { var storage = variable.GetStorageAndFetchByte(); if (!variable.IsTocVariable) // Memory location { _log.Debug($"Logging to raw memory {storage} 0x{variable.Address.ToString("X")}"); messageBuilder.Add(storage); messageBuilder.Add(variable.Address); } else { var tocId = _tocContainer.CurrentToc.GetElementId(variable.Name); _log.Debug($"Adding {variable.Name} with id={tocId} and type={storage}"); messageBuilder.Add(storage); if (UseV2) { messageBuilder.Add((byte)(tocId & 0x0ff)); messageBuilder.Add((byte)((tocId >> 8) & 0x0ff)); } else { messageBuilder.Add((byte)(tocId & 0x0ff)); } } } _log.Debug($"Adding log block id {Identifier}"); var msg = messageBuilder.Build(); _communicator.SendMessageExcpectAnswer(msg, msg.Data.Take(2).ToArray()); }
/// <summary> /// Run the messagebus /// /// This is a blocking method, it will run in a loop until the /// server is requested to shut down. /// </summary> private void Run() { QueuedMessage message; while (true) { if (m_queue.TryTake(out message, QueueWaitPeriod)) { // Dispatch to all subscribers foreach (ISubscriber subscriber in message.Subscribers) { if (subscriber != message.Source) { Task.Factory.StartNew(() => { try { subscriber.MessageReceived(message.Topic, message.Source, message.Payload); m_messagesProcessed++; } catch (Exception ex) { this.Log().Error("Failed to dispatch message to subscriber - {0}", ex.ToString()); } }); } } } // Do we need to send a heartbeat message ? if ((DateTime.Now - m_lastHeartbeat).TotalMilliseconds >= HeartBeatPeriod) { m_builder.Add("messagesReceived", m_messagesReceived); m_builder.Add("messagesHandled", m_messagesProcessed); Publish(Create(Topics.ServerHeartbeat), m_builder.CreateMessage()); this.Log().Info("Received {0} messages, {1} dispatched to subscribers.", m_messagesReceived, m_messagesProcessed); m_messagesProcessed = 0; m_messagesReceived = 0; m_lastHeartbeat = DateTime.Now; } } }
public void testAddingAndGettingACompleteMessageThatHasNoPayload() { MessageBuilder builder = new MessageBuilder('#', '%'); builder.Add("#%"); Assert.AreEqual(1, builder.MessageCount); Assert.AreEqual("", builder.GetNextMessage()); Assert.AreEqual(0, builder.MessageCount); Assert.AreEqual(null, builder.GetNextMessage()); }
/// <summary> /// Upgrade DPO packages from SQL SERVER /// </summary> /// <param name="path"></param> /// <returns></returns> public MessageBuilder UpgradePackage(string path) { MessageBuilder messages = new MessageBuilder(); foreach (Type type in assembly.GetTypes()) { if (type.BaseType != typeof(DPObject)) { continue; } TableAttribute[] A = type.GetAttributes <TableAttribute>(); if (A.Length == 0 || !A[0].Pack) { continue; } Packing packing = new Packing(type); packing.Pack(); if (!packing) { messages.Add(Message.Information(string.Format("Table {0} is empty.", packing.TableName))); } else { string fileName = string.Format("{0}\\{1}.cs", path, packing.ClassName); StreamWriter sw = new StreamWriter(fileName); sw.Write(packing.ToString()); sw.Close(); messages.Add(Message.Information(string.Format("Table {0} packed into {1}.", packing.TableName, fileName))); } } return(messages); }
/// <summary> /// Place a param update request on the queue /// </summary> public void RequestLoadParamValue(ushort id) { _log.Debug($"Requesting read param value {id}"); var messageBuilder = new MessageBuilder((byte)CrtpPort.PARAM, (byte)ParamConfigurator.ParamChannel.READ_CHANNEL); if (_useV2) { messageBuilder.Add(id); } else { messageBuilder.Add((byte)(id & 0xFF)); } var msg = messageBuilder.Build(); lock (_lock) { _requests.Enqueue(new ParameterRequest(id, msg, msg.Data.Take(msg.Data.Length).ToArray())); _waitForContent.Set(); } }
private static MessageBuilder CreateTable(Type dpoType) { MessageBuilder messages = new MessageBuilder(); DPObject dpo = (DPObject)Activator.CreateInstance(dpoType); int tableId = dpo.TableName.Id; if (dpo.CreateTable()) { messages.Add(Message.Information(string.Format("Table {0} created.", dpo.TableName))); //if (tableId == -1) //register new table to dictionary //tableId = dpo.RegisterEntireTable(); } else { messages.Add(Message.Information(string.Format("Table {0} exists, cannot be created.", dpo.TableName))); } return(messages); }
public void testAddingAndGettingTwoCompleteMessagesWithGarbage() { MessageBuilder builder = new MessageBuilder('#', '%'); builder.Add("g#Hello%g#GoodBye%g"); Assert.AreEqual(2, builder.MessageCount); Assert.AreEqual("Hello", builder.GetNextMessage()); Assert.AreEqual(1, builder.MessageCount); Assert.AreEqual("GoodBye", builder.GetNextMessage()); Assert.AreEqual(0, builder.MessageCount); Assert.AreEqual(null, builder.GetNextMessage()); }
void FixedUpdate() { if(login) { MessageBuilder mb = new MessageBuilder(MessageType.MOVEMENT_SYNC); mb.Add(playerObj.transform.position.x); mb.Add(playerObj.transform.position.y); mb.Add(playerObj.transform.position.z); mb.Add(playerObj.transform.rotation.x); mb.Add(playerObj.transform.rotation.y); mb.Add(playerObj.transform.rotation.z); mb.Add(playerObj.transform.rotation.w); TCPHandler.getInstance().send(mb.Build()); } }
public void TestCase() { byte[] buffer = new byte[100]; { MessageBuilder builder = new MessageBuilder(buffer, 0); builder.Add(15, 6512); Assert.AreEqual(3, builder.GetPosition()); } Assert.AreEqual(120, buffer[0]); Assert.AreEqual((byte)177, buffer[1]); Assert.AreEqual(112, buffer[2]); { MessageParser parser = new MessageParser(buffer, 0, 3); Assert.AreEqual(MessageParser.State.FoundTag, parser.Next()); Assert.AreEqual(15, parser.GetTag()); Assert.AreEqual(6512, parser.GetInt()); Assert.AreEqual(MessageParser.State.EndOfDocument, parser.Next()); } { MessageBuilder builder = new MessageBuilder(buffer, 0); builder.Add(129, 6512); Assert.AreEqual(5, builder.GetPosition()); } Assert.AreEqual((byte)248, buffer[0]); Assert.AreEqual((byte)128, buffer[1]); Assert.AreEqual(1, buffer[2]); Assert.AreEqual((byte)177, buffer[3]); Assert.AreEqual((byte)112, buffer[4]); { MessageParser parser = new MessageParser(buffer, 0, 5); Assert.AreEqual(MessageParser.State.FoundTag, parser.Next()); Assert.AreEqual(129, parser.GetTag()); Assert.AreEqual(6512, parser.GetInt()); Assert.AreEqual(MessageParser.State.EndOfDocument, parser.Next()); } }
/// <summary> /// Upgrade DPO packages from SQL SERVER /// </summary> /// <param name="path"></param> /// <returns></returns> public MessageBuilder UpgradePackage(string path) { MessageBuilder messages = new MessageBuilder(); foreach (Type type in assembly.GetTypes()) { if (type.BaseType != typeof(DPObject)) continue; TableAttribute[] A = type.GetAttributes<TableAttribute>(); if (A.Length == 0 || !A[0].Pack) continue; Packing packing = new Packing(type); packing.Pack(); if (!packing) { messages.Add(Message.Information(string.Format("Table {0} is empty.", packing.TableName))); } else { string fileName = string.Format("{0}\\{1}.cs", path, packing.ClassName); StreamWriter sw = new StreamWriter(fileName); sw.Write(packing.ToString()); sw.Close(); messages.Add(Message.Information(string.Format("Table {0} packed into {1}.", packing.TableName, fileName))); } } return messages; }
/// <summary> /// 更新ボタン押下時処理 /// </summary> /// <param name="sender">イベント送信オブジェクト</param> /// <param name="e">イベント引数</param> private void BtnUpdate_Click(object sender, EventArgs e) { var canUpdate = true; this.TxtTitle.BackColor = Color.White; this.DtpLimit.BackColor = Color.White; this.CmbAttachFiles.BackColor = Color.White; var msgBuilder = new MessageBuilder(); if (string.IsNullOrEmpty(this.TxtTitle.Text)) { msgBuilder.Add(MessageKind.Error, "タイトルを入力してください"); this.TxtTitle.BackColor = Color.Red; canUpdate = false; } if (string.IsNullOrEmpty(this.DtpLimit.Text)) { msgBuilder.Add(MessageKind.Error, "期限を入力してください"); this.DtpLimit.BackColor = Color.Red; canUpdate = false; } if (!canUpdate) { var errMsg = msgBuilder.CreateMessage(); MessageBox.Show(errMsg); return; } if (!this.target.Group.Equals(this.CmbGroup.SelectedItem)) { // グループ管理の差し替え var prevParent = ResourceManager.Instance.GetGroupInfo(this.target.Group); if (prevParent != null) { if (prevParent.ChildTaskItems.Contains(this.target)) { prevParent.ChildTaskItems.Remove(this.target); } } if (string.IsNullOrEmpty(this.CmbGroup.Text) || this.CmbGroup.SelectedItem == null) { this.target.Group = TaskGroupInfo.GetDefaultGroup().Key; } else { this.target.Group = ((TaskGroupInfo)this.CmbGroup.SelectedItem).Key; } var parent = ResourceManager.Instance.GetGroupInfo(this.target.Group); parent.ChildTaskItems.Add(this.target); } this.target.Title = this.TxtTitle.Text; this.target.DateTimeLimit = this.DtpLimit.Value; this.target.Memo = this.TxtMemo.Text; // 添付ファイルの取得 { // 削除ファイルの処理 var destattachList = new List <AttachedFileInfo>(); destattachList.AddRange(this.target.AttachFile); foreach (var info in this.attachFileDeleteList) { var path = info.FilePath; if (File.Exists(path)) { File.Delete(path); } if (destattachList.Contains(info)) { destattachList.Remove(info); } } // 追加ファイルの処理 foreach (var info in this.attachFileAddList) { destattachList.Add(info); File.Copy(info.OrgFilePath, info.FilePath, true); } this.target.AttachFile.Clear(); this.target.AttachFile.AddRange(destattachList); } this.CloseWindow(SubWindowResult.Submit); }
private static MessageBuilder CreateTable(Type dpoType) { MessageBuilder messages = new MessageBuilder(); DPObject dpo = (DPObject)Activator.CreateInstance(dpoType); int tableId = dpo.TableName.Id; if (dpo.CreateTable()) { messages.Add(Message.Information(string.Format("Table {0} created.", dpo.TableName))); //if (tableId == -1) //register new table to dictionary //tableId = dpo.RegisterEntireTable(); } else messages.Add(Message.Information(string.Format("Table {0} exists, cannot be created.", dpo.TableName))); return messages; }