Jabberd2源代码分析: JID

使用XMPP协议通信过程中,任何实体都需要一个ID来唯一标示,一个XMPP实体地址被称为 Jabber identifier或JID, 一个合法的JID包括一组元素的组合,包括域名(domain identifier)、节点名(node identifier)、资源名(resource identifier)。

 

jid=[node"@"]domain["/"resource]

 

例如格式:user@gmail.com/resource这种格式来标示一个用户.

 

协议规定一个JID的每个组成部分(domain, node, resource)都不能超过1023字节,加上"@", "/"字符后整体长度不超过3071字节。

 

Jabberd2中为了编程方便,使用jid_t来标示一个JID。

 

typedef struct jid_st {

 

    unsigned char   *node;

    unsigned char   *domain;

    unsigned char   *resource;

 

 

    unsigned char   *jid_data;

    size_t          jid_data_len;

 

    unsigned char   *_user;

    unsigned char   *_full;

 

    int             dirty;

 

    struct jid_st    *next;

} *jid_t;

 

jid_st包含有一个next指针,从而形成一个单向链表。jabberd2中将所有的用户都链起来,可以使用jid_search函数查找给定两个JID是否相同。使用jid_zap函数从链表中删除一个JID。使用jid_append函数用来想链表尾部添加一个新的JID

 

 

还可以使用jid_compare_user用来比较user@domain部分是否相同

使用jid_compare_full用来比较user@domain/resource是否相同

 

jid_new用来分配一个新的jid_st结构体,jid_free用来释放jid_st所占用的资源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值