|
|
|
@ -466,6 +466,7 @@ SrsInotifyWorker::SrsInotifyWorker(SrsServer* s)
|
|
|
|
|
server = s;
|
|
|
|
|
trd = new SrsSTCoroutine("inotify", this);
|
|
|
|
|
inotify_fd = NULL;
|
|
|
|
|
watch_conf = watch_k8s = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
SrsInotifyWorker::~SrsInotifyWorker()
|
|
|
|
@ -540,20 +541,22 @@ srs_error_t SrsInotifyWorker::start()
|
|
|
|
|
string config_dir = srs_path_dirname(_srs_config->config());
|
|
|
|
|
if (true) {
|
|
|
|
|
uint32_t mask = IN_ALL_EVENTS;
|
|
|
|
|
if (::inotify_add_watch(fd, config_dir.c_str(), mask) < 0) {
|
|
|
|
|
return srs_error_new(ERROR_INOTIFY_WATCH, "watch file=%s, fd=%d, mask=%#x", config_dir.c_str(), fd, mask);
|
|
|
|
|
if ((watch_conf = ::inotify_add_watch(fd, config_dir.c_str(), mask)) < 0) {
|
|
|
|
|
return srs_error_new(ERROR_INOTIFY_WATCH, "watch file=%s, fd=%d, watch=%d, mask=%#x",
|
|
|
|
|
config_dir.c_str(), fd, watch_conf, mask);
|
|
|
|
|
}
|
|
|
|
|
srs_trace("auto reload watching fd=%d, file=%s", fd, config_dir.c_str());
|
|
|
|
|
srs_trace("auto reload watching fd=%d, watch=%d, file=%s", fd, watch_conf, config_dir.c_str());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Watch k8s sub directory.
|
|
|
|
|
string k8s_file = config_dir + "/..data";
|
|
|
|
|
if (srs_path_exists(k8s_file)) {
|
|
|
|
|
uint32_t mask = IN_ALL_EVENTS;
|
|
|
|
|
if (::inotify_add_watch(fd, k8s_file.c_str(), mask) < 0) {
|
|
|
|
|
return srs_error_new(ERROR_INOTIFY_WATCH, "watch file=%s, fd=%d, mask=%#x", k8s_file.c_str(), fd, mask);
|
|
|
|
|
if ((watch_k8s = ::inotify_add_watch(fd, k8s_file.c_str(), mask)) < 0) {
|
|
|
|
|
return srs_error_new(ERROR_INOTIFY_WATCH, "watch file=%s, fd=%d, watch=%d, mask=%#x",
|
|
|
|
|
k8s_file.c_str(), fd, watch_k8s, mask);
|
|
|
|
|
}
|
|
|
|
|
srs_trace("auto reload watching fd=%d, file=%s", fd, k8s_file.c_str());
|
|
|
|
|
srs_trace("auto reload watching fd=%d, watch=%d, file=%s", fd, watch_k8s, k8s_file.c_str());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ((err = trd->start()) != srs_success) {
|
|
|
|
@ -587,14 +590,14 @@ srs_error_t SrsInotifyWorker::cycle()
|
|
|
|
|
for (char* ptr = buf; ptr < buf + nn; ptr += sizeof(inotify_event) + ie->len) {
|
|
|
|
|
ie = (inotify_event*)ptr;
|
|
|
|
|
|
|
|
|
|
if (!ie->len || !ie->name) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
string name = ie->name;
|
|
|
|
|
if ((name == k8s_file || name == config_file) && ie->mask & (IN_MODIFY|IN_CREATE)) {
|
|
|
|
|
do_reload = true;
|
|
|
|
|
}
|
|
|
|
|
//if (!ie->len || !ie->name) {
|
|
|
|
|
// continue;
|
|
|
|
|
//}
|
|
|
|
|
//
|
|
|
|
|
//string name = ie->name;
|
|
|
|
|
//if ((name == k8s_file || name == config_file) && ie->mask & (IN_MODIFY|IN_CREATE)) {
|
|
|
|
|
// do_reload = true;
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
srs_trace("inotify event wd=%d, mask=%#x, len=%d, name=%s, reload=%d", ie->wd, ie->mask, ie->len, ie->name, do_reload);
|
|
|
|
|
}
|
|
|
|
|