⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sip_ring_state.hxx

📁 模拟移动客户端软件飞信登录的状态机器定义代码。
💻 HXX
字号:
//====================================================================//                // Copyright (C) 2006-2008,  Frank.Ning//                // Filename:      sip_ring_state.hxx// Author:        Frank.Ning <zegong.ning@dinglicom.com>// Description:   //                // $Id:$//                //====================================================================#ifndef __SIP_RING_STATE_HXX__#define __SIP_RING_STATE_HXX__static const char* const sip_ring_state_hxx_version =   "$Id:$";#include "state.hxx"struct sip_ring_state :  public fsm::state<sip_ring_state, FetionInviteStateList, bool>{      bool on_process( shared_ptr<sip_cmd> cmd , ua_agent* parent )      {         ua_callctl& ua = ua_callctl::instance( );         parent->set_last_sip_cmd_msg( cmd );                  if( cmd->get_method( ) == "C" ||             cmd->get_method( ) == "CANCEL" )         {            agent->stop( );            return true ;         }         return false ;      }      bool on_process( shared_ptr<sip_status> status , ua_agent* parent )      {         ua_callctl& ua = ua_callctl::instance( );                  if( status->get_status_code( ) == 200 ) // OK         {            parent->set_last_sip_status_msg( status );            shared_ptr<sip_cmd> ack = parent->build_ack_msg( status );            parent->set_last_sip_cmd_msg( ack );            ua.get_output_channel( )->add( shared_ptr<sip_event>( ack ) );                        switch_to<sip_incall_state>( );            return true ;                     }         return false ;      }      bool on_process( shared_ptr<keyboard_msg> keyboard , ua_agent* parent)      {         ua_callctl& ua = ua_callctl::instance( );                  bool result = false ;                  switch( keyboard->get_cmd( ) )         {            case "ACCEPT":            {               shared_ptr<sip_status> status = agent->build_ok_msg( agent->get_last_sip_cmd_msg( ) );               agent->set_last_sip_status_msg( status );                              ua.get_output_channel( )->add( shared_ptr<sip_event>( status ) );               switch_to<sip_incall_state>( );               result = true ;                              break ;            }            case "CANCEL":            {               shared_ptr<sip_cmd> cancel = agent->build_cancel_msg( agent->get_last_sip_cmd_msg( ) );                              ua.get_output_channel( )->add( shared_ptr<sip_event>( cancel ) );                              agent->set_last_sip_cmd_msg( cancel );                              agent->stop( );               result = true ;                              break ;            }            default:               break;         }         return result ;      }};#endif   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -