diff options
Diffstat (limited to 'sip/tqtnetwork/tqsocket.sip')
-rw-r--r-- | sip/tqtnetwork/tqsocket.sip | 241 |
1 files changed, 241 insertions, 0 deletions
diff --git a/sip/tqtnetwork/tqsocket.sip b/sip/tqtnetwork/tqsocket.sip new file mode 100644 index 0000000..ed52819 --- /dev/null +++ b/sip/tqtnetwork/tqsocket.sip @@ -0,0 +1,241 @@ +// This is the SIP interface definition for TQSocket. +// +// Copyright (c) 2007 +// Riverbank Computing Limited <[email protected]> +// +// This file is part of PyTQt. +// +// This copy of PyTQt is free software; you can redistribute it and/or modify it +// under the terms of the GNU General Public License as published by the Free +// Software Foundation; either version 2, or (at your option) any later +// version. +// +// PyTQt is supplied 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. See the GNU General Public License for more +// details. +// +// You should have received a copy of the GNU General Public License along with +// PyTQt; see the file LICENSE. If not, write to the Free Software Foundation, +// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + +%ExportedDoc +<Sect2><Title>TQSocket (TQt v2.2+)</Title> +<FuncSynopsis> + <FuncDef>TQ_LONG <Function>readBlock</Function></FuncDef> + <ParamDef>char *<Parameter>data</Parameter></ParamDef> + <ParamDef>TQ_ULONG <Parameter>len</Parameter></ParamDef> +</FuncSynopsis> +<Para> +This takes a single <Literal>len</Literal> parameter. The +<Literal>data</Literal> is returned if there was no error, otherwise +<Literal>Py_None</Literal> is returned. +</Para> + +<FuncSynopsis> + <FuncDef>TQ_LONG <Function>readLine</Function></FuncDef> + <ParamDef>char *<Parameter>data</Parameter></ParamDef> + <ParamDef>TQ_ULONG <Parameter>maxlen</Parameter></ParamDef> +</FuncSynopsis> +<Para> +This takes a single <Literal>maxlen</Literal> parameter. The +<Literal>data</Literal> is returned if there was no error, otherwise +<Literal>Py_None</Literal> is returned. +</Para> + +<FuncSynopsis> + <FuncDef>TQ_LONG <Function>writeBlock</Function></FuncDef> + <ParamDef>const char *<Parameter>data</Parameter></ParamDef> + <ParamDef>TQ_ULONG <Parameter>len</Parameter></ParamDef> +</FuncSynopsis> +<Para> +<Literal>len</Literal> is derived from <Literal>data</Literal> and not passed +as a parameter. +</Para> +</Sect2> +%End + + +class TQSocket : TQObject, TQIODevice +{ +%TypeHeaderCode +#include <tqsocket.h> +%End + +public: + enum Error { + ErrConnectionRefused, + ErrHostNotFound, + ErrSocketRead + }; + + TQSocket(TQObject * /TransferThis/ = 0,const char * = 0); + + enum State { + Idle, + HostLookup, + Connecting, + Connected, + Closing, + Connection + }; + +%ConvertToSubClassCode + static struct class_graph { + const char *name; + sipWrapperType **type; + int yes, no; + } graph[] = { + {sipName_TQServerSocket, &sipClass_TQServerSocket, -1, 1}, + {sipName_TQSocket, &sipClass_TQSocket, -1, 2}, + {sipName_TQFtp, &sipClass_TQFtp, -1, 3}, + {sipName_TQLocalFs, &sipClass_TQLocalFs, -1, 4}, + {sipName_TQHttp, &sipClass_TQHttp, -1, 5}, + {sipName_TQDns, &sipClass_TQDns, -1, -1}, + }; + + int i = 0; + + sipClass = NULL; + + do + { + struct class_graph *cg = &graph[i]; + + if (cg->name != NULL && sipCpp->inherits(cg->name)) + { + sipClass = *cg->type; + i = cg->yes; + } + else + i = cg->no; + } + while (i >= 0); +%End + + State state() const; + + int socket() const; + virtual void setSocket(int); + + TQSocketDevice *socketDevice(); + virtual void setSocketDevice(TQSocketDevice *); + +%If (TQt_DNS) + virtual void connectToHost(const TQString &,TQ_UINT16) /ReleaseGIL/; +%End + TQString peerName() const; + + bool open(int) /ReleaseGIL/; + void close() /ReleaseGIL/; + void flush() /ReleaseGIL/; + Offset size() const; + Offset at() const; + bool at(Offset); + bool atEnd() const; + + TQ_ULONG bytesAvailable() const; + TQ_ULONG waitForMore(int) const /ReleaseGIL/; + //TQ_ULONG waitForMore(int,bool *) const /ReleaseGIL/; + TQ_ULONG bytesToWrite() const; + void clearPendingData(); + + SIP_PYOBJECT readBlock(TQ_ULONG) /ReleaseGIL/ [TQ_LONG (char *,TQ_ULONG)]; +%MethodCode + char *buf; + + if ((buf = (char *)sipMalloc(a0)) == NULL) + sipIsErr = 1; + else + { + TQ_LONG actlen; + + Py_BEGIN_ALLOW_THREADS + actlen = sipSelfWasArg ? sipCpp->TQSocket::readBlock(buf, a0) : sipCpp->readBlock(buf, a0); + Py_END_ALLOW_THREADS + + if (actlen < 0) + { + sipFree((void *)buf); + + Py_INCREF(Py_None); + sipRes = Py_None; + } + else + { + sipRes = PyBytes_FromStringAndSize(buf,actlen); + + sipFree((void *)buf); + + if (sipRes == NULL) + sipIsErr = 1; + } + } +%End + + TQ_LONG writeBlock(const char * /Array/, + TQ_ULONG /ArraySize/) /ReleaseGIL/; + + SIP_PYOBJECT readLine(TQ_ULONG) /ReleaseGIL/ [TQ_LONG (char *,TQ_ULONG)]; +%MethodCode + char *buf; + + if ((buf = (char *)sipMalloc(a0)) == NULL) + sipIsErr = 1; + else + { + TQ_LONG actlen; + + Py_BEGIN_ALLOW_THREADS + actlen = sipCpp -> readLine(buf,a0); + Py_END_ALLOW_THREADS + + if (actlen < 0) + { + sipFree((void *)buf); + + Py_INCREF(Py_None); + sipRes = Py_None; + } + else + { + sipRes = PyBytes_FromStringAndSize(buf,actlen); + + sipFree((void *)buf); + + if (sipRes == NULL) + sipIsErr = 1; + } + } +%End + + int getch() /ReleaseGIL/; + int putch(int) /ReleaseGIL/; + int ungetch(int); + + bool canReadLine() const; + virtual TQString readLine() /ReleaseGIL/; + + TQ_UINT16 port() const; + TQ_UINT16 peerPort() const; + TQHostAddress address() const; + TQHostAddress peerAddress() const; + + void setReadBufferSize(TQ_ULONG); + TQ_ULONG readBufferSize() const; + +signals: + void hostFound(); + void connected(); + void connectionClosed(); + void delayedCloseFinished(); + void readyRead(); + void bytesWritten(int); + void error(int); + +protected: + +private: + TQSocket(const TQSocket &); +}; |