public async Task <AcknowledgeMessageExt> ReconnectAckAsync() { AcknowledgeMessageExt acknowledgeMessageExt1 = new AcknowledgeMessageExt(); AcknowledgeMessageExt acknowledgeMessageExt2 = acknowledgeMessageExt1; AsObject asObject = await this.ReconnectAsync(); acknowledgeMessageExt2.Body = (object)asObject; return(acknowledgeMessageExt1); }
public async Task <AcknowledgeMessageExt> ReconnectAckAsync(int invokeId, AsObject cParameters, params object[] parameters) { AcknowledgeMessageExt acknowledgeMessageExt1 = new AcknowledgeMessageExt(); AcknowledgeMessageExt acknowledgeMessageExt2 = acknowledgeMessageExt1; AsObject asObject = await this.ReconnectAsync(invokeId, cParameters, parameters); acknowledgeMessageExt2.Body = (object)asObject; return(acknowledgeMessageExt1); }
public void InvokeResult(int invokeId, string correlationId, object argument) { var call = new AcknowledgeMessageExt() { ClientId = Uuid.NewUuid(), MessageId = Uuid.NewUuid(), Body = argument, CorrelationId = correlationId, }; InvokeResult(invokeId, call); }
void ServerCommandReceived(object sender, CommandMessageReceivedEventArgs e) { RtmpClient client = (RtmpClient)sender; switch (e.Message.Operation) { case CommandOperation.Login: AcknowledgeMessageExt login = new AcknowledgeMessageExt { Body = "success", CorrelationId = e.Message.MessageId, MessageId = Uuid.NewUuid(), ClientId = Uuid.NewUuid(), Headers = new AsObject { { "DSMessagingVersion", 1.0 }, { FlexMessageHeaders.FlexClientId, e.DSId } } }; client.InvokeResult(e.InvokeId, login); break; case CommandOperation.Subscribe: AcknowledgeMessageExt subscribe = new AcknowledgeMessageExt { Body = null, CorrelationId = e.Message.MessageId, MessageId = Uuid.NewUuid(), ClientId = e.Message.ClientId }; client.InvokeResult(e.InvokeId, subscribe); break; case CommandOperation.Unsubscribe: break; case CommandOperation.ClientPing: break; case CommandOperation.Logout: break; default: throw new NotSupportedException(); } if (ClientCommandReceieved != null) { ClientCommandReceieved(sender, e); } }
internal void InvokeResult(int invokeId, AcknowledgeMessageExt message) { if (objectEncoding != ObjectEncoding.Amf3) { throw new NotSupportedException("Flex RPC requires AMF3 encoding."); } var invoke = new InvokeAmf3() { InvokeId = invokeId, MethodCall = new Method("_result", new object[] { message }, true, CallStatus.Result) }; QueueCommandAsTask(invoke, 3, 0); }
internal void InvokeResult(int invokeId, AcknowledgeMessageExt message) { if (this._objectEncoding != ObjectEncoding.Amf3) { throw new NotSupportedException("Flex RPC requires AMF3 encoding."); } InvokeAmf3 invokeAmf3 = new InvokeAmf3(); invokeAmf3.InvokeId = invokeId; invokeAmf3.MethodCall = new Method("_result", new object[1] { (object)message }, 1 != 0, CallStatus.Result); this.QueueCommandAsTask((Command)invokeAmf3, 3, 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(); } }
private void EventReceivedCallback(object sender, EventReceivedEventArgs e) { try { switch (e.Event.MessageType) { case MessageType.UserControlMessage: var m = (UserControlMessage)e.Event; if (m.EventType == UserControlMessageType.PingRequest) { WriteProtocolControlMessage(new UserControlMessage(UserControlMessageType.PingResponse, m.Values)); } break; case MessageType.DataAmf3: #if DEBUG // Have no idea what the contents of these packets are. // Study these packets if we receive them. Debugger.Break(); #endif break; case MessageType.CommandAmf3: case MessageType.DataAmf0: case MessageType.CommandAmf0: var command = (Command)e.Event; var call = command.MethodCall; var param = call.Parameters.Length == 1 ? call.Parameters[0] : call.Parameters; if (call.Name == "_result" && !(param is AcknowledgeMessageExt)) { //wrap the parameter var ack = new AcknowledgeMessageExt { Body = param }; callbackManager.SetResult(command.InvokeId, ack); } else if (call.Name == "_result") { var ack = (AcknowledgeMessageExt)param; callbackManager.SetResult(command.InvokeId, ack); } else if (call.Name == "_error") { // unwrap Flex class, if present var error = (ErrorMessage)param; callbackManager.SetException(command.InvokeId, error != null ? new InvocationException(error) : new InvocationException()); } else if (call.Name == "receive") { var message = (AsyncMessageExt)param; if (message == null) { break; } object subtopicObject; message.Headers.TryGetValue(AsyncMessageHeaders.Subtopic, out subtopicObject); var dsSubtopic = subtopicObject as string; var clientId = message.ClientId; WrapCallback(() => { if (MessageReceived != null) { MessageReceived(this, new MessageReceivedEventArgs(clientId, dsSubtopic, message)); } }); } else if (call.Name == "onstatus") { Debug.Print("Received status."); } else { #if DEBUG Debug.Print("Unknown RTMP Command: " + call.Name); Debugger.Break(); #endif } break; } } catch (ClientDisconnectedException) { Close(); } }