From e519025e0f37d6e461324431523f0cbbf22c4bb5 Mon Sep 17 00:00:00 2001 From: chatty Date: Tue, 10 May 1994 09:50:27 +0000 Subject: Renamed _AddRef and _DelRef Moved Accept to UchSocket Now derive from UchIOS --- comm/Channel.h | 46 +++++++++++++++++++++++++++++++--------------- 1 file changed, 31 insertions(+), 15 deletions(-) (limited to 'comm/Channel.h') diff --git a/comm/Channel.h b/comm/Channel.h index 1e1e538..1f73c37 100644 --- a/comm/Channel.h +++ b/comm/Channel.h @@ -17,12 +17,14 @@ #include "cplus_bugs.h" #include "global.h" +#include "IOS.h" #include "ccu/SmartPointer.h" // we need read and write system calls #include class UchMsgBuffer; +class CcuString; #ifndef NFILE #define NFILE 20 @@ -32,27 +34,26 @@ enum IOMODE { IONone = 0, IORead = 1, IOWrite = 2, IOReadWrite = 3, IOSelect = 4, IOReadSelect = 5, IOWriteSelect = 6, IOAll = 7 }; -// Declarations for inlines -// -extern void _AddRef (int); -extern void _DelRef (int); - extern char* StrReprBuf; class UchFilDes { +private: +static void Use (int); +static void Unuse (int); + protected: int Fd; public: inline UchFilDes () : Fd (-1) { } -inline UchFilDes (const UchFilDes& fd) { _AddRef (Fd = fd.Fd); } -inline UchFilDes (int fd) { _AddRef (Fd = fd); } -inline ~UchFilDes () { _DelRef (Fd); } +inline UchFilDes (const UchFilDes& fd) { Use (Fd = fd.Fd); } +inline UchFilDes (int fd) { Use (Fd = fd); } +inline ~UchFilDes () { Unuse (Fd); } inline operator int () const { return Fd; } -inline UchFilDes& operator = (const UchFilDes& fd) { _DelRef (Fd); Fd = fd.Fd; _AddRef (Fd); return *this; } +inline UchFilDes& operator = (const UchFilDes& fd) { Unuse (Fd); Fd = fd.Fd; Use (Fd); return *this; } inline int FilDes () { return Fd; } -inline void Open (int fd) { _DelRef (Fd); _AddRef (Fd = fd); } -inline void Close () { _DelRef (Fd); Fd = -1; } +inline void Open (int fd) { Unuse (Fd); Use (Fd = fd); } +inline void Close () { Unuse (Fd); Fd = -1; } inline bool Opened () { return bool (Fd >= 0); } inline int Read (byte* b, int n) { return read (Fd, (char*) b, n); } inline int Write (byte* b, int n) { return write (Fd, (const char*) b, n); } @@ -69,7 +70,7 @@ inline int Write (byte* b, int n) { return write (Fd, (const char*) b, n); } class UchChannel; typedef void (* CH_HANDLER) (UchChannel *); -class UchChannel : public CcuSmartData { +class UchChannel : public CcuSmartData, public UchIOS { friend class UchBaseMultiplexer; protected: UchFilDes Fd; @@ -92,19 +93,34 @@ inline void SetMode (IOMODE io) { Mode = io; } int Write (UchMsgBuffer&); bool ReadBuffer (UchMsgBuffer&); bool WriteBuffer (UchMsgBuffer&); - UchChannel* Accept (); virtual UchChannel* Copy () const; virtual void HandleWrite (); virtual void HandleRead (); virtual bool HandleSelect (); inline int FilDes () const { return Fd; } -inline int Read (byte* b, int n) { return read (FilDes (), (char*) b, n); } -inline int Write (byte* b, int n) { return write (FilDes (), (const char*) b, n); } +inline int Read (byte* b, int n) { return read (Fd, (char*) b, n); } +inline int Write (const byte* b, int n) { return write (Fd, (const char*) b, n); } inline operator int () { return Fd; } inline UchBaseMultiplexer* GetMultiplexer () const { return Mpx; } inline char* StrRepr (char* s = StrReprBuf) { return Fd.StrRepr (s); } + +virtual void WriteLong (lword); +virtual void WriteShort (sword); +virtual void WriteByte (byte); +virtual void WriteChar (char); +virtual void WriteString (const char*); +virtual void WriteBuf (const byte*, int); + +virtual void ReadLong (lword&); +virtual void ReadShort (sword&); +virtual void ReadByte (byte&); +virtual void ReadChar (char&); +virtual void ReadString (char*); +virtual void ReadString (CcuString&); +virtual void ReadBuf (byte*, int); + static CH_HANDLER ReadHandler; static CH_HANDLER WriteHandler; }; -- cgit v1.1