Jabberd2源代码分析: JID

来源:互联网 发布:php 内容管理系统 编辑:程序博客网 时间:2024/05/21 14:47

使用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所占用的资源。

原创粉丝点击