00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef _PipeServer_incl_
00020 #define _PipeServer_incl_
00021
00022 #include <rel-server/ServerConnector.h>
00023
00024 #include <list>
00025 #include <string>
00026
00027 namespace rel
00028 {
00029
00030 class BinaryCoding;
00031
00032 struct PipeServerData
00033 {
00034 int readChan;
00035 int writeChan;
00036 Pointer<Coding> coding;
00037
00038 PipeServerData() {}
00039 PipeServerData(const PipeServerData &src)
00040 : readChan(src.readChan)
00041 , writeChan(src.writeChan)
00042 , coding(src.coding)
00043 { }
00044 };
00045
00046 class PipeServer : public ServerConnector
00047 {
00048 public:
00049
00050
00051
00052
00053
00054
00055 PipeServer(const char *incomingPipe);
00056 ~PipeServer();
00057
00058 Pointer<Coding> accept();
00059
00060 private:
00061 bool acceptConnection();
00062 int openWriteChannel(const char *fileName);
00063 int createReadChannel(const char *fileName);
00064
00065 std::string newPipeName();
00066
00067
00068 int connectionFD;
00069 BinaryCoding *connectionStream;
00070
00071
00072 std::list< PipeServerData > connections;
00073 };
00074
00075
00076 }
00077
00078 #endif
00079