Added test of RunLoop FD listening.

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1891 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Andrew McCallum 1996-10-31 17:55:35 +00:00
parent b97d78de17
commit 1071eaffa0

View file

@ -2,6 +2,43 @@
#include <gnustep/base/Connection.h>
#include "first-server.h"
#include <gnustep/base/String.h>
#include <gnustep/base/RunLoop.h>
#include <sys/file.h>
@interface MyIo: NSObject <FdListening,FdSpeaking>
{
id runLoop;
id mode;
char c;
}
- initForRunLoop: r andMode: m;
- (void) readyForReadingOnFileDescriptor: (int)fd;
- (void) readyForWritingOnFileDescriptor: (int)fd;
@end
@implementation MyIo
- initForRunLoop: r andMode: m
{
runLoop = r;
mode = m;
return self;
}
- (void) readyForReadingOnFileDescriptor: (int)fd
{
if (read(fd, &c, 1) == 1) {
[runLoop addWriteDescriptor: 1 object: self forMode: mode];
[runLoop removeReadDescriptor: fd forMode: mode];
}
}
- (void) readyForWritingOnFileDescriptor: (int)fd
{
if (write(fd, &c, 1) == 1) {
[runLoop addReadDescriptor: 0 object: self forMode: mode];
[runLoop removeWriteDescriptor: fd forMode: mode];
}
}
@end
@implementation FirstServer
- sayHiTo: (char *)name
@ -14,6 +51,15 @@
int main()
{
id s, c;
MyIo* myIo;
NSString* m;
id r;
r = [RunLoop currentInstance];
m = [RunLoop currentMode];
myIo = [[MyIo alloc] initForRunLoop: r andMode: m];
[r addReadDescriptor: 0 object: myIo forMode: m];
/* Create our server object */
s = [[FirstServer alloc] init];