Initial data commit

This commit is contained in:
Ingy döt Net 2023-07-01 11:58:00 -04:00
parent 72d218235f
commit f23f22d71c
199087 changed files with 3378941 additions and 0 deletions

View file

@ -0,0 +1,6 @@
#import <Foundation/Foundation.h>
// our protocol allows "sending" "strings", but we can implement
// everything we could for a "local" object
@protocol ActionObjectProtocol
- (NSString *)sendMessage: (NSString *)msg;
@end

View file

@ -0,0 +1,6 @@
#import <Foundation/Foundation.h>
#import "ActionObjectProtocol.h"
@interface ActionObject : NSObject <ActionObjectProtocol>
// we do not have much for this example!
@end

View file

@ -0,0 +1,10 @@
#import <Foundation/Foundation.h>
#import "ActionObject.h"
@implementation ActionObject
-(NSString *)sendMessage: (NSString *)msg
{
NSLog(@"client sending message %@", msg);
return @"server answers ...";
}
@end

View file

@ -0,0 +1,35 @@
#import <Foundation/Foundation.h>
#import "ActionObject.h"
int main (void)
{
@autoreleasepool {
ActionObject *action = [[ActionObject alloc] init];
NSSocketPort *port = (NSSocketPort *)[NSSocketPort port];
// initWithTCPPort: 1234 and other methods are not supported yet
// by GNUstep
NSConnection *connect = [NSConnection
connectionWithReceivePort: port
sendPort: port]; // or sendPort: nil
[connect setRootObject: action];
/* "vend" the object ActionObject as DistributedAction; on GNUstep
the Name Server that allows the resolution of the registered name
is bound to port 538 */
if (![connect registerName:@"DistributedAction"
withNameServer: [NSSocketPortNameServer sharedInstance] ])
{
NSLog(@"can't register the server DistributedAction");
exit(EXIT_FAILURE);
}
NSLog(@"waiting for messages...");
[[NSRunLoop currentRunLoop] run];
}
return 0;
}

View file

@ -0,0 +1,38 @@
#import <Foundation/Foundation.h>
#import "ActionObjectProtocol.h"
int main(void)
{
@autoreleasepool {
id <ActionObjectProtocol> action = (id <ActionObjectProtocol>)
[NSConnection
rootProxyForConnectionWithRegisteredName: @"DistributedAction"
host: @"localhost"
usingNameServer: [NSSocketPortNameServer sharedInstance] ];
if (action == nil)
{
NSLog(@"can't connect to the server");
exit(EXIT_FAILURE);
}
NSArray *args = [[NSProcessInfo processInfo] arguments];
if ([args count] == 1)
{
NSLog(@"specify a message");
exit(EXIT_FAILURE);
}
NSString *msg = args[1];
// "send" (call the selector "sendMessage:" of the (remote) object
// action) the first argument's text as msg, store the message "sent
// back" and then show it in the log
NSString *backmsg = [action sendMessage: msg];
NSLog("%@", backmsg);
}
return 0;
}