mirror of
https://github.com/gnustep/libs-base.git
synced 2025-05-13 17:40:54 +00:00
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:
parent
1c3b575999
commit
b2db27dcad
1 changed files with 46 additions and 0 deletions
|
@ -2,6 +2,43 @@
|
||||||
#include <gnustep/base/Connection.h>
|
#include <gnustep/base/Connection.h>
|
||||||
#include "first-server.h"
|
#include "first-server.h"
|
||||||
#include <gnustep/base/String.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
|
@implementation FirstServer
|
||||||
- sayHiTo: (char *)name
|
- sayHiTo: (char *)name
|
||||||
|
@ -14,6 +51,15 @@
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
id s, c;
|
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 */
|
/* Create our server object */
|
||||||
s = [[FirstServer alloc] init];
|
s = [[FirstServer alloc] init];
|
||||||
|
|
Loading…
Reference in a new issue