$Date: 2005/10/26 14:05:23 $
$Revision: 1.6 $
-- Count of bytes needed for a successful serialization of initialization data.
-- The default behaviour uses the serialize_byte_count feature.
-- If you redefine serialize_init_data, you'll also to redefine this feature.
-- This might be a constant and *could* be a dynamic value.
-- {EM_NET_WORK_CONSTANTS}.max_serialization_byte_count is the limit!
-- (From EM_NET_OBJECT)
-- Create an instance and set type_id to a_type_id.
-- (From EM_NET_OBJECT)
-- Serialize initialization data to the given stream using a_serializer.
-- The default behaviour uses the serialize feature.
-- If you redefine make_from_stream, you'll also have to redefine this feature.
-- Note: There is no need to serialize the type ID, this is done automatically.
-- (From EM_NET_OBJECT)
-- Time in ms after the event is resent if no ACK was received.
-- Number of event resends left
-- An event will be resent if no ACK was received after resend_time until
-- resends_left reaches 0.
-- This value will decrease automatically.
-- Agent that is called after a successful two phase commit
-- Agent that is called after a timeout occurred in a two phase commit
-- Set resend_time to a_time.
-- a_time is in milliseconds.
-- Set success_agent to a_success_agent.
-- a_success_agent is called if 2PC was successful.
-- Set timeout_agent to a_timeout_agent.
-- a_timeout_agent is called if 2PC was not successful after
-- some period of time.
-- The handler will get a DS_LINKED_LIST[EM_NET_CONNECTION] as argument that
-- contains a list of connections that did not respond in time.
-- Set updating_connection to a_connection.
-- (From EM_NET_OBJECT)
-- Count of bytes needed for a successful serialization
-- This might be a constant and *could* be a dynamic value.
-- {EM_NET_WORK_CONSTANTS}.max_serialization_byte_count is the limit!
-- (From EM_NET_OBJECT)
-- Serialize to the given stream using a_serializer.
-- (From EM_NET_OBJECT)
-- Unserialize from a given stream using an_unserializer.
-- (From EM_NET_OBJECT)
-- Publish an event to the connections that belong to group.
-- Setup 2PC variables in EM_NET_BASE.
-- (From EM_NET_EVENT_OBJECT)
-- Set group to a_group.
-- This is the group to which this event will be published.
-- (From EM_NET_OBJECT)
-- Group that contains the current object
-- The object will be synchronized with all clients that are in
-- the same group.
-- (From EM_NET_OBJECT)
-- Unique ID that indentifies a single instance of an object
-- (From EM_NET_OBJECT)
-- Has make_set_type been called?
-- (From EM_NET_OBJECT)
-- Is this object currently synchronized over network?
-- True if this object is added to a server or client list for synchronisation.
-- (From EM_NET_OBJECT)
-- Next time when object synchronisation occurs
-- (From EM_NET_OBJECT)
-- Time in miliseconds of the lastupdate
-- (From EM_NET_OBJECT)
-- ID that identifies the type of of an on object
-- (From EM_NET_OBJECT)
-- Connection which sent the last update
-- (From EM_NET_OBJECT)
Event object that is secured with a two phase commit system.
You may set a success_agent that is called if all remote peers
have sent an acknowledgment. In this case you can assume that all
remote peers that belong to the sending group have taken the appropriate
actions.
You may also set a timeout_agent that is called if at least one
acknowledgement for a remote peer is missing after some period of time.
You'll get a list of clients that have acknowledements missing as argument.
In this case you can not be sure if only the acknowledgement has been
lost, or the remote peer failed to handle the action at all. You'll need
to take an appropriate action, like dropping the non answering client to
make the system consistent again.
If an acknowledgement is missing for a connection after resend_time, the
event will be sent again for at most resends_left times.
If only the acknowledgement was lost in the previous attempt,
then only the acknowledgement will be sent again, but the event will
NOT be fired again on the client side.
The 2PC system relies on the object ID. If you define your own 2PC events
you need to set a unique ID for every instance of an event (use a dedicated
EM_NET_OJBECT_ID_MANAGER, like the one supplied in EM_NET_BASE, for that purpose)
and serialize/unserialize it manually.