CORBA VMS怎么写方法?

时间:2013-06-19 07:30:28

标签: c++ corba

我正在学习用CORBA编写数字媒体管理。 我不知道如何实现Method VMSgetMediaAvailable()引发(ServerException)。

以下是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);

  };
 };

我所拥有的就是Class Repository_i.cc:

 void
 VMSRepository_i::VMSMediaSeq getMediaAvailable () {

  }

我知道我必须在该IDL文件中创建一个新的Stub和一个新的Skelton,我必须实现这个方法。 我需要询问是否有可用的媒体,所以我必须做一个if-声明对吗? 但我不知道如何做到这一点。

1 个答案:

答案 0 :(得分:0)

getMediaAvailable()实施将需要填充
的序列 struct VMSMedia。您必须使用OS /库调用来找出可用的内容并填充序列。

谷歌周围要了解如何在CORBA中填充序列,这不会很难。