summaryrefslogtreecommitdiff
path: root/comm
diff options
context:
space:
mode:
authorchatty1994-05-10 09:50:27 +0000
committerchatty1994-05-10 09:50:27 +0000
commite519025e0f37d6e461324431523f0cbbf22c4bb5 (patch)
tree631ffa6d8b0e407cc359175e0f5fba328fc1ffc8 /comm
parent14c468aa6681df233ce2ee885b6cfb51010ef7eb (diff)
downloadivy-league-e519025e0f37d6e461324431523f0cbbf22c4bb5.zip
ivy-league-e519025e0f37d6e461324431523f0cbbf22c4bb5.tar.gz
ivy-league-e519025e0f37d6e461324431523f0cbbf22c4bb5.tar.bz2
ivy-league-e519025e0f37d6e461324431523f0cbbf22c4bb5.tar.xz
Renamed _AddRef and _DelRef
Moved Accept to UchSocket Now derive from UchIOS
Diffstat (limited to 'comm')
-rw-r--r--comm/Channel.h46
1 files changed, 31 insertions, 15 deletions
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 <unistd.h>
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;
};