home *** CD-ROM | disk | FTP | other *** search
/ The Net: Ultimate Internet Guide / WWLCD1.ISO / pc / workshop / prog / msconf / confsdk.exe / RTNS.C < prev    next >
Encoding:
C/C++ Source or Header  |  1996-05-23  |  7.0 KB  |  279 lines

  1. /* ----------------------------------------------------------------------
  2.  
  3.     CNFTEST sample for Microsoft ActiveX Conferencing
  4.  
  5.     Unpublished work.
  6.     Copyright (c) 1996, Microsoft Corporation
  7.     All rights reserved.
  8.  
  9.     rtns.c
  10.  
  11.     General utility routines, specific to this application
  12.  
  13.   ---------------------------------------------------------------------- */
  14.  
  15. #include "main.h"
  16.  
  17.  
  18. /*  D W  I P  A D D R  F R O M  S Z */
  19. /*----------------------------------------------------------------------------
  20.     %%Function: DwIpAddrFromSz
  21.  
  22. ----------------------------------------------------------------------------*/
  23. DWORD DwIpAddrFromSz(LPSTR lpsz)
  24. {
  25.     // REVIEW: there must be a better way...
  26.  
  27.     DWORD dwAddr = 0;
  28.     DWORD iTemp;
  29.     unsigned short ch;
  30.     int i;
  31.  
  32.     if (FEmptySz(lpsz))
  33.         return 0;
  34.  
  35.     for (i = 0; i < 4; i++)
  36.     {
  37.         iTemp = 0;
  38.         for ( ; ;)
  39.         {
  40.             ch = *lpsz++;
  41.             if (('.' == ch) || ('\0' == ch))
  42.                 break;
  43.             if (ch > '9')
  44.                 break;
  45.             iTemp = (iTemp*10) + ch - '0';
  46.             
  47.         }
  48.         dwAddr = (dwAddr << 8) | iTemp;
  49.  
  50.         if ('\0' == ch)
  51.             break;
  52.     }
  53.  
  54.     return dwAddr;
  55. }
  56.  
  57.  
  58. /*  D U M P  A D D R */
  59. /*----------------------------------------------------------------------------
  60.     %%Function: DumpAddr
  61.  
  62. ----------------------------------------------------------------------------*/
  63. VOID DumpAddr(LPCONFADDR lpConfAddr)
  64. {
  65.     if (NULL == lpConfAddr)
  66.     {
  67.         Log(LOG_ALWAYS, "  Addr:<no address data>");
  68.         return;
  69.     }
  70.     Assert(sizeof(CONFADDR) == lpConfAddr->dwSize);
  71.  
  72.     switch (lpConfAddr->dwAddrType)
  73.         {
  74.     case CONF_ADDR_UNKNOWN:
  75.         Log1(LOG_ALWAYS, "  Addr: [%s]", lpConfAddr->psz);
  76.         break;
  77.     case CONF_ADDR_IP:
  78.     {
  79.         DWORD dw = lpConfAddr->dwIp;
  80.         Log4(LOG_ALWAYS, "  IP Addr: %d.%d.%d.%d",
  81.             HIBYTE(HIWORD(dw)), LOBYTE(HIWORD(dw)), 
  82.             HIBYTE(LOWORD(dw)), LOBYTE(LOWORD(dw)) );
  83.         break;
  84.     }
  85.     case CONF_ADDR_MACHINENAME:
  86.         Log1(LOG_ALWAYS, "  Addr: (LAN)[%s]", lpConfAddr->psz);
  87.         break;
  88.     case CONF_ADDR_PSTN:
  89.         Log1(LOG_ALWAYS, "  Addr: (PSTN)[%s]", lpConfAddr->psz);
  90.         break;
  91.     default:
  92.         Log1(LOG_ALWAYS, "  Addr type unknown (%d)", lpConfAddr->dwAddrType);
  93.         break;
  94.         }
  95. }
  96.  
  97.  
  98. /*  D U M P  C O N F  I N F O */
  99. /*----------------------------------------------------------------------------
  100.     %%Function: DumpConfInfo
  101.  
  102. ----------------------------------------------------------------------------*/
  103. VOID DumpConfInfo(LPCONFINFO lpConfInfo)
  104. {
  105.     int  cch;
  106.     CHAR sz[cbMaxSz];
  107.  
  108.     if (NULL == lpConfInfo)
  109.     {
  110.         Log(LOG_ALWAYS, "<no conference data>");
  111.         return;
  112.     }
  113.     Assert(sizeof(CONFINFO) == lpConfInfo->dwSize);
  114.  
  115.     Log2(LOG_ALWAYS, "ConfInfo [%s]  %d bytes",
  116.         lpConfInfo->szConferenceName, lpConfInfo->dwSize);
  117.     Log1(LOG_ALWAYS, "  Users: %d", lpConfInfo->cUsers);
  118.     Log1(LOG_ALWAYS, "  HConf: %08X", lpConfInfo->hConf);
  119.     Log1(LOG_ALWAYS, "  GCCID: %08X", lpConfInfo->dwGCCID);
  120.  
  121.     // determine media type
  122.     SetEmptySz(sz);
  123.     if (lpConfInfo->dwMediaType & CONF_MT_DATA)
  124.         lstrcat(sz, "Data+");
  125.     if (lpConfInfo->dwMediaType & CONF_MT_AUDIO)
  126.         lstrcat(sz, "Audio+");
  127.     if (lpConfInfo->dwMediaType & CONF_MT_VIDEO)
  128.         lstrcat(sz, "Video+");
  129.  
  130.     cch = CchSz(sz);
  131.     if (0 == cch)
  132.         lstrcpy(sz, "<none>");
  133.     else
  134.         sz[cch-1] = '\0';
  135.  
  136.     Log1(LOG_ALWAYS, "  Media: %s", sz);
  137. }
  138.  
  139.  
  140. /*  D U M P  U S E R  I N F O */
  141. /*----------------------------------------------------------------------------
  142.     %%Function: DumpUserInfo
  143.  
  144. ----------------------------------------------------------------------------*/
  145. VOID DumpUserInfo(LPCONFUSERINFO lpUserInfo)
  146. {
  147.     if (NULL == lpUserInfo)
  148.     {
  149.         Log(LOG_ALWAYS, "<no user data>");
  150.         return;
  151.     }
  152.     Assert(sizeof(CONFUSERINFO) == lpUserInfo->dwSize);
  153.  
  154.     Log2(LOG_ALWAYS, "UserInfo [%s]  %d bytes",
  155.         lpUserInfo->szUserName, lpUserInfo->dwSize);
  156.     Log2(LOG_ALWAYS, "  dwUserId=%08X (%d)",
  157.         lpUserInfo->dwUserId, lpUserInfo->dwUserId);
  158. //    DumpAddr(&(lpUserInfo->ConfAddr));
  159. }
  160.  
  161. /*  D U M P  D A T A */
  162. /*----------------------------------------------------------------------------
  163.     %%Function: DumpData
  164.  
  165. ----------------------------------------------------------------------------*/
  166. VOID DumpData(LPVOID lpv, DWORD cb, LPSTR pszPre, LPSTR pszPost)
  167. {
  168.     CHAR sz[101];
  169.  
  170.     if ((NULL == lpv) || (0 == cb))
  171.     {
  172.         Log(LOG_ALWAYS, "<no data>");
  173.         return;
  174.     }
  175.     Assert(!IsBadReadPtr(lpv, cb));
  176.  
  177.     cb = min(cb, (sizeof(sz)-1) / 2);
  178.     DataToHex(lpv, sz, cb);
  179.     Log3(LOG_ALWAYS, "%s%s%s", pszPre, sz, pszPost);
  180. }
  181.  
  182.  
  183. /*  D U M P  F I L E  I N F O */
  184. /*----------------------------------------------------------------------------
  185.     %%Function: DumpFileInfo
  186.  
  187. ----------------------------------------------------------------------------*/
  188. VOID DumpFileInfo(LPCONFFILEINFO lpConfFileInfo)
  189. {
  190.     if (NULL == lpConfFileInfo)
  191.     {
  192.         Log(LOG_ALWAYS, "<no file data>");
  193.         return;
  194.     }
  195.     Assert(sizeof(CONFFILEINFO) == lpConfFileInfo->dwSize);
  196.  
  197.     Log2(LOG_ALWAYS, "ConfFileInfo [%s]  %d bytes",
  198.         lpConfFileInfo->szFileNameSrc, lpConfFileInfo->dwFileSize);
  199. }
  200.  
  201.  
  202.  
  203.  
  204. #define STRING_CASE(val)               case val: pcsz = #val; break
  205.  
  206.  
  207. /*  G E T  C O N F N  S T R I N G */
  208. /*----------------------------------------------------------------------------
  209.     %%Function: GetConfnString
  210.  
  211. ----------------------------------------------------------------------------*/
  212. LPCTSTR GetConfnString(DWORD dwCode)
  213. {
  214.     LPCTSTR pcsz;
  215.     static CHAR sz[cbMaxSz];
  216.  
  217.     switch (dwCode)
  218.         {
  219.     STRING_CASE(CONFN_CONFERENCE_INIT);
  220.     STRING_CASE(CONFN_CONFERENCE_START);
  221.     STRING_CASE(CONFN_CONFERENCE_STOP);
  222.     STRING_CASE(CONFN_CONFERENCE_ERROR);
  223.     STRING_CASE(CONFN_USER_ADDED);
  224.     STRING_CASE(CONFN_USER_REMOVED);
  225.     STRING_CASE(CONFN_PEER_ADDED);
  226.     STRING_CASE(CONFN_PEER_REMOVED);
  227.     STRING_CASE(CONFN_WINDOW_SHARED);
  228.     STRING_CASE(CONFN_WINDOW_UNSHARED);
  229.     STRING_CASE(CONFN_DATA_SENT);
  230.     STRING_CASE(CONFN_DATA_RECEIVED);
  231.     STRING_CASE(CONFN_FILESEND_START);
  232.     STRING_CASE(CONFN_FILESEND_PROGRESS);
  233.     STRING_CASE(CONFN_FILESEND_COMPLETE);
  234.     STRING_CASE(CONFN_FILESEND_ERROR);
  235.     STRING_CASE(CONFN_FILERECEIVE_START);
  236.     STRING_CASE(CONFN_FILERECEIVE_PROGRESS);
  237.     STRING_CASE(CONFN_FILERECEIVE_COMPLETE);
  238.     STRING_CASE(CONFN_FILERECEIVE_ERROR);
  239.     default:
  240.         wsprintf(sz, "CONFN %d (%X)", dwCode);
  241.         pcsz = sz;
  242.         break;
  243.         }
  244.  
  245.     return pcsz;
  246. }
  247.  
  248.  
  249. /*  G E T  C O N F  E R R  S T R I N G */
  250. /*----------------------------------------------------------------------------
  251.     %%Function: GetConferrString
  252.  
  253. ----------------------------------------------------------------------------*/
  254. LPCTSTR GetConferrString(CONFERR dwErr)
  255. {
  256.     LPCTSTR pcsz;
  257.     static CHAR sz[cbMaxSz];
  258.  
  259.     switch (dwErr)
  260.         {
  261.     default:
  262.         wsprintf(sz, "Error %d (0x%08X)", dwErr, dwErr);
  263.         pcsz = sz;
  264.         return 0;
  265.     STRING_CASE(CONFERR_SUCCESS);
  266.     STRING_CASE(CONFERR_ENUM_COMPLETE);
  267.     STRING_CASE(CONFERR_INVALID_PARAMETER);
  268.     STRING_CASE(CONFERR_INVALID_HCONF);
  269.     STRING_CASE(CONFERR_INVALID_BUFFER);
  270.     STRING_CASE(CONFERR_BUFFER_TOO_SMALL);
  271.     STRING_CASE(CONFERR_OUT_OF_MEMORY);
  272.     STRING_CASE(CONFERR_FILE_NOT_FOUND);
  273.     case -1: pcsz = "CONFERR_UNKNOWN"; break;
  274.     case CONFERR_BASE+911: pcsz = "CONFERR_INTERNAL"; break;
  275.     case ERROR_CALL_NOT_IMPLEMENTED: pcsz = "CONFERR_NYI"; break;
  276.         }
  277.     return pcsz;
  278. }
  279.