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

em.network.multiplayer.net_system_events

Class EM_NET_JOIN_RESPONSE


Direct ancestors

EM_NET_2PC_EVENT_OBJECT

Creation

Features

Invariants

indexing

description

Event that notifies the client if its join request was accepted.

This is used in the Client/Server implementation of the multiplayer framework.

This is a secured two phase commit event.

date

$Date: 2005/10/23 10:09:37 $

revision

$Revision: 1.3 $

class

EM_NET_JOIN_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

accept_join

-- Accept the join request.

deny_join

-- Deny the join request.

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 -- Status information

is_accepted: BOOLEAN

feature -- Information

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