示例#1
0
int _mosquitto_packet_handle(struct mosquitto *mosq)
{
	assert(mosq);

	switch((mosq->in_packet.command)&0xF0){
		case PINGREQ:
			return _mosquitto_handle_pingreq(mosq);
		case PINGRESP:
			return _mosquitto_handle_pingresp(mosq);
		case PUBACK:
			return _mosquitto_handle_pubackcomp(mosq, "PUBACK");
		case PUBCOMP:
			return _mosquitto_handle_pubackcomp(mosq, "PUBCOMP");
		case PUBLISH:
			return _mosquitto_handle_publish(mosq);
		case PUBREC:
			return _mosquitto_handle_pubrec(mosq);
		case PUBREL:
			return _mosquitto_handle_pubrel(NULL, mosq);
		case CONNACK:
			return _mosquitto_handle_connack(mosq);
		case SUBACK:
			return _mosquitto_handle_suback(mosq);
		case UNSUBACK:
			return _mosquitto_handle_unsuback(mosq);
		default:
			/* If we don't recognise the command, return an error straight away. */
			_mosquitto_log_printf(mosq, MOSQ_LOG_ERR, "Error: Unrecognised command %d\n", (mosq->in_packet.command)&0xF0);
			return MOSQ_ERR_PROTOCOL;
	}
}
示例#2
0
int mqtt3_packet_handle(struct mosquitto_db *db, struct mosquitto *context)
{
	if(!context) return MOSQ_ERR_INVAL;

	switch((context->in_packet.command)&0xF0){//高4位为消息类型
		case PINGREQ:
			return _mosquitto_handle_pingreq(context);//简单给客户端发送PINGREQ包就行
		case PINGRESP:
			return _mosquitto_handle_pingresp(context);//不需要额外处理
		case PUBACK:
			return _mosquitto_handle_pubackcomp(context, "PUBACK");//我们给客户端发送一条PUBLISH消息,对方返回一条PUBACK表示收到了
		case PUBCOMP:
			return _mosquitto_handle_pubackcomp(context, "PUBCOMP");//对方给我们返回了一个PUBCOMP,也就是QOS2的第四个包,那我们就可以将这条消息直接给弄掉了
		case PUBLISH:
			return mqtt3_handle_publish(db, context);//处理订阅消息
		case PUBREC:
			return _mosquitto_handle_pubrec(context);//对方跟我说,他已经记录了刚才给他的QOS2消息。等待我发送PUBREL
		case PUBREL:
			return _mosquitto_handle_pubrel(db, context);//客户端发送PUBLIS,我们立即回复PUBREC,现在是该对方发送PUBREL的时候了,接到这个就可以真正发布了
		case CONNECT:
			return mqtt3_handle_connect(db, context);//带密码登陆/重登陆
		case DISCONNECT:
			return mqtt3_handle_disconnect(db, context);//客户端主动断开一个连接,这里只是关闭SOCKET,设置state,其他数据都没有动
		case SUBSCRIBE:
			return mqtt3_handle_subscribe(db, context);//订阅一个topic
		case UNSUBSCRIBE:
			return mqtt3_handle_unsubscribe(db, context);//退订一个topic
		default:
			/* If we don't recognise the command, return an error straight away. */
			return MOSQ_ERR_PROTOCOL;
	}
}
示例#3
0
int mqtt3_packet_handle(struct mosquitto_db *db, struct mosquitto *context)
{
	if(!context) return MOSQ_ERR_INVAL;

	switch((context->in_packet.command)&0xF0){
		case PINGREQ:
			return _mosquitto_handle_pingreq(context);
		case PINGRESP:
			return _mosquitto_handle_pingresp(context);
		case PUBACK:
			return _mosquitto_handle_pubackcomp(context, "PUBACK");
		case PUBCOMP:
			return _mosquitto_handle_pubackcomp(context, "PUBCOMP");
		case PUBLISH:
      //
			return mqtt3_handle_publish(db, context);
		case PUBREC:
			return _mosquitto_handle_pubrec(context);
		case PUBREL:
			return _mosquitto_handle_pubrel(db, context);
    case CONNECT:
      //
			return mqtt3_handle_connect(db, context);
		case DISCONNECT:
			return mqtt3_handle_disconnect(db, context);
		case SUBSCRIBE:
      //
			return mqtt3_handle_subscribe(db, context);
		case UNSUBSCRIBE:
			return mqtt3_handle_unsubscribe(db, context);
		case CONNACK:
			return mqtt3_handle_connack(db, context);
		case SUBACK:
			return _mosquitto_handle_suback(context);
		case UNSUBACK:
			return _mosquitto_handle_unsuback(context);
		default:
			/* If we don't recognise the command, return an error straight away. */
			return MOSQ_ERR_PROTOCOL;
	}
}