Whoops, I had a typo on ClientController's nameserver's portname (it was
supposed to be "CommServerPort" and not "ChatterPort")
Fixed this, but now I'm getting crashes when the debugger hits [[connect
rootProxy] retain].

On Wed, Jun 18, 2008 at 2:40 PM, Waldo Lee Sharvey <
[EMAIL PROTECTED]> wrote:

>
> For the last several days I've been trying to use Distributed Objects in my
> application to no avail. I've scanned and scoured for multiple pieces of
> documentation over just about everywhere, I've tried one variation of code
> after another, initially trying to use NSSocketPort with domain sockets and
> then dropping down to NSMessagePorts w/ name server (to rule out any socket
> programming issues) and still nothing works.
>
> The below is a mini-sized, minimalistic version of what I've been trying to
> write. It's largely based off the example I found in the Advanced Mac
> Programming book. My (simplified for the time being) goal is to create a
> foundation-tool based daemon that vends a communication object that will let
> a client Cocoa application connect and register as a client via distributed
> objects.
>
> The server seems to run okay, but the client tries to get the vended
> NSMessagePort sendPort, sendPort shows up as nil in the debugger. What am I
> doing wrong/misunderstanding?
>
> ######### Protocol ##################################
>
> #import <Foundation/Foundation.h>
>
> @protocol ClientMessages
>
> - (oneway void)printHelloWorld:(NSString *)barcode;
>
> @end
>
> @protocol ServerMessages
>
> - (BOOL)subscribeClient:(in byref id<ClientMessages>)newclient;
>
> @end
>
> ######### Daemon Code ################################
>
> #import <Foundation/Foundation.h>
> #import "CommManager.h"
>
>
> int main (int argc, const char * argv[])
> {
>     NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
>  NSRunLoop *runloop = [NSRunLoop currentRunLoop];
>  CommManager *commManager = [[CommManager alloc] init];
>  NSMessagePort *receivePort = [[NSMessagePort alloc] init];
>  NSMessagePortNameServer *mpns = [NSMessagePortNameServer sharedInstance];
>  [mpns registerPort:receivePort name:@"CommServerPort"];
>  NSConnection *connection = [NSConnection
> connectionWithReceivePort:receivePort sendPort:nil];
>
> [connection setRootObject: commManager];
>  [runloop run];
>  [pool drain];
>     return 0;
> }
>
> ####### CommManager.h #####################
>
> #import <Foundation/Foundation.h>
> #import "CommProtocol.h"
>
> @interface CommManager : NSObject <ServerMessages>
> {
> NSMutableArray *clients;
> }
>
> @end
>
> ###### CommManager.m ######################
>
> #import "CommManager.h"
> #import "CommProtocol.h"
>
> @implementation CommManager
>
> - (BOOL)subscribeClient:(in byref id<ClientMessages>)newclient
> {
>  [clients addObject: newclient];
>  return YES;
> }
>
> - (void)dealloc
> {
> [clients release];
>  [super dealloc];
> }
>
> @end
>
>
> ########### ClientController.h #################################
>
> #import <Cocoa/Cocoa.h>
> #import "CommProtocol.h"
>
> @interface ClientController : NSObject <ClientMessages>
> {
> id proxy;
> }
>
> @end
>
> ########### ClientController.m #################################
>
>
> #import "ClientController.h"
>
>
> @implementation ClientController
>
> - (void)awakeFromNib
> {
> NSMessagePortNameServer *nameServer = [NSMessagePortNameServer
> sharedInstance];
>  // sendPort shows up as nil in the debugger
> NSMessagePort *sendPort = [nameServer portForName:@"ChatterPort"];
>  NSConnection *connection = [NSConnection connectionWithReceivePort:nil
> sendPort: sendPort];
>  proxy = [[connection rootProxy] retain];
>  [proxy setProtocolForProxy:@protocol(ServerMessages)];
>  BOOL successful = [proxy subscribeClient: self];
>  if(successful)
> {
>  NSLog(@"connected");
> }
> else
>  {
> NSLog(@"not connected");
> }
> }
>
>
>
_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [EMAIL PROTECTED]

Reply via email to