Пример #1
0
        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));
            }
        }
Пример #2
0
 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;
       }
 }
Пример #3
0
   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();
   }
Пример #4
0
        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();
            }
        }
Пример #5
0
 private AMFValue RegisterObject(AMFValue value)
 {
     objects.Add(value);
     return(value);
 }
Пример #6
0
 private AMFValue RegisterObject(AMFValue value)
 {
   objects.Add(value);
   return value;
 }
Пример #7
0
 public AMFValue(AMFValue x)
 {
   this.Type  = x.Type;
   this.Value = x.Value;
 }
Пример #8
0
 public abstract void WriteValue(AMFValue value);
Пример #9
0
 public static bool IsNull(AMFValue value)
 {
   return value==null || value.Type==AMFValueType.Null;
 }
Пример #10
0
 public abstract void WriteValue(AMFValue value);
Пример #11
0
 public AMFValue(AMFValue x)
 {
     this.Type  = x.Type;
     this.Value = x.Value;
 }
Пример #12
0
 public static bool IsNull(AMFValue value)
 {
     return(value == null || value.Type == AMFValueType.Null);
 }
Пример #13
0
 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();
   }
 }
Пример #14
0
   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();
   }
Пример #15
0
 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);
   }
 }
Пример #16
0
   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");
         }
   }
Пример #17
0
 private AMFValue[] ReadStrictArray()
 {
   var ary = new AMFValue[ReadUI32()];
   for (int i=0; i<ary.Length; i++) {
     ary[i] = ReadValue();
   }
   return ary;
 }