2 // Copyright (C) 2011 Suguru Kawamoto
\r
8 #include "iowrapper.h"
\r
9 #include "dllinterface.h"
\r
11 __declspec(dllexport) SFTPSTATUS* SFTP_Create()
\r
14 if(p = FindSFTPStatus(0))
\r
16 p->ThreadId = GetCurrentThreadId();
\r
18 SFTP_InitializeIOBuffer(&p->InBuffer, 65536);
\r
19 SFTP_InitializeIOBuffer(&p->OutBuffer, 65536);
\r
20 SFTP_InitializeIOBuffer(&p->DataInBuffer, 1048576);
\r
21 SFTP_InitializeIOBuffer(&p->DataOutBuffer, 1048576);
\r
22 memset(&p->FilePosition, 0, sizeof(LARGE_INTEGER));
\r
23 CreateThread(NULL, 0, SFTP_ThreadProc, NULL, 0, &p->ThreadId);
\r
28 __declspec(dllexport) void SFTP_Destroy(SFTPSTATUS* pSFTP)
\r
32 SFTP_UninitializeIOBuffer(&pSFTP->InBuffer);
\r
33 SFTP_UninitializeIOBuffer(&pSFTP->OutBuffer);
\r
34 SFTP_UninitializeIOBuffer(&pSFTP->DataInBuffer);
\r
35 SFTP_UninitializeIOBuffer(&pSFTP->DataOutBuffer);
\r
36 pSFTP->ThreadId = 0;
\r
40 __declspec(dllexport) BOOL SFTP_IsExited(SFTPSTATUS* pSFTP)
\r
42 return pSFTP->bExit;
\r
45 __declspec(dllexport) BOOL SFTP_SetTimeoutCallback(SFTPSTATUS* pSFTP, LPSFTPTIMEOUTCALLBACK pCallback)
\r
47 pSFTP->pCallback = pCallback;
\r
48 pSFTP->InBuffer.pCallback = pCallback;
\r
49 pSFTP->OutBuffer.pCallback = pCallback;
\r
50 pSFTP->DataInBuffer.pCallback = pCallback;
\r
51 pSFTP->DataOutBuffer.pCallback = pCallback;
\r
55 __declspec(dllexport) size_t SFTP_PeekStdOut(SFTPSTATUS* pSFTP, void* pData, size_t Size)
\r
57 return SFTP_PeekIOBuffer(&pSFTP->OutBuffer, pData, Size);
\r
60 __declspec(dllexport) size_t SFTP_ReadStdOut(SFTPSTATUS* pSFTP, void* pData, size_t Size)
\r
62 return SFTP_ReadIOBuffer(&pSFTP->OutBuffer, pData, Size);
\r
65 __declspec(dllexport) size_t SFTP_WriteStdIn(SFTPSTATUS* pSFTP, const void* pData, size_t Size)
\r
67 return SFTP_WriteIOBuffer(&pSFTP->InBuffer, pData, Size);
\r
70 __declspec(dllexport) size_t SFTP_PeekDataOut(SFTPSTATUS* pSFTP, void* pData, size_t Size)
\r
72 return SFTP_PeekIOBuffer(&pSFTP->DataOutBuffer, pData, Size);
\r
75 __declspec(dllexport) size_t SFTP_ReadDataOut(SFTPSTATUS* pSFTP, void* pData, size_t Size)
\r
77 return SFTP_ReadIOBuffer(&pSFTP->DataOutBuffer, pData, Size);
\r
80 __declspec(dllexport) size_t SFTP_WriteDataIn(SFTPSTATUS* pSFTP, const void* pData, size_t Size)
\r
82 return SFTP_WriteIOBuffer(&pSFTP->DataInBuffer, pData, Size);
\r
85 __declspec(dllexport) BOOL SFTP_SetFilePosition(SFTPSTATUS* pSFTP, LONGLONG Position)
\r
87 pSFTP->FilePosition.QuadPart = Position;
\r