4 * Header file for the part of the TclCurl extension that deals with libcurl's
7 * Copyright (c) 2002-2009 Andres Garcia Garcia.
9 * See the file "license.terms" for information on usage and redistribution
10 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
22 struct easyHandleList {
25 struct easyHandleList *next;
28 struct curlMultiObjData {
32 struct easyHandleList *handleListFirst;
33 struct easyHandleList *handleListLast;
43 struct Tcl_Event *nextPtr;
44 struct curlMultiObjData *curlMultiData;
47 CONST static char *multiCommandTable[] = {
59 CONST static char *multiConfigTable[] = {
60 "-pipelining", "-maxconnects",
64 char *curlCreateMultiObjCmd (Tcl_Interp *interp,struct curlMultiObjData *curlMultiData);
66 int Tclcurl_MultiInit (Tcl_Interp *interp);
68 int curlMultiDeleteCmd(ClientData clientData);
70 int curlInitMultiObjCmd (ClientData clientData, Tcl_Interp *interp,
71 int objc,Tcl_Obj *CONST objv[]);
73 int curlMultiObjCmd (ClientData clientData, Tcl_Interp *interp,
74 int objc,Tcl_Obj *CONST objv[]);
76 CURLMcode curlAddMultiHandle(Tcl_Interp *interp,CURLM *curlMultiHandle
79 CURLMcode curlRemoveMultiHandle(Tcl_Interp *interp,CURLM *curlMultiHandle
82 int curlMultiPerform(Tcl_Interp *interp,CURLM *curlMultiHandle);
84 int curlMultiGetInfo(Tcl_Interp *interp,CURLM *curlMultiHandlePtr);
86 int curlMultiGetActiveTransfers( struct curlMultiObjData *curlMultiData);
87 int curlMultiActiveTransfers(Tcl_Interp *interp, struct curlMultiObjData *curlMultiData);
89 struct curlObjData *curlGetEasyHandle(Tcl_Interp *interp,Tcl_Obj *nameObjPtr);
91 void curlMultiFreeSpace(struct curlMultiObjData *curlMultiData);
93 int curlReturnCURLMcode(Tcl_Interp *interp,CURLMcode errorCode);
95 void curlEasyHandleListAdd(struct curlMultiObjData *multiDataPtr,CURL *easyHandle,char *name);
96 void curlEasyHandleListRemove(struct curlMultiObjData *multiDataPtr,CURL *easyHandle);
97 char *curlGetEasyName(struct curlMultiObjData *multiDataPtr,CURL *easyHandle);
99 int curlMultiAutoTransfer(Tcl_Interp *interp, struct curlMultiObjData *curlMultiData, int objc,Tcl_Obj *CONST objv[]);
100 int curlMultiSetOpts(Tcl_Interp *interp, struct curlMultiObjData *curlMultiData,Tcl_Obj *CONST objv,int tableIndex);
101 int SetMultiOptLong(Tcl_Interp *interp,CURLM *curlMultiHandle,CURLMoption opt,
102 int tableIndex,Tcl_Obj *tclObj);
104 int curlMultiConfigTransfer(Tcl_Interp *interp, struct curlMultiObjData *curlMultiData, int objc,Tcl_Obj *CONST objv[]);
106 void curlEventSetup(ClientData clientData, int flags);
108 void curlEventCheck(ClientData clientData, int flags);
110 int curlEventProc(Tcl_Event *evPtr,int flags);