예제 #1
0
        /// <summary>
        /// 连接到服务器
        /// </summary>
        /// <param name="option">选项</param>
        /// <exception cref="ArgumentNullException"></exception>
        /// <exception cref="MqttException"></exception>
        /// <returns></returns>
        private ITaskSetter <ConnectError> ConnectInternal(ConnectOption option)
        {
            if (option == null)
            {
                throw new ArgumentNullException();
            }

            this.connectOpt = option;

            var taskId = this.GenerateTaskId();
            var setter = this.taskSetterTable.Create <ConnectError>(taskId);

            var mqttOptions = this.AutoRef <MqttConnectOptions>();
            var opt         = mqttOptions.ToStruct(taskId, option.ToStruct());
            var er          = MQTTAsync.MQTTAsync_connect(this.handle, ref opt);

            this.EnsureSuccessCode(er);

            return(setter);
        }
예제 #2
0
 /// <summary>
 /// 连接到服务器
 /// </summary>
 /// <param name="option">选项</param>
 /// <exception cref="ArgumentNullException"></exception>
 /// <exception cref="MqttException"></exception>
 /// <returns></returns>
 public Task <ConnectError> ConnectAsync(ConnectOption option)
 {
     return(this.ConnectInternal(option).GetTask());
 }
예제 #3
0
 /// <summary>
 /// 连接到服务器
 /// </summary>
 /// <param name="option">选项</param>
 /// <exception cref="ArgumentNullException"></exception>
 /// <exception cref="MqttException"></exception>
 /// <returns></returns>
 public ConnectError Connect(ConnectOption option)
 {
     return(this.ConnectInternal(option).GetResult());
 }