// This is the SIP interface definition for TQSocket. // // Copyright (c) 2007 // Riverbank Computing Limited // // 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 TQSocket (TQt v2.2+) TQ_LONG readBlock char *data TQ_ULONG len This takes a single len parameter. The data is returned if there was no error, otherwise Py_None is returned. TQ_LONG readLine char *data TQ_ULONG maxlen This takes a single maxlen parameter. The data is returned if there was no error, otherwise Py_None is returned. TQ_LONG writeBlock const char *data TQ_ULONG len len is derived from data and not passed as a parameter. %End %If (TQt_2_2_0 -) class TQSocket : TQObject, TQIODevice { %TypeHeaderCode #include %End public: enum Error { ErrConnectionRefused, ErrHostNotFound, ErrSocketRead }; TQSocket(TQObject * /TransferThis/ = 0,const char * = 0); enum State { Idle, HostLookup, Connecting, %If (TQt_3_0_0 -) Connected, %End %If (- TQt_3_0_0) Listening, %End 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}, #if TQT_VERSION >= 0x030000 {sipName_TQHttp, &sipClass_TQHttp, -1, 5}, #else {NULL, NULL, -1, 5}, #endif {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); %If (TQt_3_0_0 -) TQSocketDevice *socketDevice(); virtual void setSocketDevice(TQSocketDevice *); %End %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/; %If (TQt_3_0_0 -) Offset size() const; Offset at() const; bool at(Offset); %End %If (- TQt_3_0_0) uint size() const; int at() const; bool at(int); %End bool atEnd() const; %If (TQt_3_0_0 -) TQ_ULONG bytesAvailable() const; TQ_ULONG waitForMore(int) const /ReleaseGIL/; //TQ_ULONG waitForMore(int,bool *) const /ReleaseGIL/; TQ_ULONG bytesToWrite() const; %End %If (- TQt_3_0_0) int bytesAvailable() const; int waitForMore(int) const /ReleaseGIL/; int bytesToWrite() const; %End %If (TQt_3_1_0 -) void clearPendingData(); %End %If (- TQt_3_0_0) SIP_PYOBJECT readBlock(uint) /ReleaseGIL/ [int (char *,uint)]; %MethodCode char *buf; if ((buf = (char *)sipMalloc(a0)) == NULL) sipIsErr = 1; else { int 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 = SIPBytes_FromStringAndSize(buf,actlen); sipFree((void *)buf); if (sipRes == NULL) sipIsErr = 1; } } %End int writeBlock(const char * /Array/,uint /ArraySize/) /ReleaseGIL/; SIP_PYOBJECT readLine(uint) /ReleaseGIL/ [int (char *,uint)]; %MethodCode char *buf; if ((buf = (char *)sipMalloc(a0)) == NULL) sipIsErr = 1; else { int 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 = SIPBytes_FromStringAndSize(buf,actlen); sipFree((void *)buf); if (sipRes == NULL) sipIsErr = 1; } } %End %End %If (TQt_3_0_0 -) 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 = SIPBytes_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 = SIPBytes_FromStringAndSize(buf,actlen); sipFree((void *)buf); if (sipRes == NULL) sipIsErr = 1; } } %End %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; %If (TQt_3_2_0 -) void setReadBufferSize(TQ_ULONG); TQ_ULONG readBufferSize() const; %End signals: void hostFound(); void connected(); void connectionClosed(); void delayedCloseFinished(); void readyRead(); void bytesWritten(int); void error(int); protected: %If (- TQt_3_0_0) TQSocketDevice *socketDevice(); %End private: TQSocket(const TQSocket &); }; %End