@@ -137,7 +137,6 @@ RTCPeerConnection::RTCPeerConnection(
137137 _peerConnectionObserver = PeerConnectionObserver::Create ();
138138 _peerConnection = Globals::GetPeerConnectionFactory ()->CreatePeerConnection (
139139 config, &constraints, NULL , NULL , _peerConnectionObserver);
140- // _peerConnectionObserver->SetPeerConnection(_peerConnection);
141140}
142141
143142RTCPeerConnection::~RTCPeerConnection () {
@@ -191,18 +190,9 @@ NAN_METHOD(RTCPeerConnection::New) {
191190 RTCPeerConnection *rtcPeerConnection = new RTCPeerConnection (_config,
192191 constraints);
193192 rtcPeerConnection->Wrap (info.This ());
194-
195- // "access" emit function inherited from EventEmitter
196- // rtcPeerConnection->emit = new Nan::Persistent<v8::Function>(v8::Local<v8::Function>::Cast(rtcPeerConnection->handle()->Get(Nan::New("emit2").ToLocalChecked())));
197- // v8::Local<v8::Function>::Cast(rtcPeerConnection->handle()->Get(Nan::New("emit").ToLocalChecked())));
198-
199- // rtcPeerConnection->_peerConnectionObserver->SetEmit(rtcPeerConnection->emit);
193+
200194 rtcPeerConnection->_peerConnectionObserver ->SetEventEmitter (rtcPeerConnection);
201- // rtcPeerConnection->_peerConnectionObserver->SetEmit(
202- // new Nan::Persistent()
203- // );
204-
205-
195+
206196 info.GetReturnValue ().Set (info.This ());
207197}
208198
@@ -278,26 +268,14 @@ NAN_METHOD(RTCPeerConnection::CreateAnswer) {
278268 object->_peerConnection ->CreateAnswer (observer, &constraints);
279269}
280270
281- NAN_METHOD (RTCPeerConnection::TestEmit) {
282- METHOD_HEADER (" RTCPeerConnection" , " testEmit" );
283- // UNWRAP_OBJECT(RTCPeerConnection, object);
284-
285- // Local<Value> argv[] = { Nan::New("test").ToLocalChecked() };
286- // Nan::New(*object->emit)->Call(object->handle(), 1, argv);
287-
288- info.GetReturnValue ().Set (Nan::Null ());
289- }
271+ // FIXME: factorize SetLocalDescription and SetRemoteDescription
290272
291273NAN_METHOD (RTCPeerConnection::SetLocalDescription) {
292274 METHOD_HEADER (" RTCPeerConnection" , " setLocalDescription" );
293275 UNWRAP_OBJECT (RTCPeerConnection, object);
294276
295277 rtc::scoped_refptr<webrtc::SetSessionDescriptionObserver> observer;
296278
297- // Local<Function> emit = Nan::New(*object->emit);
298- // Local<Value> argv[] = { Nan::New("test").ToLocalChecked() };
299- // emit->Call( object->handle(), 1 , argv );
300-
301279 // FIXME: Promise implementation only
302280 DECLARE_PROMISE_RESOLVER;
303281 ASSERT_REJECT_OBJECT_ARGUMENT (0 , sessionDescription);
@@ -308,7 +286,20 @@ NAN_METHOD(RTCPeerConnection::SetLocalDescription) {
308286 observer = SetSessionDescriptionObserver::Create (
309287 new Nan::Persistent<Promise::Resolver>(resolver));
310288
311- object->_peerConnection ->SetLocalDescription (observer, _sessionDescription->_sessionDescription );
289+ std::string sdp;
290+ _sessionDescription->_sessionDescription ->ToString (&sdp);
291+ std::string type = _sessionDescription->_sessionDescription ->type ();
292+
293+ webrtc::SdpParseError error;
294+ webrtc::SessionDescriptionInterface *desc;
295+ desc = webrtc::CreateSessionDescription (type, sdp, &error);
296+
297+ if (!desc) {
298+ errorStream << error.description ;
299+ return Nan::ThrowTypeError (errorStream.str ().c_str ());
300+ }
301+
302+ object->_peerConnection ->SetLocalDescription (observer, desc);
312303}
313304
314305NAN_METHOD (RTCPeerConnection::SetRemoteDescription) {
@@ -327,7 +318,21 @@ NAN_METHOD(RTCPeerConnection::SetRemoteDescription) {
327318 observer = SetSessionDescriptionObserver::Create (
328319 new Nan::Persistent<Promise::Resolver>(resolver));
329320
330- object->_peerConnection ->SetRemoteDescription (observer, _sessionDescription->_sessionDescription );
321+ std::string sdp;
322+ _sessionDescription->_sessionDescription ->ToString (&sdp);
323+ std::string type = _sessionDescription->_sessionDescription ->type ();
324+
325+ webrtc::SdpParseError error;
326+ webrtc::SessionDescriptionInterface *desc;
327+ desc = webrtc::CreateSessionDescription (type, sdp, &error);
328+
329+ if (!desc) {
330+ errorStream << error.description ;
331+ return Nan::ThrowTypeError (errorStream.str ().c_str ());
332+ }
333+
334+ object->_peerConnection ->SetRemoteDescription (observer, desc);
335+
331336}
332337
333338NAN_METHOD (RTCPeerConnection::CreateDataChannel) {
@@ -347,6 +352,7 @@ NAN_METHOD(RTCPeerConnection::CreateDataChannel) {
347352}
348353
349354NAN_GETTER (RTCPeerConnection::GetConnectionState) {
355+ // FIXME: implement
350356 info.GetReturnValue ().Set (LOCAL_STRING (" new" ));
351357}
352358
0 commit comments