public bool Equals(AMFValue obj) { if (obj.Type != obj.Type) { return(false); } switch (obj.Type) { case AMFValueType.Null: case AMFValueType.Undefined: case AMFValueType.ObjectEnd: return(true); default: return(this.Value.Equals(obj.Value)); } }
public CommandAMF3Message(RTMPMessage x) : base(x) { using (var reader=new AMF3Reader(new MemoryStream(x.Body))) { this.commandName = (string)reader.ReadValue(); this.transactionId = (int)reader.ReadValue(); this.commandObject = reader.ReadValue(); if (AMFValue.IsNull(CommandObject)) { this.commandObject = null; } var args = new List<AMFValue>(); while (reader.BaseStream.Position<reader.BaseStream.Length) { args.Add(reader.ReadValue()); } this.arguments = args; } }
public CommandAMF3Message( long timestamp, long stream_id, string command_name, int transaction_id, AMFValue command_object, IEnumerable<AMFValue> arguments) : base(RTMPMessageType.CommandAMF3, timestamp, stream_id, CreateBody(command_name, transaction_id, command_object, arguments)) { this.commandName = command_name; this.transactionId = transaction_id; this.commandObject = command_object; this.arguments = arguments.ToArray(); }
public override void WriteValue(AMFValue value) { if (value == null) { WriteNull(); return; } switch (value.Type) { case AMFValueType.Boolean: WriteBool((bool)value); break; case AMFValueType.ByteArray: WriteByteArray((byte[])value.Value); break; case AMFValueType.Date: WriteDate((DateTime)value); break; case AMFValueType.Double: WriteNumber((double)value); break; case AMFValueType.ECMAArray: WriteEcmaArray((IDictionary <string, AMFValue>)value.Value); break; case AMFValueType.Integer: WriteNumber((int)value); break; case AMFValueType.Null: WriteNull(); break; case AMFValueType.Object: WriteObject((AMFObject)value); break; case AMFValueType.ObjectEnd: WriteMarker(AMF0Marker.ObjectEnd); break; case AMFValueType.StrictArray: WriteStrictArray((AMFValue[])value); break; case AMFValueType.String: WriteString((string)value); break; case AMFValueType.Undefined: WriteMarker(AMF0Marker.Undefined); break; case AMFValueType.XML: WriteXML((string)value); break; case AMFValueType.XMLDocument: WriteXML((string)value); break; default: throw new ArgumentException(); } }
private AMFValue RegisterObject(AMFValue value) { objects.Add(value); return(value); }
private AMFValue RegisterObject(AMFValue value) { objects.Add(value); return value; }
public AMFValue(AMFValue x) { this.Type = x.Type; this.Value = x.Value; }
public abstract void WriteValue(AMFValue value);
public static bool IsNull(AMFValue value) { return value==null || value.Type==AMFValueType.Null; }
public static bool IsNull(AMFValue value) { return(value == null || value.Type == AMFValueType.Null); }
public override void WriteValue(AMFValue value) { if (value==null) { WriteNull(); return; } switch (value.Type) { case AMFValueType.Boolean: WriteBool((bool)value); break; case AMFValueType.ByteArray: WriteByteArray((byte[])value.Value); break; case AMFValueType.Date: WriteDate((DateTime)value); break; case AMFValueType.Double: WriteNumber((double)value); break; case AMFValueType.ECMAArray: WriteEcmaArray((IDictionary<string,AMFValue>)value.Value); break; case AMFValueType.Integer: WriteNumber((int)value); break; case AMFValueType.Null: WriteNull(); break; case AMFValueType.Object: WriteObject((AMFObject)value); break; case AMFValueType.ObjectEnd: WriteMarker(AMF0Marker.ObjectEnd); break; case AMFValueType.StrictArray: WriteStrictArray((AMFValue[])value); break; case AMFValueType.String: WriteString((string)value); break; case AMFValueType.Undefined: WriteMarker(AMF0Marker.Undefined); break; case AMFValueType.XML: WriteXML((string)value); break; case AMFValueType.XMLDocument: WriteXML((string)value); break; default: throw new ArgumentException(); } }
private static byte[] CreateBody( string command_name, int transaction_id, AMFValue command_object, IEnumerable<AMFValue> arguments) { var s = new MemoryStream(); using (var writer=new AMF3Writer(s)) { writer.WriteString(command_name); writer.WriteNumber(transaction_id); writer.WriteValue(command_object); if (arguments!=null) { foreach (var arg in arguments) { writer.WriteValue(arg); } } } return s.ToArray(); }
public bool Equals(AMFValue obj) { if (obj.Type!=obj.Type) return false; switch (obj.Type) { case AMFValueType.Null: case AMFValueType.Undefined: case AMFValueType.ObjectEnd: return true; default: return this.Value.Equals(obj.Value); } }
public static CommandMessage Create( int version, long timestamp, long stream_id, string command_name, int transaction_id, AMFValue command_object, params AMFValue[] arguments) { switch (version) { case 0: return new CommandAMF0Message(timestamp, stream_id, command_name, transaction_id, command_object, arguments); case 3: return new CommandAMF3Message(timestamp, stream_id, command_name, transaction_id, command_object, arguments); default: throw new ArgumentException("Unsupported serialize version", "version"); } }
private AMFValue[] ReadStrictArray() { var ary = new AMFValue[ReadUI32()]; for (int i=0; i<ary.Length; i++) { ary[i] = ReadValue(); } return ary; }