|
|||||||||
Atavism Version 2018.1 | AGIS API | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectatavism.server.voice.BasicVoiceGroup
public abstract class BasicVoiceGroup
This class implements VoiceGroup interface, and is used to implement two important cases of voice groups: presentations and "raid groups".
Field Summary | |
---|---|
protected java.util.Set<OID> |
allowedMembers
A set of OIDs representing the oids of players allowed to join the group. |
protected java.lang.Object |
association
An Object-valued slot, not used by BasicVoiceManager, to allow derived classes to provide an assoiciated object. |
int |
defaultPriority
The default priority of newly-created members of the group. |
protected OID |
groupOid
The oid of the group. |
protected java.util.concurrent.locks.Lock |
lock
A lock used by operations on the group |
protected static boolean |
loggingRecomputeVoices
To enable detailed logging of the recompute voices algorithm. |
protected int |
maxVoices
The maximum number of voice channels any single client can have simultaneously transmitting to the client. |
protected java.util.Map<OID,GroupMember> |
members
A map from member oid to GroupMember instance for this group. |
protected VoiceSender |
voiceSender
The instance used to send messages to listeners. |
Constructor Summary | |
---|---|
BasicVoiceGroup(OID groupOid,
java.lang.Object association,
VoiceSender voiceSender,
int maxVoices)
Create a BasicVoiceGroup |
Method Summary | |
---|---|
GroupMember |
addMember(OID memberOid,
VoiceConnection memberCon)
Add a member to a group |
abstract GroupMember |
addMember(OID memberOid,
VoiceConnection memberCon,
int priority,
boolean allowedSpeaker)
Create a member with the given oid, and associate it with memberCon. |
boolean |
addMemberAllowed(OID memberOid)
Determine if the oid is that of a member of the group. |
protected java.lang.String |
addString(boolean add)
Utility method used in logging. |
protected abstract void |
changeListening(GroupMember listener,
boolean add)
Change a listener from not listening to listening, or vice versa |
protected abstract void |
changeSpeaking(GroupMember speaker,
boolean add)
Change a speaker from not speaking to speaking, or vice versa |
protected boolean |
eligibleSpeakerListenerPair(GroupMember speaker,
GroupMember listener)
A default implementation of a filter that determines if we are allowed to form a voice channel from the given speaker to the given listener. |
protected void |
endListeningToSpeaker(GroupMember speaker,
GroupMember listener,
byte voiceNumber)
Terminate the voice channel, whose voice channel number is voiceNumber, between the given speaker and listener by sending a deallocate message to the listener's client. |
void |
getAllMembers(java.util.List<GroupMember> memberList)
Get all the members of the group. |
java.util.Set<OID> |
getAllowedMembers()
Return the allowed members |
int |
getDefaultPriority()
Return the default priority of members |
OID |
getGroupOid()
Return the group oid of a voice group. |
protected GroupMember |
getMember(OID oid)
|
boolean |
isAllowedSpeaker(OID memberOid)
Does not need locking, since there are no modifications and the status could change immediately after the call anyway. |
boolean |
isListener(OID memberOid)
Does not need locking, since there are no modifications and the status could change immediately after the call anyway. |
GroupMember |
isMember(OID memberOid)
Return the member identified by memberOid, or null if there is no such member. |
boolean |
isMemberSpeaking(OID memberOid)
Does not need locking, since there are no modifications and the status could change immediately after the call anyway. |
abstract boolean |
isPositional()
Return true if the group is a positional group; that is, if membership in the group is determined by being near the listener, and the priority of speakers is determined by how near any speaker is. |
void |
onAfterAddMember(OID memberOid,
OID groupOid,
boolean allowedSpeaker,
byte micVoiceNumber,
boolean listenToYourself)
A call to this method is made after an addMember() operation. |
void |
onAfterRemoveMember(OID memberOid,
OID groupOid,
boolean allowedSpeaker)
A call to this method is made after a removeMember() operation. |
protected abstract void |
recomputeListenerVoices(GroupMember listener)
The set of speakers who should now be heard by this listener (may have) changed; send appropriate voice deallocates and allocates to reflect those changes |
protected void |
recomputeVoicesFromSpeakerIterator(GroupMember listener,
java.util.Iterator<GroupMember> memberIterator,
int count)
This is central method that recalculates the voices that should be heard by a listener, based on a potential set of voices currently speaking, sending out allocations and deallocations as a result. |
boolean |
removeMember(OID memberOid)
Sever all speaker/listener relationships involving the member, and remove the member identified by memberOid. |
void |
sendVoiceFrameToListeners(OID speakerOid,
AOByteBuffer buf,
byte opcode,
int pktSize)
Send a voice frame originating with the speaker with the given oid, and contained in the first dataSize bytes of buf, to all eligible listeners |
void |
setAllowedMembers(java.util.Set<OID> allowedMembers)
Supply a list of oids of players allowed to be in the group |
protected void |
setAllowedSpeaker(GroupMember member,
boolean add)
Change whether a member is allowed to speak or not, and if it was formerly speaking, sever it's speaker to listener relationships by sending voice channel deallocation messages. |
void |
setAllowedSpeaker(OID memberOid,
boolean add)
Sets whether the member is allowed ot speak. |
void |
setListener(GroupMember member,
boolean add)
Change the member supplied to be a listener if add is true, or not a listener if add is false. |
void |
setListener(OID memberOid,
boolean add)
Change the member with the given oid to be a listener if add is true, or not a listener if add is false. |
void |
setMemberSpeaking(OID memberOid,
boolean add)
Change a member that is allowed to speak from not speaking to speaking, or vice versa, and do whatever voice deallocation and/or allocation is required as a result. |
java.lang.String |
toString()
Make a string |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
protected OID groupOid
protected java.lang.Object association
protected VoiceSender voiceSender
protected int maxVoices
public int defaultPriority
protected java.util.Set<OID> allowedMembers
protected java.util.Map<OID,GroupMember> members
protected static boolean loggingRecomputeVoices
protected transient java.util.concurrent.locks.Lock lock
Constructor Detail |
---|
public BasicVoiceGroup(OID groupOid, java.lang.Object association, VoiceSender voiceSender, int maxVoices)
groupOid
- The oid of the group, which is unique across all
voice groups.association
- An object-valued data member that is unused
in BasicVoiceGroup, but available to derived classes.voiceSender
- The abstraction that allows the voice group to
send messages to listeners.maxVoices
- The maximum number of voice channels that may
ever be simultaneously in use by any clientMethod Detail |
---|
public OID getGroupOid()
getGroupOid
in interface VoiceGroup
public boolean addMemberAllowed(OID memberOid)
addMemberAllowed
in interface VoiceGroup
memberOid
- The oid of possible group member.authToken
- A string giving the voice client's
authentication credentials.
public GroupMember addMember(OID memberOid, VoiceConnection memberCon)
addMember
in interface VoiceGroup
memberOid
- The oid of the newly-created membermemberCon
- The VoiceConnection object that embodies
the connection to the voice server.
public void setAllowedMembers(java.util.Set<OID> allowedMembers)
setAllowedMembers
in interface VoiceGroup
allowedMembers
- The set of oids of possible group members.public java.util.Set<OID> getAllowedMembers()
getAllowedMembers
in interface VoiceGroup
public abstract GroupMember addMember(OID memberOid, VoiceConnection memberCon, int priority, boolean allowedSpeaker)
addMember
in interface VoiceGroup
memberOid
- The oid of the member.memberCon
- The VoiceConnection object connecting the
voice server with the clientpriority
- The speaking priority that the member should be
assigned; speakers with higher priorities will be heard over
speakers with lower priorities.allowedSpeaker
- If true, the new member is allowed to
speak in the group; if false they will not be heard by members
by members of the group.
public void onAfterAddMember(OID memberOid, OID groupOid, boolean allowedSpeaker, byte micVoiceNumber, boolean listenToYourself)
onAfterAddMember
in interface VoiceGroup
memberOid
- The oid of the newly-created membergroupOid
- The groupOid of the voice group.allowedSpeaker
- True if the member is allowed to speak;
false otherwise.micVoiceNumber
- The voice number of the incoming voice
packets. For now, this is always zero.listenToYourself
- True if the member wants his own voice
frames sent back to him. This is only used for testing
purposes.public abstract boolean isPositional()
isPositional
in interface VoiceGroup
protected abstract void changeSpeaking(GroupMember speaker, boolean add)
speaker
- A GroupMember instance whose speaking state is to be changed.add
- If true, change the speaker from not speaking to speaking, if
false, from speaking to not speaking.protected abstract void changeListening(GroupMember listener, boolean add)
listener
- A GroupMember instance whose listening state is to be changed.add
- If true, change the listener from not listening to listening, if
false, from listening to not listening.protected abstract void recomputeListenerVoices(GroupMember listener)
listener
- A GroupMember instance whose voices will be recomputed.public boolean removeMember(OID memberOid)
removeMember
in interface VoiceGroup
memberOid
- The oid of the member to be removed from the group.
public void onAfterRemoveMember(OID memberOid, OID groupOid, boolean allowedSpeaker)
onAfterRemoveMember
in interface VoiceGroup
memberOid
- The oid of the newly-created membergroupOid
- The groupOid of the voice group.allowedSpeaker
- True if the member is allowed to speak;
false otherwise.public GroupMember isMember(OID memberOid)
isMember
in interface VoiceGroup
memberOid
- The oid of the member to be returned
public int getDefaultPriority()
getDefaultPriority
in interface VoiceGroup
public void setAllowedSpeaker(OID memberOid, boolean add)
setAllowedSpeaker
in interface VoiceGroup
memberOid
- The oid of the member to change.add
- True if the member should be allowed
to speak; false otherwise.protected void setAllowedSpeaker(GroupMember member, boolean add)
member
- The GroupMember instance to change.add
- True if the member should be allowed
to speak; false otherwise.public boolean isAllowedSpeaker(OID memberOid)
isAllowedSpeaker
in interface VoiceGroup
memberOid
- The oid of the member whose allowed speaker
status will be returned.
public void setMemberSpeaking(OID memberOid, boolean add)
setMemberSpeaking
in interface VoiceGroup
memberOid
- The GroupMember instance to change.add
- True if the member should be allowed
to speak; false otherwise.public boolean isMemberSpeaking(OID memberOid)
isMemberSpeaking
in interface VoiceGroup
memberOid
- The oid of the member whose speaking
status will be returned.
public boolean isListener(OID memberOid)
isListener
in interface VoiceGroup
memberOid
- The oid of the member whose listening
status will be returned.
public void setListener(OID memberOid, boolean add)
setListener
in interface VoiceGroup
memberOid
- The oid of the member whose whose listening status should
change.add
- If true, make the member a listener in the group,
else stop the member listening.public void setListener(GroupMember member, boolean add)
member
- The member whose whose listening status should
change.add
- If true, make the member a listener in the group,
else stop the member listening.protected void endListeningToSpeaker(GroupMember speaker, GroupMember listener, byte voiceNumber)
speaker
- The member that is the source of the voice channel.listener
- The member that will receive the voice channel deallocation message.voiceNumber
- The number of the voice channel opened to the client, unique
within an single client.protected boolean eligibleSpeakerListenerPair(GroupMember speaker, GroupMember listener)
speaker
- The member that is the source of the voice channel.listener
- The member that will receive the voice channel deallocation message.protected GroupMember getMember(OID oid)
public void getAllMembers(java.util.List<GroupMember> memberList)
getAllMembers
in interface VoiceGroup
memberList
- The list of the members to which the groups
members should be added.public void sendVoiceFrameToListeners(OID speakerOid, AOByteBuffer buf, byte opcode, int pktSize)
sendVoiceFrameToListeners
in interface VoiceGroup
speakerOid
- The oid of the speaker that is the source of the voice frame(s)buf
- The buffer containing data packet; typically a data aggregation packetopcode
- The opcode to use when sending the frame(s). Typically
VoicePlugin.opcodeAggregatedData.pktSize
- The size of the payload.protected void recomputeVoicesFromSpeakerIterator(GroupMember listener, java.util.Iterator<GroupMember> memberIterator, int count)
listener
- The group member, currently a listener, that should
have it's voice channels recomputed.memberIterator
- An iterator used to run down the group members
in "priority order".count
- The number of elements from the iterator to consider.protected java.lang.String addString(boolean add)
public java.lang.String toString()
toString
in class java.lang.Object
|
Copyright © 2018 Dragonsan Studios Sp. z o.o. |
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |