[kepler-dev] Threaded actors in the DE Domain

Edward A. Lee eal at eecs.berkeley.edu
Wed Sep 12 09:00:44 PDT 2007


Ian,

I'm not sure what you mean by "it fires an event".
This is fairly central... To get this exception, it would seem
that you have to be executing DEDirector methods in two separate
threads, which almost certainly won't work.  Can you explain
exactly what you mean by this phrase?

You may want to take a look at a "work in progress" that I've
been working on:  ptolemy.actor.lib.hoc.RealTimeComposite.
This actor runs its contained composite actor in a separate thread
from the container that fires this actor.  It is meant for use
in DE.

Edward


At 05:43 AM 9/11/2007, ian.brown at hsbcib.com wrote:
>Hi, I have an source actor which uses a thread to read from a TCP/IP
>socket. When data is received, it fires an event. The overall model
>consists of two of these sources which are connected to a finite state
>machine. This FSM is a modal model although none of the states actually
>have any refinements.
>
>The problem we are having is that occasionally we will get a graph
>construction exception. I think the problem is that when a state transition
>occurs the DAG is rebuilt. During this process a fire event can happen and
>you end up with 2 threads both trying to rebuild the DAG at the same time.
>This is a bit of a guess - but it certainly appears to be what is
>happening.
>How do I synchronise the fireAt() call so that this does not happen? I seem
>to remember reading something somewhere about thread restrictions in
>fireAt() but cannot find the reference any more. Can anyone help?
>
>The exception I am getting is as follows:
>
>ptolemy.graph.GraphConstructionException: Attempt to add a node that is
>already contained in the graph.
>Dumps of the offending node and graph follow.
>The offending node:
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.ArrayVariance.in}
>The offending graph:
>{ptolemy.graph.DirectedGraph
>Node Set:
>0: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.positionTrigger2.trigger}
>1: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.positionTrigger2.output}
>2: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const2.trigger}
>3: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const2.output}
>4: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const.trigger}
>5: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const.output}
>6: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const3.trigger}
>7: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const3.output}
>8: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const4.trigger}
>9: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const4.output}
>10: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.positionTrigger2.trigger}
>11: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.positionTrigger2.output}
>12: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const2.trigger}
>13: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const2.output}
>14: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const.trigger}
>15: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const.output}
>16: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const3.trigger}
>17: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const3.output}
>18: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const4.trigger}
>19: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const4.output}
>20: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.positionTrigger.trigger}
>21: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.positionTrigger.output}
>22: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.positionTrigger2.trigger}
>23: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.positionTrigger2.output}
>24: ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.USDJPY.bid}
>25: ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.USDJPY.ask}
>26: ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.Expression.A}
>27: ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.Expression.B}
>28: ptolemy.actor.TypedIOPort
>{.masterModel6ib.marketData.Expression.output}
>29: ptolemy.actor.TypedIOPort
>{.masterModel6ib.marketData.RecordAssembler.bid}
>30: ptolemy.actor.TypedIOPort
>{.masterModel6ib.marketData.RecordAssembler.mid}
>31: ptolemy.actor.TypedIOPort
>{.masterModel6ib.marketData.RecordAssembler.offer}
>32: ptolemy.actor.TypedIOPort
>{.masterModel6ib.marketData.RecordAssembler.output}
>33: ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.USDJPY2.bid}
>34: ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.USDJPY2.ask}
>35: ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.Expression2.A}
>36: ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.Expression2.B}
>37: ptolemy.actor.TypedIOPort
>{.masterModel6ib.marketData.Expression2.output}
>38: ptolemy.actor.TypedIOPort
>{.masterModel6ib.marketData.RecordAssembler2.bid}
>39: ptolemy.actor.TypedIOPort
>{.masterModel6ib.marketData.RecordAssembler2.mid}
>40: ptolemy.actor.TypedIOPort
>{.masterModel6ib.marketData.RecordAssembler2.offer}
>41: ptolemy.actor.TypedIOPort
>{.masterModel6ib.marketData.RecordAssembler2.output}
>42: ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.Publisher.input}
>43: ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.Publisher.output}
>44: ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.Publisher2.input}
>45: ptolemy.actor.TypedIOPort
>{.masterModel6ib.marketData.Publisher2.output}
>46: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.Subscriber.input}
>47: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.Subscriber.output}
>48: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.RecordDisassembler.input}
>49: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.RecordDisassembler.mid}
>50: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.Subscriber2.input}
>51: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.Subscriber2.output}
>52: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.MovingAverage.in}
>53: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.MovingAverage.average}
>54: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.SlidingWindow.in}
>55: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.SlidingWindow.output}
>56: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.ArrayVariance.in}
>57: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.ArrayVariance.variance}
>58: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.ArrayVariance.mean}
>59: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.ArrayVariance.range}
>60: ptolemy.domains.fsm.modal.ModalPort
>{.masterModel6ib.meanReversionParent.meanRevision2.ModalModel.volatility}
>61: ptolemy.domains.fsm.modal.ModalPort
>{.masterModel6ib.meanReversionParent.meanRevision2.ModalModel.buy}
>62: ptolemy.domains.fsm.modal.ModalPort
>{.masterModel6ib.meanReversionParent.meanRevision2.ModalModel.sell}
>63: ptolemy.domains.fsm.modal.ModalPort
>{.masterModel6ib.meanReversionParent.meanRevision2.ModalModel.position}
>64: ptolemy.domains.fsm.modal.ModalPort
>{.masterModel6ib.meanReversionParent.meanRevision2.ModalModel.mave}
>65: ptolemy.domains.fsm.modal.ModalPort
>{.masterModel6ib.meanReversionParent.meanRevision2.ModalModel.midPrice}
>66: ptolemy.domains.fsm.modal.ModalPort
>{.masterModel6ib.meanReversionParent.meanRevision2.ModalModel.range}
>67: ptolemy.domains.fsm.modal.ModalPort
>{.masterModel6ib.meanReversionParent.meanRevision2.ModalModel.buy}
>68: ptolemy.domains.fsm.modal.ModalPort
>{.masterModel6ib.meanReversionParent.meanRevision2.ModalModel.sell}
>69: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.BooleanToAnything.input}
>70: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.BooleanToAnything.output}
>71: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.BooleanToAnything2.input}
>72: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.BooleanToAnything2.output}
>73: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator.input}
>74: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator.reset}
>75: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator.output}
>76: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator2.input}
>77: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator2.reset}
>78: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator2.output}
>79: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.UnaryMathFunction.input}
>80: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.UnaryMathFunction.output}
>81: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.model}
>82: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.buySell}
>83: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.instrument}
>84: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.amount}
>85: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.level}
>86: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.type}
>87: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.timeout}
>88: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.output}
>89: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.buySellTest.desiredPosition}
>90: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.buySellTest.output}
>91: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.AbsoluteValue.input}
>92: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.AbsoluteValue.output}
>93: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Scale.input}
>94: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Scale.output}
>95: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.RecordDisassembler2.input}
>96: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.RecordDisassembler2.mid}
>97: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.MovingAverage.in}
>98: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.MovingAverage.average}
>99: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.SlidingWindow.in}
>100: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.SlidingWindow.output}
>101: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.ArrayVariance.in}
>102: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.ArrayVariance.variance}
>103: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.ArrayVariance.mean}
>104: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.ArrayVariance.range}
>105: ptolemy.domains.fsm.modal.ModalPort
>{.masterModel6ib.meanReversionParent.meanRevision.ModalModel.volatility}
>106: ptolemy.domains.fsm.modal.ModalPort
>{.masterModel6ib.meanReversionParent.meanRevision.ModalModel.buy}
>107: ptolemy.domains.fsm.modal.ModalPort
>{.masterModel6ib.meanReversionParent.meanRevision.ModalModel.sell}
>108: ptolemy.domains.fsm.modal.ModalPort
>{.masterModel6ib.meanReversionParent.meanRevision.ModalModel.position}
>109: ptolemy.domains.fsm.modal.ModalPort
>{.masterModel6ib.meanReversionParent.meanRevision.ModalModel.mave}
>110: ptolemy.domains.fsm.modal.ModalPort
>{.masterModel6ib.meanReversionParent.meanRevision.ModalModel.midPrice}
>111: ptolemy.domains.fsm.modal.ModalPort
>{.masterModel6ib.meanReversionParent.meanRevision.ModalModel.range}
>112: ptolemy.domains.fsm.modal.ModalPort
>{.masterModel6ib.meanReversionParent.meanRevision.ModalModel.buy}
>113: ptolemy.domains.fsm.modal.ModalPort
>{.masterModel6ib.meanReversionParent.meanRevision.ModalModel.sell}
>114: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.BooleanToAnything.input}
>115: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.BooleanToAnything.output}
>116: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.BooleanToAnything2.input}
>117: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.BooleanToAnything2.output}
>118: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.Accumulator.input}
>119: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.Accumulator.reset}
>120: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.Accumulator.output}
>121: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.Accumulator2.input}
>122: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.Accumulator2.reset}
>123: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.Accumulator2.output}
>124: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.UnaryMathFunction.input}
>125: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.UnaryMathFunction.output}
>126: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.model}
>127: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.buySell}
>128: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.instrument}
>129: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.amount}
>130: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.level}
>131: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.type}
>132: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.timeout}
>133: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.output}
>134: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.buySellTest.desiredPosition}
>135: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.buySellTest.output}
>136: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.AbsoluteValue.input}
>137: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.AbsoluteValue.output}
>138: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.Merge.input}
>139: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.Merge.output}
>140: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.Accumulator.input}
>141: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.Accumulator.reset}
>142: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.Accumulator.output}
>143: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.Accumulator2.input}
>144: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.Accumulator2.reset}
>145: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.Accumulator2.output}
>146: ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.RecordDisassembler.input}
>147: ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.RecordDisassembler.model}
>148: ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.RecordDisassembler.buySell}
>149: ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.RecordDisassembler.instrument}
>150: ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.RecordDisassembler.amount}
>151: ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.RecordDisassembler.level}
>152: ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.RecordDisassembler.type}
>153: ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.RecordDisassembler.timeout}
>154: ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.AddSubtract.plus}
>155: ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.AddSubtract.minus}
>156: ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.AddSubtract.output}
>157: ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.size}
>158: ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.price}
>159: ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.instrument}
>160: ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.buysell}
>161: ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.source}
>162: ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.result}
>163: ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.orderid}
>164: ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.CompositeActor.FindOrderWS.orderid}
>165: ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.CompositeActor.FindOrderWS.result}
>166: ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.CompositeActor.FindOrderWS.status}
>167: ptolemy.actor.TypedIOPort {.masterModel6ib.orderManager.Display.input}
>168: ptolemy.actor.TypedIOPort
>{.masterModel6ib.marketData.MonitorValue.input}
>169: ptolemy.actor.TypedIOPort
>{.masterModel6ib.marketData.MonitorValue2.input}
>170: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.StDev.input}
>171: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.Range.input}
>172: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.TicCount.input}
>173: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.Mave.input}
>174: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.mid.input}
>175: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.TicCount.input}
>176: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.TicCount2.input}
>177: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.TicCount2.input}
>178: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.StDev.input}
>179: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.Range.input}
>180: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.TicCount.input}
>181: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.Mave.input}
>182: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.mid.input}
>183: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.TicCount.input}
>184: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.TicCount2.input}
>185: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.TicCount2.input}
>186: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.TicCount.input}
>187: ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.TicCount2.input}
>188: ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.TicCount.input}
>189: ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.TicCount2.input}
>190: ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.TicCount3.input}
>191: ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.TicCount4.input}
>192: ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.TicCount5.input}
>193: ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.TicCount6.input}
>194: ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.TicCount7.input}
>195: ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.LineWriter.input}
>196: ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.TicCount8.input}
>197: ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.TicCount9.input}
>198: ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.TicCount10.input}
>199: ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.CompositeActor.TicCount.input}
>200: ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.CompositeActor.TicCount2.input}
>Edge Set:
>0: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.positionTrigger2.trigger},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.positionTrigger2.output})
>1: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const2.trigger},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const2.output})
>2: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const.trigger},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const.output})
>3: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const3.trigger},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const3.output})
>4: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const4.trigger},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const4.output})
>5: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.positionTrigger2.trigger},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.positionTrigger2.output})
>6: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const2.trigger},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const2.output})
>7: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const.trigger},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const.output})
>8: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const3.trigger},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const3.output})
>9: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const4.trigger},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const4.output})
>10: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.positionTrigger.trigger},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.positionTrigger.output})
>11: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.positionTrigger2.trigger},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.positionTrigger2.output})
>12: (ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.Expression.A},
>ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.Expression.output})
>13: (ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.Expression.B},
>ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.Expression.output})
>14: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.marketData.RecordAssembler.bid}, ptolemy.actor.TypedIOPort
>{.masterModel6ib.marketData.RecordAssembler.output})
>15: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.marketData.RecordAssembler.mid}, ptolemy.actor.TypedIOPort
>{.masterModel6ib.marketData.RecordAssembler.output})
>16: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.marketData.RecordAssembler.offer},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.marketData.RecordAssembler.output})
>17: (ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.Expression2.A},
>ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.Expression2.output})
>18: (ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.Expression2.B},
>ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.Expression2.output})
>19: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.marketData.RecordAssembler2.bid},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.marketData.RecordAssembler2.output})
>20: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.marketData.RecordAssembler2.mid},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.marketData.RecordAssembler2.output})
>21: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.marketData.RecordAssembler2.offer},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.marketData.RecordAssembler2.output})
>22: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.marketData.Publisher.input}, ptolemy.actor.TypedIOPort
>{.masterModel6ib.marketData.Publisher.output})
>23: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.marketData.Publisher2.input}, ptolemy.actor.TypedIOPort
>{.masterModel6ib.marketData.Publisher2.output})
>24: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.Subscriber.input},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.Subscriber.output})
>25: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.RecordDisassembler.input},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.RecordDisassembler.mid})
>26: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.Subscriber2.input},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.Subscriber2.output})
>27: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.MovingAverage.in},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.MovingAverage.average})
>28: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.SlidingWindow.in},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.SlidingWindow.output})
>29: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.ArrayVariance.in},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.ArrayVariance.variance})
>30: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.ArrayVariance.in},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.ArrayVariance.mean})
>31: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.ArrayVariance.in},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.ArrayVariance.range})
>32: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.BooleanToAnything.input},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.BooleanToAnything.output})
>33: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.BooleanToAnything2.input},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.BooleanToAnything2.output})
>34: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator.input},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator.output})
>35: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator.reset},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator.output})
>36: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator2.input},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator2.output})
>37: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator2.reset},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator2.output})
>38: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.UnaryMathFunction.input},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.UnaryMathFunction.output})
>39: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.model},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.output})
>40: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.buySell},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.output})
>41: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.instrument},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.output})
>42: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.amount},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.output})
>43: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.level},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.output})
>44: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.type},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.output})
>45: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.timeout},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.output})
>46: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.buySellTest.desiredPosition},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.buySellTest.output})
>47: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.AbsoluteValue.input},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.AbsoluteValue.output})
>48: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Scale.input},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Scale.output})
>49: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.RecordDisassembler2.input},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.RecordDisassembler2.mid})
>50: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.MovingAverage.in},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.MovingAverage.average})
>51: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.SlidingWindow.in},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.SlidingWindow.output})
>52: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.ArrayVariance.in},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.ArrayVariance.variance})
>53: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.ArrayVariance.in},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.ArrayVariance.mean})
>54: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.ArrayVariance.in},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.ArrayVariance.range})
>55: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.BooleanToAnything.input},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.BooleanToAnything.output})
>56: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.BooleanToAnything2.input},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.BooleanToAnything2.output})
>57: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.Accumulator.input},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.Accumulator.output})
>58: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.Accumulator.reset},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.Accumulator.output})
>59: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.Accumulator2.input},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.Accumulator2.output})
>60: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.Accumulator2.reset},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.Accumulator2.output})
>61: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.UnaryMathFunction.input},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.UnaryMathFunction.output})
>62: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.model},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.output})
>63: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.buySell},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.output})
>64: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.instrument},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.output})
>65: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.amount},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.output})
>66: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.level},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.output})
>67: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.type},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.output})
>68: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.timeout},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.output})
>69: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.buySellTest.desiredPosition},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.buySellTest.output})
>70: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.AbsoluteValue.input},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.AbsoluteValue.output})
>71: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.Merge.input},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.Merge.output})
>72: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.Accumulator.input},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.Accumulator.output})
>73: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.Accumulator.reset},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.Accumulator.output})
>74: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.Accumulator2.input},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.Accumulator2.output})
>75: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.Accumulator2.reset},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.Accumulator2.output})
>76: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.RecordDisassembler.input},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.RecordDisassembler.model})
>77: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.RecordDisassembler.input},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.RecordDisassembler.buySell})
>78: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.RecordDisassembler.input},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.RecordDisassembler.instrument})
>79: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.RecordDisassembler.input},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.RecordDisassembler.amount})
>80: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.RecordDisassembler.input},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.RecordDisassembler.level})
>81: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.RecordDisassembler.input},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.RecordDisassembler.type})
>82: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.RecordDisassembler.input},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.RecordDisassembler.timeout})
>83: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.AddSubtract.plus},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.AddSubtract.output})
>84: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.AddSubtract.minus},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.AddSubtract.output})
>85: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.size},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.result})
>86: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.size},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.orderid})
>87: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.price},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.result})
>88: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.price},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.orderid})
>89: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.instrument},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.result})
>90: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.instrument},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.orderid})
>91: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.buysell},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.result})
>92: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.buysell},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.orderid})
>93: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.source},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.result})
>94: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.source},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.orderid})
>95: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.CompositeActor.FindOrderWS.orderid},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.CompositeActor.FindOrderWS.result})
>96: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.CompositeActor.FindOrderWS.orderid},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.CompositeActor.FindOrderWS.status})
>97: (ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.USDJPY.bid},
>ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.Expression.A})
>98: (ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.USDJPY.bid},
>ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.RecordAssembler.bid})
>99: (ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.USDJPY.ask},
>ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.Expression.B})
>100: (ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.USDJPY.ask},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.marketData.RecordAssembler.offer})
>101: (ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.USDJPY.ask},
>ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.MonitorValue2.input})
>102: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.marketData.Expression.output}, ptolemy.actor.TypedIOPort
>{.masterModel6ib.marketData.RecordAssembler.mid})
>103: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.marketData.RecordAssembler.output},
>ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.Publisher2.input})
>104: (ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.USDJPY2.bid},
>ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.Expression2.A})
>105: (ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.USDJPY2.bid},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.marketData.RecordAssembler2.bid})
>106: (ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.USDJPY2.bid},
>ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.MonitorValue.input})
>107: (ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.USDJPY2.ask},
>ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.Expression2.B})
>108: (ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.USDJPY2.ask},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.marketData.RecordAssembler2.offer})
>109: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.marketData.Expression2.output}, ptolemy.actor.TypedIOPort
>{.masterModel6ib.marketData.RecordAssembler2.mid})
>110: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.marketData.RecordAssembler2.output},
>ptolemy.actor.TypedIOPort {.masterModel6ib.marketData.Publisher.input})
>111: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.marketData.Publisher.output}, ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.Subscriber2.input})
>112: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.marketData.Publisher2.output}, ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.Subscriber.input})
>113: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.Subscriber.output},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.RecordDisassembler.input})
>114: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.RecordDisassembler.mid},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.MovingAverage.in})
>115: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.RecordDisassembler.mid},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.SlidingWindow.in})
>116: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.RecordDisassembler.mid},
>ptolemy.domains.fsm.modal.ModalPort
>{.masterModel6ib.meanReversionParent.meanRevision.ModalModel.midPrice})
>117: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.RecordDisassembler.mid},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.positionTrigger2.trigger})
>118: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.RecordDisassembler.mid},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.mid.input})
>119: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.RecordDisassembler.mid},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.level})
>120: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.RecordDisassembler.mid},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.positionTrigger2.trigger})
>121: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.Subscriber2.output},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.RecordDisassembler2.input})
>122: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.MovingAverage.average},
>ptolemy.domains.fsm.modal.ModalPort
>{.masterModel6ib.meanReversionParent.meanRevision2.ModalModel.mave})
>123: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.MovingAverage.average},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.Mave.input})
>124: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.SlidingWindow.output},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.ArrayVariance.in})
>125: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.ArrayVariance.variance},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.UnaryMathFunction.input})
>126: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.ArrayVariance.range},
>ptolemy.domains.fsm.modal.ModalPort
>{.masterModel6ib.meanReversionParent.meanRevision2.ModalModel.range})
>127: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.ArrayVariance.range},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.Range.input})
>128: (ptolemy.domains.fsm.modal.ModalPort
>{.masterModel6ib.meanReversionParent.meanRevision2.ModalModel.buy},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.BooleanToAnything.input})
>129: (ptolemy.domains.fsm.modal.ModalPort
>{.masterModel6ib.meanReversionParent.meanRevision2.ModalModel.buy},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.BooleanToAnything.input})
>130: (ptolemy.domains.fsm.modal.ModalPort
>{.masterModel6ib.meanReversionParent.meanRevision2.ModalModel.sell},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.BooleanToAnything2.input})
>131: (ptolemy.domains.fsm.modal.ModalPort
>{.masterModel6ib.meanReversionParent.meanRevision2.ModalModel.sell},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.BooleanToAnything2.input})
>132: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.BooleanToAnything.output},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator.input})
>133: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.BooleanToAnything2.output},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator.input})
>134: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator.output},
>ptolemy.domains.fsm.modal.ModalPort
>{.masterModel6ib.meanReversionParent.meanRevision2.ModalModel.position})
>135: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator.output},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.buySellTest.desiredPosition})
>136: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator.output},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.TicCount.input})
>137: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator.output},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const2.trigger})
>138: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator.output},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const.trigger})
>139: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator.output},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const3.trigger})
>140: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator.output},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const4.trigger})
>141: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator.output},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.AbsoluteValue.input})
>142: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator.output},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.TicCount2.input})
>143: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.positionTrigger2.output},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator2.input})
>144: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.Accumulator2.output},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.TicCount.input})
>145: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.UnaryMathFunction.output},
> ptolemy.domains.fsm.modal.ModalPort
>{.masterModel6ib.meanReversionParent.meanRevision2.ModalModel.volatility})
>146: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.UnaryMathFunction.output},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.StDev.input})
>147: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.output},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.Merge.input})
>148: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.buySellTest.output},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.buySell})
>149: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.buySellTest.output},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.TicCount2.input})
>150: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const2.output},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.model})
>151: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const.output},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.instrument})
>152: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const3.output},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.type})
>153: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Const4.output},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.timeout})
>154: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.AbsoluteValue.output},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Scale.input})
>155: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.Scale.output},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.amount})
>156: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.RecordDisassembler2.mid},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.MovingAverage.in})
>157: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.RecordDisassembler2.mid},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.SlidingWindow.in})
>158: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.RecordDisassembler2.mid},
>ptolemy.domains.fsm.modal.ModalPort
>{.masterModel6ib.meanReversionParent.meanRevision2.ModalModel.midPrice})
>159: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.RecordDisassembler2.mid},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.positionTrigger2.trigger})
>160: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.RecordDisassembler2.mid},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.mid.input})
>161: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.RecordDisassembler2.mid},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision2.orderBuilder.RecordAssembler.level})
>162: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.RecordDisassembler2.mid},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.positionTrigger.trigger})
>163: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.MovingAverage.average},
>ptolemy.domains.fsm.modal.ModalPort
>{.masterModel6ib.meanReversionParent.meanRevision.ModalModel.mave})
>164: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.MovingAverage.average},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.Mave.input})
>165: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.SlidingWindow.output},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.ArrayVariance.in})
>166: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.ArrayVariance.variance},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.UnaryMathFunction.input})
>167: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.ArrayVariance.range},
>ptolemy.domains.fsm.modal.ModalPort
>{.masterModel6ib.meanReversionParent.meanRevision.ModalModel.range})
>168: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.ArrayVariance.range},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.Range.input})
>169: (ptolemy.domains.fsm.modal.ModalPort
>{.masterModel6ib.meanReversionParent.meanRevision.ModalModel.buy},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.BooleanToAnything.input})
>170: (ptolemy.domains.fsm.modal.ModalPort
>{.masterModel6ib.meanReversionParent.meanRevision.ModalModel.buy},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.BooleanToAnything.input})
>171: (ptolemy.domains.fsm.modal.ModalPort
>{.masterModel6ib.meanReversionParent.meanRevision.ModalModel.sell},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.BooleanToAnything2.input})
>172: (ptolemy.domains.fsm.modal.ModalPort
>{.masterModel6ib.meanReversionParent.meanRevision.ModalModel.sell},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.BooleanToAnything2.input})
>173: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.BooleanToAnything.output},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.Accumulator.input})
>174: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.BooleanToAnything2.output},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.Accumulator.input})
>175: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.Accumulator.output},
>ptolemy.domains.fsm.modal.ModalPort
>{.masterModel6ib.meanReversionParent.meanRevision.ModalModel.position})
>176: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.Accumulator.output},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.buySellTest.desiredPosition})
>177: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.Accumulator.output},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.TicCount.input})
>178: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.Accumulator.output},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const2.trigger})
>179: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.Accumulator.output},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const.trigger})
>180: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.Accumulator.output},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const3.trigger})
>181: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.Accumulator.output},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const4.trigger})
>182: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.Accumulator.output},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.AbsoluteValue.input})
>183: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.Accumulator.output},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.TicCount2.input})
>184: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.positionTrigger2.output},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.Accumulator2.input})
>185: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.Accumulator2.output},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.TicCount.input})
>186: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.UnaryMathFunction.output},
> ptolemy.domains.fsm.modal.ModalPort
>{.masterModel6ib.meanReversionParent.meanRevision.ModalModel.volatility})
>187: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.UnaryMathFunction.output},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.StDev.input})
>188: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.output},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.Merge.input})
>189: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.buySellTest.output},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.buySell})
>190: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.buySellTest.output},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.TicCount2.input})
>191: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const2.output},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.model})
>192: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const.output},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.instrument})
>193: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const3.output},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.type})
>194: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.Const4.output},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.timeout})
>195: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.AbsoluteValue.output},
> ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.meanRevision.orderBuilder.RecordAssembler.amount})
>196: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.Merge.output},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.RecordDisassembler.input})
>197: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.positionTrigger.output},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.Accumulator.input})
>198: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.Accumulator.output},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.TicCount.input})
>199: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.positionTrigger2.output},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.Accumulator2.input})
>200: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.Accumulator2.output},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.meanReversionParent.TicCount2.input})
>201: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.RecordDisassembler.model},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.TicCount.input})
>202: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.RecordDisassembler.model},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.AddSubtract.plus})
>203: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.RecordDisassembler.model},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.source})
>204: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.RecordDisassembler.buySell},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.TicCount2.input})
>205: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.RecordDisassembler.buySell},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.AddSubtract.plus})
>206: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.RecordDisassembler.buySell},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.buysell})
>207: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.RecordDisassembler.instrument},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.TicCount3.input})
>208: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.RecordDisassembler.instrument},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.AddSubtract.plus})
>209: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.RecordDisassembler.instrument},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.instrument})
>210: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.RecordDisassembler.amount},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.TicCount4.input})
>211: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.RecordDisassembler.amount},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.AddSubtract.plus})
>212: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.RecordDisassembler.amount},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.size})
>213: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.RecordDisassembler.level},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.TicCount5.input})
>214: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.RecordDisassembler.level},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.AddSubtract.plus})
>215: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.RecordDisassembler.level},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.price})
>216: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.RecordDisassembler.type},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.TicCount6.input})
>217: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.RecordDisassembler.type},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.AddSubtract.plus})
>218: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.RecordDisassembler.timeout},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.TicCount7.input})
>219: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.RecordDisassembler.timeout},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.AddSubtract.plus})
>220: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.AddSubtract.output},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.LineWriter.input})
>221: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.AddSubtract.output},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.TicCount8.input})
>222: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.result},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.TicCount9.input})
>223: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.orderid},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.CompositeActor.FindOrderWS.orderid})
>224: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.orderid},
>ptolemy.actor.TypedIOPort {.masterModel6ib.orderManager.Display.input})
>225: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.SubmitOrderWS2.orderid},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.orderManager.TicCount10.input})
>226: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.CompositeActor.FindOrderWS.result},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.CompositeActor.TicCount.input})
>227: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.CompositeActor.FindOrderWS.status},
>ptolemy.actor.TypedIOPort {.masterModel6ib.orderManager.Display.input})
>228: (ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.CompositeActor.FindOrderWS.status},
>ptolemy.actor.TypedIOPort
>{.masterModel6ib.orderManager.CompositeActor.TicCount2.input})
>}
>
>
>      at ptolemy.graph.Graph.addNode(Graph.java:308)
>      at ptolemy.graph.Graph.addNodes(Graph.java:356)
>      at ptolemy.graph.Graph.addGraph(Graph.java:284)
>      at
>ptolemy.actor.util.FunctionDependencyOfCompositeActor._mergeActorsGraph(FunctionDependencyOfCompositeActor.java:377)
>      at
>ptolemy.actor.util.FunctionDependencyOfCompositeActor._constructDetailedDependencyGraph(FunctionDependencyOfCompositeActor.java:225)
>      at
>ptolemy.actor.util.FunctionDependencyOfCompositeActor._constructDependencyGraph(FunctionDependencyOfCompositeActor.java:146)
>      at
>ptolemy.actor.util.FunctionDependency._validate(FunctionDependency.java:273)
>      at
>ptolemy.actor.util.FunctionDependencyOfCompositeActor.getCycleNodes(FunctionDependencyOfCompositeActor.java:116)
>      at
>ptolemy.domains.de.kernel.DEDirector._constructDirectedGraph(DEDirector.java:1617)
>      at
>ptolemy.domains.de.kernel.DEDirector._computePortDepth(DEDirector.java:1386)
>      at
>ptolemy.domains.de.kernel.DEDirector._getDepthOfIOPort(DEDirector.java:1691)
>      at
>ptolemy.domains.de.kernel.DEDirector._enqueueTriggerEvent(DEDirector.java:1260)
>      at ptolemy.domains.de.kernel.DEReceiver.put(DEReceiver.java:150)
>      at ptolemy.actor.AbstractReceiver.putToAll(AbstractReceiver.java:315)
>      at ptolemy.actor.IOPort.broadcast(IOPort.java:279)
>      at ptolemy.actor.TypedIOPort.broadcast(TypedIOPort.java:236)
>      at
>com.hsbc.IMTActors.CurrencyPairListener.fire(CurrencyPairListener.java:122)
>      at ptolemy.domains.de.kernel.DEDirector.fire(DEDirector.java:505)
>      at ptolemy.actor.CompositeActor.fire(CompositeActor.java:370)
>      at ptolemy.actor.Manager.iterate(Manager.java:681)
>      at ptolemy.actor.Manager.execute(Manager.java:331)
>      at ptolemy.actor.Manager.run(Manager.java:1064)
>      at ptolemy.actor.Manager$3.run(Manager.java:1105)
>
>
>
>My actor source class is implemented as follows:
>
>
>/* An actor that asynchronously reads currency pair updates.
> */
>
>package com.hsbc.IMTActors;
>
>import java.io.IOException;
>import java.io.InputStream;
>import java.io.InputStreamReader;
>import java.net.Socket;
>
>import ptolemy.actor.TypedAtomicActor;
>import ptolemy.actor.TypedIOPort;
>import ptolemy.data.ArrayToken;
>import ptolemy.data.BooleanToken;
>import ptolemy.data.DoubleToken;
>import ptolemy.data.IntToken;
>import ptolemy.data.StringToken;
>import ptolemy.data.Token;
>import ptolemy.data.UnsignedByteToken;
>import ptolemy.data.expr.Parameter;
>import ptolemy.data.type.ArrayType;
>import ptolemy.data.type.BaseType;
>import ptolemy.kernel.CompositeEntity;
>import ptolemy.kernel.util.Attribute;
>import ptolemy.kernel.util.IllegalActionException;
>import ptolemy.kernel.util.InternalErrorException;
>import ptolemy.kernel.util.NameDuplicationException;
>import ptolemy.domains.de.kernel.DEDirector;
>
>//////////////////////////////////////////////////////////////////////////
>
>/**
>    an actor to subscribe to the IMT data feed and provide top-of-book
>    price data for a single currency-pair instrument.
>      @author Ian Brown
> */
>public class CurrencyPairListener extends TypedAtomicActor {
>    /** Construct an actor with the given container and name.
>     *  @param container The container.
>     *  @param name The name of this actor.
>     *  @exception IllegalActionException If the actor cannot be contained
>     *   by the proposed container.
>     *  @exception NameDuplicationException If the container already has an
>     *   actor with this name.
>     */
>    public CurrencyPairListener(CompositeEntity container, String name)
>            throws NameDuplicationException, IllegalActionException {
>        super(container, name);
>
>        // ports - Ordering here sets the order they show up in Vergil
>
>        bid = new TypedIOPort(this, "bid");
>        bid.setTypeEquals(BaseType.DOUBLE);
>        bid.setOutput(true);
>
>        ask = new TypedIOPort(this, "ask");
>        ask.setTypeEquals(BaseType.DOUBLE);
>        ask.setOutput(true);
>
>        // parameters - Ordering here sets the order they show up in Vergil
>        portNumberParam = new Parameter(this, "portNumber");
>        portNumberParam.setTypeEquals(BaseType.INT);
>        portNumberParam.setToken(new IntToken(12345));
>
>        serverAddressParam = new Parameter(this, "serverAddress");
>        serverAddressParam.setTypeEquals(BaseType.STRING);
>        serverAddressParam.setToken(new StringToken("128.8.120.18"));
>
>        instrumentParam = new Parameter(this, "Instrument");
>        instrumentParam.setTypeEquals(BaseType.STRING);
>        instrumentParam.setToken(new StringToken("EURGBP"));
>
>    }
>
>    ///////////////////////////////////////////////////////////////////
>    ////                     ports and parameters                  ////
>    // Ports and parameters are in the same order hare as in the
>constructor.
>
>    /** This port outputs the latest bid price. */
>    public TypedIOPort bid;
>
>    /** This port outputs the latest ask price. */
>    public TypedIOPort ask;
>
>    /** The port number to connect to. */
>    public Parameter portNumberParam;
>
>    /** The IP address to connect to. */
>    public Parameter serverAddressParam;
>
>      /** The instrument we're watching. */
>      public Parameter instrumentParam;
>
>    ///////////////////////////////////////////////////////////////////
>    ////                         public methods                    ////
>
>      /**
>     *  @exception IllegalActionException If the data cannot be
>     *  converted into a token of the same type as the configured type
>     *  of the output port.
>     */
>    public void fire() throws IllegalActionException {
>        super.fire();
>
>        // The part dependent on the packet's contents must be synchronized
>        // to ensure that the thread does not mess with it while it is in
>use
>        // here.
>        synchronized (_syncFireAndThread) {
>                  if (_cur_bid > 0.){
>                        _bidToken = new DoubleToken(_cur_bid);
>                  } else {
>                        _bidToken = null;
>                  }
>                  if (_cur_ask > 0.){
>                        _askToken = new DoubleToken(_cur_ask);
>                  } else {
>                        _askToken = null;
>                  }
>            _syncFireAndThread.notifyAll();
>
>
>                  if (_bidToken != null) bid.broadcast(_bidToken);
>                  if (_askToken != null) ask.broadcast(_askToken);
>            } // sync
>    }
>
>    /** Initialize this actor, including the creation of an evaluation
>     *  variable for the Ptolemy parser, a DatagramSocket for
>     *  receiving datagrams, and a SocketReadingThread for blocking in
>     *  the DatagramSocket.receive() method call.  This method is used
>     *  as a bookend with wrapup() being the other end.  Resources
>     *  created/allocated here are released in wrapup().
>     *  @exception IllegalActionException If the
>     *  <i>localSocketNumber</i> parameter has a value outside 0..65535
>     * or a socket could not be created.  */
>    public void initialize() throws IllegalActionException {
>        super.initialize();
>
>        _cur_bid = -1.0; _cur_ask = -1.0;
>
>        int portNumber = ((IntToken)
>(portNumberParam.getToken())).intValue();
>
>        if ((portNumber < 0) || (portNumber > 65535)) {
>            throw new IllegalActionException(this, portNumberParam
>                    + " is outside the required 0..65535 range");
>        }
>
>        String addr =
>((StringToken)(serverAddressParam.getToken())).stringValue();
>
>        if (_debugging) {
>            _debug(this + "portNumber = " + portNumber + ", Address = " +
>addr);
>        }
>
>
>        // Allocate a new socket.
>        try {
>            if (_debugging) {
>                _debug("Trying to create a new socket on port "
>                        + portNumber);
>            }
>
>            _socket = new Socket(addr, portNumber);
>            if (_debugging) {
>                _debug("Socket created successfully!");
>            }
>        } catch (Exception ex) {
>            throw new IllegalActionException(this, ex,
>                    "Failed to create a new socket on port " + portNumber);
>        }
>
>        // Allocate & start a thread to read from the socket.
>        _socketReadingThread = new SocketReadingThread();
>        _socketReadingThread.start();
>    }
>
>    /** Override the setContainer() method to call wrapup() if the
>     *  actor is deleted while the model is running.  Wrapup() then
>     *  releases resources acquired by initialize().
>     */
>    public void setContainer(CompositeEntity container)
>            throws IllegalActionException, NameDuplicationException {
>        // FIXME: Is this necessary?
>        if (container != getContainer()) {
>            wrapup();
>        }
>        super.setContainer(container);
>    }
>
>    /** Release resources acquired in the initialize() method.
>     */
>    public void wrapup() throws IllegalActionException {
>        if (_socketReadingThread != null) {
>            _socketReadingThread.interrupt();
>            _socketReadingThread = null;
>        } else {
>            if (_debugging) {
>                _debug("socketReadingThread null at wrapup!?");
>            }
>        }
>
>        if (_socket != null) {
>            try {
>                _socket.close();
>                _socket = null;
>            } catch (IOException ex) {
>                throw new IllegalActionException(this, ex, "Failed to close
>socket");
>            }
>        } else {
>            if (_debugging) {
>                _debug("Socket null at wrapup!?");
>            }
>        }
>    }
>
>    ///////////////////////////////////////////////////////////////////
>    ////                         private variables                 ////
>    // Synchronization objects.  Used for synchronization between the
>fire() call and the reading thread.
>    private Object _syncFireAndThread = new Object();
>
>      // The socket we are reading from
>    private Socket _socket;
>
>    private SocketReadingThread _socketReadingThread;
>
>    private DoubleToken _bidToken;
>    private DoubleToken _askToken;
>
>    private double _cur_bid = -1;
>    private double _cur_ask = -1;
>
>    ///////////////////////////////////////////////////////////////////
>    ////                        private inner class                ////
>    private class SocketReadingThread extends Thread {
>        /** Constructor.  Create a new thread to listen for packets
>         *  at the socket opened by the actor's [pre]initialize method.
>         */
>        public SocketReadingThread() {
>        }
>
>        /** Run.  Run the thread.  This begins running when .start()
>         *  is called on the thread.
>         */
>        public void run() {
>                  String instrument;
>                  try {
>                        instrument =
>((StringToken)(instrumentParam.getToken())).stringValue();
>              } catch (Exception ex) {
>                  throw new RuntimeException("failed to get the currency
>instrument", ex);
>              }
>                  InputStream _socketStream;
>                  try {
>                        _socketStream = _socket.getInputStream();
>            } catch (IOException ex) {
>                        if (_debugging){
>                              _debug("IOException: " + ex);
>                        }
>                        return;
>                  }
>
>                  // Attempt to receive something from the socket!
>                  boolean receiving = true;
>
>                  StringBuffer sb = new StringBuffer(64);
>                  try {
>                        while (true) {
>                              // NOTE: The following call may block.
>                              int c = _socketStream.read();
>//                                  if (_debugging){
>//                                        _debug(Integer.toString(c));
>//                                  }
>                              if (c > 0x0A){
>                                    sb.append((char)c);
>                              } else if (0 == c){
>                                    // A packet was successfully received!
>                                    if (_debugging){
>                                          _debug(sb.toString());
>                                    }
>                                    if (processInput(sb.toString(),
>instrument)){
>                                          try {
>                                                // fireAtCurrentTime has
>the result that all events are called at model
>                                                // time zero with an
>incrementing microstep. Whilst this will work for most
>                                                // scenarios, it has the
>effect that the timed plotter just displays a vertical
>                                                // line. For that reason,
>we need to figure out the correct time to fire the event at.
>
>//getDirector().fireAtCurrentTime(CurrencyPairListener.this);
>                                                //
>                                                DEDirector director =
>(DEDirector)(getDirector());
>                                                long start_time =
>director.getRealStartTimeMillis();
>                                                long time_now =
>java.lang.System.currentTimeMillis();
>                                                double model_time =
>(time_now - start_time) / 1000.0;
>
>director.fireAt(CurrencyPairListener.this, new
>ptolemy.actor.util.Time(director, model_time));
>                                          } catch (IllegalActionException
>ex) {
>                                                throw new
>RuntimeException("fireAtCurrentTime() "
>                                                            + "threw an
>exception", ex);
>                                          }
>                                    }
>                                    sb.setLength(0);
>                              }
>                        }
>                  } catch (IOException ex) {
>                        if (_debugging){
>                              _debug("IOException: " + ex);
>                        }
>                  } catch (NullPointerException ex) {
>                        if (_debugging) {
>                              _debug("--!!--" + (_socket == null));
>                        }
>                  }
>        }
>
>            // process the raw input from the TCP/IP stream
>            // @return true if the price has changed
>            //
>            private boolean processInput(String in_string, String
>instrument){
>                  boolean retval = false;
>                  String[] s = in_string.split(":");
>                  if (s.length == 5 && s[0].equals("CY")){
>                        if (s[1].equals(instrument)){
>                              try {
>                                    Double new_val = new Double(s[3]);
>
>                                  synchronized (_syncFireAndThread) {
>                                          // set the output value
>                                          if(s[2].equals("S")){
>                                                _cur_ask =
>new_val.doubleValue();
>                                          } else {
>                                                _cur_bid =
>new_val.doubleValue();
>                                          }
>                                          retval = true;
>                                    }
>                              } catch (NumberFormatException nfe){
>                                  if (_debugging) {
>                              _debug(s[3] + " is not a valid price");
>                          }
>                              }
>                        }
>                  } else {
>                        if (_debugging){
>                              _debug("length = " + s.length + " s[0] = " +
>s[0]);
>                        }
>                  }
>                  return retval;
>            }
>    }
>}
>
>
>
>Thanks,
>
>Ian
>
>
>************************************************************
>HSBC Bank plc may be solicited in the course of its placement efforts for a
>new issue, by investment clients of the firm for whom the Bank as a firm
>already provides other services. It may equally decide to allocate to its
>own proprietary book or with an associate of HSBC Group. This represents a
>potential conflict of interest. HSBC Bank plc has internal arrangements
>designed to ensure that the firm would give unbiased and full advice to the
>corporate finance client about the valuation and pricing of the offering as
>well as internal systems, controls and procedures to identify and manage
>conflicts of interest.
>
>HSBC Bank plc
>Registered Office: 8 Canada Square, London E14 5HQ, United Kingdom
>Registered in England - Number 14259
>Authorised and regulated by the Financial Services Authority.
>************************************************************
>
>-----------------------------------------
>SAVE PAPER - THINK BEFORE YOU PRINT!
>
>This transmission has been issued by a member of the HSBC Group
>"HSBC" for the information of the addressee only and should not be
>reproduced and/or distributed to any other person. Each page
>attached hereto must be read in conjunction with any disclaimer
>which forms part of it. Unless otherwise stated, this transmission
>is neither an offer nor the solicitation of an offer to sell or
>purchase any investment. Its contents are based on information
>obtained from sources believed to be reliable but HSBC makes no
>representation and accepts no responsibility or liability as to its
>completeness or accuracy.
>_______________________________________________
>Kepler-dev mailing list
>Kepler-dev at ecoinformatics.org
>http://mercury.nceas.ucsb.edu/ecoinformatics/mailman/listinfo/kepler-dev

------------ 
Edward A. Lee
Chair of EECS and Robert S. Pepper Distinguished Professor
231 Cory Hall, UC Berkeley, Berkeley, CA 94720-1770
phone: 510-642-0253, fax: 510-642-2845
eal at eecs.Berkeley.EDU, http://ptolemy.eecs.berkeley.edu/~eal  



More information about the Kepler-dev mailing list