客户端可以通过发送CREATE_Handle 请求到相关的Handle 服务器来创建新的Handle。任何CREATE Handle 请求的消息头须将其<OpCode>设置为OC_CREATE_Handle。
CREATE_Handle 请求的消息体编码如下:
<Handle>:一个UTF-8 编码的字符串,CREATE_Handle 请求要创建的Handle 码。<ValueList>:一个4 字节的无符号整数后跟一组Handle 值。这个无符号整数代表后面的Handle 值的个数。<ValueList>中至少应该包含一个类型为HS_ADMIN 的Handle 值,其用处是定义Handle 管理员。
只有Handle 管理员才拥有在当前命名空间下CREATE_Handle 的权限来创建新的Handle。当服务器接收到CREATE_Handle 请求时,需要首先验证客户端是否拥有命名空间管理员的权限,或者站点管理员权限。这和验证ADD_VALUE 请求是否拥有Handle 管理员权限不同。当权限验证通过,服务器会创建一个Handle,并且将所有的<ValueList>中的Handle值添加到<Handle>。创建成功后,服务器会返回RC_SUCCESS 信息到客户端。(www.xing528.com)
每一个CREATE_Handle 请求必须作为一个事务处理来执行。如果在执行创建过程中出现错误,整个操作必须回滚。例如,服务器在添加<ValueList>中的Handle 值到<Handle>的过程中出现错误,服务器必须回滚并且返回错误信息到客户端。当发现<Handle>在服务器已经存在时,任何CREATE_Handle 请求都被认为是错误的,服务器会返回错误信息并且会把<ResponseCode>设置为RC_Handle_ALREADY_EXIST。
CREATE_Handle 请求也可以被用来创建命名空间(命名授权)。在GHR 节点下,命名空间的创建指的就是命名空间Handle 的创建。在创建新的命名空间前,Handle 服务器必须验证客户端是否拥有父命名空间管理员的权限。只有拥有CREATE_NA 管理员权限,才能够创建子命名空间。根命名空间必须由根Handle“0.NA/0.NA”的管理员创建。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。