blob: ef935b845738279fbf8502c54a9831b2b77c8170 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
/*
* Jitsi, the OpenSource Java VoIP and Instant Messaging client.
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package net.java.sip.communicator.impl.protocol.jabber;
import net.java.sip.communicator.service.protocol.*;
import net.java.sip.communicator.service.protocol.media.*;
/**
* An implementation of the <tt>Call</tt> abstract class for the common part of
* Jabber and Gtalk protocols.
*
* @author Vincent Lucas
*/
public abstract class AbstractCallJabberGTalkImpl
<T extends AbstractCallPeerJabberGTalkImpl<?, ?, ?>>
extends MediaAwareCall<
T,
OperationSetBasicTelephonyJabberImpl,
ProtocolProviderServiceJabberImpl>
{
/**
* Indicates if the <tt>CallPeer</tt> will support <tt>inputevt</tt>
* extension (i.e. will be able to be remote-controlled).
*/
private boolean localInputEvtAware = false;
/**
* Initializes a new <tt>AbstractCallJabberGTalkImpl</tt> instance.
*
* @param parentOpSet the {@link OperationSetBasicTelephonyJabberImpl}
* instance in the context of which this call has been created.
*/
protected AbstractCallJabberGTalkImpl(
OperationSetBasicTelephonyJabberImpl parentOpSet)
{
super(parentOpSet);
//let's add ourselves to the calls repo. we are doing it ourselves just
//to make sure that no one ever forgets.
//parentOpSet.getActiveCallsRepository().addCall(this);
}
/**
* Enable or disable <tt>inputevt</tt> support (remote control).
*
* @param enable new state of inputevt support
*/
public void setLocalInputEvtAware(boolean enable)
{
localInputEvtAware = enable;
}
/**
* Returns if the call support <tt>inputevt</tt> (remote control).
*
* @return true if the call support <tt>inputevt</tt>, false otherwise
*/
public boolean getLocalInputEvtAware()
{
return localInputEvtAware;
}
/**
* Send a <tt>content-modify</tt> message for all current <tt>CallPeer</tt>
* to reflect possible video change in media setup.
*
* @throws OperationFailedException if problem occurred during message
* generation or network problem
*/
public abstract void modifyVideoContent()
throws OperationFailedException;
/**
* Returns the peer whose corresponding session has the specified
* <tt>sid</tt>.
*
* @param sid the ID of the session whose peer we are looking for.
*
* @return the {@link CallPeerJabberImpl} with the specified jingle
* <tt>sid</tt> and <tt>null</tt> if no such peer exists in this call.
*/
public T getPeer(String sid)
{
for(T peer : getCallPeerList())
{
if (peer.getSID().equals(sid))
return peer;
}
return null;
}
/**
* Determines if this call contains a peer whose corresponding session has
* the specified <tt>sid</tt>.
*
* @param sid the ID of the session whose peer we are looking for.
*
* @return <tt>true</tt> if this call contains a peer with the specified
* jingle <tt>sid</tt> and false otherwise.
*/
public boolean containsSID(String sid)
{
return (getPeer(sid) != null);
}
/**
* Returns the peer whose corresponding session-init ID has the specified
* <tt>id</tt>.
*
* @param id the ID of the session-init IQ whose peer we are looking for.
*
* @return the {@link CallPeerJabberImpl} with the specified IQ
* <tt>id</tt> and <tt>null</tt> if no such peer exists in this call.
*/
public T getPeerBySessInitPacketID(String id)
{
for(T peer : getCallPeerList())
{
if (peer.getSessInitID().equals(id))
return peer;
}
return null;
}
}
|