Update of /cvsroot/squeak/squeak/platforms/RiscOS/plugins/SocketPlugin
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19825/plugins/SocketPlugin
Modified Files:
sqRPCNetPlugin.c
Added Files:
aio.h
Log Message:
Steal Ian P.s latest socket *nix code and hack into a tolerable plugin for RISC OS.
If it doesn't work, it's all his faoult. Not mine, not no way.
--- NEW FILE: aio.h ---
/* aio.h -- asynchronous file i/o
*
* Copyright (C) 1996-2003 Ian Piumarta and other authors/contributors
* as listed elsewhere in this file.
* All rights reserved.
*
* You are NOT ALLOWED to distribute modified versions of this file
* under its original name. If you want to modify it and then make
* your modifications available publicly, rename the file first.
*
* This file is part of Unix Squeak.
*
* This file is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
*
* You may use and/or distribute this file ONLY as part of Squeak, under
* the terms of the Squeak License as described in `LICENSE' in the base of
* this distribution, subject to the following additional restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software
* in a product, an acknowledgment to the original author(s) (and any
* other contributors mentioned herein) in the product documentation
* would be appreciated but is not required.
*
* 2. You must not distribute (or make publicly available by any
* means) a modified copy of this file unless you first rename it.
*
* 3. This notice must not be removed or altered in any source distribution.
*
* Using (or modifying this file for use) in any context other than Squeak
* changes these copyright conditions. Read the file `COPYING' in the
* directory `platforms/unix/doc' before proceeding with any such use.
*/
/* author: ian...@in...
*
* last edited: 2002-12-02 20:20:13 by piumarta on calvin.inria.fr
*/
#ifndef __aio_h
#define __aio_h
#define AIO_X (1<<0) /* handle for exceptions */
#define AIO_R (1<<1) /* handle for read */
#define AIO_W (1<<2) /* handle for write */
#define AIO_SEQ (1<<3) /* call handlers sequentially */
#define AIO_EXT (1<<4) /* external fd -- don't close on aio shutdown */
#define AIO_RW (AIO_R | AIO_W)
#define AIO_RX (AIO_R | AIO_X)
#define AIO_WX (AIO_W | AIO_X)
#define AIO_RWX (AIO_R | AIO_W | AIO_X)
extern void aioInit(void);
extern void aioFini(void);
/* Initialise `fd' for handling by AIO. `flags' can be 0 (aio takes
* over the descriptor entirely and the application should not assume
* anything about its subsequent behaviour) or AIO_EXT (aio will never
* set NBIO on `fd' or close it on behalf of the client).
*/
extern void aioEnable(int fd, void *clientData, int flags);
/* Declare an interest in one or more events on `fd'. `mask' can be
* any combination in AIO_[R][W][X]. `handlerFn' will be called the
* next time any event in `mask' arrives on `fd' and will receive
* `fd', the original `clientData' (see aioEnable) and a `flag'
* containing ONE of AIO_{R,W,X} indicating which event occurred. In
* the event that the same handler is set for multiple events (either
* by setting more than one bit in `mask', or by calling aioHandle
* several times with different `mask's) and several events arrive
* simultaneously for the descriptor, then `handlerFn' is called
* multiple times -- once for each event in `mask'. The `handlerFn'
* will NOT be called again for the same event until the client calls
* aioHandle with an appropriate `mask' (the handled event is removed
* implicitly from the current mask before calling `handlerFn') .
* (Calls to aioHandle are cumulative: successive `mask's are ORed
* with the mask currently in effect for `fd'.)
*/
typedef void (*aioHandler)(int fd, void *clientData, int flag);
extern void aioHandle(int fd, aioHandler handlerFn, int mask);
/* Suspend handling of the events in `mask' for `fd'.
*/
extern void aioSuspend(int fd, int mask);
/* Disable further AIO handling of `fd'. The descriptor is reset to its
* default state (w.r.t. NBIO, etc.) but is NOT closed.
*/
extern void aioDisable(int fd);
/* Sleep for at most `microSeconds'. Any event(s) arriving for any
* handled fd(s) will terminate the sleep, with the appropriate
* handler(s) being called before returning.
*/
extern int aioPoll(int microSeconds);
#endif /* __aio_h */
Index: sqRPCNetPlugin.c
===================================================================
RCS file: /cvsroot/squeak/squeak/platforms/RiscOS/plugins/SocketPlugin/sqRPCNetPlugin.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** sqRPCNetPlugin.c 15 Aug 2003 21:29:53 -0000 1.3
--- sqRPCNetPlugin.c 19 May 2004 22:39:00 -0000 1.4
***************
*** 17,109 ****
* Original Author: Ian Piumarta (ian...@in...)
* Minor Acorn changes: Tim Rowledge (ti...@su...)
! *
! * Last edited: July 20 2003 by ti...@su... to convert for plugin VM usage
! *
* Notes:
! *
! * 1. UDP support is fully implemented here, but is missing in the
! * image.
! *
[...2528 lines suppressed...]
}
***************
*** 1031,1037 ****
memcpy(lastName, hostName, len);
lastName[len]= lastError= 0;
! PRINTF(("\\t name lookup %s\n", lastName));
lastAddr= nameToAddr(lastName);
/* we're done before we even started */
interpreterProxy->signalSemaphoreWithIndex(resolverSema);
}
--- 1656,1664 ----
memcpy(lastName, hostName, len);
lastName[len]= lastError= 0;
! FPRINTF((stderr, "name lookup %s\n", lastName));
lastAddr= nameToAddr(lastName);
/* we're done before we even started */
interpreterProxy->signalSemaphoreWithIndex(resolverSema);
}
+
+
|