mirror of
https://github.com/sparkle-project/Sparkle.git
synced 2025-11-01 15:34:38 +00:00
54 lines
1.8 KiB
Objective-C
54 lines
1.8 KiB
Objective-C
//
|
|
// main.m
|
|
// InstallerConnection
|
|
//
|
|
// Created by Mayur Pawashe on 7/9/16.
|
|
// Copyright © 2016 Sparkle Project. All rights reserved.
|
|
//
|
|
|
|
#import <Foundation/Foundation.h>
|
|
#import "SUInstallerConnection.h"
|
|
#import "SUInstallerCommunicationProtocol.h"
|
|
|
|
|
|
#include "AppKitPrevention.h"
|
|
|
|
@interface ServiceDelegate : NSObject <NSXPCListenerDelegate>
|
|
@end
|
|
|
|
@implementation ServiceDelegate
|
|
|
|
- (BOOL)listener:(NSXPCListener *)__unused listener shouldAcceptNewConnection:(NSXPCConnection *)newConnection {
|
|
// This method is where the NSXPCListener configures, accepts, and resumes a new incoming NSXPCConnection.
|
|
|
|
// Configure the connection.
|
|
// First, set the interface that the exported object implements.
|
|
newConnection.exportedInterface = [NSXPCInterface interfaceWithProtocol:@protocol(SUInstallerConnectionProtocol)];
|
|
newConnection.remoteObjectInterface = [NSXPCInterface interfaceWithProtocol:@protocol(SUInstallerCommunicationProtocol)];
|
|
|
|
SUInstallerConnection *exportedObject = [[SUInstallerConnection alloc] initWithDelegate:newConnection.remoteObjectProxy remote:YES];
|
|
|
|
newConnection.exportedObject = exportedObject;
|
|
|
|
// Resuming the connection allows the system to deliver more incoming messages.
|
|
[newConnection resume];
|
|
|
|
return YES;
|
|
}
|
|
|
|
@end
|
|
|
|
int main(int __unused argc, const char * __unused argv[])
|
|
{
|
|
// Create the delegate for the service.
|
|
ServiceDelegate *delegate = [ServiceDelegate new];
|
|
|
|
// Set up the one NSXPCListener for this service. It will handle all incoming connections.
|
|
NSXPCListener *listener = [NSXPCListener serviceListener];
|
|
listener.delegate = delegate;
|
|
|
|
// Resuming the serviceListener starts this service. This method does not return.
|
|
[listener resume];
|
|
return 0;
|
|
}
|