Eiffel Media API
Overview Cluster Class Classes Index      Previous Next      Top Features

em.network.multiplayer.net_system_events

Class EM_NET_DESTROY_OBJECT_RESPONSE


Direct ancestors

EM_NET_2PC_EVENT_OBJECT

Creation

Features

Invariants

indexing

description

Event that notifies peer clients to destroy a specific object.
The object with ID destroy_id will be destroyed.

The object will (by default) be destroyed in the same group
as the event is sent from.

After the success agent was called, the event caller can assume that the object
has been destroyed on all remote peers that belong to the sending group.

This is a secured two phase commit event.

date

$Date: 2005/10/26 14:05:23 $

revision

$Revision: 1.8 $

class

EM_NET_DESTROY_OBJECT_RESPONSE

inherit

EM_NET_2PC_EVENT_OBJECT

create {EM_NET_OBJECT_TYPES}

make_set_type (a_type_id: INTEGER)

-- Create an instance and set type_id to a_type_id.

-- (From EM_NET_OBJECT)

feature -- Initialization

init_serialization_byte_count: INTEGER

-- 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)

make_set_type (a_type_id: INTEGER)

-- Create an instance and set type_id to a_type_id.

-- (From EM_NET_OBJECT)

serialize_init_data (a_serializer: EM_NET_SERIALIZER)

-- 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)

feature -- Access

resend_time: INTEGER

-- Time in ms after the event is resent if no ACK was received.

-- (From EM_NET_2PC_EVENT_OBJECT)

resends_left: INTEGER

-- 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.

-- (From EM_NET_2PC_EVENT_OBJECT)

success_agent: PROCEDURE[ANY,TUPLE[]]

-- Agent that is called after a successful two phase commit

-- (From EM_NET_2PC_EVENT_OBJECT)

timeout_agent: PROCEDURE[ANY,TUPLE[DS_LINKED_LIST[EM_NET_CONNECTION]]]

-- Agent that is called after a timeout occurred in a two phase commit

-- (From EM_NET_2PC_EVENT_OBJECT)

feature -- Element change

set_destroy_id (an_id: INTEGER)

-- Set destroy_id to an_id.

set_id (an_id: INTEGER)

-- Set id to an_id.

-- (From EM_NET_OBJECT)

ensure
id_correct_set: an_id = id
set_resend_time (a_time: INTEGER)

-- Set resend_time to a_time.
-- a_time is in milliseconds.

-- (From EM_NET_2PC_EVENT_OBJECT)

require
a_time_not_negative: a_time >= 0
set_resends_left (a_number: INTEGER)

-- Set resends_left to a_number.

-- (From EM_NET_2PC_EVENT_OBJECT)

require
a_number_not_negative: a_number >= 0
set_success_agent (a_success_agent: PROCEDURE[ANY,TUPLE[]])

-- Set success_agent to a_success_agent.
-- a_success_agent is called if 2PC was successful.

-- (From EM_NET_2PC_EVENT_OBJECT)

set_time_offset (a_time: INTEGER)

-- Set last_update to a_time.

-- (From EM_NET_OBJECT)

ensure
last_update_set: time_offset = a_time
set_timeout_agent (a_timeout_agent: PROCEDURE[ANY,TUPLE[DS_LINKED_LIST[EM_NET_CONNECTION]]])

-- 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.

-- (From EM_NET_2PC_EVENT_OBJECT)

set_updating_connection (a_connection: EM_NET_CONNECTION)

-- Set updating_connection to a_connection.

-- (From EM_NET_OBJECT)

require
a_connection_not_void: a_connection /= Void
ensure
updating_connection_set: updating_connection = a_connection

feature -- Serialization

serialization_byte_count: INTEGER

-- Count of bytes needed for a successful serialization

-- (From EM_NET_OBJECT)

ensure
Result_in_max_serialization_byte_count_range: Result <= max_serialization_byte_count.item
serialize (a_serializer: EM_NET_SERIALIZER)

-- Serialize to the given stream using a_serializer.

-- (From EM_NET_OBJECT)

require
a_serializer_not_void: a_serializer /= Void
require else
a_serializer_not_void: a_serializer /= Void
id_set: id > 0
unserialize (an_unserializer: EM_NET_UNSERIALIZER)

-- Unserialize from a given stream using an_unserializer.

-- (From EM_NET_OBJECT)

require
a_unserializer_not_void: an_unserializer /= Void
ensure then
id_set: id > 0

feature -- Event handling

publish

-- Publish an event to the connections that belong to group.
-- Setup 2PC variables in EM_NET_BASE.

-- (From EM_NET_EVENT_OBJECT)

require
group_set: group /= Void

feature -- Group handling.

set_group (a_group: EM_NET_GROUP)

-- Set group to a_group.
-- This is the group to which this event will be published.

-- (From EM_NET_OBJECT)

require
not_already_added_to_a_group: not a_group.has_object (Current)
ensure
group_set: group = a_group

feature -- Information

destroy_id: INTEGER

-- Unique object ID of the object to be destroyed

group: EM_NET_GROUP

-- Group that contains the current object
-- The object will be synchronized with all clients that are in
-- the same group.

-- (From EM_NET_OBJECT)

id: INTEGER

-- Unique ID that indentifies a single instance of an object

-- (From EM_NET_OBJECT)

is_make_set_type_called: BOOLEAN

-- Has make_set_type been called?

-- (From EM_NET_OBJECT)

is_synchronized: BOOLEAN

-- 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_sync_frame: INTEGER

-- Next time when object synchronisation occurs

-- (From EM_NET_OBJECT)

time_offset: INTEGER

-- Time in miliseconds of the lastupdate

-- (From EM_NET_OBJECT)

type_id: INTEGER

-- ID that identifies the type of of an on object

-- (From EM_NET_OBJECT)

updating_connection: EM_NET_CONNECTION

-- Connection which sent the last update

-- (From EM_NET_OBJECT)

invariant


type_id_set_by_factory: type_id > 0 and is_make_set_type_called

-- From ANY
reflexive_equality: standard_is_equal (Current)
reflexive_conformance: conforms_to (Current)

end