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); } } }
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)); } }
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); }
private bool IsNMSObjectTypeSupported(object o) { return(ConversionSupport.IsNMSType(o) || o is List || o is Map || o is IPrimitiveMap || o is IList); }