home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / magazine / progjour / 1991 / 04 / nettools.pas < prev    next >
Pascal/Delphi Source File  |  1991-05-13  |  5KB  |  172 lines

  1. {*****************************************************************************
  2. ** NetTools Unit Version 1.2                                    May 1, 1991 **
  3. ** Copyright 1987,1988,1991 by L. Brett Glass, Systems Consultant           **
  4. ******************************************************************************}
  5.  
  6. unit NetTools;
  7.  
  8. interface
  9.  
  10. uses NetBIOS;
  11.  
  12. const
  13.   wildName : NetName = '*               ';
  14.  
  15. function NetToolsGetMyName(var myName : NetName) : Byte;
  16.  
  17. function NetToolsAddUniqueName(myName : NetName; var nameNum : Byte) : Byte;
  18.   {Try to claim a unique name. Return the number of the name and
  19.    also the return code.}
  20.  
  21. function NetToolsDeleteName(myName : NetName) : Byte;
  22.  
  23. function NetToolsCall(fromName, toName : NetName;
  24.                      rtimeout, stimeout : Byte;
  25.                      var session : Byte) : Byte;
  26.  
  27. function NetToolsStartListen(var listenBlock : NCB;
  28.                              fromName, toName : NetName;
  29.                              rtimeout, stimeout : Byte) : Byte;
  30.  
  31. function NetToolsCheckListen(var listenBlock : NCB;
  32.                              var session : Byte;
  33.                              var caller : NetName) : Byte;
  34.  
  35. procedure NetToolsAbortListen(var listenBlock : NCB);
  36.  
  37. function NetToolsHangUp(session : Byte) : Byte;
  38.  
  39. function NetToolsCancel(var netBlock : NCB) : Byte;
  40.  
  41. implementation
  42.  
  43. function NetToolsGetMyName(var myName : NetName) : Byte;
  44.   var
  45.     netBlock : NCB;
  46.     buf : StatusBuf;
  47.   begin
  48.   with netBlock do
  49.     begin
  50.     Init(ADAPTER_STATUS);
  51.     bufPtr := @buf;
  52.     len := SizeOf(buf);
  53.     callname.name := wildName;
  54.     NetToolsGetMyName := ReturnCode;
  55.     FillChar(myName,SizeOf(myName),0);
  56.     Move(buf.unitID,myName[11],6);
  57.     end;
  58.   end; {NetToolsGetMyName}
  59.  
  60. function NetToolsAddUniqueName(myName : NetName; var nameNum : Byte) : Byte;
  61.   {Try to claim a unique name. Return the number of the name and
  62.    also the return code.}
  63.   var
  64.     addNCB : NCB;
  65.   begin  {NetToolsAddUniqueName}
  66.   with addNCB do
  67.     begin
  68.     Init(ADD_NAME);
  69.     name := myName;
  70.     NetToolsAddUniqueName := ReturnCode;
  71.     nameNum := num
  72.     end
  73.   end; {NetToolsAddUniqueName}
  74.  
  75. function NetToolsDeleteName(myName : NetName) : Byte;
  76.   var
  77.     delNCB : NCB;
  78.   begin  {NetToolsDeleteName}
  79.   with delNCB do
  80.     begin
  81.     Init(DELETE_NAME);
  82.     name := myName;
  83.     NetToolsDeleteName := ReturnCode;
  84.     end
  85.   end; {NetToolsDeleteName}
  86.  
  87.  
  88. function NetToolsCall(fromName, toName : NetName;
  89.                      rtimeout, stimeout : Byte;
  90.                      var session : Byte) : Byte;
  91.   var
  92.     netBlock : NCB;
  93.   begin
  94.   with netBlock do
  95.     begin
  96.     Init(CALL);
  97.     callname.name := toName;
  98.     name := fromName;
  99.     rto := rtimeout;
  100.     sto := stimeout;
  101.     NetToolsCall := ReturnCode;
  102.     session := lsn
  103.     end;
  104.   end; {NetToolsCall}
  105.  
  106. function NetToolsStartListen(var listenBlock : NCB;
  107.                              fromName, toName : NetName;
  108.                              rtimeout, stimeout : Byte) : Byte;
  109.   begin
  110.   with listenBlock do
  111.     begin
  112.     Init(LISTEN_NO_WAIT);
  113.     callname.name := fromName;
  114.     name := toName;
  115.     rto := rtimeout;
  116.     sto := stimeout;
  117.     NetToolsStartListen := ReturnCode;
  118.     end;
  119.   end; {NetToolsStartListen}
  120.  
  121. function NetToolsCheckListen (var listenBlock : NCB;
  122.                              var session : Byte;
  123.                              var caller : NetName) : Byte;
  124.   var
  125.     status : Byte;
  126.   begin
  127.   with listenBlock do
  128.     begin
  129.     status := cmd_cplt; {Make a copy. If we don't, this field may
  130.                          change between assignment and "if"}
  131.     NetToolsCheckListen := status;
  132.     if status = GOOD_RTN then
  133.       begin
  134.       session := lsn;
  135.       caller := callname.name;
  136.       end
  137.     end
  138.   end; {NetToolsCheckListen}
  139.  
  140. procedure NetToolsAbortListen(var listenBlock : NCB);
  141.   begin
  142.   if (listenBlock.cmd_cplt = GOOD_RTN) or
  143.       (NetToolsCancel(listenBlock) = CMPL_DURING_CANCEL) then
  144.     {Handle case where completion occurred}
  145.     if NetToolsHangUp(listenBlock.lsn) <> GOOD_RTN then;
  146.   end; {NetToolsAbortListen)}
  147.  
  148. function NetToolsHangUp(session : Byte) : Byte;
  149.   var
  150.     netBlock : NCB;
  151.   begin
  152.   with netBlock do
  153.     begin
  154.     Init(HANG_UP);
  155.     lsn := session;
  156.     NetToolsHangUp := ReturnCode;
  157.     end;
  158.   end; {NetToolsHangUp}
  159.  
  160. function NetToolsCancel(var netBlock : NCB) : Byte;
  161.   var
  162.     cancelBlock : NCB;
  163.   begin
  164.   with cancelBlock do
  165.     begin
  166.     Init(CANCEL);
  167.     bufPtr := @netBlock;
  168.     NetToolsCancel := ReturnCode;
  169.     end;
  170.   end; {NetToolsCancel}
  171. end. {Unit NetTools}
  172.