interface INetworking (Niantic.Experimental.ARDK.SharedAR.INetworking)

Overview

interface INetworking: IDisposable {
    // properties

    ConnectionState ConnectionState;
    bool IsServer;
    NetworkingStats NetworkingStats;
    List<IPeerID> PeerIDs;
    RoomParams RoomParams;
    IPeerID SelfPeerID;
    IPeerID ServerPeerId;

    // events

    event ConnectionEvent();
    event DataReceived();
    event PeerAdded();
    event PeerRemoved();

    // methods

    void JoinAsPeer(byte[] roomId);
    void JoinAsServer(byte[] roomId);
    NetworkingRequestResult KickOutPeer(IPeerID peerID);
    void Leave();

    void SendData(
        List<IPeerID> dest,
        uint tag,
        byte[] data,
        ConnectionType connectionType
    );

    void SendData< T >(
        List<IPeerID> dest,
        uint tag,
        T data,
        ConnectionType connectionType = ConnectionType.UseDefault
    );

    void SetDefaultConnectionType(ConnectionType connectionType);
};

Detailed Documentation

Note

This is an experimental feature. Experimental features should not be used in production products as they are subject to breaking changes, not officially supported, and may be deprecated without notice

Properties

ConnectionState ConnectionState

Get the latest connection state

Returns:

bool IsServer

Returns if self is a “server”

Returns:

true if this networking is server role, false if this networking is client role

Note

This is currently unimplemented

NetworkingStats NetworkingStats

Get networking stats RTT, bps, packet loss, etc…

Returns:

current network stats struct

Note

This is currently unimplemented

List<IPeerID> PeerIDs

Get all PeerIDs actively connected to the room

Returns:

List of all Peer IDs actively connected to the room

RoomParams RoomParams

Get room config of the currrently connected room RoomConfig include name, ID, geo info, etc.

Returns:

the room current of the currrently connected room

Note

This is currently unimplemented - joining happens on INetworking creation

IPeerID SelfPeerID

Return the self Peer ID

Returns:

self Peer ID

IPeerID ServerPeerId

Return the server peer ID

Returns:

server Peer ID. Invalid peer ID if no server role in the current room

Note

This is currently unimplemented

Events

event PeerRemoved()

Event fired when a peer is removed, either from intentional action, timeout, or error.

Methods

void JoinAsPeer(byte[] roomId)

Join the networking as a peer.

Note

This is currently unimplemented - joining happens on INetworking creation

void JoinAsServer(byte[] roomId)

Join the networking as a server.

Note

This is currently unimplemented - joining happens on INetworking creation

NetworkingRequestResult KickOutPeer(IPeerID peerID)

Disconnect the specified peer Can do only by server. TODO: Should be async?

Parameters:

peerID

PeerID of the peer to be kicked out

Returns:

result of the request

Note

This is currently unimplemented

void Leave()

Disconnect from network and datastore.

void SendData(
    List<IPeerID> dest,
    uint tag,
    byte[] data,
    ConnectionType connectionType
)

Send data to the specified peers. Receiving peers will have a DataReceived event fired

Parameters:

dest

Destination of the message. destination could be peer ID, “server” peer ID, list of peer IDs, or empty for broadcast

tag

Data tag that peers will receive

data

Byte[] to send

connectionType

Protocol to send the data with

void SendData< T >(
    List<IPeerID> dest,
    uint tag,
    T data,
    ConnectionType connectionType = ConnectionType.UseDefault
)

Send an object to the specified peers. Receiving peers will have a DataReceived event fired.

Parameters:

dest

Destination of the message. destination could be peer ID, “server” peer ID, list of peer IDs, or empty for broadcast

tag

Data tag that peers will receive

data

Object to send

connectionType

Protocol to send the data with

Note

This is currently unimplemented

void SetDefaultConnectionType(ConnectionType connectionType)

Set the default protocol for networked messages on this session

Parameters:

connectionType

Protocol to send the data with

Note

This is currently unimplemented