Back to product page

WaitFor method


Waits and reads data until pattern is found.

Type

String

Remarks

This method is only available in COM version of the component.

WaitFor method will wait and receive data from the server, until specified Pattern is found, or timeout expires. If timeout is not specified, then default one is used, as defined in Timeout property. If timeout expires, you will get an error, but you will still be able to receive data that arrived in the meantime using Receive method call.

NOTE: this method works only when Blocking property is set to True.

Very common way for using WaitFor method is to read all data that servers sends us upon connection. Usually you will know what exactly you need to receive, so you can use this command to help you, like this:
 
       TelnetDLX1.HostName = "yourhost"
       TelnetDLX1.Login = "tester"
       TelnetDLX1.Password = "weonlydo"
       TelnetDLX1.Protocol = SSHAuto
       TelnetDLX1.Blocking = True
       TelnetDLX1.Connect
       Debug.Print TelnetDLX.WaitFor("joe@debian")
 

This sample will block until joe@debian is found within received text. If it's not found in reasonable time (until timeout expires) you will still be able to Receive last 16k of data - just to check why it failed.

Timeout can be specified as negative value too. When set up this way, wodTelnetDLX will use it as 'absolute timeout' - component will return from WaitFor method call in specified time no matter if it was idle or busy in that time. It is so to prevent wodTelnetDLX from freezing if expected response is never received. wodTelnetDLX.Timeout property will still hold regular, 'inactivity timeout' value as it was before.

One sidenote - it is almost impossible to predict what state of the session will be when this 'absolute timeout' expires. You may still receive big amount of data that will confuse your client, depending on what was going on while WaitFor method was running.

This command internally disables PromptReceived event and Received event since it's taking control on what's received from the server.

You can also provide regular expression to be searched in received data instead of exact value. You should prepend your Waitfor argument with regex: text so wodTelnetDLX knows you are using regular expression. For example, you can use it like this:
Debug.Print Telnet1.WaitFor("regex:[\$%#>] $")

above regular expression will match when:
  • $, %, #, or > found
  • space
  • end of line
typically, our previous sample joe@somehost:-$<SPACE> does match above regex. But, hey, feel free to use something more complex such as:
Debug.Print Telnet1.WaitFor("regex:[a-zA-z0-9]+@[a-zA-z0-9]+:[a-zA-z0-9-/]+[\$%#>] $")

or using extended PERL syntax
Debug.Print Telnet1.WaitFor("regex:\w+@\w+:\S+\$ $")

just don't forget to put regex: text in front of regular expression, otherwise wodTelnetDLX will search for exact match of specified pattern. PCRE (www.pcre.org) library is used for regex support.