《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 一種適用于通信軟件的事件多路分解框架
一種適用于通信軟件的事件多路分解框架
陶偉業1,顏昭治1,徐海水2,梁碧允1
1.廣東工業大學 計算機學院,廣東 廣州510090;2.廣東工業大學 網絡信息與現代教育技術中心,
摘要: 介紹了ACE反應器框架的核心設計與實現,揭示了該框架對事件實施多路分解和分派的機制。
Abstract:
Key words :

摘   要: 介紹了ACE反應器框架的核心設計與實現,揭示了該框架對事件實施多路分解和分派的機制。
關鍵詞: ACE反應器  設計模式  框架

  在分布式系統、特別是服務器的事件驅動型應用中,必須隨時準備同時處理多個服務請求。許多傳統的應用程序在處理諸如網絡連接這樣的多個I/O端口服務時,往往借助于多進程模型或多線程模型。這種方法在需要同時處理多個網絡連接的服務器程序中相當流行。但是,在一些系統中,進程和線程的創建開銷和維護代價非常大。其不足主要表現在以下方面:
  (1)由于CPU之間的上下文切換、同步和數據移動,使得線程方法效率不高。
  (2)線程方法不適用于所有的操作系統,并且不是所有的操作系統都提供可移植的線程語義。
  (3)相似的事件處理代碼在每一個新的工程中,由開發者面對許多復雜細節的情況下被重復地開發出來,并且這些程序在移植時困難重重。
  (4)在制訂進程或線程策略進行并發服務器的優化時,如果不考慮像CPU的數目這樣的可用資源,實際上往往降低了程序的執行效率。
  本文描述ACE(自適配通信環境)反應器框架的設計和實現。該框架可以有效克服上述不足。它實現了反應器(Reactor)模式[1],該模式將事件多路分解和分派機制從服務中對指示事件的與應用有關的處理分離了出去。應用的每個服務可由一個或多個方法組成,并由一個單獨的事件處理器代表;事件處理器負責分派服務特有的請求。在ACE的反應器模式的實現中,事件處理器分派由ACE_Reactor對象完成。
1  ACE反應器框架類
  這一部分簡要介紹反應器框架(ACE_Reactor)的類。圖1顯示了該框架中相關類之間最為重要的關系。

  (1)ACE_Time_Value類:主要用于ACE Reactor I/O超時和定時器設置。
  (2)ACE_Event_Handler類:抽象類,其接口提供的掛鉤方法是ACE_Reactor回調的目標。大多數通過ACE開發的應用事件處理器都是該類的后代。
  (3)ACE_Timer_Queue類:抽象類,定義定時器隊列的能力和接口。
  (4)ACE_Reactor類:提供一個接口,用來在Reactor框架中管理事件處理器登記,并執行事件循環來驅動事件檢測、多路分解和分派。
  依照反應器模式,這些類扮演了事件基礎設施層和應用層二種角色。其中,擔當應用層角色的是ACE_Event_Handle類。
2  ACE反應器框架的核心實現
  實現ACE反應器框架的關鍵是運用反應器(Reactor)模式。反應器模式中有五個主要的組成部分:(1)操作系統提供的句柄:用于標識網絡連接或打開的文件之類的事件源,事件源產生指示事件并對其進行排隊。(2)同步事件多路分解器:是一個函數,如select()等,它是事件多路分解器的核心。(3)事件處理程序:定義一個或多個鉤子方法組成的接口。(4)具體事件處理程序:從事件處理程序接口繼承,并實現應用所特定的服務。(5)反應器:定義了一個接口,允許應用程序登記或刪除事件處理程序及其相關的句柄,并運行應用程序的事件循環。反應器使用同步事件多路分解器等待在句柄集上發生指示事件。
應用程序開發者只需要負責具體事件處理程序,并在反應器上予以注冊,應用程序就可以簡單地重用反應器的多路分解和分配機制了。反應器模式引入的結構實現回調的方法是:反應器等待指示事件,多路分解這些事件給具體事件處理程序,然后向具體事件處理程序分派相應的鉤子方法。下面介紹反應器框架的實現。
2.1 定義事件處理程序對象
  在面向對象應用中,將事件處理程序與句柄結合起來的方法是建立一個事件處理對象。ACE反應器框架定義了不同類型的各種對象及相應的鉤子方法,這種由具體事件處理對象來分派的多接口策略更具可擴展性。下面簡化的C++抽象基類即是在ACE反應器框架中用來產生這種類型的對象:
  class ACE_Event_Handler{
  public://由反應器分派的用以處理各種具體事件處理程序的鉤子方法
  virtual int handle_input(HANDLE handle)=0;//輸入事件
  virtual int handle_outpur(HANDLE handle)=0;//輸出事件
  virtual int handle_timeout(const ACE_Time_Value&)=0;
             //超時事件
  virtual HANDLE get_handle( ) const=0;}//用于返回I/O句柄的鉤子方法
2.2 定義反應器接口
  下面是一個簡化的ACE_Reactor類,它是ACE反應器框架中實現反應器模式的關鍵類。應用程序使用該反應器接口登記或刪除事件處理程序及其相關句柄,并調用應用程序的事件循環。通常用單件[5]訪問反應器接口,因為一個應用程序中有一個反應器就夠了。
  class ACE_Reactor {
  public:
  virtual int register_handler(ACE_Event_Handler*event_
  handler,ACE_Reactor_Mask masks);
         //登記具體事件處理器
  virtual int register_handler(ACE_Sig_Set sigset,ACE_Event_
  Handler*event_handler,ACE_Reactor_Mask masks);
        //該事件處理器與信號處理有關
  virtual int schedule_timer(ACE_Event_Handler*event_
  handler,ACE_Time_Value time);//登記一個事件處理器
                  //它將在用戶規定的時間后被執行
  virtual int remove_handler(HANDLE h,ACE_Reactor_
    Mask masks);//移除具體事件處理器
  void handle_events(ACE_Time_Value*timeout=0);
              //啟動反應器的事件循環處理
  static Reactor*instance( );//返回反應器單體實例
  private:
  ACE_Reactor_Impl implementation;}//反應器的具體實現
  在上面的類中,ACE_Reactor_Mask是個自定義類型:
  typedef unsigned long ACE_Reactor_Mask
  它一般取以下枚舉類型的值,用來標志不同類型的事件:
  enum{
  READ_MASK=(1 << 0),
  WRITE_MASK=(1 << 1),
  EXCEPT_MASK=(1 <<2 )
  ……}
  ACE_Reactor類是應用程序用以訪問ACE反應器框架的公共接口。橋接模式[5]使ACE_Reactor接口與它的ACE_Reactor_Impl子類實現耦合。在不同OS平臺上,該子類的實現也不相同。但是,ACE_Reactor接口提供的方法的名字和總的功能保持不變。這種統一性源于ACE_Reactor設計的模塊性,該設計還增強了反應器的可重用性、可移植性和可維護性。
2.3 反應器中多路分解和分派的實現
  通常,除了調用同步事件多路分解器等待句柄集發生指示事件外,反應器實現還要維護一個多路分解表。該表是個管理者,包含一個格式為<句柄,事件處理程序,指示事件類型>的三元組,這使得所激活的句柄與激活該句柄的指示事件類型、所激活的句柄與該句柄所關聯的事件處理器三者之間清晰地聯系在一起??捎肔inux操作系統為例來闡述這一點,因為在Linux中,I/O句柄是連續的整數,這使得句柄值成為多路分解表數組的索引。
  在具體實現中,ACE反應器類的私有部分有一個包含上述多路分解表的對象handler_rep_,該對象存放著一個實現句柄到具體事件處理器映射的表,它是下面所示類的一個實例:
  class ACE_Select_Reactor_Handler_Repository{
  public://尋找與handle相關聯的具體事件處理器
  ACE_Event_Handler*find(ACE_HANDLE handle,size_t
  *index_p=0);
       //使得具體事件的句柄、指示標志綁定在一起
  Int bind(ACE_HANDLE,ACE_Event_Handler*,ACE_
  Reactor_Mask):
  size_t size(void) const;//返回表中所綁定的具體事件處理器的個數
   private://盛裝一個事件處理器ACE_Event_Handler和其相關
       //聯的ACE_HANDLE句柄
  ACE_Event_Tuple*event_handler-;}
  class ACE_Event_Tuple{
  public:
  ACE_HANDLE handle_;
  ACE_Event_Handler*event_handler_;}
  當具體事件處理器調用register_handler( )方法向Reactor類登記時,將調用方法handler_rep_.bind (handle,event_handler,mask),把這個“三元組”置于handler_rep_對象中。
  在ACE中,用包裝器外觀類ACE_Handle_Set來封裝句柄集,用一個實現了迭代模式的類ACE_Handle_Set_
  Iterator來迭代該句柄集中的句柄。一旦反應器進入主入口點方法handle_events( ),應用程序將利用它反應性地實現事件循環。當有指示事件發生時,反應器多路分解與分派(即回調)的方式為:該框架把反應器應處理的事件分成三種不同的類型,其中一類為I/O事件,由方法dispatch_io_
handlers( )加以處理。下面以處理常見應用中的I/O事件為例說明反應器的多路分解和分派的實現。
先定義一個函數指針:
  typedef int (ACE_Event_Handler∷?鄢ACE_EH_PTMF) (ACE_HANDLE);
  此函數指針是實現具體服務分派的基礎,因為反應器通過函數指針決定了應調用handle_?鄢( )方法中的哪一種。
  再定義一個函數:
  ACE_Reactor_impl∷dispatch_io_set( ACE_Handle_Set&
  dispatch_mask,ACE_EH_PTMF callback)
  {  ACE_Handle_Set_Iterator handle_iter(dispatch_mask);
               //對特定句柄集中的句柄進行迭代
  While(handle=handle_iter( )!=ACE_INVALID_HANDLE)
   { ACE_Event_Handler //找出被激活句柄相關聯
              //的事件處理器
  event_handler=this->handler_rep_.find(handle);
                //利用函數指針對反映器進行回調
  (event_handler->*callback)(handle);}
  }
  上述函數對dispatch_mask句柄集中的句柄執行循環檢測。一旦某句柄被激活,即找出該句柄所關聯的ACE_Event_Handler對象,然后執行該對象所分派的方法,而具體方法由callback傳遞。
3  運用反應器框架的示例
  以常見的登錄服務器為例。登錄服務器使用由兩個具體事件處理程序,即登錄接受器和登錄連接器實現的單件反應器。下面的代碼框架實現了登錄服務器示例中的具體事件處理程序。其中:My_Accept_Handler類(登錄接受器)用來被動地建立連接,My_Input_Handler類(登錄連接器)提供與應用有關的服務。
  class My_Input_Handler:public ACE_Event_Handler{
  public:
  int handle_input(ACE_HANDLE){ //回調,以處理任何到來的連接
     ……具體代碼略……}
  private:
  ACE_SOCK_Stream peer_;}//流對象,用于讀寫
  class My_Accept_Handler:public ACE_Event_Handler{
  public:
  My_Accept_Handler(ACE_Addr &addr){this->open(addr);}
  int open(ACE_Addr &addr) {//打開接受器,監聽客戶連接
  peer_acceptor.open(addr);}
  int handle_input(ACE_HANDLE handle){
        //重載handle_input( )方法
  ……代碼略,客戶請求連接,則建立一個處理器來處理這個連接……}
  private:
  ACE_SOCK_Accepto peer_acceptor;} //用以被動接受連接的接受器
  int main(int argc,char*argv[]){
  ACE_INET_Addr addr(PORT_NO);//建立一個用來接受連接的地址
                  //建立一個接受事件處理器用以自動偵聽客戶連接
  My_Accept_Handler*eh=new My_Accept_Handler(addr);
                 //向Reactor登記,以使在有連接請求時實現回調
  ACE_Reactor∷instance( )->register_handler(eh,
  ACE_Event_Handler∷ACCEPT_MASK);
       while(1) //運行事件循環
  ACE_Reactor∷instance()->handle_events();}
4  總  結
  本文對實現ACE反應器框架的核心源碼進行了分析,揭示了該框架使多路分解和分派機制與應用定義的事件處理策略相分離的方法。最后的實例表明,通過封裝許多復雜的功能,該框架可簡潔、正確、可移植和高效地進行事件驅動型網絡化應用的開發,從而使網絡化開發者能夠專注于應用所特有的服務。
參考文獻
1   Schmidt D C,Stal M,Rohnert H et al.Pattern-Oriented  Software Architecture:Patterns for Concurrent and Networked Objects.West Sussex:Wiley&Sons,2000
2   Schmidt D C,Huston S D.C++ Network Programming,Volume 2:Systematic Reuse with ACE and Frameworks.  Massachusetts:Addison-Wesley,2002
3   Schmidt D C.Reactor:An Object Behavioral Pattern for Demultiplexing and Despatching Handles for Synchronous Events.http://www.cs.wustl.edu/~doc/pspdfs/Reactor.pdf,2004-12-05
4   Schmidt D C,Pyarali I.The Design and Use of the ACE Reactor:An Objiect-Oriented Framework for Event  Demutiplexing.http://www.cs.wustl.edu/~doc/pspdfs/Reactor.pdf,2004-12-05
5   Gamma E,Helm R,Johnson R et al.Design Patterns:Elements of Reusable Object-Oriented Software.Massachusetts:Addison-Wesley,1995
6   Schmidt D.C,Huston S D.C++ Network Programming,Volume 1:Mastering Complexity with ACE and Patterns.Massachusetts:Addison-Wesley,2001

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          国产精品伦子伦免费视频| 午夜欧美大尺度福利影院在线看| 久久精品二区| 国产精品视频免费观看| 欧美性jizz18性欧美| 亚洲影音先锋| 嫩草影视亚洲| 尤物99国产成人精品视频| 欧美日韩精品一区二区| 亚洲视频综合| 欧美日韩亚洲一区三区| 亚洲欧美日韩精品久久久久| 国产综合18久久久久久| 国产婷婷成人久久av免费高清| 亚洲高清资源综合久久精品| 欧美电影在线| 午夜精品福利一区二区蜜股av| 欧美14一18处毛片| 欧美一区深夜视频| 校园春色国产精品| 亚洲激情视频在线播放| 久久久久久国产精品一区| 一区二区毛片| 亚洲社区在线观看| 久久www成人_看片免费不卡| 国产无遮挡一区二区三区毛片日本| 欧美在线免费视频| av成人免费观看| 宅男噜噜噜66一区二区66| 国内精品久久久久国产盗摄免费观看完整版| 亚洲国产一二三| 国产亚洲精品久久久久动| 蜜月aⅴ免费一区二区三区| 男人的天堂成人在线| 国产精品永久入口久久久| 蜜臀av性久久久久蜜臀aⅴ四虎| 极品av少妇一区二区| 午夜亚洲视频| 一区二区视频欧美| 久久三级福利| 亚洲麻豆国产自偷在线| 欧美成人激情视频免费观看| 国产欧美视频一区二区| 国产亚洲女人久久久久毛片| 欧美日韩成人综合| 亚洲日本精品国产第一区| 在线综合视频| 久久成年人视频| 国产精品亚洲欧美| 亚洲欧美日韩一区二区三区在线观看| 亚洲女人小视频在线观看| 欧美韩国一区| 亚洲精品你懂的| 欧美中文字幕在线观看| 亚洲综合清纯丝袜自拍| 亚洲综合视频一区| 国产精品v日韩精品| 亚洲午夜女主播在线直播| 亚洲伦理一区| 在线电影院国产精品| 国产精品一区亚洲| 亚洲自拍啪啪| 精品99一区二区| 1204国产成人精品视频| 小黄鸭精品aⅴ导航网站入口| 国内成人自拍视频| 亚洲精品视频免费在线观看| 欧美日韩国产成人在线91| 国产精品亚洲综合| 欧美日韩综合精品| 日韩系列欧美系列| 亚洲乱亚洲高清| 欧美日本一区二区高清播放视频| 亚洲性视频网址| 久久久夜色精品亚洲| 久久国产精彩视频| 9国产精品视频| 午夜在线视频一区二区区别| 国产欧美一区二区三区国产幕精品| 亚洲精品乱码久久久久久| 免费观看久久久4p| 亚洲国产精品久久久久久女王| 国产精品久99| 亚洲高清在线精品| 韩国av一区二区三区在线观看| 日韩一级黄色大片| 国产精品高清免费在线观看| 激情综合色丁香一区二区| 亚洲永久免费精品| 伊人婷婷欧美激情| 午夜在线视频一区二区区别| 欧美中文日韩| 亚洲欧洲av一区二区| 欧美日韩视频免费播放| 亚洲曰本av电影| 亚洲已满18点击进入久久| 亚洲视频1区2区| 欧美日韩视频免费播放| 国产精品久久久久一区二区三区| 久久综合导航| 亚洲国产综合91精品麻豆| 亚洲精品免费观看| 国产在线精品一区二区夜色| 欧美大尺度在线观看| 久久精品国产亚洲高清剧情介绍| 免费欧美在线| 亚洲欧美综合另类中字| 国产精品久久久久久久9999| 欧美日韩精品在线| 久久久国产亚洲精品| 国产日韩欧美一区二区三区在线观看| 国产日韩在线播放| 免费成人毛片| 激情自拍一区| 影音先锋日韩有码| 亚洲日本电影在线| 国语自产精品视频在线看| 久久久91精品国产| 久久久亚洲成人| 国产免费一区二区三区香蕉精| 国产欧美日韩不卡| 欧美性猛交xxxx乱大交蜜桃| 欧美另类亚洲| 在线精品国精品国产尤物884a| 亚洲欧洲久久| 国产日韩欧美一区二区三区在线观看| 国产日韩专区| 亚洲免费小视频| 在线视频中文亚洲| 在线一区二区三区四区| 欧美激情一区在线观看| 欧美日韩一区二区免费在线观看| 国产精品一区二区久久国产| 欧美日韩中文字幕精品| 欧美一区二区视频在线观看| 国产精品video| 在线观看一区二区视频| 久久裸体艺术| 欧美电影免费观看高清完整版| 欧美在线二区| 99亚洲伊人久久精品影院红桃| 欧美三级电影大全| 伊人色综合久久天天五月婷| 黄色成人91| 亚洲视频在线一区观看| 亚洲一区二区三区在线看| 一区三区视频| 欧美久久久久中文字幕| 欧美日本亚洲韩国国产| 欧美/亚洲一区| 欧美天堂亚洲电影院在线播放| 亚洲日本免费| 午夜在线一区二区| 亚洲国产精品久久久久婷婷884| 免费久久99精品国产| 欧美.日韩.国产.一区.二区| 快播亚洲色图| 国自产拍偷拍福利精品免费一| 一区二区欧美国产| 狠色狠色综合久久| 亚洲影院免费| 亚洲黄一区二区| 亚洲国产第一页| 亚洲午夜性刺激影院| 亚洲精品中文字幕在线| 久久精品国产亚洲一区二区| 亚洲国产精品123| 国产精品极品美女粉嫩高清在线| 在线亚洲激情| 欧美日韩一二区| 欧美三日本三级少妇三2023| 一本大道久久精品懂色aⅴ| 国产女主播一区二区三区| 亚洲无毛电影| 欧美专区福利在线| 中文欧美在线视频| 亚洲一区精彩视频| 欧美成人免费网站| 欧美一区二区三区在线免费观看| 欧美午夜国产| 欧美一区日本一区韩国一区| 久久精品国产亚洲一区二区| 欧美一区三区二区在线观看| 国产精品久久久久婷婷| 欧美性猛交xxxx乱大交蜜桃| 欧美三级欧美一级| 亚洲免费观看在线观看| 欧美日韩一区在线观看| 国产精品综合网站| 国产精品mm| 欧美日韩亚洲综合| 国产精品美女www爽爽爽视频| 伊人精品在线| 欧美中文字幕视频| 久久九九国产精品怡红院| 国产精品日日摸夜夜添夜夜av| 国产精品免费区二区三区观看| 免费看亚洲片| 欧美成人午夜剧场免费观看| 亚洲视频在线一区观看| 欧美日韩国产成人精品| 亚洲免费在线播放| 国产欧美一二三区| 欧美成人免费大片| 国产欧美一二三区| 在线播放日韩专区| 国内外成人免费视频| 一区二区三区导航| 亚洲精品免费网站| 日韩视频中午一区| 欧美极品在线观看| 国产精品试看| 久久国产主播精品| 一本一本久久a久久精品牛牛影视| 国产精品久99| 亚洲人成网站在线观看播放| 精品不卡一区二区三区| 欧美一区二区三区的| 最新国产の精品合集bt伙计| 国产中文一区| 中日韩男男gay无套| 久久久www| 夜夜嗨av色综合久久久综合网| 欧美在线视频一区二区| 欧美激情一区二区三区全黄| 国产精品麻豆成人av电影艾秋| 欧美午夜国产| 欧美极品在线播放| 久久久久网站| 国产亚洲成av人片在线观看桃| 国产精品一区二区久久精品| 欧美激情亚洲一区| 欧美久久婷婷综合色| 午夜在线不卡| 国产精品美女一区二区| 亚洲男女自偷自拍图片另类| 亚洲男人的天堂在线aⅴ视频| 在线成人www免费观看视频| 老鸭窝亚洲一区二区三区| 午夜久久福利| 欧美一区二区日韩一区二区| 亚洲精品一区二区三| 久久男人av资源网站| 欧美国产综合| 国产欧美va欧美不卡在线| 制服诱惑一区二区| 亚洲国产精品久久人人爱蜜臀| 亚洲小视频在线观看| 久久av一区二区三区亚洲| 欧美人交a欧美精品| 国产欧美一区二区三区另类精品| 国产日韩一区二区三区| 黑人巨大精品欧美一区二区小视频| 一本一本久久a久久精品牛牛影视| 一区二区三区国产| 在线亚洲精品| 国产精品久久久久一区二区三区| 中国女人久久久| 国产嫩草一区二区三区在线观看| 国产欧美日韩综合一区在线观看| 亚洲综合日韩在线| 亚洲剧情一区二区| 亚洲电影免费观看高清| 国产精品综合网站| 国产精品99久久久久久久久久久久| 欧美国产精品人人做人人爱| 99国产一区| 国产亚洲精品aa| 久久天天躁狠狠躁夜夜av| 亚洲午夜视频在线| 久久综合一区| 欧美日韩另类丝袜其他| 男女视频一区二区| 欧美一站二站| 麻豆精品国产91久久久久久| 欧美99在线视频观看| 在线免费观看成人网| 韩国精品在线观看| 亚洲国产成人久久综合一区| 国产精品你懂的在线| 亚洲人成在线观看| 欧美绝品在线观看成人午夜影视| 午夜在线a亚洲v天堂网2018| 国产九九精品视频| 久久精品国产第一区二区三区最新章节| 在线观看日韩av先锋影音电影院| 狠狠色噜噜狠狠色综合久| 免费看av成人| 久久噜噜噜精品国产亚洲综合| 国产一区二区三区久久精品| 欧美成人精品一区| 国产在线精品成人一区二区三区| 国产精品一区二区在线观看不卡| 欧美不卡一区| 狠狠色伊人亚洲综合成人| 女人香蕉久久**毛片精品| 久久精品人人做人人爽| 久久riav二区三区| 久久精品在这里| 国产日产高清欧美一区二区三区| 亚洲第一天堂无码专区| 欧美一区二区三区免费在线看| 国产精品久久久久久影视| 在线成人中文字幕| 欧美激情综合色| 国产精品亚洲产品| 久久精品免费看| 国产一区二区三区四区hd| 国产欧美精品日韩| 欧美www视频在线观看| 麻豆国产精品va在线观看不卡| 欧美日韩美女| 亚洲在线成人| 国产精品高潮呻吟久久av无限| 亚洲午夜女主播在线直播| 国产精品国产三级国产普通话三级| 亚洲区在线播放| 麻豆freexxxx性91精品| 好看不卡的中文字幕| 欧美mv日韩mv国产网站app| 欧美一区二区免费观在线| 久久伊人免费视频| 亚洲风情亚aⅴ在线发布| 国产精品久久久爽爽爽麻豆色哟哟| 欧美日韩不卡合集视频| 亚洲黄色一区| 欧美人交a欧美精品| 亚洲欧美视频一区|