Exemple #1
0
        protected void AssertAreEquivalent(Message original, Message created)
        {
            Assert.AreEqual(original.GetType(), created.GetType());
            Assert.AreEqual(original.ChannelId, created.ChannelId);
            Assert.AreEqual(original.MessageType, created.MessageType);
            switch (original.MessageType)
            {
                case MessageType.Binary:
                    Assert.AreEqual(((BinaryMessage)original).Bytes, ((BinaryMessage)created).Bytes);
                    return;
                case MessageType.Object:
                    Assert.AreEqual(((ObjectMessage)original).Object, ((ObjectMessage)created).Object);
                    return;
                case MessageType.String:
                    Assert.AreEqual(((StringMessage)original).Text, ((StringMessage)created).Text);
                    return;

                case MessageType.System:
                    Assert.AreEqual(original.GetType(), created.GetType());
                    Assert.AreEqual(original.ToString(), created.ToString());
                    return;

                case MessageType.Session:
                    Assert.AreEqual(((SessionMessage)original).Action, ((SessionMessage)created).Action);
                    Assert.AreEqual(((SessionMessage)original).ClientId, ((SessionMessage)created).ClientId);
                    return;

                case MessageType.Tuple1D:
                    Assert.AreEqual(((TupleMessage)original).ClientId, ((TupleMessage)created).ClientId);
                    Assert.AreEqual(((TupleMessage)original).X, ((TupleMessage)created).X);
                    return;
                case MessageType.Tuple2D:
                    Assert.AreEqual(((TupleMessage)original).ClientId, ((TupleMessage)created).ClientId);
                    Assert.AreEqual(((TupleMessage)original).X, ((TupleMessage)created).X);
                    Assert.AreEqual(((TupleMessage)original).Y, ((TupleMessage)created).Y);
                    return;
                case MessageType.Tuple3D:
                    Assert.AreEqual(((TupleMessage)original).ClientId, ((TupleMessage)created).ClientId);
                    Assert.AreEqual(((TupleMessage)original).X, ((TupleMessage)created).X);
                    Assert.AreEqual(((TupleMessage)original).Y, ((TupleMessage)created).Y);
                    Assert.AreEqual(((TupleMessage)original).Z, ((TupleMessage)created).Z);
                    return;

                default:
                    throw new NotImplementedException();
            }
        }
Exemple #2
0
 /// <summary>
 /// Marshal the contents of the message <see cref="m"/> onto the stream <see cref="output"/>.
 /// The channelId and message type have already been placed on <see cref="output"/>.
 /// This method is **not responsible** for encoding the message payload length.
 /// </summary>
 /// <param name="m">the message contents to be marshalled</param>
 /// <param name="output">the destination for the marshalled message payload</param>
 /// <param name="tdc">the characteristics of the transport that is to be used for sending</param>
 protected virtual void MarshalContents(Message m, Stream output, ITransportDeliveryCharacteristics tdc)
 {
     // Individual marshalling methods are **NO LONGER RESPONSIBLE** for encoding
     // the payload length
     switch (m.MessageType)
     {
     case MessageType.Session:
         MarshalSessionAction((SessionMessage)m, output);
         break;
     case MessageType.System:
         // channelId is the system message type
         MarshalSystemMessage((SystemMessage)m, output);
         break;
     default:
         throw new MarshallingException(String.Format("ERROR: {0} cannot handle messages of type {1}",
             this.GetType().Name, m.GetType().Name));
     }
 }