【QNX】pps開發(fā)指南(2):對象與屬性

????????QNX PPS服務是一個發(fā)布者可以修改其對象屬性的系統(tǒng)缩功。

????????訂閱了對象的客戶端在對象被更改時可以接收到更新通知晴及,也就是說,當發(fā)布者修改了對象時嫡锌,客戶端就可感知到虑稼。

????????使用PPS,您的應用程序可以:

? ? ? ? (1)向?qū)ο蟀l(fā)布更改

? ? ? ? (2)訂閱對象以接收更改通知

? ? ? ? (3)發(fā)布和訂閱

一:對象文件(Object files)

? ? ?? 在專用的PPS文件系統(tǒng)中 PPS對象被實現(xiàn)成了文件势木。默認情況下蛛倦,PPS對象存放在/ PPS 目錄下,但是這個路徑同時也取決于啟動PPS服務時使用的-m選項啦桌。PPS對象的實例不會超過一個溯壶,因此對該對象的更改對訂閱者而言是立即可見的。

????????對象可以包含屬性甫男。每個屬性都由對象文件中的一行文本來表示且改。例如,您可以發(fā)布一個名為Time的對象板驳,它表示一天的時間又跛,并且具有表示當前小時、分鐘和秒的整數(shù)屬性若治,如下所示:


????????在本例中慨蓝,文件名是Time,每個屬性都是該文件中的一個文本字符串端幼。

? ? ?? 由于PPS對象是由文件表示的礼烈,所以你可以進行以下操作:

? ? ? ? 1. 創(chuàng)建目錄,并通過在這些目錄中創(chuàng)建文件静暂,使用PPS對象填充目錄(當然為了創(chuàng)建對象济丘,您需要在PPS目錄或相應的子目錄中具有寫權(quán)限。)

? ? ? ? 2. 使用open()洽蛀,然后使用read()和write()函數(shù)來查詢和更改PPS對象摹迷。

? ? ? ? 3. 使用標準實用程序作為簡單的調(diào)試工具。

? ? ? ?為了避免在使用同一個PPS文件系統(tǒng)時郊供,因集成了來自不同組織的應用程序可能出現(xiàn)的混亂或沖突峡碉,建議您使用您組織的web域名在PPS目錄中創(chuàng)建您的目錄。比如驮审,域名為“QNX.com”的QNX軟件文件系統(tǒng)時應該使用/pps/QNX鲫寄,域名為“example.net”的組織應該使用/pps/example。

????????PPS對象是通過文件系統(tǒng)訪問的疯淫,它們看起來像普通的POSIX文件地来。但是,它們不是標準的POSIX文件熙掺,而且一些PPS行為與標準的POSIX行為也不同未斑。例如,分配的讀緩沖區(qū)對于被讀入的數(shù)據(jù)來說如果太小币绩,那么讀操作不會返回部分寫入的結(jié)果;而是直接就是失敗蜡秽。

二:屬性順序(Attribute order)

????????PPS不保證將按照屬性寫入對象的順序讀取屬性。也就是說缆镣,發(fā)布者(publisher)可以這樣寫:


? ? ? ? 訂閱者可以按以下順序讀取


? ? ? ? 特殊的對象:

????????PPS目錄中同時也可以包括一些特殊的對象芽突,您可以打開這些對象來促進訂閱行為。下表列出了這些特殊對象:


????????對象和目錄大卸啊:

????????因為PPS將其對象保存在內(nèi)存中寞蚌,所以它們很小。每個對象被分配32 kb钠糊。這并不意味著每個對象在運行時使用32kb的內(nèi)存;它只使用內(nèi)部表示其當前屬性所需的內(nèi)存量挟秤。

? ? ?? PPS目錄和對象的數(shù)量僅受可用內(nèi)存的限制。PPS目錄的深度受到以下事實的限制:對象的完整路徑名(文件存儲在持久目錄中);這些路徑名的大小受所使用的持久文件系統(tǒng)所支持的最大文件名大小的限制眠蚂。


三:變更通知(Change notification)

????????PPS在創(chuàng)建煞聪、刪除或截斷對象時通知發(fā)布者和訂閱者。

????????當PPS創(chuàng)建逝慧、刪除或截斷一個對象(文件或目錄)時昔脯,它會將一個通知字符串放入已為目錄打開該對象或.all特殊對象的訂閱者或發(fā)布者的隊列中。

? ? ? ?這個通知字符串的語法是一個特殊的字符前綴笛臣,緊跟在后面是對象標識符“@”云稚,然后是對象名稱,如下所示:


????????此外沈堡,當對象被刪除時静陈,PPS會向打開該對象的任何應用程序發(fā)送一個-@objectname。收到此通知的應用程序的典型行為是關閉打開的文件描述符,因為文件在文件系統(tǒng)中不再可見(POSIX行為)鲸拥。


四:對象語法(Object syntax)

????????在PPS文件系統(tǒng)的列表中拐格,PPS對象并沒有特殊的標識符。也就是說刑赶,它們將與列表中的任何其他文件一樣出現(xiàn)捏浊。例如,/ PPS /media目錄中的PPS對象“PlayCurrent”將以簡單的/ PPS /media/PlayCurrent的形式出現(xiàn)在文件列表中撞叨。

????????在PPS文件的讀取結(jié)果中金踪,第一行標識對象。這一行以“@”字符作為前綴牵敷,將其標識為對象名稱胡岔。下面的行定義對象的屬性。這些行都沒有特殊的前綴枷餐。

????????假設上面示例中的PPS對象“PlayCurrent”包含描述多媒體應用程序中當前播放歌曲的元數(shù)據(jù)的屬性靶瘸。讓我們假設屬性的格式如下:


????????這個文件的open()調(diào)用和read()調(diào)用將返回對象的名稱(文件名,帶@前綴)尖淘,然后是對象的屬性值:


????????對象名稱不能包含以下任何一種字符:"@"(@符號)奕锌,"?"(問號),"/"(正斜杠)村生,換行(ASCII LF)惊暴,或ASCII NUL。

????????PPS對象中的每一行都以一個換行符(C中的“\n”或十六進制0A)結(jié)束趁桃,因此您必須以合作的客戶端應用程序同意的方式對該字符進行編碼辽话。也就是說,任何包含ASCII LF或NULL字符的值都必須進行編碼卫病。編碼字段可用于協(xié)助協(xié)作應用程序確定在值字段中使用何種編碼油啤。


五:屬性語法(Attribute syntax)

????????PPS對象具有用戶定義的屬性。在PPS對象中蟀苛,屬性列在對象名稱之后益咬。

????????屬性名可以由字母,數(shù)字字符帜平、下劃線和句點組成幽告,但必須以字母或下劃線開頭。PPS對象文件中的屬性行采用attrname:encoding:value\n的形式裆甩,其中attrname是屬性名冗锁,encoding為值定義了編碼類型。屬性名的末尾和編碼的末尾用冒號(":")標記嗤栓。隨后的冒號被忽略冻河。

????????PPS不會解釋編碼;它只是將編碼從發(fā)布者傳遞到訂閱者箍邮。因此,發(fā)布者和訂閱者可以自由地定義他們自己的編碼來滿足他們的需要叨叙。下表描述了可能的編碼類型:


屬性的值可以是任意字符序列锭弊,除了:

? ? (1)NULL字符 ("\0" in C, or hexadecimal?0x00)

? ? (2)換行符 ("\n" in C, or hexadecimal?0x0A)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市摔敛,隨后出現(xiàn)的幾起案子廷蓉,更是在濱河造成了極大的恐慌全封,老刑警劉巖马昙,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異刹悴,居然都是意外死亡行楞,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門土匀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來子房,“玉大人,你說我怎么就攤上這事就轧≈ず迹” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵妒御,是天一觀的道長解愤。 經(jīng)常有香客問我,道長乎莉,這世上最難降的妖魔是什么送讲? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮惋啃,結(jié)果婚禮上哼鬓,老公的妹妹穿的比我還像新娘。我一直安慰自己边灭,他們只是感情好异希,可當我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著绒瘦,像睡著了一般称簿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上椭坚,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天予跌,我揣著相機與錄音,去河邊找鬼善茎。 笑死券册,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播烁焙,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼航邢,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了骄蝇?” 一聲冷哼從身側(cè)響起膳殷,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎九火,沒想到半個月后赚窃,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡岔激,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年勒极,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片虑鼎。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡辱匿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出炫彩,到底是詐尸還是另有隱情匾七,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布江兢,位于F島的核電站昨忆,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏划址。R本人自食惡果不足惜扔嵌,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望夺颤。 院中可真熱鬧痢缎,春花似錦、人聲如沸世澜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽寥裂。三九已至嵌洼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間封恰,已是汗流浹背麻养。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留诺舔,地道東北人鳖昌。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓备畦,卻偏偏與公主長得像,于是被迫代替她去往敵國和親许昨。 傳聞我的和親對象是個殘疾皇子懂盐,可洞房花燭夜當晚...
    茶點故事閱讀 44,914評論 2 355