示例#1
0
        protected virtual void CheckValidType(Object value)
        {
            if (value != null && !(value is IList) && !(value is IDictionary))
            {
                Type type = value.GetType();

                if (type.IsInstanceOfType(typeof(Object)) ||
                    (!type.IsPrimitive && !type.IsValueType && !type.IsAssignableFrom(typeof(string))) ||
                    (!ConversionSupport.IsNMSType(value))
                    )
                {
                    throw new NMSException("Invalid type: " + type.Name + " for value: " + value);
                }
            }
        }
示例#2
0
 public void WriteObject(object value)
 {
     FailIfReadOnlyMsgBody();
     if (value == null)
     {
         cloak.Put(value);
     }
     else if (value is byte[])
     {
         WriteBytes(value as byte[]);
     }
     else if (ConversionSupport.IsNMSType(value))
     {
         cloak.Put(value);
     }
     else
     {
         throw NMSExceptionSupport.CreateMessageFormatException(new Exception("Unsupported Object type: " + value.GetType().Name));
     }
 }
示例#3
0
        public object ReadObject()
        {
            FailIfWriteOnlyMsgBody();
            FailIfBytesInBuffer();
            object result = null;
            object value  = null;

            try
            {
                value = cloak.Peek();
                if (value == null)
                {
                    result = null;
                }
                else if (value is byte[])
                {
                    byte[] buffer = value as byte[];
                    result = new byte[buffer.Length];
                    Array.Copy(buffer, 0, result as byte[], 0, buffer.Length);
                }
                else if (ConversionSupport.IsNMSType(value))
                {
                    result = value;
                }
            }
            catch (EndOfStreamException eos)
            {
                throw NMSExceptionSupport.CreateMessageEOFException(eos);
            }
            catch (IOException ioe)
            {
                throw NMSExceptionSupport.CreateMessageFormatException(ioe);
            }
            catch (Exception e)
            {
                Tracer.InfoFormat("Unexpected exception caught reading Object stream. Exception = {0}", e);
                throw NMSExceptionSupport.Create("Unexpected exception caught reading Object stream.", e);
            }
            cloak.Pop();
            return(result);
        }
示例#4
0
 private bool IsNMSObjectTypeSupported(object o)
 {
     return(ConversionSupport.IsNMSType(o) || o is List || o is Map || o is IPrimitiveMap || o is IList);
 }