Subversion Repository Public Repository

litesoft

Diff Revisions 949 vs 950 for /trunk/Java/GWT/OldClient/src/org/litesoft/GWT/forms/client/nonpublic/RFHMessageManager.java

Diff revisions: vs.
  @@ -1,139 +1,139 @@
1 - // This Source Code is in the Public Domain per: http://unlicense.org
2 - package org.litesoft.GWT.forms.client.nonpublic;
3 -
4 - import org.litesoft.GWT.forms.client.*;
5 - import org.litesoft.commonfoundation.typeutils.Objects;
6 - import org.litesoft.logger.*;
7 - import org.litesoft.ui.def.nonpublic.support.*;
8 -
9 - import java.util.*;
10 -
11 - public class RFHMessageManager
12 - extends com.google.gwt.user.client.Timer // fully qualified because multiple options
13 - {
14 - public static final long MAX_MESSAGE_WAIT_MSEC = 10000;
15 -
16 - private int mNumberSource = 0;
17 -
18 - private MMSent mSent = null;
19 -
20 - private List<MMEntry> mPendings = new ArrayList<MMEntry>();
21 -
22 - private AsyncFormServicePeerChannel mFormServicePeerChannel;
23 - private Logger mLogger;
24 -
25 - public RFHMessageManager( AsyncFormServicePeerChannel pFormServicePeerChannel, Logger pLogger ) {
26 - mFormServicePeerChannel = pFormServicePeerChannel;
27 - mLogger = pLogger;
28 - scheduleRepeating( 250 );
29 - }
30 -
31 - public void dispose() {
32 - cancel();
33 - mSent = null;
34 - mPendings.clear();
35 - }
36 -
37 - public void run() {
38 - if ( mSent != null ) {
39 - long now = System.currentTimeMillis();
40 - if ( now < (mSent.getWhen() + MAX_MESSAGE_WAIT_MSEC) ) {
41 - return;
42 - }
43 - mLogger.warn.log( "Message Response Wait Exhausted" );
44 - mSent = null;
45 - }
46 - LLsendNextPending();
47 - }
48 -
49 - public void sendCollector( String pWho, FormToServicePeerDataCollector pCollector ) {
50 - if ( pCollector.isDirty() ) {
51 - if ( (mSent != null) || !mPendings.isEmpty() ) {
52 - mPendings.add( new MMEntry( pWho, pCollector ) );
53 - } else {
54 - sendFormEvent( pWho, new FormToServicePeerData( pCollector ) );
55 - }
56 - }
57 - }
58 -
59 - private void LLsendNextPending() {
60 - MMEntry zEntry = getNextPending();
61 - if ( zEntry != null ) {
62 - FormToServicePeerData zData = zEntry.getData();
63 - String zWho = zEntry.getWho();
64 - sendFormEvent( zWho, zData );
65 - }
66 - }
67 -
68 - private void sendFormEvent( String pWho, FormToServicePeerData pData ) {
69 - Integer zAsyncMessageNumber = pData.getAsyncMessageNumber();
70 - mLogger.debug.log( "sendCollector(", zAsyncMessageNumber, "):", pWho, "|", pData );
71 - mSent = new MMSent( zAsyncMessageNumber );
72 - mFormServicePeerChannel.formEvents( pData );
73 - }
74 -
75 - public void receivedAsyncMessageNumber( Integer pAsyncMessageNumber ) {
76 - mLogger.debug.log( "receivedAsyncMessageNumber:", pAsyncMessageNumber );
77 - if ( mSent != null ) {
78 - if ( !Objects.areNonArraysEqual( mSent.getAsyncMessageNumber(), pAsyncMessageNumber ) ) {
79 - return;
80 - }
81 - mSent = null;
82 - }
83 - LLsendNextPending();
84 - }
85 -
86 - private MMEntry getNextPending() {
87 - return !mPendings.isEmpty() ? mPendings.remove( 0 ) : null;
88 - }
89 -
90 - public void indicateSendForRequestValues( Integer pAsyncMessageNumber ) {
91 - if ( mSent != null ) {
92 - mLogger.error.log( "RequestValues, but still waiting on message: ", mSent.mAsyncMessageNumber );
93 - mSent = null;
94 - }
95 - for ( MMEntry entry; null != (entry = getNextPending()); ) {
96 - mLogger.error.log( "RequestValues, but still waiting to send message: ", entry.getData() );
97 - }
98 - mSent = new MMSent( pAsyncMessageNumber );
99 - }
100 -
101 - public Integer getNextAsyncMessageNumber() {
102 - return ++mNumberSource;
103 - }
104 -
105 - private static class MMEntry {
106 - private String mWho;
107 - private FormToServicePeerData mData;
108 -
109 - public MMEntry( String pWho, FormToServicePeerDataCollector pCollector ) {
110 - mWho = pWho;
111 - mData = new FormToServicePeerData( pCollector );
112 - }
113 -
114 - public String getWho() {
115 - return mWho;
116 - }
117 -
118 - public FormToServicePeerData getData() {
119 - return mData;
120 - }
121 - }
122 -
123 - private static class MMSent {
124 - private long mWhen = System.currentTimeMillis();
125 - private Integer mAsyncMessageNumber;
126 -
127 - public MMSent( Integer pAsyncMessageNumber ) {
128 - mAsyncMessageNumber = pAsyncMessageNumber;
129 - }
130 -
131 - public long getWhen() {
132 - return mWhen;
133 - }
134 -
135 - public Integer getAsyncMessageNumber() {
136 - return mAsyncMessageNumber;
137 - }
138 - }
139 - }
1 + // This Source Code is in the Public Domain per: http://unlicense.org
2 + package org.litesoft.GWT.forms.client.nonpublic;
3 +
4 + import org.litesoft.GWT.forms.client.*;
5 + import org.litesoft.commonfoundation.base.*;
6 + import org.litesoft.logger.*;
7 + import org.litesoft.ui.def.nonpublic.support.*;
8 +
9 + import java.util.*;
10 +
11 + public class RFHMessageManager
12 + extends com.google.gwt.user.client.Timer // fully qualified because multiple options
13 + {
14 + public static final long MAX_MESSAGE_WAIT_MSEC = 10000;
15 +
16 + private int mNumberSource = 0;
17 +
18 + private MMSent mSent = null;
19 +
20 + private List<MMEntry> mPendings = new ArrayList<MMEntry>();
21 +
22 + private AsyncFormServicePeerChannel mFormServicePeerChannel;
23 + private Logger mLogger;
24 +
25 + public RFHMessageManager( AsyncFormServicePeerChannel pFormServicePeerChannel, Logger pLogger ) {
26 + mFormServicePeerChannel = pFormServicePeerChannel;
27 + mLogger = pLogger;
28 + scheduleRepeating( 250 );
29 + }
30 +
31 + public void dispose() {
32 + cancel();
33 + mSent = null;
34 + mPendings.clear();
35 + }
36 +
37 + public void run() {
38 + if ( mSent != null ) {
39 + long now = System.currentTimeMillis();
40 + if ( now < (mSent.getWhen() + MAX_MESSAGE_WAIT_MSEC) ) {
41 + return;
42 + }
43 + mLogger.warn.log( "Message Response Wait Exhausted" );
44 + mSent = null;
45 + }
46 + LLsendNextPending();
47 + }
48 +
49 + public void sendCollector( String pWho, FormToServicePeerDataCollector pCollector ) {
50 + if ( pCollector.isDirty() ) {
51 + if ( (mSent != null) || !mPendings.isEmpty() ) {
52 + mPendings.add( new MMEntry( pWho, pCollector ) );
53 + } else {
54 + sendFormEvent( pWho, new FormToServicePeerData( pCollector ) );
55 + }
56 + }
57 + }
58 +
59 + private void LLsendNextPending() {
60 + MMEntry zEntry = getNextPending();
61 + if ( zEntry != null ) {
62 + FormToServicePeerData zData = zEntry.getData();
63 + String zWho = zEntry.getWho();
64 + sendFormEvent( zWho, zData );
65 + }
66 + }
67 +
68 + private void sendFormEvent( String pWho, FormToServicePeerData pData ) {
69 + Integer zAsyncMessageNumber = pData.getAsyncMessageNumber();
70 + mLogger.debug.log( "sendCollector(", zAsyncMessageNumber, "):", pWho, "|", pData );
71 + mSent = new MMSent( zAsyncMessageNumber );
72 + mFormServicePeerChannel.formEvents( pData );
73 + }
74 +
75 + public void receivedAsyncMessageNumber( Integer pAsyncMessageNumber ) {
76 + mLogger.debug.log( "receivedAsyncMessageNumber:", pAsyncMessageNumber );
77 + if ( mSent != null ) {
78 + if ( !Currently.areEqual( mSent.getAsyncMessageNumber(), pAsyncMessageNumber ) ) {
79 + return;
80 + }
81 + mSent = null;
82 + }
83 + LLsendNextPending();
84 + }
85 +
86 + private MMEntry getNextPending() {
87 + return !mPendings.isEmpty() ? mPendings.remove( 0 ) : null;
88 + }
89 +
90 + public void indicateSendForRequestValues( Integer pAsyncMessageNumber ) {
91 + if ( mSent != null ) {
92 + mLogger.error.log( "RequestValues, but still waiting on message: ", mSent.mAsyncMessageNumber );
93 + mSent = null;
94 + }
95 + for ( MMEntry entry; null != (entry = getNextPending()); ) {
96 + mLogger.error.log( "RequestValues, but still waiting to send message: ", entry.getData() );
97 + }
98 + mSent = new MMSent( pAsyncMessageNumber );
99 + }
100 +
101 + public Integer getNextAsyncMessageNumber() {
102 + return ++mNumberSource;
103 + }
104 +
105 + private static class MMEntry {
106 + private String mWho;
107 + private FormToServicePeerData mData;
108 +
109 + public MMEntry( String pWho, FormToServicePeerDataCollector pCollector ) {
110 + mWho = pWho;
111 + mData = new FormToServicePeerData( pCollector );
112 + }
113 +
114 + public String getWho() {
115 + return mWho;
116 + }
117 +
118 + public FormToServicePeerData getData() {
119 + return mData;
120 + }
121 + }
122 +
123 + private static class MMSent {
124 + private long mWhen = System.currentTimeMillis();
125 + private Integer mAsyncMessageNumber;
126 +
127 + public MMSent( Integer pAsyncMessageNumber ) {
128 + mAsyncMessageNumber = pAsyncMessageNumber;
129 + }
130 +
131 + public long getWhen() {
132 + return mWhen;
133 + }
134 +
135 + public Integer getAsyncMessageNumber() {
136 + return mAsyncMessageNumber;
137 + }
138 + }
139 + }