private void ProcessMessage(AntMediaSignalingMessage msg) { switch (msg.command) { case "start": OnStart.Invoke(msg.streamId); break; case "takeConfiguration": if (msg.type == "offer") { OnOffer.Invoke(msg); } else if (msg.type == "answer") { OnAnswer.Invoke(msg); } break; case "takeCandidate": OnIceCandidate.Invoke(msg); break; case "error": OnSignalingError.Invoke(msg.definition); break; } }
private bool HTTPGetAnswers() { HttpWebRequest request = (HttpWebRequest)WebRequest.Create($"{m_url}/signaling/answer?fromtime={m_lastTimeGetAnswerRequest}"); request.Method = "GET"; request.ContentType = "application/json"; request.Headers.Add("Session-Id", m_sessionId); request.KeepAlive = false; HttpWebResponse response = HTTPGetResponse(request); AnswerResDataList list = HTTPParseJsonResponse <AnswerResDataList>(response); if (list == null) { return(false); } m_lastTimeGetAnswerRequest = DateTimeExtension.ParseHttpDate(response.Headers[HttpResponseHeader.Date]) .ToJsMilliseconds(); foreach (var answer in list.answers) { m_mainThreadContext.Post(d => OnAnswer?.Invoke(this, answer), null); } return(true); }
/* * It's button func on AnswerButton */ public void OnAnswerClicked(int choice) { audioM.Click(); var isLast = currentQuestionNum == PoolSize - 1; var isCorrect = currentQuestion.answers[choice] == pool.answers[currentQuestionNum]; p.AddAnsweredQuestion(currentQuestion.id, isCorrect); if (isCorrect && isLast) { PlayerWin(); } else if (!isCorrect && lives == 0) { PlayerLose(); } OnAnswer?.Invoke(this, new AnswerArgs { correct = isCorrect, choice = choice, qNum = currentQuestionNum, correctChoice = GetCorrectChoice() }); }
public void Answer(XmlReader reader) { State = RequestState.Answered; if (reader.GetAttribute("type") != "error") { OnAnswer?.Invoke(reader); } else { OnError?.Invoke(reader); } }
public void Setup(string[] text, OnAnswer callback) { textboxLeft = Resources.Load <Texture2D>("Textures/textboxLeft"); textboxMiddle = Resources.Load <Texture2D>("Textures/textbox"); textboxRight = Resources.Load <Texture2D>("Textures/textboxRight"); selectIcon = Resources.Load <Texture2D>("Textures/xbutton"); this.text = new List <string>(text); this.callback = callback; textStyle = new GUIStyle(); textStyle.font = CreateTextbox.Font; textStyle.richText = true; textStyle.fontSize = CreateTextbox.FontSize; textStyle.wordWrap = true; textWidth = Screen.width - 2 * leftPadding - textboxLeft.width - textboxRight.width - 2 * textLeftPadding; textHeight = textboxMiddle.height - 2 * textTopPadding; }
/// <summary> /// REceive message from server /// </summary> /// <returns>Return message - string</returns> public string Receive() { OnAnswer += clientHandler.Transliteration; var tcpEndPoint = new IPEndPoint(IPAddress.Parse(ip), port); var tcpSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); var taken = new byte[256]; var size = 0; var answer = new StringBuilder(); do { size = tcpSocket.Receive(taken); answer.Append(Encoding.UTF8.GetString(taken, 0, size)); }while (tcpSocket.Available > 0); OnAnswer?.Invoke(answer.ToString()); tcpSocket.Shutdown(SocketShutdown.Both); tcpSocket.Close(); return(answer.ToString()); }
private void OnAnswerpress(char press) { if (AnswerButtonsEnabled) { AnswerButtonsEnabled = false; switch (press) { case 'A': buttonA.BackgroundImage = Properties.Resources.TryA; buttonA.Refresh(); AnswerIndex = 1; break; case 'B': buttonB.BackgroundImage = Properties.Resources.TryB; buttonB.Refresh(); AnswerIndex = 2; break; case 'C': buttonC.BackgroundImage = Properties.Resources.TryC; buttonC.Refresh(); AnswerIndex = 3; break; case 'D': buttonD.BackgroundImage = Properties.Resources.TryD; buttonD.Refresh(); AnswerIndex = 4; break; } if (File.Exists(@"sound\gong.wav")) { new System.Media.SoundPlayer(@"sound\gong.wav").Play(); } Thread.Sleep(3000); OnAnswer?.Invoke(this, EventArgs.Empty); } }
public IEnumerator AskQuestion(QuestionSpec questionSpec) { _speechRecognizer.Setup(questionSpec.CorrectAnswers); yield return(PlayVoice(questionSpec.QuestionElements[QuestionSpec.DefaultKeys.Intro])); yield return(PlayVoice(questionSpec.QuestionElements[QuestionSpec.DefaultKeys.BaseQuestion])); yield return(_speechRecognizer.Recognize(questionSpec.QuestionElements[QuestionSpec.DefaultKeys.BaseQuestion].Text, _questionsSpec.GeneralQuestionsSpec.AnswerListeningDuration)); if (_speechRecognizer.IsCorrectAnswer()) { OnAnswer?.Invoke(_statisticsInfo .AddTimeBeforeAnswer(_speechRecognizer.TimeBeforeAnswer) .AddCorrectAnswerAttempt(1)); yield return(OnCorrectAnswer(questionSpec)); yield break; } yield return(PlayVoice(questionSpec.QuestionElements[QuestionSpec.DefaultKeys.SupportQuestion])); yield return(_speechRecognizer.Recognize(questionSpec.QuestionElements[QuestionSpec.DefaultKeys.BaseQuestion].Text, _questionsSpec.GeneralQuestionsSpec.AnswerListeningDuration)); if (_speechRecognizer.IsCorrectAnswer()) { OnAnswer?.Invoke(_statisticsInfo .AddTimeBeforeAnswer(_speechRecognizer.TimeBeforeAnswer) .AddCorrectAnswerAttempt(2)); yield return(OnCorrectAnswer(questionSpec)); yield break; } OnAnswer?.Invoke(_statisticsInfo); yield return(PlayVoice(questionSpec.QuestionElements[QuestionSpec.DefaultKeys.RepeatOnIncorrect])); }
public Task Pipe(string pid, string json) { var payload = JsonSerializer.Deserialize <Payload>(json); // TODO: MAYBE FASTER switch (payload.Type) { case New: OnNew.Pipe(pid, json); break; case Bye: OnBye.Pipe(pid, json); break; case Offer: OnOffer.Pipe(pid, json); break; case Answer: OnAnswer.Pipe(pid, json); break; case Candidate: OnCandidate.Pipe(pid, json); break; case KeepAlive: OnKeepAlive.Pipe(pid, json); break; default: break; } return(Task.CompletedTask); }
public void ShowQuestionNode(DialogueDataNode node, List <DataGraphNode> answers, OnAnswer onAnswer) { content.text = node.text; next.gameObject.SetActive(false); answersPanel.gameObject.SetActive(true); for (int i = 0; i < answerButtons.Length; i++) { if (i >= answers.Count) { answerButtons[i].gameObject.SetActive(false); continue; } answerButtons[i].GetComponentInChildren <Text>().text = ((DialogueDataNode)answers[i]).text; answerButtons[i].gameObject.SetActive(true); answerButtons[i].onClick.RemoveAllListeners(); DialogueDataNode answer = (DialogueDataNode)answers[i]; answerButtons[i].onClick.AddListener(() => { onAnswer(answer); }); } }
private void WSProcessMessage(object sender, MessageEventArgs e) { var content = Encoding.UTF8.GetString(e.RawData); Debug.Log($"Signaling: Receiving message: {content}"); try { var routedMessage = JsonUtility.FromJson <RoutedMessage <SignalingMessage> >(content); SignalingMessage msg; if (!string.IsNullOrEmpty(routedMessage.type)) { msg = routedMessage.data; } else { msg = JsonUtility.FromJson <SignalingMessage>(content); } if (!string.IsNullOrEmpty(routedMessage.type)) { if (routedMessage.type == "connect") { string connectionId = JsonUtility.FromJson <SignalingMessage>(content).connectionId; OnCreateConnection?.Invoke(this, connectionId); } else if (routedMessage.type == "offer") { if (!string.IsNullOrEmpty(routedMessage.from)) { DescData offer = new DescData(); offer.connectionId = routedMessage.from; offer.sdp = msg.sdp; OnOffer?.Invoke(this, offer); } else { Debug.LogError("Signaling: Received message from unknown peer"); } } else if (routedMessage.type == "answer") { if (!string.IsNullOrEmpty(routedMessage.from)) { DescData answer = new DescData { connectionId = routedMessage.from, sdp = msg.sdp }; OnAnswer?.Invoke(this, answer); } else { Debug.LogError("Signaling: Received message from unknown peer"); } } else if (routedMessage.type == "candidate") { if (!string.IsNullOrEmpty(routedMessage.from)) { CandidateData candidate = new CandidateData { connectionId = routedMessage.@from, candidate = msg.candidate, sdpMLineIndex = msg.sdpMLineIndex, sdpMid = msg.sdpMid }; OnIceCandidate?.Invoke(this, candidate); } else { Debug.LogError("Signaling: Received message from unknown peer"); } } } } catch (Exception ex) { Debug.LogError("Signaling: Failed to parse message: " + ex); } }
//private void ProcessMessage(byte[] data) private void ProcessMessage(string content) { //var content = Encoding.UTF8.GetString(data); Debug.Log($"Signaling: Receiving message: {content}"); try { var routedMessage = JsonUtility.FromJson <RoutedMessage <SignalingMessage> >(content); SignalingMessage msg; if (!string.IsNullOrEmpty(routedMessage.type)) { msg = routedMessage.data; } else { msg = JsonUtility.FromJson <SignalingMessage>(content); } if (!string.IsNullOrEmpty(routedMessage.type)) { if (routedMessage.type == "connect") { msg = JsonUtility.FromJson <SignalingMessage>(content); m_mainThreadContext.Post(d => OnCreateConnection?.Invoke(this, msg.connectionId, msg.peerExists), null); } else if (routedMessage.type == "disconnect") { msg = JsonUtility.FromJson <SignalingMessage>(content); m_mainThreadContext.Post(d => OnDestroyConnection?.Invoke(this, msg.connectionId), null); } else if (routedMessage.type == "offer") { DescData offer = new DescData(); offer.connectionId = routedMessage.from; offer.sdp = msg.sdp; m_mainThreadContext.Post(d => OnOffer?.Invoke(this, offer), null); } else if (routedMessage.type == "answer") { DescData answer = new DescData { connectionId = routedMessage.from, sdp = msg.sdp }; m_mainThreadContext.Post(d => OnAnswer?.Invoke(this, answer), null); } else if (routedMessage.type == "candidate") { CandidateData candidate = new CandidateData { connectionId = routedMessage.@from, candidate = msg.candidate, sdpMLineIndex = msg.sdpMLineIndex, sdpMid = msg.sdpMid }; m_mainThreadContext.Post(d => OnIceCandidate?.Invoke(this, candidate), null); } else if (routedMessage.type == "error") { msg = JsonUtility.FromJson <SignalingMessage>(content); Debug.LogError(msg.message); } } } catch (Exception ex) { Debug.LogError("Signaling: Failed to parse message: " + ex); } }
private void ThreadEventDispatch() { while (false == EventStop.Wait(1)) { string json = ""; bool pop_ok = EventJsonQueue.TryDequeue(out json); if (!pop_ok || json == null || json == "") { continue; } OnEventRawString?.Invoke(this, json); JObject jdata = null; EVENT_TYPE type = ParseEventType(json, out jdata); //因為必須在conference裡面中轉各個customized header,不得已只好自己維護live channel的資料... //收到CHANNEL_CREATE事件時就收錄channel資訊 //留在Conference Create時撈出來看 variable_sip_h_X-* 變數.... switch (type) { case EVENT_TYPE.CALL_TO_SWITCH: OnCall?.Invoke(this, new CCallEvent(jdata)); break; case EVENT_TYPE.SWITCH_CALL_USER: OnCall?.Invoke(this, new CCallEvent(jdata)); break; case EVENT_TYPE.ANSWER: OnAnswer?.Invoke(this, new CAnswerEvent(jdata)); break; case EVENT_TYPE.HANGUP: OnHangUp?.Invoke(this, new CHangUpEvent(jdata)); break; case EVENT_TYPE.DESTROY_CALL: OnCallDestroy?.Invoke(this, new CCallEvent(jdata)); break; case EVENT_TYPE.CONFERENCE_CREATE: OnRoomCreate?.Invoke(this, new CConferenceCreateEvent(jdata)); break; case EVENT_TYPE.CONFERENCE_DELETE: OnRoomDelete?.Invoke(this, new CConferenceDeleteEvent(jdata)); break; case EVENT_TYPE.JOIN_CONFERENCE: OnJoinRoom?.Invoke(this, new CJoinConferenceEvent(jdata)); break; case EVENT_TYPE.LEAVE_CONFERENCE: OnLeaveRoom?.Invoke(this, new CLeaveConferenceEvent(jdata)); break; case EVENT_TYPE.REGISTER: OnSipRegister?.Invoke(this, new CSipRegister(jdata)); break; default: Log.Warn($"Unsupported event type {type.ToString()}, skip it..."); break; } } //Queue沒有Clear(),只能用這種蠢方法清除 while (EventJsonQueue.Count > 0) { string msg = ""; EventJsonQueue.TryDequeue(out msg); } }
public void GiveAnswer(bool answer) { OnAnswer.Fire(answer); answerHandler(answer); Hide(); }
public void SendCommand(Command cmd, byte[] args, OnAnswer onAnswer) { Log.Write(">> cmd:" + cmd.ToString() + " args:" + args); Send(cmd, args); Result result = Result.ERROR; byte[] answer = null; if (Receive(ref result, out answer)) { Log.Write("<< res:" + result.ToString() + " args:" + answer); if (onAnswer != null) onAnswer(answer); } }
public void SendSetVarCommand(byte[] varData, OnAnswer onAnswer) { SendCommand(Command.SET_VAR, varData, onAnswer); }
public void SendGPUProfilerCommand(OnAnswer onAnswer) { byte[] data = new byte[] { (byte)ProfileDataType.GPU }; SendCommand(Command.GET_PROFILER_DATA, data, onAnswer); }
public void SendGetStatsCommand(OnAnswer onAnswer) { SendCommand(Command.GET_STATS, null, onAnswer); }
public void SendGetAllCommand(OnAnswer onAnswer) { SendCommand(Command.GET_ALL_VARS, null, onAnswer); }