Ejemplo n.º 1
0
        internal void InvokeReceive(string clientId, string subtopic, object body)
        {
            InvokeAmf3 invokeAmf3_1 = new InvokeAmf3();

            invokeAmf3_1.InvokeId = 0;
            InvokeAmf3 invokeAmf3_2 = invokeAmf3_1;
            string     methodName   = "receive";

            object[]        parameters      = new object[1];
            int             index           = 0;
            AsyncMessageExt asyncMessageExt = new AsyncMessageExt();

            asyncMessageExt.Headers = new AsObject()
            {
                {
                    "DSSubtopic",
                    (object)subtopic
                }
            };
            string str1 = clientId;

            asyncMessageExt.ClientId = str1;
            object obj = body;

            asyncMessageExt.Body = obj;
            string str2 = Uuid.NewUuid();

            asyncMessageExt.MessageId = str2;
            parameters[index]         = (object)asyncMessageExt;
            int    num1   = 1;
            int    num2   = 0;
            Method method = new Method(methodName, parameters, num1 != 0, (CallStatus)num2);

            invokeAmf3_2.MethodCall = method;
            this.QueueCommandAsTask((Command)invokeAmf3_1, 3, 0);
        }
Ejemplo n.º 2
0
        private void EventReceivedCallback(object sender, EventReceivedEventArgs e)
        {
            try
            {
                switch (e.Event.MessageType)
                {
                case MessageType.UserControlMessage:
                    UserControlMessage userControlMessage = (UserControlMessage)e.Event;
                    if (userControlMessage.EventType != UserControlMessageType.PingRequest)
                    {
                        break;
                    }
                    this.WriteProtocolControlMessage((RtmpEvent) new UserControlMessage(UserControlMessageType.PingResponse, userControlMessage.Values));
                    break;

                case MessageType.CommandAmf3:
                case MessageType.DataAmf0:
                case MessageType.CommandAmf0:
                    Command command    = (Command)e.Event;
                    Method  methodCall = command.MethodCall;
                    object  obj1       = methodCall.Parameters.Length == 1 ? methodCall.Parameters[0] : (object)methodCall.Parameters;
                    if (methodCall.Name == "_result" && !(obj1 is AcknowledgeMessageExt))
                    {
                        AcknowledgeMessageExt acknowledgeMessageExt = new AcknowledgeMessageExt();
                        object obj2 = obj1;
                        acknowledgeMessageExt.Body = obj2;
                        AcknowledgeMessageExt result = acknowledgeMessageExt;
                        this._callbackManager.SetResult(command.InvokeId, result);
                        break;
                    }
                    if (methodCall.Name == "_result")
                    {
                        AcknowledgeMessageExt result = (AcknowledgeMessageExt)obj1;
                        this._callbackManager.SetResult(command.InvokeId, result);
                        break;
                    }
                    if (methodCall.Name == "_error")
                    {
                        ErrorMessage errorMessage = (ErrorMessage)obj1;
                        this._callbackManager.SetException(command.InvokeId, errorMessage != null ? (Exception) new InvocationException(errorMessage) : (Exception) new InvocationException());
                        break;
                    }
                    if (methodCall.Name == "receive")
                    {
                        AsyncMessageExt message = (AsyncMessageExt)obj1;
                        if (message == null)
                        {
                            break;
                        }
                        object obj2;
                        message.Headers.TryGetValue("DSSubtopic", out obj2);
                        string dsSubtopic = obj2 as string;
                        string clientId   = message.ClientId;
                        this.WrapCallback((Action)(() =>
                        {
                            // ISSUE: reference to a compiler-generated field
                            EventHandler <MessageReceivedEventArgs> messageReceived = this.MessageReceived;
                            if (messageReceived == null)
                            {
                                return;
                            }
                            MessageReceivedEventArgs e1 = new MessageReceivedEventArgs(clientId, dsSubtopic, message);
                            messageReceived((object)this, e1);
                        }));
                        break;
                    }
                    int num = methodCall.Name == "onstatus" ? 1 : 0;
                    break;
                }
            }
            catch (ClientDisconnectedException ex)
            {
                this.Close();
            }
        }
Ejemplo n.º 3
0
 internal MessageReceivedEventArgs(string clientId, string subtopic, AsyncMessageExt message)
 {
     this.ClientId = clientId;
     this.Subtopic = subtopic;
     this.Message  = message;
 }