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());
        }
Beispiel #2
0
 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();
 }
Beispiel #3
0
        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();
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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);
        }