X13.Periphery.MsDevice.Connect C# (CSharp) Method

Connect() private method

private Connect ( MsConnect msg ) : void
msg MsConnect
return void
    private void Connect(MsConnect msg) {
      if(Owner==null) {
        Thread.Sleep(30);
      }
      if(msg.CleanSession) {
        foreach(var s in _subsscriptions) {
          Owner.Unsubscribe(s.path, s.func);
        }
        _subsscriptions.Clear();
        _topics.Clear();
        lock(_sendQueue) {
          _sendQueue.Clear();
        }
        _waitAck=false;
      }
      _duration=msg.Duration*1100;
      ResetTimer();
      if(msg.Will) {
        _willPath=string.Empty;
        _wilMsg=null;
        if(msg.CleanSession) {
          Log.Info("{0}.state {1} => WILLTOPICREQ", Owner.path, state);
        }
        state=State.WillTopic;
        Send(new MsMessage(MsMessageType.WILLTOPICREQ));
      } else {
        if(msg.CleanSession) {
          Log.Info("{0}.state {1} => PreConnect", Owner.path, state);
          state=State.PreConnect;
        } else {
          state=State.Connected;
        }
        Send(new MsConnack(MsReturnCode.Accepted));
      }
      via=_gate.name;
      if(_statistic.value) {
        Stat(false, MsMessageType.CONNECT, msg.CleanSession);
      }
    }
    //TODO: Unsubscribe