📄 npstream.cpp
字号:
#define INCL_DOSNMPIPES
#define INCL_DOSQUEUES
#include <string.h>
#include <fstream.h>
#include<os2.h>
#include<vector.h>
#include<algo.h>
template <class T> class npstream{
private:
char PipeName[20];
unsigned long PipeHandle;
long int PipeMode;
long int OpenMode;
long int OutputBufSize;
long int InputBufSize;
long int TimeOut;
unsigned long Result;
fstream NamedPipe;
public:
npstream(char *PName,long PMode,long OMode,long TOut = 1000);
npstream(char *PName);
~npstream(void);
void operator<<(T &X);
void operator<<(vector<T> &X);
void operator>>(T &X);
long int pipeMode(void);
long int openMode(void);
long int outBufSize(void);
long int inBufSize(void);
long int timeOut(void);
unsigned long result(void);
};
template <class T> npstream<T>::npstream(char *PName,long PMode,long OMode,long TOut = 1000)
{
strcpy(PipeName,PName);
PipeMode = PMode;
OpenMode = OMode;
OutputBufSize = (sizeof(T) * 1000);
InputBufSize = (sizeof(T) * 1000);
TimeOut = TOut;
Result = DosCreateNPipe(PipeName,&PipeHandle,OpenMode,PipeMode,
OutputBufSize,InputBufSize,TimeOut);
DosConnectNPipe(PipeHandle);
NamedPipe.attach(PipeHandle);
}
template <class T> npstream<T>::npstream(char *PName)
{
DosOpen(PName,&PipeHandle,&Result,0,
FILE_NORMAL,FILE_OPEN,OPEN_ACCESS_READWRITE |OPEN_SHARE_DENYNONE,
(PEAOP) NULL);
NamedPipe.attach(PipeHandle);
}
template <class T> npstream<T>::~npstream(void)
{
NamedPipe.close();
}
template <class T> void npstream<T>::operator<<(T &X)
{
NamedPipe << X << " ";
}
template <class T> void npstream<T>::operator>>(T &X)
{
NamedPipe >> X;
}
template <class T> void npstream<T>::operator<<(vector<T> &X)
{
ostream_iterator<T> Out(NamedPipe," ");
copy(X.begin(),X.end(),Out);
}
template <class T> long int npstream<T>::pipeMode(void)
{
return(PipeMode);
}
template <class T> long int npstream<T>::openMode(void)
{
return(OpenMode);
}
template <class T> long int npstream<T>::outBufSize(void)
{
return(OutputBufSize);
}
template <class T> long int npstream<T>::inBufSize(void)
{
return(InputBufSize);
}
template <class T> long int npstream<T>::timeOut(void)
{
return(TimeOut);
}
template <class T> unsigned long npstream<T>::result(void)
{
return(Result);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -