Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Tree: 53a9b3238f
Fetching contributors…

Cannot retrieve contributors at this time

102 lines (83 sloc) 4.661 kB
//
// UKKQueue.m
// Filie
//
// Created by Uli Kusterer on 21.12.2003
// Copyright 2003 Uli Kusterer.
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software. If you use this software
// in a product, an acknowledgment in the product documentation would be
// appreciated but is not required.
//
// 2. Altered source versions must be plainly marked as such, and must not be
// misrepresented as being the original software.
//
// 3. This notice may not be removed or altered from any source
// distribution.
//
// -----------------------------------------------------------------------------
// Headers:
// -----------------------------------------------------------------------------
#import <Foundation/Foundation.h>
#include <sys/types.h>
#include <sys/event.h>
#import "UKFileWatcher.h"
// -----------------------------------------------------------------------------
// Preprocessor flags:
// -----------------------------------------------------------------------------
// For historical reasons (I was young and stupid) UKKQueue sends its notifications
// to NSWorkspace's notificationCenter. This is not available on iOS or in
// Foundation tools, so we're switching to NSNotificationCenter. For backwards
// compatibility, we currently *also* send notifications to the workspace's
// notification center. Define this flag to 0 in your prefix header to remove this
// behaviour. This is recommended for new code. This behaviour will be removed
// in a future version.
#ifndef UKKQ_NOTIFY_NSWORKSPACE_CENTER
#define UKKQ_NOTIFY_NSWORKSPACE_CENTER (!TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR)
#endif
/// -----------------------------------------------------------------------------
// Constants:
// -----------------------------------------------------------------------------
// Flags for notifyingAbout:
#define UKKQueueNotifyAboutRename NOTE_RENAME // Item was renamed.
#define UKKQueueNotifyAboutWrite NOTE_WRITE // Item contents changed (also folder contents changed).
#define UKKQueueNotifyAboutDelete NOTE_DELETE // item was removed.
#define UKKQueueNotifyAboutAttributeChange NOTE_ATTRIB // Item attributes changed.
#define UKKQueueNotifyAboutSizeIncrease NOTE_EXTEND // Item size increased.
#define UKKQueueNotifyAboutLinkCountChanged NOTE_LINK // Item's link count changed.
#define UKKQueueNotifyAboutAccessRevocation NOTE_REVOKE // Access to item was revoked.
#define UKKQueueNotifyDefault (UKKQueueNotifyAboutRename | UKKQueueNotifyAboutWrite \
| UKKQueueNotifyAboutDelete | UKKQueueNotifyAboutAttributeChange \
| UKKQueueNotifyAboutSizeIncrease | UKKQueueNotifyAboutLinkCountChanged \
| UKKQueueNotifyAboutAccessRevocation)
// -----------------------------------------------------------------------------
// UKKQueue:
// -----------------------------------------------------------------------------
@interface UKKQueue : NSObject <UKFileWatcher>
{
NSMutableDictionary* watchedFiles; // List of NSStrings containing the paths we're watching. These match up with watchedFDs, as a dictionary that may have duplicate keys.
id delegate; // Gets messages about changes instead of notification center, if specified.
BOOL alwaysNotify; // Send notifications with us as the object even when we have a delegate.
}
+(id) sharedFileWatcher; // Returns a singleton, a shared kqueue object. Handy if you're subscribing to the notifications. Use this, or just create separate objects using alloc/init. Whatever floats your boat.
-(int) queueFD; // I know you unix geeks want this...
-(BOOL) alwaysNotify;
-(void) setAlwaysNotify: (BOOL)state;
// High-level file watching:
-(void) addPath: (NSString*)path; // UKFileWatcher protocol, preferred.
-(void) addPath: (NSString*)path notifyingAbout: (u_int)fflags;
-(void) removePath: (NSString*)path; // UKFileWatcher protocol.
-(void) removeAllPaths; // UKFileWatcher protocol.
// For alloc/inited instances, you can specify a delegate instead of subscribing for notifications:
-(void) setDelegate: (id)newDelegate; // UKFileWatcher protocol.
-(id) delegate; // UKFileWatcher protocol.
@end
Jump to Line
Something went wrong with that request. Please try again.