gnustep-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: "Modern" server socket programming?


From: Stefan Bidi
Subject: Re: "Modern" server socket programming?
Date: Wed, 9 Jan 2013 09:56:31 -0600

ARC is still kind of a foreign concept to me. I've had some conversations with David about it, but I don't remember if I ever implemented some of his recommendations.

As for the uuid thing, it might be a problem with the toll-free bridge mechanism. I've also started doing some work in CFString that might've broken parts of it. I'm still working on it, just not as much as I should.

On Jan 9, 2013 9:47 AM, "Marcus Müller" <address@hidden> wrote:
Hi Stefan,

As the GNUstep corebase maintainer, of be very interested in hearing what has and has not worked for you.

the obvious (and probably biggest) thing missing is ARC support. As I already mentioned this poses a problem in ARC-ready code which drags in corebase headers via other classes. It obviously doesn't matter if you compile these other classes with -fno-arc, as the header inclusion alone is the whole problem (and sometimes pretty hard to avoid, as you can't always forward-declare or mask required structs).

The next problem I encountered was missing functionality in CFSocket, specifically CFSocketEnableCallBacks/CFSocketDisableCallBacks. This is probably not too hard to implement.

The real showstopper is missing ARC support.

The project is to be considered experimental, at best, but there are still a few useful features.

Yes, definitely. I was really surprised to see so much being implemented, I didn't really expect that. ;-)

Concerning the uuid issue you had. Could you provide me an example of what avahi does accept?

I just revisited the issue and have to correct myself. It seems that GSAvahiNetService doesn't properly retain the name given to it via -[NSNetService initWithDomain:type:name:port:]. I just had a brief look at the code and saw nothing suspicious, but the following code will demonstrate the issue:


NSString *name = [[NSUserDefaults standardUserDefaults] stringForKey:@"ServiceName"];
if (!name)
  name = CFUUIDCreateString(kCFAllocatorDefault, CFUUIDCreate(kCFAllocatorDefault));

NSNetService *service = [[NSNetService alloc] initWithDomain:@"" type:@"_test-service._tcp." name:name port:12345];
[service publish];


This happens when _not_ passing any argument to the test program:

2013-01-09 16:23:03.156 TestService[45728] service:fdfee732-1df0-40da-95a0-f3c57f4fe760 type:_test-service._tcp. port:12345
Assertion failed: (name), function avahi_entry_group_add_service_strlst, file entrygroup.c, line 422.
Abort trap: 6 (core dumped)


If you provide -ServiceName fdfee732-1df0-40da-95a0-f3c57f4fe760 as command line argument, the assertion doesn't happen.



Cheers,


  Marcus


-- 
Marcus Müller  .  .  .  http://www.mulle-kybernetik.com/znek/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]