• 沒有找到結果。

SIP 程式架構

在文檔中 中華大學 碩士論文 (頁 51-57)

當 回 傳 S e r v i c e R e p l y 時 , 經 由 S L P C o r e 的 s e n d M e s s a g e 方 法 , 將 S L P M e s s a g e 物 件 轉 換 成 位 元 組 陣 列 透 過 D a t a g r a m S o c k e t 傳 送 給 S I U A 的 S L P C o r e 的 s e t u p R e c e i v e r T h r e a d 。

當 S I U A 的 S L P C o r e 的 s e t u p R e c e i v e r T h r e a d 接 收 到 D A 回 傳 的 S e r v i c e R e p l y 後 , 會 以 D a t a g r a m S o c k e t 接 收 位 元 組 陣 列 , 透 過 呼 叫 S L P M e s s a g e 類 別 的 p a r s e ( ) 方 法 將 接 收 到 的 位 元 組 陣 列 進 行 解 析 , 並 交 由 h a n d l e M e s s a g e ( ) 方 法 來 處 理 。

在 h a n d l e M e s s a g e ( ) 方 法 中 , 由 參 數 S L P M e s s a g e 物 件 的 成 員 f u n c I D 得 知 此 S L P M e s s a g e 物 件 實 際 上 為 一 個 S e r v i c e R e p l y 物 件 , 因 此 依 照 此 訊 息 的 成 員 x i d 當 成 k e y 來 向 r e p l y L i s t e n e r s 取 回 對 應 的 q u e u e , 透 過 q u e u e 來 儲 存 對 應 的 查 詢 結 果 , 並 通 知 等 待 q u e u e 的 T h r e a d 。

在 s e n d M e s s a g e ( ) 方 法 中 , 將 r e p l y Q u e u e ( 上 述 q u e u e ) 中 的 R e p l y M e s s a g e 物 件 ( S e r v i c e R e p l y 物 件 ) 取 出 , 呼 叫 S e r v i c e R e p l y 物 件 的 方 法 g e t R e s u l t ( ) 取 回 u r l L i s t , 再 呼 叫 r e s p o n s e s ( L i s t ) 的 方 法 a d d A l l 將 u r l L i s t 加 入 其 中,回 傳 給 L o c a t o r 的 s e n d R e q u e s t 9 ( ) 方 法 , 最 後 再 回 傳 給 f i n d S e r v i c e s ( ) 方 法 , 並 依 照 u r l L i s t 在 f i n d S e r v i c e s ( ) 方 法 中 建 構 S e r v i c e L o c a t i o n E n u m e r a t i o n 物 件 , 而 即 可 呼 叫 S e r v i c e L o c a t i o n E n u m e r a t i o n 物 件 的 相 關 方 法 進 行 S e r v i c e U R L 的 操 作 。

來 處 理 發 送 與 接 收 S I P 訊 息 的 管 理 者 , M e d i a M a n a g e r 是 用 來 處 理 影 像 及 聲 音 播 放 的 管 理 者 。

提 出 連 線 請 求 詳 細 流 程 如 圖 4 - 6 , 使 用 者 選 取 欲 播 放 的 多 媒 體 串 流 服 務 位 置 , 按 下 e n t e r 按 鍵 後 觸 發 A c t i o n E v e n t 事 件 , 此 事 件 交 由 S i p C o m m u n i c a t o r 物 件 的 成 員 G u i M a n a g e r 中 的 e n t e r _ a c t i o n P e r f o r m e d ( ) 方 法 來 進 行 處 理 。

在 e n t e r _ a c t i o n P e r f o r m e d ( ) 方 法 中 , 透 過 呼 叫 G u i M a n a g e r 物 件 的 成 員 p h o n e F r a m e 的 成 員 m e d i a F i e l d 的 g e t Te x t ( ) 方 法 取 得 使 用 者 所 選 擇 的 多 媒 體 串 流 服 務 U R I 字 串 , 並 使 用 選 擇 的 U R I 字 串 建 構 一 個 U s e r C a l l I n i t i a t i o n E v e n t 事 件 , 經 由 此 事 件 當 成 引 數 , 呼 叫 S i p C o m m u n i c a t o r 的 h a n d l e D i a l R e q u e s t ( ) 方 法 。

在 h a n d l e D i a l R e q u e s t ( ) 方 法 中 會 先 透 過 m e d i a M a n a g e r 成 員 中 的 g e n e r a t e S d p D e s c r i p t i o n ( ) 方 法 來 取 得 S D P, 接 著 將 U R I 字 串 、 S D P 以 及 字 串 ” 0 ” 當 成 引 數 呼 叫 S i p M a n a g e r 的 e s t a b i l i s h C a l l ( ) 方 法 進 行 S I P 訊 息 的 傳 送 。 而 g e n e r a t e S d p D e s c r i p t i o n ( ) 方 法 中 字 串 ” 0 ” 代 表 著 M e i d a S e r v i c e H e a d e r 的 a d m i n 欄 位 的 值 , 表 示 此 請 求 有 選 擇 的 多 媒 體 檔 案 的 動 作 。

S i p M a n a g e r 物 件 的 處 理 訊 息 成 員 主 要 有 四 個 , 依 序 是 R e g i s t e r P r o c e s s i n g 、 C a l l P r o c e s s i n g 、 Tr a n s f e r P r o c e s s i n g 、 M e s s a g e P r o c e s s i n g 。 R e g i s t e r P r o c e s s i n g 負 責 處 理 所 有 關 於 S I P 註 冊 連 接 的 行 為 , 像 是 註 冊 、 註 銷 、 追 蹤 註 冊 時 間 等 等 。 C a l l P r o c e s s i n g 負 責 處 理 所 有 關 於 S I P 呼 叫 連 接 的 行 為 , 像 是 建 立 連 線 、 管 理 連 線 、 以 及 終 止 連 線 等 等 。 Tr a n s f e r P r o c e s s i n g 負 責 處 理 S I P R E F E R 訊 息 的 發 送 與 接 收 。 M e s s a g e P r o c e s s i n g 負 責 處 理 一 般 S I P 訊 息 的 發 送 與 接 收 。 而 e s t a b i l i s h C a l l ( ) 方 法 目 的 為 建 立 連 線 請 求 , 因 此 將 U R I 字 串 、 S D P 以 及 字 串 ” 0 ” 當 成 引 數 呼

叫 c a l l P r o c e s s i n g 的 m e d i a I n v i t e ( ) 方 法 , 準 備 發 送 S I P 請 求 。

圖 4-6 SIP 建立連線程式流程

在 m e d i a I n v i t e ( ) 方 法 裡 會 先 對 輸 入 的 U R I 字 串 作 處 理,經 由 g e t S e l e c t N u m b e r ( ) 方 法 取 得 使 用 者 所 選 取 的 頻 道 或 檔 案 名 稱 , 作 為 M e d i a S e r v i c e H e a d e r 的 o p t i o n 欄 位 的 值 , 並 由 C r e a t e L e n g t h ( ) 方 法 計 算 出 其 長 度 , 作 為 l e n g t h 欄 位 的 值 , 接 著 將 U R I 字 串 當 成 引 數 呼 叫 S i p M a n a g e r 物 件 的 成 員 A d d r e s s F a c t o r y 的 c r e a t e U R I 方 法 來 建 構 一 個 U R I 物 件 做 為 S I P 訊 息 的 R e q u e s t U R I 。

在 S I P R e q u e s t 訊 息 中 , 除 了 要 有 R e q u e s t U R I 之 外 , 還 必 須 要 有 一 系 列 的 標 頭 檔 , 因 此 透 過 呼 叫 S i p M a n a g e r 物 件 和 S i p M a n a g e r 物 件 的 成 員 H e a d e r F a c t o r y 的 相 關 取 得 H e a d e r 物 件 方 法 來 建 構 S I P 訊 息 的 H e a d e r 物 件 , 如 c r e a t e C S e q H e a d e r 、 g e t F r o m H e a d e r 、 c r e a t e To H e a d e r 、 g e t L o c a l Vi a H e a d e r s 、 g e t M a x F o r w a r d s H e a d e r、 g e t C o n t a c t H e a d e r、 c r e a t e M e s s a g e H e a d e r 以 及 本 篇 定 義 的 M e d i a S e r v i c e H e a d e r 等 方 法 。

當 建 立 完 S I P 訊 息 的 U R I 和 H e a d e r 後 , 以 U R I 物 件 、 一 系 列 的 H e a d e r 物 件 當 成 引 數 呼 叫 S i p M a n a g e r 物 件 的 成 員 M e s s a g e F a c t o r y 的 c r e a t e R e q u e s t ( ) 方 法 來 建 構 R e q u e s t 物 件 準 備 發 送 訊 息 。

之 後 將 R e q u e s t 物 件 當 成 引 數 呼 叫 S i p M a n a g e r 物 件 的 成 員 S i p P r o v i d e r 的 g e t N e w C l i e n t Tr a n s a c t i o n ( ) 方 法 建 構 C l i e n t Tr a n s a c t i o n 物 件 。 S i p P r o v i d e r 的 功 能 在 於 用 來 取 得 S I P 連 線 代 號 、 監 聽 S I P 事 件 訊 息 、 建 構 C l i e n t Tr a n s a c t i o n 或 S e r v e r Tr a n s a c t i o n 物 件 來 扮 演 S I P U A C l i e n t 或 S e r v e r 端 角 色 傳 送 與 接 收 S I P 訊 息 。 最 後 透 過 呼 叫 C l i e n t Tr a n s a c t i o n 物 件 的 s e n d R e q u e s t 方 法 將 S I P 訊 息 發 送 至 遠 端 的 M e d i a S e r v e r 。

當 M e d i a S e r v e r 端 接 收 S I P 訊 息 後 , 觸 發 R e q u e s t E v e n t 事 件 , 由 S i p C o m m u n i c a t o r 物 件 的 成 員 S i p M a n a g e r 的

p r o c e s s R e q u e s t ( ) 方 法 接 收 R e q u e s t E v e n t 並 進 行 處 理 。

在 p r o c e s s R e q u e s t ( ) 方 法 中 , 會 先 呼 叫 R e q u e s t E v e n t 物 件 的 g e t S e r v e r Tr a n s a c t i o n ( ) 方 法 來 取 得 S e r v e r Tr a n s a c t i o n 物 件 , 建 立 起 S e r v e r 端 的 角 色 。 接 著 呼 叫 R e q u e s t E v e n t 物 件 的 g e t R e q u e s t 方 法 取 得 S I U A 傳 送 過 來 的 R e q u e s t 物 件 , 並 將 R e q u e s t 物 件 當 成 引 數 呼 叫 g e t M e d i a S e r v e r N u m b e r ( ) 方 法 , 此 方 法 主 要 解 析 M e d i a S e r v e r H e a d e r 的 a d m i n 欄 位,當 a d m i n 欄 位 值 為 0 的 時 侯 , 表 示 要 求 建 立 多 媒 體 串 流 連 線 並 選 取 頻 道 或 檔 案 , 因 此 進 入 s e l e c t c a s e 並 呼 叫 s e n d R e s p o n s e 的 s e n d O K ( ) 方 法 回 覆 2 0 0 O K 表 示 此 S I P 連 線 建 立 成 功 。

同 一 時 間,s e l e c t c a s e 內 會 取 得 M e d i a S e r v i c e H e a d e r 的 o p t i o n 欄 位 的 值 ( 字 串 ), 並 呼 叫 g e t R e m o t e I P ( ) 方 法 取 得 S I U A 端 I P, 最 後 將 選 取 的 字 串 及 S I U A 端 I P 當 成 引 數 , 呼 叫 M e d i a M a n a g e r 的 s t a r t AV t r a n s m i t ( ) 方 法 。

當 M e d i a S e r v e r 啟 動 時 , 在 M e d i a M a n a g e r 成 員 裡 會 先 建 立 一 個 H a s h M a p 並 呼 叫 p u t ( ) 方 法 將 多 媒 體 檔 案 的 實 體 路 徑 存 放 在 H a s h M a p 裡 。 在 s t a r t AV t r a n s m i t ( ) 方 法 中 首 先 要 將 使 用 者 所 選 取 的 檔 案 取 出 , 因 此 以 選 取 的 字 串 當 成 引 數 , 呼 叫 g e t ( ) 方 法 取 得 多 媒 體 檔 案 的 實 體 路 徑 , 之 後 將 此 路 徑 當 成 引 數 建 構 一 個 J M F A P I 的 M e i d a L o c a t o r 物 件 , 接 著 將 此 M e d i a L o c a t o r 物 件 、 S I U A 端 I P、S I U A 端 p o r t 以 及 播 放 格 式 當 成 引 數,建 構 一 個 AV Tr a n s m i t 物 件 。

在 AV Tr a n s m i t 物 件 中 , 會 先 呼 叫 c r e a t e P r o c e s s o r ( ) 方 法 , 產 生 一 個 播 放 多 媒 體 檔 案 所 需 的 P r o c e s s o r , 接 著 呼 叫 c r e a t e Tr a n s m i t e r ( ) 方 法 , 開 始 傳 送 多 媒 體 串 流 。

在 c r e a t e Tr a n s m i t e r ( ) 方 法 中 會 先 建 立 一 個 RT P M a n a g e r 物

件 , 並 透 過 i n i t i a l i z e ( ) 及 a d d Ta r g e t ( ) 方 法 初 始 設 定 RT P M a n a g e r 本 機 及 遠 端 I P , 當 設 定 好 之 後 則 呼 叫 RT P M a n a g e r 物 件 的 c r e a t e S e n d S t r e a m ( ) 方 法 將 P r o c e s s o r 所 產 生 的 d a t a O u t p u t 以 及 整 數 i ( f o r 迴 圈 i 表 示 RT P M a n a g e r 的 軌 道 數 ) 當 成 引 數 建 立 一 個 S e n d S t r e a m 物 件 , 最 後 經 由 呼 叫 s t a r t ( ) 方 法 將 RT P S t r e a m 發 送 出 去 。

另 一 方 面,當 S I U A 端 S i p M a n a g e r 成 員 的 p r o c e s s R e s p o n s e ( ) 方 法 收 到 R e s p o n s e E v e n t 後 , 會 先 呼 叫 g e t R e s p o n s e ( ) 方 法 取 得 R e s p o n s e , 接 著 呼 叫 g e t M e t h o d ( ) 方 法 , 得 知 M e d i a S e r v e r 回 傳 的 R e s p o n s e 為 2 0 0 O K 且 m e t h o d 為 I N V I T E , 因 為 交 由 c a l l P r o c e s s i n g 的 p r o c e s s I n v i t e O K ( ) 方 法 處 理 。

在 p r o c e s s I n v i t e O K ( ) 方 法 中 會 以 s e n d A c k ( ) 方 法 回 傳 給 M e d i a S e r v e r 一 個 a c k,表 示 S I P 連 線 建 立 完 成,因 此 便 呼 叫 C a l l 物 的 s e t S t a t e ( ) 方 法 將 連 線 設 定 成 C O N N E C T E D 狀 態 。

在 S i p C o m m u n i c a t o r 物 件 中 有 實 作 一 個 C a l l L i s t e n e r 介 面 , 用 來 監 聽 C a l l 物 件 狀 態 的 改 變 , 當 s e t S t a t e ( ) 方 法 將 連 線 設 定 成 C O N N E C T E D 狀 態 後 會 觸 發 c a l l S t a t e C h a n g e d ( ) 方 法 並 呼 叫 M e d i a M a n a g e r 的 o p e n AV S t r e a m ( ) 方 法 開 啟 AV 串 流 。

o p e n AV S t r e a m ( ) 方 法 會 呼 叫 o p e n M e d i a S t r e a m ( ) 方 法 , 在 o p e n M e d i a S t r e a m ( ) 方 法 中 建 構 一 個 M e d i a S e r v e r R e c e i v e t r 物 件 , 經 由 i n i t i a l i z e ( ) 方 法 啟 動 M e d i a S e r v e r AV R e c e i v e r 。

在 M e d i a S e r v e r AV R e c e i v e r 物 件 的 i n i t i a l i z e ( ) 方 法 中 , 會 先 建 構 一 個 RT P M a n a g e r 物 件,並 且 初 始 設 定 接 收 的 p o r t 以 及 I P 位 址 , 開 始 接 收 M e d i a S e r v e r 所 傳 送 過 來 的 RT P S t r e a m,完 成 多 媒 體 串 流 服 務 的 連 線 。

第伍章 實驗結果

在文檔中 中華大學 碩士論文 (頁 51-57)

相關文件