Switch to unified view

a/libupnpp/control/mediarenderer.cxx b/libupnpp/control/mediarenderer.cxx
...
...
36
namespace UPnPClient {
36
namespace UPnPClient {
37
37
38
const string 
38
const string 
39
MediaRenderer::DType("urn:schemas-upnp-org:device:MediaRenderer:1");
39
MediaRenderer::DType("urn:schemas-upnp-org:device:MediaRenderer:1");
40
40
41
class MediaRenderer::Internal {
42
public:
43
    STD_WEAK_PTR<RenderingControl> rdc;
44
    STD_WEAK_PTR<AVTransport> avt;
45
    STD_WEAK_PTR<OHProduct> ohpr;
46
    STD_WEAK_PTR<OHPlaylist> ohpl;
47
    STD_WEAK_PTR<OHTime> ohtm;
48
    STD_WEAK_PTR<OHVolume> ohvl;
49
    STD_WEAK_PTR<OHReceiver> ohrc;
50
};
51
41
// We don't include a version in comparisons, as we are satisfied with
52
// We don't include a version in comparisons, as we are satisfied with
42
// version 1
53
// version 1
43
bool MediaRenderer::isMRDevice(const string& st)
54
bool MediaRenderer::isMRDevice(const string& st)
44
{
55
{
45
    const string::size_type sz(DType.size()-2);
56
    const string::size_type sz(DType.size()-2);
...
...
82
}
93
}
83
94
84
MediaRenderer::MediaRenderer(const UPnPDeviceDesc& desc)
95
MediaRenderer::MediaRenderer(const UPnPDeviceDesc& desc)
85
    : Device(desc)
96
    : Device(desc)
86
{
97
{
98
    if ((m = new Internal()) == 0) {
99
        LOGERR("MediaRenderer::MediaRenderer: out of memory" << endl);
100
        return;
101
    }
102
}
103
104
MediaRenderer::~MediaRenderer()
105
{
106
    delete m;
87
}
107
}
88
108
89
bool MediaRenderer::hasOpenHome()
109
bool MediaRenderer::hasOpenHome()
90
{
110
{
91
    return ohpr() ? true : false;
111
    return ohpr() ? true : false;
...
...
94
RDCH MediaRenderer::rdc() 
114
RDCH MediaRenderer::rdc() 
95
{
115
{
96
    if (desc() == 0)
116
    if (desc() == 0)
97
        return RDCH();
117
        return RDCH();
98
118
99
    RDCH rdcl = m_rdc.lock();
119
    RDCH rdcl = m->rdc.lock();
100
    if (rdcl)
120
    if (rdcl)
101
        return rdcl;
121
        return rdcl;
102
    for (vector<UPnPServiceDesc>::const_iterator it = desc()->services.begin();
122
    for (vector<UPnPServiceDesc>::const_iterator it = desc()->services.begin();
103
         it != desc()->services.end();it++) {
123
         it != desc()->services.end();it++) {
104
        if (RenderingControl::isRDCService(it->serviceType)) {
124
        if (RenderingControl::isRDCService(it->serviceType)) {
...
...
106
            break;
126
            break;
107
        }
127
        }
108
    }
128
    }
109
    if (!rdcl)
129
    if (!rdcl)
110
        LOGDEB("MediaRenderer: RenderingControl service not found" << endl);
130
        LOGDEB("MediaRenderer: RenderingControl service not found" << endl);
111
    m_rdc = rdcl;
131
    m->rdc = rdcl;
112
    return rdcl;
132
    return rdcl;
113
}
133
}
114
134
115
AVTH MediaRenderer::avt() 
135
AVTH MediaRenderer::avt() 
116
{
136
{
117
    AVTH avtl = m_avt.lock();
137
    AVTH avtl = m->avt.lock();
118
    if (avtl)
138
    if (avtl)
119
        return avtl;
139
        return avtl;
120
    for (vector<UPnPServiceDesc>::const_iterator it = desc()->services.begin();
140
    for (vector<UPnPServiceDesc>::const_iterator it = desc()->services.begin();
121
         it != desc()->services.end();it++) {
141
         it != desc()->services.end();it++) {
122
        if (AVTransport::isAVTService(it->serviceType)) {
142
        if (AVTransport::isAVTService(it->serviceType)) {
...
...
124
            break;
144
            break;
125
        }
145
        }
126
    }
146
    }
127
    if (!avtl)
147
    if (!avtl)
128
        LOGDEB("MediaRenderer: AVTransport service not found" << endl);
148
        LOGDEB("MediaRenderer: AVTransport service not found" << endl);
129
    m_avt = avtl;
149
    m->avt = avtl;
130
    return avtl;
150
    return avtl;
131
}
151
}
132
152
133
OHPRH MediaRenderer::ohpr() 
153
OHPRH MediaRenderer::ohpr() 
134
{
154
{
135
    OHPRH ohprl = m_ohpr.lock();
155
    OHPRH ohprl = m->ohpr.lock();
136
    if (ohprl)
156
    if (ohprl)
137
        return ohprl;
157
        return ohprl;
138
    for (vector<UPnPServiceDesc>::const_iterator it = desc()->services.begin();
158
    for (vector<UPnPServiceDesc>::const_iterator it = desc()->services.begin();
139
         it != desc()->services.end();it++) {
159
         it != desc()->services.end();it++) {
140
        if (OHProduct::isOHPrService(it->serviceType)) {
160
        if (OHProduct::isOHPrService(it->serviceType)) {
...
...
142
            break;
162
            break;
143
        }
163
        }
144
    }
164
    }
145
    if (!ohprl)
165
    if (!ohprl)
146
        LOGDEB("MediaRenderer: OHProduct service not found" << endl);
166
        LOGDEB("MediaRenderer: OHProduct service not found" << endl);
147
    m_ohpr = ohprl;
167
    m->ohpr = ohprl;
148
    return ohprl;
168
    return ohprl;
149
}
169
}
150
170
151
OHPLH MediaRenderer::ohpl() 
171
OHPLH MediaRenderer::ohpl() 
152
{
172
{
153
    OHPLH ohpll = m_ohpl.lock();
173
    OHPLH ohpll = m->ohpl.lock();
154
    if (ohpll)
174
    if (ohpll)
155
        return ohpll;
175
        return ohpll;
156
    for (vector<UPnPServiceDesc>::const_iterator it = desc()->services.begin();
176
    for (vector<UPnPServiceDesc>::const_iterator it = desc()->services.begin();
157
         it != desc()->services.end();it++) {
177
         it != desc()->services.end();it++) {
158
        if (OHPlaylist::isOHPlService(it->serviceType)) {
178
        if (OHPlaylist::isOHPlService(it->serviceType)) {
...
...
160
            break;
180
            break;
161
        }
181
        }
162
    }
182
    }
163
    if (!ohpll)
183
    if (!ohpll)
164
        LOGDEB("MediaRenderer: OHPlaylist service not found" << endl);
184
        LOGDEB("MediaRenderer: OHPlaylist service not found" << endl);
165
    m_ohpl = ohpll;
185
    m->ohpl = ohpll;
166
    return ohpll;
186
    return ohpll;
167
}
187
}
168
188
189
OHRCH MediaRenderer::ohrc() 
190
{
191
    OHRCH ohrcl = m->ohrc.lock();
192
    if (ohrcl)
193
        return ohrcl;
194
    for (vector<UPnPServiceDesc>::const_iterator it = desc()->services.begin();
195
         it != desc()->services.end();it++) {
196
        if (OHReceiver::isOHRcService(it->serviceType)) {
197
            ohrcl = OHRCH(new OHReceiver(*desc(), *it));
198
            break;
199
        }
200
    }
201
    if (!ohrcl)
202
        LOGDEB("MediaRenderer: OHReceiver service not found" << endl);
203
    m->ohrc = ohrcl;
204
    return ohrcl;
205
}
206
169
OHTMH MediaRenderer::ohtm() 
207
OHTMH MediaRenderer::ohtm() 
170
{
208
{
171
    OHTMH ohtml = m_ohtm.lock();
209
    OHTMH ohtml = m->ohtm.lock();
172
    if (ohtml)
210
    if (ohtml)
173
        return ohtml;
211
        return ohtml;
174
    for (vector<UPnPServiceDesc>::const_iterator it = desc()->services.begin();
212
    for (vector<UPnPServiceDesc>::const_iterator it = desc()->services.begin();
175
         it != desc()->services.end();it++) {
213
         it != desc()->services.end();it++) {
176
        if (OHTime::isOHTMService(it->serviceType)) {
214
        if (OHTime::isOHTMService(it->serviceType)) {
...
...
178
            break;
216
            break;
179
        }
217
        }
180
    }
218
    }
181
    if (!ohtml)
219
    if (!ohtml)
182
        LOGDEB("MediaRenderer: OHTime service not found" << endl);
220
        LOGDEB("MediaRenderer: OHTime service not found" << endl);
183
    m_ohtm = ohtml;
221
    m->ohtm = ohtml;
184
    return ohtml;
222
    return ohtml;
185
}
223
}
186
224
187
OHVLH MediaRenderer::ohvl() 
225
OHVLH MediaRenderer::ohvl() 
188
{
226
{
189
    OHVLH ohvll = m_ohvl.lock();
227
    OHVLH ohvll = m->ohvl.lock();
190
    if (ohvll)
228
    if (ohvll)
191
        return ohvll;
229
        return ohvll;
192
    for (vector<UPnPServiceDesc>::const_iterator it = desc()->services.begin();
230
    for (vector<UPnPServiceDesc>::const_iterator it = desc()->services.begin();
193
         it != desc()->services.end();it++) {
231
         it != desc()->services.end();it++) {
194
        if (OHVolume::isOHVLService(it->serviceType)) {
232
        if (OHVolume::isOHVLService(it->serviceType)) {
...
...
196
            break;
234
            break;
197
        }
235
        }
198
    }
236
    }
199
    if (!ohvll)
237
    if (!ohvll)
200
        LOGDEB("MediaRenderer: OHVolume service not found" << endl);
238
        LOGDEB("MediaRenderer: OHVolume service not found" << endl);
201
    m_ohvl = ohvll;
239
    m->ohvl = ohvll;
202
    return ohvll;
240
    return ohvll;
203
}
241
}
204
242
205
}
243
}