專利名稱:基于x協(xié)議的景象記錄與回放的實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)應(yīng)用技術(shù)領(lǐng)域,涉及圖形圖像處理,具體是基于X協(xié)議的景象記錄與回放的實(shí)現(xiàn)方法。
背景技術(shù):
在空管自動(dòng)化系統(tǒng)(ATC,Air Traffic Control)、艦船管理系統(tǒng)(CMS, CombatManagement System)等實(shí)時(shí)、重大使命系統(tǒng)(Real-time,mission-critical system)中,操作席位的畫面景象及人機(jī)操作(如鍵盤、鼠標(biāo)等操作)的記錄與回放是非常關(guān)鍵的功能,它能夠用于管制指揮工作中的事故調(diào)查、分析,及后期訓(xùn)練、功能測(cè)試和驗(yàn)證中使用。由于上述系統(tǒng)一般顯示分辨率很高,實(shí)時(shí)性要求高,如何完整記錄如此高分辨率圖形顯示存在較大的技術(shù)難題。
現(xiàn)有的處理方法有兩種(I)硬件記錄方法;(2)軟件圖像記錄方法。硬件記錄方法需采用專用硬件設(shè)備進(jìn)行視頻采集、編碼、存儲(chǔ),存在對(duì)硬件設(shè)備性能要求高、價(jià)格貴的問(wèn)題。如空管自動(dòng)化系統(tǒng)常用的28英寸高分辨率顯示器,在2048X2048,24位真彩色情況下,每幀數(shù)據(jù)量達(dá)12M字節(jié),如其記錄的幀率達(dá)到10幀/秒,數(shù)據(jù)量將達(dá)到960Mbps,則對(duì)硬件的帶寬通道和實(shí)時(shí)處理能力要求非常高。采用軟件方式記錄圖像的方法可以用幀間增量方式記錄圖像的變化,如中國(guó)專利CN200610022490. 0,給出了一種《與硬件和操作系統(tǒng)平臺(tái)無(wú)關(guān)的屏幕景象記錄方法》可以記錄圖像的變化。但是這種方法需不斷檢測(cè)屏幕圖像變化,對(duì)系統(tǒng)處理能力要求更高,存在記錄幀率過(guò)低(小于2幀/秒)、記錄畫面存在花屏、CPU資源占用過(guò)多而影響系統(tǒng)正常使用等問(wèn)題。
發(fā)明內(nèi)容
本發(fā)明的目的是針對(duì)現(xiàn)有技術(shù)的不足,提出一種針對(duì)Unix/Linux操作系統(tǒng)下XWINDOW圖形用戶界面的客戶/服務(wù)器模式特點(diǎn),發(fā)明了一種通過(guò)記錄X協(xié)議數(shù)據(jù)包的方式來(lái)實(shí)現(xiàn)記錄顯示景象的方法以及從記錄的X協(xié)議數(shù)據(jù)中的任意時(shí)間段開始準(zhǔn)確回放顯示景象的方法,用以提高席位景象記錄的準(zhǔn)確度、景象回放的質(zhì)量,并減少記錄數(shù)據(jù)量,以滿足管制指揮等工作中的事故調(diào)查、分析,及后期訓(xùn)練、功能測(cè)試和驗(yàn)證的使用要求。本發(fā)明的目的是這樣達(dá)到的景象記錄是在Unix/Linux操作系統(tǒng)下,在圖形服務(wù)器與圖形應(yīng)用程序之間設(shè)一個(gè)圖形服務(wù)器代理程序,與圖形服務(wù)器同時(shí)在Unix或Linux系統(tǒng)的X Window環(huán)境下運(yùn)行,圖形服務(wù)器代理程序作為所有圖形應(yīng)用程序的圖形服務(wù)器,同時(shí)又作為圖形服務(wù)器的一個(gè)圖形應(yīng)用程序;圖形服務(wù)器代理程序把從圖形應(yīng)用程序接收到的請(qǐng)求命令透明轉(zhuǎn)發(fā)到圖形服務(wù)器,并把從圖形服務(wù)器接收到的回復(fù)命令或錯(cuò)誤命令或事件通知透明轉(zhuǎn)發(fā)到圖形應(yīng)用程序,實(shí)現(xiàn)X WINDOW下正常的圖形顯示功能;與此同時(shí),圖形服務(wù)器代理程序?qū)⒔邮盏降腦協(xié)議數(shù)據(jù)打上時(shí)標(biāo)經(jīng)壓縮處理后存儲(chǔ)到景象記錄數(shù)據(jù)文件庫(kù)中,并不斷分析和處理所有接收到的X協(xié)議數(shù)據(jù),形成圖形服務(wù)器的內(nèi)部顯示狀態(tài)快照并按快照產(chǎn)生時(shí)間間隔保存到景象記錄數(shù)據(jù)文件庫(kù)中。景象回放是在圖形服務(wù)器與景象記錄數(shù)據(jù)文件庫(kù)間設(shè)一個(gè)景象回放程序,相對(duì)圖形服務(wù)器來(lái)說(shuō),它是一個(gè)圖形應(yīng)用程序,相對(duì)景象回放程序來(lái)說(shuō),它是從景象記錄數(shù)據(jù)文件庫(kù)中獲取快照數(shù)據(jù)和X協(xié)議數(shù)據(jù)包,經(jīng)處理后發(fā)送到圖形服務(wù)器實(shí)現(xiàn)景象的回放。景象回放程序根據(jù)選定的回放時(shí)間段,從記錄的景象記錄數(shù)據(jù)文件庫(kù)中獲取與回放開始時(shí)間最接近的快照數(shù)據(jù),經(jīng)分析處理后,將圖形服務(wù)器的內(nèi)部顯示狀態(tài)恢復(fù)到快照數(shù)據(jù)描述的狀態(tài),然后根據(jù)回放時(shí)標(biāo)先后讀取景象記錄數(shù)據(jù)文件庫(kù)中的請(qǐng)求命令數(shù)據(jù),經(jīng)處理變換后,發(fā)送到圖形服務(wù)器實(shí)現(xiàn)景象的回放。景象記錄的具體步驟如下(I)圖形服務(wù)器和圖形服務(wù)器代理程序配置與啟動(dòng)a)在UNIX或Linux操作系統(tǒng)中,設(shè)置環(huán)境變量DISPLAY=: 0.0,配置圖形服務(wù)器代理程序運(yùn)行在缺省圖形服務(wù)器0上,即監(jiān)聽6000端口,配置圖形服務(wù)器運(yùn)行在圖形服務(wù)器 I上,即監(jiān)聽6001端口,b)在X WINDOW圖形系統(tǒng)啟動(dòng)時(shí),圖形服務(wù)器先運(yùn)行,圖形服務(wù)器代理程序在圖形服務(wù)器運(yùn)行后立即運(yùn)行;( 2 )圖形應(yīng)用程序通信鏈接建立a)圖形應(yīng)用程序啟動(dòng)時(shí),將根據(jù)系統(tǒng)環(huán)境變量DISPLAY=:0. 0的配置,首先向圖形服務(wù)器代理程序發(fā)起建立鏈接請(qǐng)求,b)圖形服務(wù)器代理程序在接收到圖形應(yīng)用程序建立鏈接請(qǐng)求后,向圖形服務(wù)器建立鏈接,并轉(zhuǎn)發(fā)收到的數(shù)據(jù)給圖形服務(wù)器,并等待圖形服務(wù)器的應(yīng)答,c)圖形服務(wù)器代理程序收到圖形服務(wù)器的應(yīng)答后,將應(yīng)答數(shù)據(jù)轉(zhuǎn)發(fā)給發(fā)起建立鏈接請(qǐng)求的圖形應(yīng)用程序,d)記錄建立鏈接請(qǐng)求對(duì)應(yīng)的數(shù)據(jù),對(duì)建立鏈接成功的情況,更新圖形服務(wù)器代理程序內(nèi)部的圖形應(yīng)用程序鏈接列表;(3) X協(xié)議數(shù)據(jù)轉(zhuǎn)發(fā)a)圖形服務(wù)器代理程序持續(xù)接收所有X協(xié)議數(shù)據(jù),如果是從圖形應(yīng)用程序來(lái)的數(shù)據(jù),則將數(shù)據(jù)轉(zhuǎn)發(fā)到圖形服務(wù)器;如果是從圖形服務(wù)器來(lái)的數(shù)據(jù),則分析其數(shù)據(jù),將其轉(zhuǎn)發(fā)給對(duì)應(yīng)的圖形應(yīng)用程序,b)如果圖形服務(wù)器代理程序收到鏈接關(guān)閉請(qǐng)求,將鏈接關(guān)閉請(qǐng)求從圖形服務(wù)器代理程序內(nèi)部的圖形應(yīng)用程序鏈接列表中刪除;(4)X協(xié)議數(shù)據(jù)記錄圖形服務(wù)器代理程序?qū)⒔邮盏降腦協(xié)議數(shù)據(jù)中的請(qǐng)求命令打上記錄時(shí)間標(biāo)志后,順序記錄到景象記錄數(shù)據(jù)文件庫(kù)中;(5)圖形服務(wù)器快照生成與記錄a)初始快照生成在X WINDOW圖形系統(tǒng)啟動(dòng)時(shí),圖形服務(wù)器運(yùn)行后,圖形服務(wù)器代理程序立即運(yùn)行,并與圖形服務(wù)器建立鏈接,獲取圖形服務(wù)器返回的初始狀態(tài)信息,包括窗口系統(tǒng)的背景圖、字節(jié)序定義、位圖格式、屏幕信息、窗口信息、顏色模式和深度,生成初始快照并記錄到景象記錄數(shù)據(jù)文件庫(kù)中,b)快照生成與記錄圖形服務(wù)器代理程序?qū)邮盏降腦協(xié)議數(shù)據(jù)進(jìn)行分析,提取對(duì)圖形服務(wù)器狀態(tài)生成和更新快照需分析處理的請(qǐng)求命令并更新當(dāng)前快照數(shù)據(jù),并按快照產(chǎn)生時(shí)間間隔獲取當(dāng)前窗口系統(tǒng)的背景圖形成新的快照數(shù)據(jù)并記錄到景象記錄數(shù)據(jù)文件庫(kù)中。景象回放的具體步驟如下(I)回放準(zhǔn)備a)啟動(dòng)回放用的圖形服務(wù)器和景象回放程序,b)根據(jù)使用者選定的數(shù)據(jù)文件及回放開始時(shí)間,景象回放程序從景象記錄數(shù)據(jù)文件庫(kù)中獲取開始回放時(shí)間之前最近的快照數(shù)據(jù),并將景象記錄數(shù)據(jù)文件庫(kù)中記錄X協(xié)議的數(shù)據(jù)文件定位到開始回放時(shí)間的位置;(2)快照恢復(fù)a)建立與回放用圖形服務(wù)器的鏈接, b)根據(jù)獲取的快照數(shù)據(jù),景象回放程序構(gòu)造對(duì)應(yīng)的X協(xié)議請(qǐng)求命令并發(fā)送到圖形服務(wù)器,將圖形服務(wù)器的狀態(tài)恢復(fù)到快照對(duì)應(yīng)的狀態(tài),c)由于圖形服務(wù)器中的圖形資源具有全系統(tǒng)唯一的標(biāo)識(shí)號(hào)且是動(dòng)態(tài)分配的,景象回放程序內(nèi)部維護(hù)與圖形服務(wù)器一致的狀態(tài),并建立“記錄數(shù)據(jù)圖形資源標(biāo)識(shí)號(hào)與回放圖形資源標(biāo)識(shí)號(hào)映射表”和“記錄數(shù)據(jù)圖形資源段基址與回放圖形資源段基址映射表”;( 3 ) X協(xié)議數(shù)據(jù)解析與回放a)景象回放程序從開始回放時(shí)間開始,依次從景象記錄數(shù)據(jù)文件庫(kù)中讀取X協(xié)議數(shù)據(jù),b)對(duì)讀取的X協(xié)議數(shù)據(jù),分析其命令格式,根據(jù)“記錄數(shù)據(jù)圖形資源標(biāo)識(shí)號(hào)與回放圖形資源標(biāo)識(shí)號(hào)映射表”和“記錄數(shù)據(jù)圖形資源段基址與回放圖形資源段基址映射表”的映射關(guān)系,替換X協(xié)議數(shù)據(jù)中的圖形資源標(biāo)識(shí)號(hào)后,按X協(xié)議數(shù)據(jù)的記錄時(shí)間標(biāo)志對(duì)應(yīng)的時(shí)間間隔發(fā)送給圖形服務(wù)器,以實(shí)現(xiàn)景象的回放,c)對(duì)創(chuàng)建圖形資源類的請(qǐng)求命令,在發(fā)送給圖形服務(wù)器后,在“記錄數(shù)據(jù)圖形資源標(biāo)識(shí)號(hào)與回放圖形資源標(biāo)識(shí)號(hào)映射表”中增加相應(yīng)映射關(guān)系數(shù)據(jù),用于后續(xù)請(qǐng)求命令的處理,d)對(duì)圖形應(yīng)用程序建立鏈接請(qǐng)求,在發(fā)送給圖形服務(wù)器后,景象回放程序分析圖形服務(wù)器對(duì)建立鏈接請(qǐng)求的應(yīng)答,并更新“記錄數(shù)據(jù)圖形資源段基址與回放圖形資源段基址映射表”中的圖形資源段基址映射關(guān)系;(4)回放控制在回放過(guò)程中,支持開始、暫停、恢復(fù)、停止、倍速回放控制,其中,倍速回放時(shí),對(duì)第(3)步X協(xié)議數(shù)據(jù)解析與回放的b)步中的時(shí)間間隔進(jìn)行放大或縮小,以實(shí)現(xiàn)回放的倍速控制。本發(fā)明具有以下有益效果(I)本方法與圖形應(yīng)用程序和圖形服務(wù)器無(wú)關(guān),圖形服務(wù)器和所有圖形應(yīng)用程序均不做任何修改,就能實(shí)現(xiàn)X WINDOW環(huán)境下的景象記錄與回放;(2)本方法是一種無(wú)損的景象真實(shí)記錄與回放,其它方法采用按幀率采樣方式記錄,存在因巾貞率低而失真的問(wèn)題;(3)本方法記錄的數(shù)據(jù)量與屏幕大小及顏色深度等基本無(wú)關(guān),僅與圖形界面的復(fù)雜度和變化頻率有關(guān),其記錄數(shù)據(jù)量比圖像采集方法小很多;(4)本方法可從任意時(shí)間段開始回放,包括快進(jìn)、倍速、暫停等操作。
(5)本方法方便快捷,可操作性強(qiáng),適用性廣,具有廣闊的推廣價(jià)值。
圖I是X WINDOW示意圖。圖2是基于X協(xié)議的景象數(shù)據(jù)記錄示意圖。圖3是基于X協(xié)議的景象數(shù)據(jù)回放示意圖。圖4是X協(xié)議數(shù)據(jù)文件格式示意圖。圖5是X協(xié)議快照數(shù)據(jù)文件格式示意圖。
具體實(shí)施方式
在空管自動(dòng)化系統(tǒng)等的工作站席位一般采用Unix/Linux操作系統(tǒng),用X WINDOW作為圖形顯示系統(tǒng)。X WINDOW圖形顯示系統(tǒng)采用客戶-服務(wù)器模式(如圖I所示),圖形顯示系統(tǒng)由獨(dú)立運(yùn)行的圖形服務(wù)器(XSERVER)進(jìn)程提供,客戶端由圖形應(yīng)用程序(XClient)組成。圖形應(yīng)用程序利用X WINDOW圖形顯示系統(tǒng)提供的圖形接口庫(kù)(XLib)通過(guò)X協(xié)議(XProtocol)與圖形服務(wù)器交互,實(shí)現(xiàn)圖形界面的繪制與交互。X Window下可運(yùn)行多個(gè)圖形服務(wù)器,不同圖形服務(wù)器監(jiān)聽不同的通信協(xié)議(TCP/UNIX域套接字等)端口,如采用TCP通信協(xié)議,其監(jiān)聽端口為(6000+N),N為圖形服務(wù)器編號(hào),可以通過(guò)運(yùn)行圖形服務(wù)器進(jìn)程的命令行參數(shù)或通過(guò)系統(tǒng)環(huán)境變量$DISPLAY指定,缺省編號(hào)為O。X協(xié)議主要由圖形資源定義、命令格式定義以及通信鏈接建立等部分組成,其具體內(nèi)容如參考文獻(xiàn) Robert ff. Scheifler. X Window System Protocol (X Version11, Release 6). Massachusetts Institute of Technology Laboratory for ComputerScience.所不。圖形資源定義包括WIND0W、PIXMAP, CURSOR、FONT、GCC0NTEXT、C0L0RMAP、ATOM、VISUALID、KEYSYM等,它們均具有全系統(tǒng)唯一的標(biāo)識(shí)號(hào)(Identifier),標(biāo)識(shí)號(hào)由資源段基址(resource-id-base)和資源順序號(hào)組成,相同圖形應(yīng)用程序創(chuàng)建的資源的標(biāo)識(shí)號(hào)的圖形資源段基址均相同,用以區(qū)分不同圖形應(yīng)用程序。X協(xié)議的命令格式定義包括4類a) Request :請(qǐng)求,由8 bit命令操作代碼、16 bit的請(qǐng)求命令數(shù)據(jù)長(zhǎng)度,以及此命令的參數(shù)組成。圖形應(yīng)用程序根據(jù)顯示的需要發(fā)送給圖形服務(wù)器,實(shí)現(xiàn)圖形界面繪制、資源管理等功能;b) Reply :回復(fù),圖形服務(wù)器對(duì)收到的Request的命令后處理正確的應(yīng)答,根據(jù)不同的Request的處理結(jié)果,圖形服務(wù)器可回復(fù)一條或多條Reply,也可以無(wú)Reply ;c)Error :錯(cuò)誤,圖形服務(wù)器對(duì)收到的Request的命令后處理出錯(cuò)的應(yīng)答;d)Event:事件,當(dāng)發(fā)生鍵盤、鼠標(biāo)、圖形重繪等情況時(shí),圖形服務(wù)器發(fā)送給對(duì)應(yīng)圖形應(yīng)用程序的事件通知消息,以實(shí)現(xiàn)人機(jī)交互與圖形及時(shí)刷新。通信鏈接建立當(dāng)圖形應(yīng)用程序啟動(dòng)時(shí),圖形應(yīng)用程序需先與圖形服務(wù)器建立通信鏈接,然后發(fā)送建立圖形繪制初始化命令,待認(rèn)證通過(guò)后,圖形服務(wù)器將給圖形應(yīng)用程序回復(fù)包括圖形資源段基址、字節(jié)序定義、位圖格式、屏幕大小、顏色模式和深度等圖形服務(wù)器的配置信息,供圖形應(yīng)用程序在后續(xù)的圖形繪制指令中使用。本發(fā)明基于X協(xié)議,采用與X協(xié)議相同的圖形資源定義、命令格式定義以及通信鏈接建立實(shí)現(xiàn)景象記錄與回放。系統(tǒng)中圖形服務(wù)器和所有圖形應(yīng)用程序均不做任何修改,即可實(shí)現(xiàn)X WINDOW環(huán)境下的景象記錄與回放,十分方便。參見(jiàn)附圖2。本發(fā)明的景象記錄方案是設(shè)計(jì)一個(gè)圖形服務(wù)器代理程序(XSERVERProxy),并與圖形服務(wù)器同時(shí)在Unix/Linux系統(tǒng)的X Window環(huán)境下運(yùn)行,圖形服務(wù)器代理程序作為所有圖形應(yīng)用程序的圖形服務(wù)器,同時(shí)又作為圖形服務(wù)器的一個(gè)圖形應(yīng)用程序。圖形服務(wù)器代理程序把從圖形應(yīng)用程序接收到的請(qǐng)求(Request)透明轉(zhuǎn)發(fā)到圖形服務(wù)器,并把圖形服務(wù)器接收到的回復(fù)/錯(cuò)誤/事件(Reply/Error/Event)透明轉(zhuǎn)發(fā)到圖形應(yīng)用程序,實(shí)現(xiàn)X WINDOW下正常的圖形顯示功能。與此同時(shí),圖形服務(wù)器代理程序?qū)⒔邮盏降腦協(xié)議數(shù)據(jù)打上時(shí)標(biāo)經(jīng)壓縮處理后存儲(chǔ)到景象記錄數(shù)據(jù)文件庫(kù)中,并不斷分析和處理所有接 收到的X協(xié)議數(shù)據(jù),定期形成圖形服務(wù)器的內(nèi)部顯示狀態(tài)快照數(shù)據(jù)(Snapshot,包括圖形服務(wù)器的內(nèi)部狀態(tài),如窗口位置、大小、字體屬性等狀態(tài)信息)并按快照產(chǎn)生時(shí)間間隔將快照數(shù)據(jù)保存到景象記錄數(shù)據(jù)文件庫(kù)中。本方法的關(guān)鍵和難點(diǎn)是根據(jù)連續(xù)的X協(xié)議數(shù)據(jù)形成圖形服務(wù)器的內(nèi)部顯示狀態(tài)快照數(shù)據(jù),用于回放時(shí)恢復(fù)圖形服務(wù)器的當(dāng)時(shí)的狀態(tài)。參見(jiàn)附圖3。本發(fā)明的景象回放方案是設(shè)計(jì)一個(gè)景象回放程序(XReplay),相對(duì)圖形服務(wù)器來(lái)說(shuō),它是一個(gè)圖形應(yīng)用程序,對(duì)景象回放程序來(lái)說(shuō),它是從景象記錄數(shù)據(jù)文件庫(kù)中獲取快照數(shù)據(jù)和X協(xié)議數(shù)據(jù)包,經(jīng)處理后發(fā)送到圖形服務(wù)器實(shí)現(xiàn)記錄的景象回放。景象回放程序根據(jù)選定的回放時(shí)間段,從景象記錄數(shù)據(jù)文件庫(kù)中獲取與回放開始時(shí)間最接近的快照數(shù)據(jù),經(jīng)分析處理后,將圖形服務(wù)器(XSERVER)的內(nèi)部顯示狀態(tài)恢復(fù)到該快照數(shù)據(jù)描述的狀態(tài),然后根據(jù)回放時(shí)標(biāo)先后讀取景象記錄數(shù)據(jù)文件庫(kù)中的請(qǐng)求(Request)命令數(shù)據(jù),經(jīng)處理變換后,發(fā)送到圖形服務(wù)器實(shí)現(xiàn)景象回放。本方法的關(guān)鍵是根據(jù)快照數(shù)據(jù)在圖形服務(wù)器上恢復(fù)顯示狀態(tài),以及對(duì)記錄的X協(xié)議數(shù)據(jù)包中涉及資源標(biāo)識(shí)號(hào)、時(shí)標(biāo)等的變換處理。實(shí)施X協(xié)議景象記錄詳細(xì)步驟如下I.圖形服務(wù)器和圖形服務(wù)器代理程序配置與啟動(dòng)a)在UNIX或Linux操作系統(tǒng)中,設(shè)置環(huán)境變量DISPLAY=: 0.0,配置圖形服務(wù)器代理程序運(yùn)行在缺省圖形服務(wù)器0上,即監(jiān)聽6000端口,配置圖形服務(wù)器運(yùn)行在圖形服務(wù)器
I上,即監(jiān)聽6001端口,b)在X WINDOW圖形系統(tǒng)啟動(dòng)時(shí),圖形服務(wù)器先運(yùn)行,圖形服務(wù)器代理程序在圖形服務(wù)器運(yùn)行后立即運(yùn)行;2.圖形應(yīng)用程序通信鏈接建立a)圖形應(yīng)用程序啟動(dòng)時(shí),將根據(jù)系統(tǒng)環(huán)境變量DISPLAY=:0. 0的配置,首先向圖形服務(wù)器代理程序發(fā)起建立鏈接請(qǐng)求;b)圖形服務(wù)器代理程序在接收到圖形應(yīng)用程序建立鏈接請(qǐng)求后,向圖形服務(wù)器建立鏈接,并轉(zhuǎn)發(fā)收到的數(shù)據(jù)給圖形服務(wù)器,并等待圖形服務(wù)器的應(yīng)答;c)圖形服務(wù)器代理程序收到圖形服務(wù)器的應(yīng)答后,將應(yīng)答數(shù)據(jù)轉(zhuǎn)發(fā)給發(fā)起建立鏈接請(qǐng)求的圖形應(yīng)用程序;d)記錄建立鏈接請(qǐng)求對(duì)應(yīng)的數(shù)據(jù),對(duì)建立鏈接成功的情況,更新圖形服務(wù)器代理程序內(nèi)部的圖形應(yīng)用程序鏈接列表。
3. X協(xié)議數(shù)據(jù)轉(zhuǎn)發(fā)a)圖形服務(wù)器代理程序持續(xù)接收所有X協(xié)議數(shù)據(jù),如果是從圖形應(yīng)用程序來(lái)的數(shù)據(jù),則將數(shù)據(jù)轉(zhuǎn)發(fā)到圖形服務(wù)器;如果是從圖形服務(wù)器來(lái)的數(shù)據(jù),則分析其數(shù)據(jù),將其轉(zhuǎn)發(fā)給對(duì)應(yīng)的圖形應(yīng)用程序,b)如果圖形服務(wù)器代理程序收到鏈接關(guān)閉請(qǐng)求,將鏈接關(guān)閉請(qǐng)求從圖形服務(wù)器代理程序內(nèi)部的圖形應(yīng)用程序鏈接列表中刪除;4. X協(xié)議數(shù)據(jù)記錄圖形服務(wù)器代理程序?qū)⒔邮盏降腦協(xié)議數(shù)據(jù)中的請(qǐng)求命令打上記錄時(shí)間標(biāo)志后,順序記錄到景象記錄數(shù)據(jù)文件庫(kù)中;
·
5.圖形服務(wù)器快照生成與記錄a)初始快照生成在X WINDOW圖形系統(tǒng)啟動(dòng)時(shí),圖形服務(wù)器運(yùn)行后,圖形服務(wù)器代理程序立即運(yùn)行,并與圖形服務(wù)器建立鏈接,獲取圖形服務(wù)器返回的初始狀態(tài)信息,包括窗口系統(tǒng)的背景圖、字節(jié)序定義、位圖格式、屏幕信息、窗口信息、顏色模式和深度,生成初始快照并記錄到景象記錄數(shù)據(jù)文件庫(kù)中,b)快照數(shù)據(jù)生成與記錄圖形服務(wù)器代理程序?qū)邮盏降腦協(xié)議數(shù)據(jù)進(jìn)行分析,提取對(duì)圖形服務(wù)器狀態(tài)生成和更新快照需分析處理的請(qǐng)求命令并更新當(dāng)前快照數(shù)據(jù),并按快照產(chǎn)生時(shí)間間隔獲取當(dāng)前窗口系統(tǒng)的背景圖形成新的快照數(shù)據(jù)并記錄到景象記錄數(shù)據(jù)文件庫(kù)中??煺债a(chǎn)生時(shí)間間隔是定為15分鐘,可以根據(jù)需要自行設(shè)定。景象回放的具體步驟如下I.回放準(zhǔn)備a)啟動(dòng)回放用的圖形服務(wù)器和景象回放程序,b)根據(jù)使用者選定的數(shù)據(jù)文件及回放開始時(shí)間,景象回放程序從景象記錄數(shù)據(jù)文件庫(kù)中獲取開始回放時(shí)間之前最近的快照數(shù)據(jù),并將景象記錄數(shù)據(jù)文件庫(kù)中記錄X協(xié)議的數(shù)據(jù)文件定位到開始回放時(shí)間的位置;2.快照恢復(fù)a)建立與回放用圖形服務(wù)器的鏈接,b)根據(jù)獲取的快照數(shù)據(jù),景象回放程序構(gòu)造對(duì)應(yīng)的X協(xié)議請(qǐng)求命令并發(fā)送到圖形服務(wù)器,將圖形服務(wù)器的狀態(tài)恢復(fù)到快照對(duì)應(yīng)的狀態(tài),c)由于圖形服務(wù)器中的圖形資源具有全系統(tǒng)唯一的標(biāo)識(shí)號(hào)且是動(dòng)態(tài)分配的,景象回放程序內(nèi)部維護(hù)與圖形服務(wù)器一致的狀態(tài),并建立“記錄數(shù)據(jù)圖形資源標(biāo)識(shí)號(hào)與回放圖形資源標(biāo)識(shí)號(hào)映射表”和“記錄數(shù)據(jù)圖形資源段基址與回放圖形資源段基址映射表”;3. X協(xié)議數(shù)據(jù)解析與回放a)景象回放程序從開始回放時(shí)間開始,依次從景象記錄數(shù)據(jù)文件庫(kù)中讀取X協(xié)議數(shù)據(jù),b)對(duì)讀取的X協(xié)議數(shù)據(jù),分析其命令格式,根據(jù)“記錄數(shù)據(jù)圖形資源標(biāo)識(shí)號(hào)與回放圖形資源標(biāo)識(shí)號(hào)映射表”和“記錄數(shù)據(jù)圖形資源段基址與回放圖形資源段基址映射表”的映射關(guān)系,替換X協(xié)議數(shù)據(jù)中的圖形資源標(biāo)識(shí)號(hào)后,按X協(xié)議數(shù)據(jù)的記錄時(shí)間標(biāo)志對(duì)應(yīng)的時(shí)間間隔發(fā)送給圖形服務(wù)器,以實(shí)現(xiàn)景象的回放,c)對(duì)創(chuàng)建圖形資源類的請(qǐng)求命令,在發(fā)送給圖形服務(wù)器后,在“記錄數(shù)據(jù)圖形資源標(biāo)識(shí)號(hào)與回放圖形資源標(biāo)識(shí)號(hào)映射表”中增加相應(yīng)映射關(guān)系數(shù)據(jù),用于后續(xù)請(qǐng)求命令的處理,d)對(duì)圖形應(yīng)用程序建立鏈接請(qǐng)求(對(duì)應(yīng)圖形應(yīng)用程序啟動(dòng)運(yùn)行),在發(fā)送給圖形服務(wù)器后,景象回放程序分析圖形服務(wù)器對(duì)建立鏈接請(qǐng)求的應(yīng)答,并更新“記錄數(shù)據(jù)圖形資源段基址與回放圖形資源段基址映射表”中的圖形資源段基址映射關(guān)系;4.回放控制在回放過(guò)程中,支持開始、暫停、恢復(fù)、停止、倍速回放控制,其中,倍速回放時(shí),對(duì)景象回放的具體步驟第(3)步X協(xié)議數(shù)據(jù)解析與回放的b)步中的時(shí)間間隔進(jìn)行放大或縮小,以實(shí)現(xiàn)回放的倍速控制。相關(guān)數(shù)據(jù)結(jié)構(gòu)定義( I)景象記錄數(shù)據(jù)文件庫(kù)中文件組成及文件格式參見(jiàn)附圖4、圖5。景象記錄數(shù)據(jù)文件庫(kù)中的數(shù)據(jù)文件由多個(gè)X協(xié)議數(shù)據(jù)文件和X 協(xié)議快照數(shù)據(jù)文件組成。X協(xié)議數(shù)據(jù)文件名按“主機(jī)名_年月日時(shí)分秒.xproto”命名,“年月日時(shí)分秒”為X協(xié)議數(shù)據(jù)文件的開始記錄時(shí)間。X協(xié)議快照數(shù)據(jù)文件名按“主機(jī)名_年月日時(shí)分秒.snapshot”命名,一個(gè)文件存儲(chǔ)一個(gè)快照數(shù)據(jù),“年月日時(shí)分秒”為該快照數(shù)據(jù)生成的時(shí)間。圖4為X協(xié)議數(shù)據(jù)文件格式示意圖,圖5為X協(xié)議快照數(shù)據(jù)文件格式示意圖。(2)快照數(shù)據(jù)格式主要數(shù)據(jù)項(xiàng)如表I X協(xié)議快照數(shù)據(jù)項(xiàng)表I
權(quán)利要求
1.一種基于X協(xié)議的景象記錄與回放的實(shí)現(xiàn)方法,其特征在于 景象記錄是在Unix/Linux操作系統(tǒng)下,在圖形服務(wù)器與圖形應(yīng)用程序之間設(shè)一個(gè)圖形服務(wù)器代理程序,與圖形服務(wù)器同時(shí)在Unix或Linux系統(tǒng)的X Window環(huán)境下運(yùn)行,圖形服務(wù)器代理程序作為所有圖形應(yīng)用程序的圖形服務(wù)器,同時(shí)又作為圖形服務(wù)器的一個(gè)圖形應(yīng)用程序;圖形服務(wù)器代理程序把從圖形應(yīng)用程序接收到的請(qǐng)求命令透明轉(zhuǎn)發(fā)到圖形服務(wù)器,并把從圖形服務(wù)器接收到的回復(fù)命令或錯(cuò)誤命令或事件通知透明轉(zhuǎn)發(fā)到圖形應(yīng)用程序,實(shí)現(xiàn)X WINDOW下正常的圖形顯示功能;與此同時(shí),圖形服務(wù)器代理程序?qū)⒔邮盏降腦協(xié)議數(shù)據(jù)打上時(shí)標(biāo)經(jīng)壓縮處理后存儲(chǔ)到景象記錄數(shù)據(jù)文件庫(kù)中,并不斷分析和處理所有接收到的X協(xié)議數(shù)據(jù),形成圖形服務(wù)器的內(nèi)部顯示狀態(tài)快照并按快照產(chǎn)生時(shí)間間隔保存到景象記錄數(shù)據(jù)文件庫(kù)中; 景象回放是在圖形服務(wù)器與景象記錄數(shù)據(jù)文件庫(kù)間設(shè)一個(gè)景象回放程序,相對(duì)圖形服務(wù)器來(lái)說(shuō),它是一個(gè)圖形應(yīng)用程序,相對(duì)景象回放程序來(lái)說(shuō),它是從景象記錄數(shù)據(jù)文件庫(kù)中獲取快照數(shù)據(jù)和X協(xié)議數(shù)據(jù)包,經(jīng)處理后發(fā)送到圖形服務(wù)器實(shí)現(xiàn)景象的回放;景象回放程 序根據(jù)選定的回放時(shí)間段,從記錄的景象記錄數(shù)據(jù)文件庫(kù)中獲取與回放開始時(shí)間最接近的快照數(shù)據(jù),經(jīng)分析處理后,將圖形服務(wù)器的內(nèi)部顯示狀態(tài)恢復(fù)到快照數(shù)據(jù)描述的狀態(tài),然后根據(jù)回放時(shí)標(biāo)先后讀取景象記錄數(shù)據(jù)文件庫(kù)中的請(qǐng)求命令數(shù)據(jù),經(jīng)處理變換后,發(fā)送到圖形服務(wù)器實(shí)現(xiàn)景象的回放。
2.如權(quán)利要求I所述的實(shí)現(xiàn)方法,其特征在于景象記錄的具體步驟如下 (1)圖形服務(wù)器和圖形服務(wù)器代理程序配置與啟動(dòng) a)在UNIX或Linux操作系統(tǒng)中,設(shè)置環(huán)境變量DISPLAY=:0. 0,配置圖形服務(wù)器代理程序運(yùn)行在缺省圖形服務(wù)器0上,即監(jiān)聽6000端口,配置圖形服務(wù)器運(yùn)行在圖形服務(wù)器I上,即監(jiān)聽6001端口, b)在XWINDOW圖形系統(tǒng)啟動(dòng)時(shí),圖形服務(wù)器先運(yùn)行,圖形服務(wù)器代理程序在圖形服務(wù)器運(yùn)行后立即運(yùn)行; (2)圖形應(yīng)用程序通信鏈接建立 a)圖形應(yīng)用程序啟動(dòng)時(shí),將根據(jù)系統(tǒng)環(huán)境變量DISPLAY=:0.0的配置,首先向圖形服務(wù)器代理程序發(fā)起建立鏈接請(qǐng)求, b)圖形服務(wù)器代理程序在接收到圖形應(yīng)用程序建立鏈接請(qǐng)求后,向圖形服務(wù)器建立鏈接,并轉(zhuǎn)發(fā)收到的數(shù)據(jù)給圖形服務(wù)器,并等待圖形服務(wù)器的應(yīng)答, c)圖形服務(wù)器代理程序收到圖形服務(wù)器的應(yīng)答后,將應(yīng)答數(shù)據(jù)轉(zhuǎn)發(fā)給發(fā)起建立鏈接請(qǐng)求的圖形應(yīng)用程序, d)記錄建立鏈接請(qǐng)求對(duì)應(yīng)的數(shù)據(jù),對(duì)建立鏈接成功的情況,更新圖形服務(wù)器代理程序內(nèi)部的圖形應(yīng)用程序鏈接列表; (3)X協(xié)議數(shù)據(jù)轉(zhuǎn)發(fā) a)圖形服務(wù)器代理程序持續(xù)接收所有X協(xié)議數(shù)據(jù),如果是從圖形應(yīng)用程序來(lái)的數(shù)據(jù),則將數(shù)據(jù)轉(zhuǎn)發(fā)到圖形服務(wù)器;如果是從圖形服務(wù)器來(lái)的數(shù)據(jù),則分析其數(shù)據(jù),將其轉(zhuǎn)發(fā)給對(duì)應(yīng)的圖形應(yīng)用程序, b)如果圖形服務(wù)器代理程序收到鏈接關(guān)閉請(qǐng)求,將鏈接關(guān)閉請(qǐng)求從圖形服務(wù)器代理程序內(nèi)部的圖形應(yīng)用程序鏈接列表中刪除;(4)X協(xié)議數(shù)據(jù)記錄圖形服務(wù)器代理程序?qū)⒔邮盏降腦協(xié)議數(shù)據(jù)中的請(qǐng)求命令打上記錄時(shí)間標(biāo)志后,順序記錄到景象記錄數(shù)據(jù)文件庫(kù)中; (5)圖形服務(wù)器快照生成與記錄 a)初始快照生成在XWINDOW圖形系統(tǒng)啟動(dòng)時(shí),圖形服務(wù)器運(yùn)行后,圖形服務(wù)器代理程序立即運(yùn)行,并與圖形服務(wù)器建立鏈接,獲取圖形服務(wù)器返回的初始狀態(tài)信息,包括窗口系統(tǒng)的背景圖、字節(jié)序定義、位圖格式、屏幕信息、窗口信息、顏色模式和深度,生成初始快照并記錄到景象記錄數(shù)據(jù)文件庫(kù)中, b)快照生成與記錄圖形服務(wù)器代理程序?qū)邮盏降腦協(xié)議數(shù)據(jù)進(jìn)行分析,提取對(duì)圖形服務(wù)器狀態(tài)生成和更新快照需分析處理的請(qǐng)求命令并更新當(dāng)前快照數(shù)據(jù),并按快照產(chǎn)生時(shí)間間隔獲取當(dāng)前窗口系統(tǒng)的背景圖形成新的快照數(shù)據(jù)并記錄到景象記錄數(shù)據(jù)文件庫(kù)中。
3.如權(quán)利要求I所述的實(shí)現(xiàn)方法,其特征在于景象回放的具體步驟如下 (1)回放準(zhǔn)備 a)啟動(dòng)回放用的圖形服務(wù)器和景象回放程序, b)根據(jù)使用者選定的數(shù)據(jù)文件及回放開始時(shí)間,景象回放程序從景象記錄數(shù)據(jù)文件庫(kù)中獲取開始回放時(shí)間之前最近的快照數(shù)據(jù),并將景象記錄數(shù)據(jù)文件庫(kù)中記錄X協(xié)議的數(shù)據(jù)文件定位到開始回放時(shí)間的位置; (2)快照恢復(fù): a)建立與回放用圖形服務(wù)器的鏈接, b)根據(jù)獲取的快照數(shù)據(jù),景象回放程序構(gòu)造對(duì)應(yīng)的X協(xié)議請(qǐng)求命令并發(fā)送到圖形服務(wù)器,將圖形服務(wù)器的狀態(tài)恢復(fù)到快照對(duì)應(yīng)的狀態(tài), c)由于圖形服務(wù)器中的圖形資源具有全系統(tǒng)唯一的標(biāo)識(shí)號(hào)且是動(dòng)態(tài)分配的,景象回放程序內(nèi)部維護(hù)與圖形服務(wù)器一致的狀態(tài),并建立“記錄數(shù)據(jù)圖形資源標(biāo)識(shí)號(hào)與回放圖形資源標(biāo)識(shí)號(hào)映射表”和“記錄數(shù)據(jù)圖形資源段基址與回放圖形資源段基址映射表”; (3)X協(xié)議數(shù)據(jù)解析與回放 a)景象回放程序從開始回放時(shí)間開始,依次從景象記錄數(shù)據(jù)文件庫(kù)中讀取X協(xié)議數(shù)據(jù), b)對(duì)讀取的X協(xié)議數(shù)據(jù),分析其命令格式,根據(jù)“記錄數(shù)據(jù)圖形資源標(biāo)識(shí)號(hào)與回放圖形資源標(biāo)識(shí)號(hào)映射表”和“記錄數(shù)據(jù)圖形資源段基址與回放圖形資源段基址映射表”的映射關(guān)系,替換X協(xié)議數(shù)據(jù)中的圖形資源標(biāo)識(shí)號(hào)后,按X協(xié)議數(shù)據(jù)的記錄時(shí)間標(biāo)志對(duì)應(yīng)的時(shí)間間隔發(fā)送給圖形服務(wù)器,以實(shí)現(xiàn)景象的回放, c)對(duì)創(chuàng)建圖形資源類的請(qǐng)求命令,在發(fā)送給圖形服務(wù)器后,在“記錄數(shù)據(jù)圖形資源標(biāo)識(shí)號(hào)與回放圖形資源標(biāo)識(shí)號(hào)映射表”中增加相應(yīng)映射關(guān)系數(shù)據(jù),用于后續(xù)請(qǐng)求命令的處理, d)對(duì)圖形應(yīng)用程序建立鏈接請(qǐng)求,在發(fā)送給圖形服務(wù)器后,景象回放程序分析圖形服務(wù)器對(duì)建立鏈接請(qǐng)求的應(yīng)答,并更新“記錄數(shù)據(jù)圖形資源段基址與回放圖形資源段基址映射表”中的圖形資源段基址映射關(guān)系; (4)回放控制在回放過(guò)程中,支持開始、暫停、恢復(fù)、停止、倍速回放控制,其中,倍速回放時(shí),對(duì)第(3)步X協(xié)議數(shù)據(jù)解析與回放的b)步中的時(shí)間間隔進(jìn)行放大或縮小,以實(shí)現(xiàn)回放的倍速控制。
4.如權(quán)利要求I所述的實(shí)現(xiàn)方法,其特征在于景象記錄數(shù)據(jù)文件庫(kù)中的數(shù)據(jù)文件由多個(gè)X協(xié)議數(shù)據(jù)文件和X協(xié)議快照數(shù)據(jù)文件組成,X協(xié)議數(shù)據(jù)文件命名“主機(jī)名_年月日時(shí)分秒.xproto”,“年月日時(shí)分秒”為X協(xié)議數(shù)據(jù)文件的開始記錄時(shí)間,X協(xié)議快照數(shù)據(jù)文件命名“主機(jī)名_年月日時(shí)分秒.snapshot”,一個(gè)文件存儲(chǔ)一個(gè)快照數(shù)據(jù),“年月日時(shí)分秒”為快照數(shù)據(jù)生成的時(shí)間。
5.如權(quán)利要求2所述的實(shí)現(xiàn)方法,其特征在于所述快照產(chǎn)生時(shí)間間隔定為15分鐘。
全文摘要
本發(fā)明公開了基于X協(xié)議的景象記錄與回放的實(shí)現(xiàn)方法。在圖形服務(wù)器與圖形應(yīng)用程序之間設(shè)圖形服務(wù)器代理程序,與圖形服務(wù)器同時(shí)在Unix或Linux系統(tǒng)的X Window環(huán)境下運(yùn)行,實(shí)現(xiàn)X WINDOW下正常的圖形顯示功能,同時(shí)圖形服務(wù)器代理程序?qū)⒔邮盏降腦協(xié)議數(shù)據(jù)打上時(shí)標(biāo)后存儲(chǔ)到景象記錄數(shù)據(jù)文件庫(kù)中,根據(jù)圖形服務(wù)器當(dāng)前顯示狀態(tài)與接收到的X協(xié)議數(shù)據(jù)定時(shí)生成快照數(shù)據(jù)實(shí)現(xiàn)景象記錄。在圖形服務(wù)器與景象記錄數(shù)據(jù)文件庫(kù)間設(shè)景象回放程序,從景象記錄數(shù)據(jù)文件庫(kù)中獲取快照數(shù)據(jù)和X協(xié)議數(shù)據(jù)包,經(jīng)處理后發(fā)送到圖形服務(wù)器實(shí)現(xiàn)景象的回放。圖形服務(wù)器和所有圖形應(yīng)用程序均不做任何修改,記錄與回放無(wú)失真,記錄數(shù)據(jù)量小,可操作性強(qiáng)。
文檔編號(hào)H04L29/06GK102722375SQ20121018694
公開日2012年10月10日 申請(qǐng)日期2012年6月8日 優(yōu)先權(quán)日2012年6月8日
發(fā)明者楊波 申請(qǐng)人:四川大學(xué), 四川川大智勝軟件股份有限公司