blob: 8bd5ac9b917876b136869376b58d9fe199818dff [file] [log] [blame]
/* -*- Mode: objc; c-file-style: "gnu"; indent-tabs-mode:nil -*- */
/*
* @copyright See LICENCE for copyright and license information.
*
* @author Alexander Afanasyev <alexander.afanasyev@ucla.edu>
* @author Ilya Moiseenko <iliamo@ucla.edu>
*/
#include "config.h"
#import "ndnd-status-operation.h"
@implementation NdndStatusOperation
-(id)initWithDelegate:(MenuDelegate*)delegate
{
if (![super init]) return nil;
m_delegate = delegate;
return self;
}
-(void)main
{
NSTask *task = [[NSTask alloc] init];
[task setLaunchPath: @NDND_STATUS_COMMAND];
[task setArguments: [NSArray arrayWithObjects: @"status",@"-x",nil]];
NSPipe * out = [NSPipe pipe];
[task setStandardOutput:out];
[task launch];
[task waitUntilExit];
NSFileHandle * read = [out fileHandleForReading];
NSData * dataRead = [read readDataToEndOfFile];
NSString *stringRead = [[NSString alloc] initWithData:dataRead encoding:NSUTF8StringEncoding];
if ([stringRead isEqualToString:@""]) {
[m_delegate performSelectorOnMainThread:@selector(statusUnavailable:)
withObject:nil
waitUntilDone:YES];
} else {
NSError *error = nil;
NSXMLDocument *document = [[NSXMLDocument alloc]
initWithXMLString:stringRead
options:0
error:&error];
[m_delegate performSelectorOnMainThread:@selector(statusUpdated:)
withObject:document
waitUntilDone:YES];
}
// [daemonStatusText setStringValue:stringRead];
}
@end