Applications use the methods of the DirectPlay2 Class of the com.ms.directX package to create Microsoft® DirectPlay®2 objects and work with system-level variables.
public class DirectPlay2 implements IDirectPlay2 { // Methods public void addPlayerToGroup(int groupId, int playerId); public void close(); public IDirectPlay2 create(_Guid g); public int createGroup(String friendlyName, String formalName, byte[] data, int dataSize); public int createPlayer(String friendlyName, String formalName, int receiveEvent, byte[] data, int dataSize); public void deletePlayerFromGroup(int groupId, int playerId); public void destroyGroup(int groupId); public void destroyPlayer(int playerId); public void enumGroupPlayers(int groupId, _Guid sessionGuid, IEnumPlayersCallback2 callback, IUnknown context, int flags); public void enumGroups(_Guid sessionGuid, IEnumPlayersCallback2 callback, IUnknown context, int flags); public void enumPlayers(_Guid sessionGuid, IEnumPlayersCallback2 callback, IUnknown context, int flags); public void enumServiceProviders( IEnumServiceProvidersCallback callback, IUnknown context); public void enumSessions(DPSessionDesc sessionDesc, _Guid sessionGuid, _Guid applicationGuid, String sessionName, String password, int timeOut, IEnumSessionsCallback2 callback, IUnknown context, int flags); public void getCaps(DPCaps caps, int flags); public void getGroupData(int groupId, byte[] data, int[] dataSize, int flags); public String getGroupFormalName(int groupId); public String getGroupFriendlyName(int groupId); public int getMessageCount(int playerId); public void getPlayerAddress(int playerId, byte[] addressData, int[] addressSize); public int getPlayerAddressSize(int playerId); public void getPlayerCaps(int playerId, DPCaps caps, int flags); public void getPlayerData(int playerId, byte[] data, int[] dataSize, int flags); public String getPlayerFormalName(int playerId); public String getPlayerFriendlyName(int playerId); public void getSessionDesc(DPSessionDesc sessionDesc, _Guid sessionGuid, _Guid applicationGuid, String[] sessionName, String[] password); public void initialize(_Guid guid); public void open(DPSessionDesc sessionDesc, _Guid sessionGuid, _Guid applicationGuid, String sessionName, String password, int flags); public void receive(int[] fromPlayerId, int[] toPlayerId, int flags, byte[] data, int[] dataSize); public int receiveSize(int flags); public void send(int fromPlayerId, int toPlayerId, int flags, byte[] data, int dataSize); public void setGroupData(int groupId, byte[] data, int dataSize, int flags); public void setGroupName(int groupId, String friendlyName, String formalName, int flags); public void setPlayerData(int playerId, byte[] data, int dataSize, int flags); public void setPlayerName(int playerId, String friendlyName, String formalName, int flags); public void setSessionDesc(DPSessionDesc sessionDesc, _Guid sessionGuid, _Guid applicationGuid, String sessionName, String password, int flags); public void stopEnumGroupPlayers(); public void stopEnumGroups(); public void stopEnumPlayers(); public void stopEnumServiceProviders(); public void stopEnumSessions(); }
CAUTION The enumeration methods provided in this class are fundamentally different from their native code counterparts. While the native code implementation return type is a boolean, the Java return type is void. This makes stopping an enumeration more difficult (you can not return false to stop the enumeration). You can use the following DirectPlay methods to stop enumerations:
stopEnumSessions
stopEnumGroups
stopEnumGroupPlayers
stopEnumPlayers
stopEnumServiceProviders
The stopEnumSessions is the most important method of these, because a session enumeration can proceed infinitely.