Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

652 lines
14 KiB

/* xfr_dsp.c -- Transfer display functions
*
* Copyright 1990 by Hilgraeve Inc. -- Monroe, MI
* All rights reserved
*
* $Revision: 4 $
* $Date: 7/11/02 11:13a $
*/
#include <windows.h>
#pragma hdrstop
#define BYTE char
#include <tdll\stdtyp.h>
#include <tdll\session.h>
#include <tdll\xfdspdlg.h>
#include <tdll\xfer_msc.hh>
#include <tdll\htchar.h>
#include <tdll\assert.h>
#include "xfr_dsp.h"
#include "xfr_srvc.h"
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
* FUNCTION:
* xferMsgProgress
*
* DESCRIPTION:
* This function is called by the transfer routines to update various parts
* of the transfer display.
*
* PARAMETERS:
* hSession -- the session handle
* stime -- elapsed time (maybe)
* ttime -- remaining time (maybe)
* cps -- speed of transfer
* file_so_far -- what it says
* total_so_far -- what it says
*
* RETURNS:
* Nothing.
*/
void xferMsgProgress(HSESSION hSession,
long stime,
long ttime,
long cps,
long file_so_far,
long total_so_far)
{
XD_TYPE *pX;
pX = (XD_TYPE *)sessQueryXferHdl(hSession);
if (pX)
{
if (stime != -1)
{
pX->lElapsedTime = stime;
pX->bElapsedTime = 1;
}
if (ttime != -1)
{
pX->lRemainingTime = ttime;
pX->bRemainingTime = 1;
}
if (cps != -1)
{
pX->lThroughput = cps;
pX->bThroughput = 1;
}
if (file_so_far != -1)
{
pX->lFileSoFar = file_so_far;
pX->bFileSoFar = 1;
}
if (total_so_far != -1)
{
pX->lTotalSoFar = total_so_far;
pX->bTotalSoFar = 1;
}
if (IsWindow(pX->hwndXfrDisplay))
{
PostMessage(pX->hwndXfrDisplay,
WM_DLG_TO_DISPLAY,
XFR_UPDATE_DLG, 0);
}
xfer_idle(hSession, XFER_IDLE_DISPLAY);
}
}
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
* FUNCTION:
* xferMsgNewfile
*
* DESCRIPTION:
* This function is called by the transfer routines to update various parts
* of the transfer display.
*
* PARAMETERS:
* hSession -- the session handle
* filen -- the file number
* theirname -- an ASCII copy of their name (TODO: convert to UNICODE)
* ourname -- a copy of the filename as we used it
*
* RETURNS:
* Nothing.
*/
void xferMsgNewfile(HSESSION hSession,
int filen,
BYTE *theirname,
TCHAR *ourname)
{
XD_TYPE *pX;
pX = (XD_TYPE *)sessQueryXferHdl(hSession);
assert(pX);
if (pX)
{
pX->wFileCnt = (WORD)filen;
pX->bFileCnt = 1;
if (theirname != NULL)
{
StrCharCopyN(pX->acTheirName, theirname, XFER_NAME_LENGTH);
pX->bTheirName = 1;
}
//assert(pX->bTheirName == 1);
if (ourname != NULL)
{
StrCharCopyN(pX->acOurName, ourname, XFER_NAME_LENGTH);
pX->bOurName = 1;
}
if (IsWindow(pX->hwndXfrDisplay))
{
PostMessage(pX->hwndXfrDisplay,
WM_DLG_TO_DISPLAY,
XFR_UPDATE_DLG, 0);
}
xfer_idle(hSession, XFER_IDLE_DISPLAY);
}
}
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
* FUNCTION:
* xferMsgFilesize
*
* DESCRIPTION:
* This function is called by the transfer routines to update various parts
* of the transfer display.
*
* PARAMETERS:
* hSession -- the session handle
* fsize -- the size of the current file
*
* RETURNS:
* Nothing.
*/
void xferMsgFilesize(HSESSION hSession, long fsize)
{
XD_TYPE *pX;
pX = (XD_TYPE *)sessQueryXferHdl(hSession);
if (pX)
{
pX->lFileSize = (LONG)fsize;
pX->bFileSize = 1;
pX->lFileSoFar = 0;
pX->bFileSoFar = 1;
if (IsWindow(pX->hwndXfrDisplay))
{
PostMessage(pX->hwndXfrDisplay,
WM_DLG_TO_DISPLAY,
XFR_UPDATE_DLG, 0);
}
xfer_idle(hSession, XFER_IDLE_DISPLAY);
}
}
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
* FUNCTION:
* xferMsgStatus
*
* DESCRIPTION:
* This function is called by the transfer routines to update various parts
* of the transfer display.
*
* PARAMETERS:
* hSession -- the session handle
* status -- a protocol specific status code
*
* RETURNS:
* Nothing.
*/
void xferMsgStatus(HSESSION hSession, int status)
{
XD_TYPE *pX;
pX = (XD_TYPE *)sessQueryXferHdl(hSession);
if (pX)
{
pX->wStatus = (WORD)status;
pX->bStatus = 1;
if (IsWindow(pX->hwndXfrDisplay))
{
PostMessage(pX->hwndXfrDisplay,
WM_DLG_TO_DISPLAY,
XFR_UPDATE_DLG, 0);
}
xfer_idle(hSession, XFER_IDLE_DISPLAY);
}
}
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
* FUNCTION:
* xferMsgEvent
*
* DESCRIPTION:
* This function is called by the transfer routines to update various parts
* of the transfer display.
*
* PARAMETERS:
* hSession -- the session handle
* event -- a protocol specific event code
*
* RETURNS:
* Nothing.
*/
void xferMsgEvent(HSESSION hSession, int event)
{
XD_TYPE *pX;
pX = (XD_TYPE *)sessQueryXferHdl(hSession);
if (pX)
{
pX->wEvent = (WORD)event;
pX->bEvent = 1;
if (IsWindow(pX->hwndXfrDisplay))
{
PostMessage(pX->hwndXfrDisplay,
WM_DLG_TO_DISPLAY,
XFR_UPDATE_DLG, 0);
}
xfer_idle(hSession, XFER_IDLE_DISPLAY);
}
}
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
* FUNCTION:
* xferMsgErrorcnt
*
* DESCRIPTION:
* This function is called by the transfer routines to update various parts
* of the transfer display.
*
* PARAMETERS:
* hSession -- the session handle
* cnt -- the new number of errors to display
*
* RETURNS:
* Nothing.
*/
void xferMsgErrorcnt(HSESSION hSession, int cnt)
{
XD_TYPE *pX;
pX = (XD_TYPE *)sessQueryXferHdl(hSession);
if (pX)
{
pX->wErrorCnt = (WORD)cnt;
pX->bErrorCnt = 1;
if (IsWindow(pX->hwndXfrDisplay))
{
PostMessage(pX->hwndXfrDisplay,
WM_DLG_TO_DISPLAY,
XFR_UPDATE_DLG, 0);
}
xfer_idle(hSession, XFER_IDLE_DISPLAY);
}
}
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
* FUNCTION:
* xferMsgFilecnt
*
* DESCRIPTION:
* This function is called by the transfer routines to update various parts
* of the transfer display.
*
* PARAMETERS:
* hSession -- the session handle
* cnt -- the total number of files in the transfer
*
* RETURNS:
* Nothing.
*/
void xferMsgFilecnt(HSESSION hSession, int cnt)
{
XD_TYPE *pX;
pX = (XD_TYPE *)sessQueryXferHdl(hSession);
if (pX)
{
pX->wTotalCnt = (WORD)cnt;
pX->bTotalCnt = 1;
if (IsWindow(pX->hwndXfrDisplay))
{
PostMessage(pX->hwndXfrDisplay,
WM_DLG_TO_DISPLAY,
XFR_UPDATE_DLG, 0);
}
xfer_idle(hSession, XFER_IDLE_DISPLAY);
}
}
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
* FUNCTION:
* xferMsgTotalsize
*
* DESCRIPTION:
* This function is called by the transfer routines to update various parts
* of the transfer display.
*
* PARAMETERS:
* hSession -- the session handle
* bytes -- the total size of all the files in the transfer operation
*
* RETURNS:
* Nothing.
*/
void xferMsgTotalsize(HSESSION hSession, long bytes)
{
XD_TYPE *pX;
pX = (XD_TYPE *)sessQueryXferHdl(hSession);
if (pX)
{
pX->lTotalSize = (LONG)bytes;
pX->bTotalSize = 1;
if (IsWindow(pX->hwndXfrDisplay))
{
PostMessage(pX->hwndXfrDisplay,
WM_DLG_TO_DISPLAY,
XFR_UPDATE_DLG, 0);
}
xfer_idle(hSession, XFER_IDLE_DISPLAY);
}
}
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
* FUNCTION:
* xferMsgClose
*
* DESCRIPTION:
* This function is called by the transfer routines to update various parts
* of the transfer display. This function is actually called to indicate
* that a transfer is finished.
*
* PARAMETERS:
* hSession -- the session handle
*
* RETURNS:
* Nothing.
*/
void xferMsgClose(HSESSION hSession)
{
XD_TYPE *pX;
pX = (XD_TYPE *)sessQueryXferHdl(hSession);
if (pX)
{
pX->nClose = TRUE;
if (IsWindow(pX->hwndXfrDisplay))
{
PostMessage(pX->hwndXfrDisplay,
WM_DLG_TO_DISPLAY,
XFR_UPDATE_DLG, 0);
}
xfer_idle(hSession, XFER_IDLE_DISPLAY);
}
}
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
* FUNCTION:
* xferMsgChecktype
*
* DESCRIPTION:
* This function is called by the transfer routines to update various parts
* of the transfer display.
*
* PARAMETERS:
* hSession -- the session handle
* ctype -- indicates the current checksum type
*
* RETURNS:
* Nothing.
*/
void xferMsgChecktype(HSESSION hSession, int ctype)
{
XD_TYPE *pX;
pX = (XD_TYPE *)sessQueryXferHdl(hSession);
if (pX)
{
pX->wChecktype = (WORD)ctype;
pX->bChecktype = 1;
if (IsWindow(pX->hwndXfrDisplay))
{
PostMessage(pX->hwndXfrDisplay,
WM_DLG_TO_DISPLAY,
XFR_UPDATE_DLG, 0);
}
xfer_idle(hSession, XFER_IDLE_DISPLAY);
}
}
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
* FUNCTION:
* xferMsgPacketnumber
*
* DESCRIPTION:
* This function is called by the transfer routines to update various parts
* of the transfer display.
*
* PARAMETERS:
* hSession -- the session handle
* number -- the current packet number
*
* RETURNS:
* Nothing.
*/
void xferMsgPacketnumber(HSESSION hSession, long number)
{
XD_TYPE *pX;
pX = (XD_TYPE *)sessQueryXferHdl(hSession);
if (pX)
{
pX->lPacketNumber = number;
pX->bPacketNumber = 1;
if (IsWindow(pX->hwndXfrDisplay))
{
PostMessage(pX->hwndXfrDisplay,
WM_DLG_TO_DISPLAY,
XFR_UPDATE_DLG, 0);
}
xfer_idle(hSession, XFER_IDLE_DISPLAY);
}
}
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
* FUNCTION:
* xfrMsgLasterror
*
* DESCRIPTION:
* This function is called by the transfer routines to update various parts
* of the transfer display.
*
* PARAMETERS:
* hSession -- the session handle
* event -- indicates the last error type for a specific protocol
*
* RETURNS:
* Nothing.
*/
void xferMsgLasterror(HSESSION hSession, int event)
{
XD_TYPE *pX;
pX = (XD_TYPE *)sessQueryXferHdl(hSession);
if (pX)
{
pX->wLastErrtype = (WORD)event;
pX->bLastErrtype = 1;
if (IsWindow(pX->hwndXfrDisplay))
{
PostMessage(pX->hwndXfrDisplay,
WM_DLG_TO_DISPLAY,
XFR_UPDATE_DLG, 0);
}
xfer_idle(hSession, XFER_IDLE_DISPLAY);
}
}
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
* FUNCTION:
* xferMsgPacketErrcnt
*
* DESCRIPTION:
* This function is called by the transfer routines to update various parts
* of the transfer display.
*
* PARAMETERS:
* hSession -- the session handle
* ecount -- indicates the number of errors in the current packet
*
* RETURNS:
* Nothing.
*/
void xferMsgPacketErrcnt(HSESSION hSession, int ecount)
{
XD_TYPE *pX;
pX = (XD_TYPE *)sessQueryXferHdl(hSession);
if (pX)
{
pX->wPcktErrCnt = (WORD)ecount;
pX->bPcktErrCnt = 1;
if (IsWindow(pX->hwndXfrDisplay))
{
PostMessage(pX->hwndXfrDisplay,
WM_DLG_TO_DISPLAY,
XFR_UPDATE_DLG, 0);
}
xfer_idle(hSession, XFER_IDLE_DISPLAY);
}
}
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
* FUNCTION:
* xferMsgProtocol
*
* DESCRIPTION:
* This function is called by the transfer routines to update various parts
* of the transfer display.
*
* PARAMETERS:
* hSession -- the session handle
* nProtocol -- which CSB protocol is being used
*
* RETURNS:
* Nothing.
*/
void xferMsgProtocol(HSESSION hSession, int nProtocol)
{
XD_TYPE *pX;
pX = (XD_TYPE *)sessQueryXferHdl(hSession);
if (pX)
{
switch (nProtocol)
{
default:
pX->uProtocol = 0;
break;
case 0:
pX->uProtocol = 1;
break;
case 1:
pX->uProtocol = 2;
break;
}
pX->bProtocol = 1;
if (IsWindow(pX->hwndXfrDisplay))
{
PostMessage(pX->hwndXfrDisplay,
WM_DLG_TO_DISPLAY,
XFR_UPDATE_DLG, 0);
}
xfer_idle(hSession, XFER_IDLE_DISPLAY);
}
}
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
* FUNCTION:
* xferMsgMessage
*
* DESCRIPTION:
* This function is called by the transfer routines to update various parts
* of the transfer display.
*
* PARAMETERS:
* hSession -- the session handle
* pszMsg -- pointer to the CSP ASCII message string (TODO: convert)
*
* RETURNS:
* Nothing.
*/
void xferMsgMessage(HSESSION hSession, BYTE *pszMsg)
{
XD_TYPE *pX;
pX = (XD_TYPE *)sessQueryXferHdl(hSession);
if (pX)
{
// _fmemset(pW->acMessage, 0, sizeof(pW->acMessage));
// _fstrncpy(pW->acMessage, pszMsg, sizeof(pW->acMessage) - 1);
StrCharCopyN(pX->acMessage, pszMsg, XFER_MESSAGE_LENGTH);
pX->bMessage = 1;
if (IsWindow(pX->hwndXfrDisplay))
{
PostMessage(pX->hwndXfrDisplay,
WM_DLG_TO_DISPLAY,
XFR_UPDATE_DLG, 0);
}
xfer_idle(hSession, XFER_IDLE_DISPLAY);
}
}
#if FALSE
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
* FUNCTION:
*
* DESCRIPTION:
* This function is called by the transfer routines to update various parts
* of the transfer display.
*
* PARAMETERS:
* hSession -- the session handle
*
* RETURNS:
* Nothing.
*/
void xferMsg(HSESSION hSession)
{
XD_TYPE *pX;
pX = (XD_TYPE *)sessQueryXferHdl(hSession);
if (pX)
{
if (IsWindow(pX->hwndXfrDisplay))
{
PostMessage(pX->hwndXfrDisplay,
WM_DLG_TO_DISPLAY,
XFR_UPDATE_DLG, 0);
}
xfer_idle(hSession, XFER_IDLE_DISPLAY);
}
}
#endif