[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