public void sendMessageUDP(UtopiaMessage msg) { // add time-stamp information if not already there. if ((msg.getTimeStamp() < 0)) { msg.setTimeStamp(getTimeStamp()); } serializeMessage(msg); udpClient.Send(msgbuffer.array(), (int)msgbuffer.remaining()); }
public void serializeMessage(UtopiaMessage msg) { // serialize Event into tempory buffer (to get it's size) tmpbuffer.clear(); msg.serialize(tmpbuffer); tmpbuffer.flip(); // Console.WriteLine("Message Payload size" + tmpbuffer.remaining()); // serialize the full message with header into the msgbuffer msgbuffer.clear(); RawMessage.serialize(msgbuffer, msg.msgID(), msg.getVersion(), tmpbuffer); msgbuffer.flip(); }
public void sendMessage(UtopiaMessage msg) { // add time-stamp information if not already there. if ((msg.getTimeStamp() < 0)) { msg.setTimeStamp(getTimeStamp()); } serializeMessage(msg); networkStream.Write(msgbuffer.array(), 0, (int)msgbuffer.remaining()); sendHeartbeatIfTimeout(); }
public List <UtopiaMessage> getNewMessages() { List <UtopiaMessage> inmessageQueue = new List <UtopiaMessage>(); inbuffer.clear(); // copy from the stream to the byte-buffer // TODO: [] check for stream close! while (networkStream.DataAvailable && inbuffer.capacity() > inbuffer.position()) { inbuffer.put((byte)networkStream.ReadByte()); } inbuffer.flip(); if (VERBOSITY >= 1) { Console.WriteLine(inbuffer.remaining() + " to read in channel"); } while ((inbuffer.remaining() > 0)) { RawMessage rawmessage = null; try { rawmessage = RawMessage.deserialize(inbuffer); } catch (ClientException ex) { Console.WriteLine("Something wrong deserializing client message... skipped"); Console.WriteLine(ex.getMessage()); break; } try { UtopiaMessage msg = rawmessage.decodePayload(); inmessageQueue.Add(msg); } catch (ClientException ex) { Console.WriteLine("Something wrong decoding client message... skipped"); Console.WriteLine(ex.getMessage()); } } if ((VERBOSITY >= 1)) { Console.WriteLine(("New message queue size: " + inmessageQueue.Count)); } sendHeartbeatIfTimeout(); return(inmessageQueue); }
public UtopiaMessage decodePayload() { // Decode the payload UtopiaMessage evt = null; if ((this.msgID == StimulusEvent.MSGID)) { if ((VERBOSITY > 2)) { System.Console.WriteLine("Trying to read " + StimulusEvent.MSGNAME + " message"); } evt = StimulusEvent.deserialize(this.msgbuffer); } else if ((this.msgID == PredictedTargetProb.MSGID)) { if ((VERBOSITY > 2)) { System.Console.WriteLine("Trying to read " + PredictedTargetProb.MSGNAME + " message"); } evt = PredictedTargetProb.deserialize(this.msgbuffer); } else if ((this.msgID == ModeChange.MSGID)) { if ((VERBOSITY > 2)) { System.Console.WriteLine("Trying to read " + ModeChange.MSGNAME + " message"); } evt = ModeChange.deserialize(this.msgbuffer); } else if ((this.msgID == Reset.MSGID)) { if ((VERBOSITY > 2)) { System.Console.WriteLine("Trying to read " + Reset.MSGNAME + " message"); } evt = Reset.deserialize(this.msgbuffer); } else if ((this.msgID == NewTarget.MSGID)) { if ((VERBOSITY > 2)) { System.Console.WriteLine("Trying to read " + NewTarget.MSGNAME + " message"); } evt = NewTarget.deserialize(this.msgbuffer); } else if ((this.msgID == Heartbeat.MSGID)) { if ((VERBOSITY > 2)) { System.Console.WriteLine("Trying to read " + Heartbeat.MSGNAME + " message"); } evt = Heartbeat.deserialize(this.msgbuffer); } else { throw new ClientException("Unsupported Message type: " + this.msgID); } if ((VERBOSITY > 1)) { System.Console.WriteLine("Got message: " + evt.ToString()); } return(evt); }