I am not familiar with Java, but you need some sort of system call Sleep(int timeout_msecs), so that the process blocks until the timeout occurs. This functionality is provided by the OS. --- usernew <no_reply@...> wrote: My program currently is structured as follows:
class TWS implements EWrapper { public void requestdata(...) public void tickPrice(...) public void tickSize(...) ... public void wait_trans() { for(i=0; i < xxxxx; i++); } }
public class Main { tws.connect(); for(i=0; i<n; i++) tws.requestdata(...) tws.wait_trans(); tws.disconnect(); }
Is there a better way to structure this program ?
My concern is wait_trans(). It is continuously eating up cycles. My program does not need to do anything while it is waiting for the arrays to be populated, but I would still like to wait without consuming cycles.
Thanks in advance
__________________________________________________ Do You Yahoo!? Yahoo! - Official partner of 2002 FIFA World Cup
|
Yeah, I tried that and got exceptions. The problem might be that when you sleep the whole thread is put to sleep, so the event tickprice etc. callbacks can't happen. So, a regular sleep might not work well in this case.
toggle quoted message
Show quoted text
--- In twsapi@y..., Todd Turner <todd_a_turner@y...> wrote: I am not familiar with Java, but you need some sort of system call Sleep(int timeout_msecs), so that the process blocks until the timeout occurs. This functionality is provided by the OS.
--- usernew <no_reply@y...> wrote:
My program currently is structured as follows:
class TWS implements EWrapper { public void requestdata(...) public void tickPrice(...) public void tickSize(...) ... public void wait_trans() { for(i=0; i < xxxxx; i++); } }
public class Main { tws.connect(); for(i=0; i<n; i++) tws.requestdata(...) tws.wait_trans(); tws.disconnect(); }
Is there a better way to structure this program ?
My concern is wait_trans(). It is continuously eating up cycles. My program does not need to do anything while it is waiting for the arrays to be populated, but I would still like to wait without consuming cycles.
Thanks in advance
__________________________________________________ Do You Yahoo!? Yahoo! - Official partner of 2002 FIFA World Cup
|
I believe that the callbacks only occur during a call to requestData(). In my initial testing I used Sleep with no problem. I now have Windows sending a WM_TIMER message to my apps message queue every 250 msecs now. --- usernew <no_reply@...> wrote: Yeah, I tried that and got exceptions. The problem might be that when you sleep the whole thread is put to sleep, so the event tickprice etc. callbacks can't happen. So, a regular sleep might not work well in this case.
--- In twsapi@y..., Todd Turner <todd_a_turner@y...> wrote:
I am not familiar with Java, but you need some sort of
system call Sleep(int timeout_msecs), so that the process blocks until the timeout occurs. This functionality is provided by the OS.
--- usernew <no_reply@y...> wrote:
My program currently is structured as follows:
class TWS implements EWrapper { public void requestdata(...) public void tickPrice(...) public void tickSize(...) ... public void wait_trans() { for(i=0; i < xxxxx; i++); } }
public class Main { tws.connect(); for(i=0; i<n; i++) tws.requestdata(...) tws.wait_trans(); tws.disconnect(); }
Is there a better way to structure this program ?
My concern is wait_trans(). It is continuously eating up cycles. My program does not need to do anything while it is waiting for the arrays to be populated, but I would still like
to
wait without consuming cycles.
Thanks in advance
__________________________________________________ Do You Yahoo!? Yahoo! - Official partner of 2002 FIFA World Cup
__________________________________________________ Do You Yahoo!? Yahoo! - Official partner of 2002 FIFA World Cup
|
btw, Have you been able to call connect, and then call disconnect and then call connect again? The second call to connect always seems to cause an exception inside the API, for me anyway. --- Todd Turner <todd_a_turner@...> wrote: I believe that the callbacks only occur during a call to requestData().
In my initial testing I used Sleep with no problem. I now have Windows sending a WM_TIMER message to my apps message queue every 250 msecs now. --- usernew <no_reply@...> wrote:
Yeah, I tried that and got exceptions. The problem might be that when you sleep the whole thread is put to sleep, so the event tickprice etc. callbacks can't happen. So, a regular sleep might not work well in this case.
--- In twsapi@y..., Todd Turner <todd_a_turner@y...>
wrote:
I am not familiar with Java, but you need some sort of
system call Sleep(int timeout_msecs), so that the
process blocks until the timeout occurs. This functionality is provided by the OS.
--- usernew <no_reply@y...> wrote:
My program currently is structured as follows:
class TWS implements EWrapper { public void requestdata(...) public void tickPrice(...) public void tickSize(...) ... public void wait_trans() { for(i=0; i < xxxxx; i++); } }
public class Main { tws.connect(); for(i=0; i<n; i++) tws.requestdata(...) tws.wait_trans(); tws.disconnect(); }
Is there a better way to structure this program
?
My concern is wait_trans(). It is continuously eating up cycles. My program does not need to do anything while it
is
waiting for the arrays to be populated, but I would still like to
wait without consuming cycles.
Thanks in advance
__________________________________________________
Do You Yahoo!? Yahoo! - Official partner of 2002 FIFA World Cup
__________________________________________________ Do You Yahoo!? Yahoo! - Official partner of 2002 FIFA World Cup
__________________________________________________ Do You Yahoo!? Yahoo! - Official partner of 2002 FIFA World Cup
|
So you are saying tickPrice, tickSize etc. are guaranteed to happen by the time requestData() returns ? I thought tickPrice etc. were completely asynchronous.
toggle quoted message
Show quoted text
--- In twsapi@y..., Todd Turner <todd_a_turner@y...> wrote: I believe that the callbacks only occur during a call to requestData().
In my initial testing I used Sleep with no problem. I now have Windows sending a WM_TIMER message to my apps message queue every 250 msecs now. --- usernew <no_reply@y...> wrote:
Yeah, I tried that and got exceptions. The problem might be that when you sleep the whole thread is put to sleep, so the event tickprice etc. callbacks can't happen. So, a regular sleep might not work well in this case.
--- In twsapi@y..., Todd Turner <todd_a_turner@y...> wrote:
I am not familiar with Java, but you need some sort of
system call Sleep(int timeout_msecs), so that the process blocks until the timeout occurs. This functionality is provided by the OS.
--- usernew <no_reply@y...> wrote:
My program currently is structured as follows:
class TWS implements EWrapper { public void requestdata(...) public void tickPrice(...) public void tickSize(...) ... public void wait_trans() { for(i=0; i < xxxxx; i++); } }
public class Main { tws.connect(); for(i=0; i<n; i++) tws.requestdata(...) tws.wait_trans(); tws.disconnect(); }
Is there a better way to structure this program ?
My concern is wait_trans(). It is continuously eating up cycles. My program does not need to do anything while it is waiting for the arrays to be populated, but I would still like
to
wait without consuming cycles.
Thanks in advance
__________________________________________________ Do You Yahoo!? Yahoo! - Official partner of 2002 FIFA World Cup
__________________________________________________ Do You Yahoo!? Yahoo! - Official partner of 2002 FIFA World Cup
|
yep, I am pretty sure that all that requestData() does is read data that has arrived from TWS, and call the appropriate EWrapper member function for tickPrice etc. If it was async, there would be no need to call requestData() every second, or ever. --- usernew <no_reply@...> wrote: So you are saying tickPrice, tickSize etc. are guaranteed to happen by the time requestData() returns ? I thought tickPrice etc. were completely asynchronous.
--- In twsapi@y..., Todd Turner <todd_a_turner@y...> wrote:
I believe that the callbacks only occur during a call
to requestData().
In my initial testing I used Sleep with no problem. I
now have Windows sending a WM_TIMER message to my apps
message queue every 250 msecs now. --- usernew <no_reply@y...> wrote:
Yeah, I tried that and got exceptions. The problem
might be that when you sleep the whole thread is put to sleep, so the
event tickprice etc. callbacks can't happen. So, a regular sleep might not work well in this case.
--- In twsapi@y..., Todd Turner <todd_a_turner@y...>
wrote:
I am not familiar with Java, but you need some sort of
system call Sleep(int timeout_msecs), so that the
process blocks until the timeout occurs. This functionality is provided by the OS.
--- usernew <no_reply@y...> wrote:
My program currently is structured as
follows:
class TWS implements EWrapper { public void requestdata(...) public void tickPrice(...) public void tickSize(...) ... public void wait_trans() { for(i=0; i < xxxxx; i++); } }
public class Main { tws.connect(); for(i=0; i<n; i++) tws.requestdata(...) tws.wait_trans(); tws.disconnect(); }
Is there a better way to structure this
program
?
My concern is wait_trans(). It is
continuously
eating up cycles. My program does not need to do anything while
it is
waiting for the arrays to be populated, but I would still
like
to
wait without consuming cycles.
Thanks in advance
__________________________________________________
Do You Yahoo!? Yahoo! - Official partner of 2002 FIFA World
Cup
__________________________________________________ Do You Yahoo!? Yahoo! - Official partner of 2002 FIFA World Cup
__________________________________________________ Do You Yahoo!? Yahoo! - Official partner of 2002 FIFA World Cup
|
You should look at EClientSocket.java: It spawns an asynchronous thread with
tm_reader = new EReader( this, dis);
The wrapper functions are called from this thread whenever a message is received by the client. So there is no need to wait! It's done all asynchronously.
Gernot
toggle quoted message
Show quoted text
--- In twsapi@y..., Todd Turner <todd_a_turner@y...> wrote: I believe that the callbacks only occur during a call to requestData().
In my initial testing I used Sleep with no problem. I now have Windows sending a WM_TIMER message to my apps message queue every 250 msecs now. --- usernew <no_reply@y...> wrote:
Yeah, I tried that and got exceptions. The problem might be that when you sleep the whole thread is put to sleep, so the event tickprice etc. callbacks can't happen. So, a regular sleep might not work well in this case.
--- In twsapi@y..., Todd Turner <todd_a_turner@y...> wrote:
I am not familiar with Java, but you need some sort of
system call Sleep(int timeout_msecs), so that the process blocks until the timeout occurs. This functionality is provided by the OS.
--- usernew <no_reply@y...> wrote:
My program currently is structured as follows:
class TWS implements EWrapper { public void requestdata(...) public void tickPrice(...) public void tickSize(...) ... public void wait_trans() { for(i=0; i < xxxxx; i++); } }
public class Main { tws.connect(); for(i=0; i<n; i++) tws.requestdata(...) tws.wait_trans(); tws.disconnect(); }
Is there a better way to structure this program ?
My concern is wait_trans(). It is continuously eating up cycles. My program does not need to do anything while it is waiting for the arrays to be populated, but I would still like
to
wait without consuming cycles.
Thanks in advance
__________________________________________________ Do You Yahoo!? Yahoo! - Official partner of 2002 FIFA World Cup
__________________________________________________ Do You Yahoo!? Yahoo! - Official partner of 2002 FIFA World Cup
|
usernew,
maybe i do not know what you want or misunderstand TWS control
but you need to send requestData() only once - you can do it before the
session.
David
toggle quoted message
Show quoted text
----- Original Message -----
Sent: Wednesday, June 19, 2002 3:56
AM
Subject: Re: twsapi: Java API
So you are saying tickPrice, tickSize etc. are guaranteed
to happen by the time requestData() returns ? I thought tickPrice etc.
were completely asynchronous.
--- In twsapi@y..., Todd Turner <todd_a_turner@y...> wrote: > I
believe that the callbacks only occur during a call > to
requestData(). > > In my initial testing I used Sleep with no
problem.? I > now have Windows sending a WM_TIMER message to my
apps > message queue every 250 msecs now. > --- usernew
wrote: > > Yeah, I tried that and got
exceptions. The problem > > might be that when > > you
sleep the whole thread is put to sleep, so the > > event tickprice
> > etc. callbacks can't happen. So, a regular sleep > >
might not work well > > in this case. > > > > ---
In twsapi@y..., Todd Turner > >
wrote: > > > I am not familiar with Java, but you need
some > > sort of > > > system call Sleep(int
timeout_msecs), so that the > > > process blocks until the timeout
occurs.? This > > > functionality is provided by the
OS. > > > > > > > > > --- usernew
wrote: > > > > My program currently is
structured as follows: > > > > > > > > class
TWS implements EWrapper { > > > >?? public void
requestdata(...) > > > >?? public void
tickPrice(...) > > > >?? public void
tickSize(...) > > > >?? ... > > >
>?? public void wait_trans() { > > >
>???? for(i=0; i < xxxxx; i++); > > >
>?? } > > > > } > > > > >
> > > public class Main { > > > >???
tws.connect(); > > > >??? for(i=0; i> > > >??????
tws.requestdata(...) > > > >???
tws.wait_trans(); > > > >???
tws.disconnect(); > > > > } > > > > >
> > > Is there a better way to structure this program > >
? > > > > > > > > My concern is wait_trans().
It is continuously > > > > eating up cycles. My > >
> > program does not need to do anything while it is > > >
> waiting for the > > > > arrays to be populated, but I
would still like > > to > > > > wait without >
> > > consuming cycles. > > > > > > >
> Thanks in advance > > > > > > > > >
> > > > > > > >
__________________________________________________ > > > Do You
Yahoo!? > > > Yahoo! - Official partner of 2002 FIFA World
Cup > > > >
> > > > > >
__________________________________________________ > Do You
Yahoo!? > Yahoo! - Official partner of 2002 FIFA World Cup >
To
unsubscribe from this group, send an email
to: twsapi-unsubscribe@...
Your use of
Yahoo! Groups is subject to the .
|
I need to get info on n tickers, so this is what I do at the moment: tws.connect(); for(i=0; i<n; i++){ tws.requestdata(...) } tws.wait_trans(); // to make sure all the prices have arrived tws.disconnect(); // prices have arrived // so do stuff here Looking at the docs for request data, because I need info on n tickers, seems I would have to call requestdata n times My concern was making tws.wait_trans() not consume cycles. --- In twsapi@y..., "David" <kotomo@p...> wrote: usernew, maybe i do not know what you want or misunderstand TWS control but you need to send requestData() only once - you can do it before the session. David ----- Original Message ----- From: usernew To: twsapi@y... Sent: Wednesday, June 19, 2002 3:56 AM Subject: Re: twsapi: Java API
So you are saying tickPrice, tickSize etc. are guaranteed to happen by the time requestData() returns ? I thought tickPrice etc. were completely asynchronous.
--- In twsapi@y..., Todd Turner <todd_a_turner@y...> wrote: > I believe that the callbacks only occur during a call > to requestData(). > > In my initial testing I used Sleep with no problem. I > now have Windows sending a WM_TIMER message to my apps > message queue every 250 msecs now. > --- usernew <no_reply@y...> wrote: > > Yeah, I tried that and got exceptions. The problem > > might be that when > > you sleep the whole thread is put to sleep, so the > > event tickprice > > etc. callbacks can't happen. So, a regular sleep > > might not work well > > in this case. > > > > --- In twsapi@y..., Todd Turner <todd_a_turner@y...> > > wrote: > > > I am not familiar with Java, but you need some > > sort of > > > system call Sleep(int timeout_msecs), so that the > > > process blocks until the timeout occurs. This > > > functionality is provided by the OS. > > > > > > > > > --- usernew <no_reply@y...> wrote: > > > > My program currently is structured as follows: > > > > > > > > class TWS implements EWrapper { > > > > public void requestdata(...) > > > > public void tickPrice(...) > > > > public void tickSize(...) > > > > ... > > > > public void wait_trans() { > > > > for(i=0; i < xxxxx; i++); > > > > } > > > > } > > > > > > > > public class Main { > > > > tws.connect(); > > > > for(i=0; i<n; i++) > > > > tws.requestdata(...) > > > > tws.wait_trans(); > > > > tws.disconnect(); > > > > } > > > > > > > > Is there a better way to structure this program > > ? > > > > > > > > My concern is wait_trans(). It is continuously > > > > eating up cycles. My > > > > program does not need to do anything while it is > > > > waiting for the > > > > arrays to be populated, but I would still like > > to > > > > wait without > > > > consuming cycles. > > > > > > > > Thanks in advance > > > > > > > > > > > > > > > > > __________________________________________________ > > > Do You Yahoo!? > > > Yahoo! - Official partner of 2002 FIFA World Cup > > > > > > > > > > __________________________________________________ > Do You Yahoo!? > Yahoo! - Official partner of 2002 FIFA World Cup >
Yahoo! Groups Sponsor ADVERTISEMENT
To unsubscribe from this group, send an email to: twsapi-unsubscribe@y...
Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.
|
There are basically two methods to do this:
1. wait() / notifyAll() communication
In your main program use wait() to go to sleep without polling. Catch the interruptedException and go on.
In the wrapper functions that receive the data do some checking that all your requested data have arrived and reactivate your main with notifyAll(). The wrapper functions are called asynchronously by the reader thread that was spawned from your main with the connect() call.
2. If you use a GUI, e.g. some Swing objects you can use the appropriate event handling to update your presentation objects with the asynchrounously received ticket data. The TestJavaClient application from IB is an example.
Gernot
In twsapi@y..., usernew <no_reply@y...> wrote:
toggle quoted message
Show quoted text
I need to get info on n tickers, so this is what I do at the moment:
tws.connect(); for(i=0; i<n; i++){ tws.requestdata(...) } tws.wait_trans(); // to make sure all the prices have arrived tws.disconnect();
// prices have arrived // so do stuff here
Looking at the docs for request data, because I need info on n tickers, seems I would have to call requestdata n times
My concern was making tws.wait_trans() not consume cycles.
|