⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subscribe-node-list.c

📁 MANTIS是由科罗拉多大学开发的传感器网络嵌入式操作系统。 这是mantis的0.9.5版本的源码。
💻 C
字号:
#include <string.h>#include <glib.h>#include "bionet.h"#include "libbionet-internal.h"int bionet_subscribe_node_list_by_habtype_habid_nodeid(const char *hab_type,  const char *hab_id, const char *node_id) {    int r;    if (hab_type == NULL) hab_type = "*";    if (hab_id   == NULL) hab_id   = "*";    if (node_id  == NULL) node_id  = "*";    // FIXME: here check the strings for validity ([-a-zA-Z0-9])    if (bionet_connect_to_nag() < 0) {        return -1;    }    r = bionet_nxio_send(libbionet_nag_nxio, "<subscribe-node-list hab-type='%s' hab-id='%s' node-id='%s'/>", hab_type, hab_id, node_id);    if (r < 0) {        g_log(BIONET_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "bionet_subscribe_node_list(): error sending request to NAG");        return -1;    }    r = libbionet_read_ok_from_nag();    if (r != 0) {        g_log(BIONET_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "bionet_subscribe_node_list(): error reading reply from NAG");        libbionet_kill_nag_connection();        return -1;    }    return 0;}int bionet_subscribe_node_list_by_name_pattern(const char *node_name_pattern) {    char hab_type[256];    char hab_id[256];    char node_id[256];    const char *p;    int size;    char *separator;    if (node_name_pattern == NULL) {        g_log(BIONET_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "bionet_subscribe_node_list_by_name_pattern(): NULL node_name_pattern passed in");        return -1;    }    p = node_name_pattern;    // get the HAB-Type    separator = strchr(p, '.');    if (separator == NULL) {        g_log(BIONET_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "bionet_subscribe_node_list_by_name_pattern(): error parsing pattern '%s'", node_name_pattern);        return -1;    }    size = separator - p;    if (size >= (sizeof(hab_type) - 1)) {        g_log(BIONET_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "bionet_subscribe_node_list_by_name_pattern(): HAB-Type of '%s' is too long (max %d)", node_name_pattern, (sizeof(hab_type) - 1));        return -1;    }    memcpy(hab_type, p, size);    hab_type[size] = (char)NULL;    // get the HAB-ID    p = separator + 1;    separator = strchr(p, '.');    if (separator == NULL) {        g_log(BIONET_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "bionet_subscribe_node_list_by_name_pattern(): error parsing pattern '%s'", node_name_pattern);        return -1;    }    size = separator - p;    if (size >= (sizeof(hab_id) - 1)) {        g_log(BIONET_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "bionet_subscribe_node_list_by_name_pattern(): HAB-ID of '%s' is too long (max %d)", node_name_pattern, (sizeof(hab_id) - 1));        return -1;    }    memcpy(hab_id, p, size);    hab_id[size] = (char)NULL;    // get the Node-ID    p = separator + 1;    if (strlen(p) > (sizeof(node_id) - 1)) {        g_log(BIONET_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "bionet_subscribe_node_list_by_name_pattern(): Node-ID of '%s' is too long (max %d)", node_name_pattern, (sizeof(node_id) - 1));        return -1;    }    strcpy(node_id, p);    g_log(BIONET_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "bionet_subscribe_node_list_by_name_pattern(): Node Name pattern: '%s' = %s.%s.%s", node_name_pattern, hab_type, hab_id, node_id);    return bionet_subscribe_node_list_by_habtype_habid_nodeid(hab_type, hab_id, node_id);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -