Skip to content
This repository has been archived by the owner on Apr 22, 2023. It is now read-only.

Commit

Permalink
fs: make fs.watchFile() interval default to 5007
Browse files Browse the repository at this point in the history
  • Loading branch information
bnoordhuis committed Jun 21, 2012
1 parent f0ce984 commit ef1ffcb
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 34 deletions.
15 changes: 9 additions & 6 deletions lib/fs.js
Expand Up @@ -912,24 +912,27 @@ function inStatWatchers(filename) {

fs.watchFile = function(filename) {
var stat;
var options;
var listener;

var options = {
// Poll interval in milliseconds. 5007 is what libev used to use. It's
// a little on the slow side but let's stick with it for now to keep
// behavioral changes to a minimum.
interval: 5007,
persistent: true,
};

if ('object' == typeof arguments[1]) {
options = arguments[1];
options = util._extend(options, arguments[1]);
listener = arguments[2];
} else {
options = {};
listener = arguments[1];
}

if (!listener) {
throw new Error('watchFile requires a listener function');
}

if (options.persistent === undefined) options.persistent = true;
if (options.interval === undefined) options.interval = 0;

if (inStatWatchers(filename)) {
stat = statWatchers[filename];
} else {
Expand Down
30 changes: 5 additions & 25 deletions src/node_stat_watcher.cc
Expand Up @@ -25,11 +25,6 @@
#include <string.h>
#include <stdlib.h>

// Poll interval in milliseconds. 5007 is what libev used to use. It's a little
// on the slow side but let's stick with it for now, keep behavioral changes to
// a minimum.
#define DEFAULT_POLL_INTERVAL 5007

namespace node {

using namespace v8;
Expand Down Expand Up @@ -76,10 +71,7 @@ void StatWatcher::Callback(uv_fs_poll_t* handle,


Handle<Value> StatWatcher::New(const Arguments& args) {
if (!args.IsConstructCall()) {
return FromConstructorTemplate(constructor_template, args);
}

assert(args.IsConstructCall());
HandleScope scope;
StatWatcher* s = new StatWatcher();
s->Wrap(args.Holder());
Expand All @@ -88,28 +80,16 @@ Handle<Value> StatWatcher::New(const Arguments& args) {


Handle<Value> StatWatcher::Start(const Arguments& args) {
assert(args.Length() == 3);
HandleScope scope;

if (args.Length() < 1 || !args[0]->IsString()) {
return ThrowException(Exception::TypeError(String::New("Bad arguments")));
}

StatWatcher* wrap = ObjectWrap::Unwrap<StatWatcher>(args.Holder());
String::Utf8Value path(args[0]);
const bool persistent = args[1]->BooleanValue();
const uint32_t interval = args[2]->Uint32Value();

uint32_t interval = DEFAULT_POLL_INTERVAL;
if (args[2]->IsUint32()) {
interval = args[2]->Uint32Value();
}

if (!persistent) uv_unref(reinterpret_cast<uv_handle_t*>(&wrap->watcher_));
uv_fs_poll_start(&wrap->watcher_, Callback, *path, interval);

wrap->persistent_ = args[1]->IsTrue();

if (!wrap->persistent_) {
uv_unref(reinterpret_cast<uv_handle_t*>(&wrap->watcher_));
}

wrap->Ref();

return Undefined();
Expand Down
3 changes: 0 additions & 3 deletions src/node_stat_watcher.h
Expand Up @@ -35,7 +35,6 @@ class StatWatcher : ObjectWrap {
static v8::Persistent<v8::FunctionTemplate> constructor_template;

StatWatcher() : ObjectWrap() {
persistent_ = false;
uv_fs_poll_init(uv_default_loop(), &watcher_);
}

Expand All @@ -52,11 +51,9 @@ class StatWatcher : ObjectWrap {
int status,
const uv_statbuf_t* prev,
const uv_statbuf_t* curr);

void Stop();

uv_fs_poll_t watcher_;
bool persistent_;
};

} // namespace node
Expand Down

0 comments on commit ef1ffcb

Please sign in to comment.