コード例 #1
0
  /** handle actual disconnecting - from ui thread only */
  void doDisconnect() {
    mState = State.kDisconnecting;
    for (RoomObserver obs : mObservers) {
      obs.onRoomDisconnected();
    }
    Set<String> keyset = mRemoteStream.keySet();
    for (String key : keyset) {
      StreamDescription stream = (StreamDescription) mRemoteStream.get(key);
      removeStream(stream);
      triggerStreamRemoved(stream);
    }
    mRemoteStream.clear();

    if (mLocalStream.size() > 0) {
      unpublish();
    }

    synchronized (mSocketLock) {
      if (mIoClient != null) {
        mIoClient.disconnect();
        mIoClient = null;
      }
    }

    mState = State.kDisconnected;
  }
コード例 #2
0
  /** stop all streams from being cast to the server */
  void doUnpublish() {
    for (String key : mLocalStream.keySet()) {
      final StreamDescription stream = mLocalStream.get(key);
      if (stream != null && stream.isLocal()) {
        stream.pc.removeStream(lMS);

        for (RoomObserver obs : mObservers) {
          obs.onStreamRemoved(stream);
        }

        if (mObservers.size() == 0) {
          destroy(stream);
        }
      }
    }
    mLocalStream.clear();

    if (lMS != null) {
      lMS.dispose();
    }
    if (mVideoCapturer != null) {
      mVideoCapturer.dispose();
    }

    lMS = null;
    mVideoCapturer = null;
    if (mVideoSource != null && !mVideoStopped) {
      mVideoSource.stop();
    }
    mVideoSource = null;
  }
コード例 #3
0
 /** triggers the event that a stream was removed */
 void triggerStreamRemoved(StreamDescription stream) {
   for (RoomObserver obs : mObservers) {
     obs.onStreamRemoved(stream);
   }
   if (mObservers.size() == 0) {
     destroy(stream);
   }
 }
コード例 #4
0
        @Override
        public void onEvent(JSONArray args, Acknowledge ack) {
          log("mOnDataStream");

          try {
            JSONObject param = args.getJSONObject(0);
            String streamId = param.getString("id");
            String message = param.getString("msg");
            StreamDescriptionInterface stream = mRemoteStream.get(streamId);
            for (RoomObserver obs : mObservers) {
              obs.onStreamData(message, stream);
            }
          } catch (JSONException e) {
          }
        }
コード例 #5
0
 /** triggers that a new video token is required - very soon - or the connection will end */
 void triggerRequestVideoToken() {
   for (RoomObserver obs : mObservers) {
     obs.onRequestRefreshToken();
   }
 }
コード例 #6
0
 /** triggers that subscribe was successful, and media is now available to stream */
 void triggerMediaAvailable(StreamDescriptionInterface stream) {
   for (RoomObserver obs : mObservers) {
     obs.onStreamMediaAvailable(stream);
   }
 }
コード例 #7
0
 /** triggers the event that publish has been allowed now */
 void triggerPublishAllowed() {
   for (RoomObserver obs : mObservers) {
     obs.onPublishAllowed();
   }
 }
コード例 #8
0
 /** triggers the event that a stream was added - will eventually happen with delay */
 void triggerStreamAdded(StreamDescription stream) {
   for (RoomObserver obs : mObservers) {
     obs.onStreamAdded(stream);
   }
 }