2013-06-19 25 views
0

我正在學習使用CORBA編寫數字媒體管理。 我不知道如何實現方法VMSgetMediaAvailable()引發(ServerException)。CORBA VMS如何編寫該方法?

這裏是VMS.idl

module VMS { 

enum Genre { g_undefined, SciFi, Comedy, Action, Horror, Docu }; 
enum StatusType { s_undefined, available, lent }; 

struct VMSMedia { 
long ObjectId; 
long ProviderId; 
Genre Type; 
string Title; 
string ProductionCountry; 
short ProductionYear; 
short Length; 
StatusType Status; 
}; 

struct VMSProvider { 
long ObjectId; 
string Name; 
string FirstName; 
long ZIPCode; /* short does not work */ 
string Address; 
}; 

exception ServerException { 
string reason; 
}; 

typedef sequence<VMSMedia> VMSMediaSeq; 
typedef sequence<VMSProvider> VMSProviderSeq; 

interface VMSRepository { 
readonly attribute long currentMaxProviderId; 
readonly attribute long currentMaxMediaId;  

oneway void save(); 

oneway void addProvider (in VMSProvider p); 
oneway void delProvider (in long id);  

VMSProvider getProvider (in long id) 
    raises (ServerException); 
VMSProviderSeq getProviders() 
    raises (ServerException); 

oneway void addMedia (in VMSMedia p); 
oneway void delMedia (in long id);  


VMSMedia getMedia (in long id) 
    raises (ServerException); 
VMSMediaSeq getMediaOfType (in Genre type) 
    raises (ServerException); 
VMSMediaSeq getMediaYoungerThan (in short year) 
    raises (ServerException); 
//here new Method 
VMSMediaSeq getMediaAvailable() raises 
(ServerException); 

    }; 
}; 

我只有這個在類Repository_i.cc:

void 
VMSRepository_i::VMSMediaSeq getMediaAvailable() { 

    } 

我知道我必須創建一個新的存根和新的Skelton在那個IDL文件中,我必須實現這個方法。 我需要問是否有媒體可用,所以我必須做一個if-陳述權? 但我不知道我該怎麼做。

回答

0

getMediaAvailable()實施將需要填充的
struct VMSMedia序列。您必須使用OS /庫調用來找出可用的內容並填充序列。

谷歌周圍發現如何在CORBA中填充序列,這將不會很難。