indexing description: "[ EGS_REMOTE_EVENT object includes a reference to the object in which the event occurred, an INTEGER value which identifies the kind of event relative to the object in which the event occurred, an INTEGER_64 value which indicates the sequence number of this instance of the event kind. The combination of the event identifier and the object reference obtained from the EGS_REMOTE_EVENT object should uniquely identify the event type. The sequence number obtained from the EGS_REMOTE_EVENT object is an increasing value that can act as a hint to the number of occurrences of this event relative to some earlier sequence number. A stronger guarantee is possible for those generators of EGS_REMOTE_EVENT that can support it. This guarantee states that not only do sequence numbers increase, but they are not skipped. In such a case, if EGS_REMOTE_EVENT x and y have the same source and the same event identifier, and x has sequence number m and y has sequence number n, then if m < n there were exactly n-m-1 events of the same event type between the event that triggered x and the event that triggered y. Such sequence numbers are said to be "fully ordered". An event registration that occurs within a transaction is considered to be scoped by that transaction. This means that any occurrence of the kind of event of interest that happens as part of the transaction will cause a notification to be sent to the recipients indicated by the registration that occurred in the transaction. Such events must have a separate event identifier to allow third-party store and forward entities to distinguish between an event that happens within a transaction and those that happen outside of the transaction. Notifications of these events will not be sent to entities that registered interest in this kind of event outside the scope of the transaction until and unless the transaction is committed. Because of this, notifications sent from inside a transaction will have a different sequence number than the notifications of the same events would have outside of the transaction. Within a transaction, all EGS_REMOTE_EVENT objects for a given kind of event are given a sequence number relative to the transaction. This is true even if the event that triggered the EGS_REMOTE_EVENT object being sent occurs outside of the scope of the transaction (but is visible within the transaction). ]" legal: "See notice at end of class." status: "See notice at end of class." date: "$Date$" revision: "$Revision$" class EGS_REMOTE_EVENT create make, make_from_external feature entry: EGS_ENTRY type: INTEGER sequence_number: INTEGER_64 feature {EGS_REMOTE_EVENT_LISTENER} make (an_entry: POINTER; a_type: INTEGER; a_sequence_number: INTEGER_64) is do create entry.make_from_external (an_entry) type := a_type sequence_number := a_sequence_number end make_from_external (obj_ptr: POINTER) is require obj_ptr_not_null: obj_ptr /= default_pointer do make (cpp_get_entry (obj_ptr), cpp_get_notify_type (obj_ptr) , cpp_get_sequence_number (obj_ptr)) end feature {NONE} -- Externals cpp_get_entry (obj_ptr: POINTER): POINTER is require obj_ptr_not_null: obj_ptr /= default_pointer external "C++ inline use , " alias "return ((OpenSpaces::RemoteEvent*)$obj_ptr)->getIEntry()" end cpp_get_notify_type (obj_ptr: POINTER): INTEGER is require obj_ptr_not_null: obj_ptr /= default_pointer external "C++ inline use , " alias "return ((OpenSpaces::RemoteEvent*)$obj_ptr)->getNotiftyType()" end cpp_get_sequence_number (obj_ptr: POINTER): INTEGER_64 is require obj_ptr_not_null: obj_ptr /= default_pointer external "C++ inline use , " alias "return ((OpenSpaces::RemoteEvent*)$obj_ptr)->getSequenceNumber()" end feature indexing library: "egigs-cpp: Library for accessing the GigaSpaces platform, POCO library based implementation." copyright: "Copyright (c) 2008, Eiffel Software and others" license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" source: "[ Eiffel Software 356 Storke Road, Goleta, CA 93117 USA Telephone 805-685-1006, Fax 805-685-6869 Website http://www.eiffel.com Customer support http://support.eiffel.com ]" end