code: private void commonConstructor(RespokeSignalingChannel channel) {
          signalingChannel = channel;
          iceServers = new ArrayList<PeerConnection.IceServer>();
          queuedLocalCandidates = new ArrayList<IceCandidate>();
          queuedRemoteCandidates = new ArrayList<IceCandidate>();
          collectedLocalCandidates = new ArrayList<IceCandidate>();
          sessionID = Respoke.makeGUID();
          timestamp = new Date();
          queuedRemoteCandidatesSemaphore = new Semaphore(1); // remote candidates queue mutex
          localCandidatesSemaphore = new Semaphore(1); // local candidates queue mutex
  
          if (null != signalingChannel) {
              RespokeSignalingChannel.Listener signalingChannelListener = signalingChannel.GetListener();
              if (null != signalingChannelListener) {
                  signalingChannelListener.callCreated(this);
              }
          }
  
          //TODO resign active handler?
      }
docs: Common constructor logic
  
  @param channel  The signaling channel to use for the call