完成放弃一个数据!不要了!
typedef struct SocketId
{
int8_t id;
}MqttSocketId;
一个技术:
typedef struct Network Network;
typedef void *xSocketSet_t;
struct Network
{
xSocket_t my_socket;
void (*disconnect) (Network*);
};
它就是:
struct Network
{
void * my_socket;//----------怎么用?
void (*disconnect) (Network*);
};
它用的时候是万能的接口 如下
MqttSocketId mqttSocketId;
void mqtt_network_init(Network* n)
{
n->my_socket = (void *)&mqttSocketId;
}
这样它就被赋值为一个结构体了!
在如何使用呢?
看下面
int mqtt_network_connect(Network* n, uint8_t* addr, int port)
{
int8_t ret = 0;
MqttSocketId *mqttId = (MqttSocketId *)(n->my_socket);
}
这个杨紫它从void*再次回到结构体了!它是万能桥梁!
++++++++++++增加一个潜在问题++++++++++++
因为是VOID* 只有4个字节 是一个桥梁 用的时候必须转化
比如:
int mqtt_send_mesg( mqttClientType *c , uint8_t *data , uint16_t len ,uint8_t qos)
{
int rc = FAILURE;
MutexLock(&c->mutex);
if (!c->isconnected) /* don't send connect packet again if we are already connected */
{
log(ERR,"%d MQTT服务器未建立连接 [CLIENT:%d]\n",__LINE__,c->ipstack->my_socket->????);
goto exit;
}
我现在只是希望打印出来那个clinent 需要找到里面的ID可以你看
c->ipstack->my_socket->????后面你指向的是VOID* 不行!
只能下面这条
int mqtt_send_mesg( mqttClientType *c , uint8_t *data , uint16_t len ,uint8_t qos)
{
int rc = FAILURE;
MutexLock(&c->mutex);
if (!c->isconnected) /* don't send connect packet again if we are already connected */
{
MqttSocketType *MqttSocket = (MqttSocketType *)(c->ipstack->my_socket);
log(ERR,"%d MQTT服务器未建立连接 [CLIENT:%d]\n",__LINE__,MqttSocket->id);
goto exit;
}
也即是拿 结构体 MqttSocketType 去换回来