������ CORBA::Object �ӿڵij���:
module CORBA {
interface Object {
InterfaceDef get_interface ();
boolean is_nil ();
Object duplicate ();
void release ();
boolean is_a (in string logical_type_id);
boolean non_existant ();
boolean is_equivalent (in Object other_object);
unsigned long hash (in unsigned long maximum);
};
}; |
����ӿ��Ƿdz���Ҫ�ģ���Ϊ���е� CORBA �������Լ�����Ľӿڶ������ļ̳�����������ζ���ڸ����ӿ��ж�������в������������� CORBA �����϶��ɻ�á�
��Щ���IJ�������Щ�Ǵ���������(identity)��: copy, test, destruction(����)...
is_nil �������������һ�������Ƿ���ڡ����Ϊ��������ڣ����Ϊ����֤�������(�μ������)������������ CORBA_OBJECT_NIL ���ʱ�����������֤����Ϊ�档
is_equivalent �����������������������Ƿ�ָ��ͬһ������ʵ����Ϊ������ʹ�� hash ������
��������� duplicate �� release ���������DZ��������������õĸ��ƺ�������Щ��������ע����������������ڶ��������Ϲ������������ڶ��������ϣ�����û�е�����ȥ���ƶ���������
�� CORBA �д�������ʱ��������Ҫʹ�� CORBA_Object ����������͵ı��������ж�����Ϣ������Ϊ���ݸ����з����ĵ�һ��������duplicate ������������һ�ݶ������õĸ�����release �������������������������Ϊ CORBA_Object �����Dz�����������Щ�����DZ���ģ��㲻֪�����Ľṹ����Ͳ������Լ������������ڲ���ʾ��(ֻ����Ϊ�����ڲ��ṹ�������� ORB ʵ�ֵ�)��
������һ����ʾ��Щ������ι������������룺
CORBA_Object obj;
CORBA_Environment ev;
CORBA_Object obj_copy = CORBA_OBJECT_NIL;
/* ����������Ŀ������һЩ���� */
/* ����, obj ������һ����ʵ�Ķ��� */
if (CORBA_Object_is_nil (obj, &ev))
printf (stderr, "Error: could not get object reference !!\n");
obj_copy = CORBA_Object_duplicate (obj, ev);
if (CORBA_Object_is_equivalent(obj, obj_copy, &ev))
printf (stderr, "Cool: the copy succeeded\n");
CORBA_Object_release (obj_copy, &ev); |
����Ϊ��Щ���벻���κ�ע�͡�
����һ������û�н���ķ���: get_interface������������ں���Ĺ��ڽӿڿ���½������ۡ������� ORBit �л�û��ʵ�֣�����ûʲô�ô� :)