

Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
The inetwork implementation, an abstract network used for client-server communication. It includes details on inetworkendpoint objects, higher-level constructs, synchronous and asynchronous operations, and service ids. The document also covers the transmission of objects and encapsulation of threading logic.
Typology: Study notes
1 / 2
This page cannot be seen from the preview
Don't miss anything!


All information between the client and the server is sent over an abstract network called INetwork. The INetwork implementation uses an abstract INetworkEndPoint object to indicate a location on the network. Each INetworkEndPoint possesses the ability to connect to other network end points and send and receive raw data. INetworkEndPoint objects only know how to transmit and receive byte arrays - they are agnostic to higher-level constructs such as behaviors and events. Currently, we have a DummyNetworkEndPoint implementation of INetworkEndPoint. This implementation communicates with other DummyNetworkEndPoint objects by invoking methods on the other object in a remote thread. No data is actually sent over a real network. We plan to write a socket-based INetworkEndPoint in the near future that supports two parties communicating over different computers. The INetwork implementation is still agnostic to SkyNet constructs such as behaviors, entities, events, etc., but features some higher level constructs than INetworkEndPoint to facilitate communication. In particular, it allows the transmission of arbitrary objects and encapsulates the process of serializing them into a byte array and restoring them back. INetwork supports the following operations:
is sent that does not expect a reply, the request id is Guid.Empty. The SkyNet infrastructure currently supports the following service id's, defined in the WellKnownServiceId enum: