public static void CycleInputToOutput(string typeHint) { var openGammaFudgeContext = new OpenGammaFudgeContext(); var fudgeSerializer = openGammaFudgeContext.GetSerializer(); using (var openStandardInput = Console.OpenStandardInput()) using (var openStandardOutput = Console.OpenStandardOutput()) { var fudgeEncodedStreamWriter = new FudgeEncodedStreamWriter(openGammaFudgeContext, openStandardOutput); var fudgeEncodedStreamReader = new FudgeEncodedStreamReader(openGammaFudgeContext, openStandardInput); var mappingStrategy = (IFudgeTypeMappingStrategy)openGammaFudgeContext.GetProperty(ContextProperties.TypeMappingStrategyProperty); var mappedtype = mappingStrategy.GetType(typeHint) ?? typeof(object); var hintType = typeof(TestWrapper <>).MakeGenericType(mappedtype); var wrapper = (ITestWrapper)Deserialize(fudgeSerializer, hintType, fudgeEncodedStreamReader); object hydratedObject = wrapper.TestObject; CheckEqualityIfAppropriate(hydratedObject, mappedtype); fudgeSerializer.Serialize(fudgeEncodedStreamWriter, wrapper); openStandardOutput.Flush(); } }
private static void AssertEncodeDecodeCycle <T>(T obj) { var openGammaFudgeContext = new OpenGammaFudgeContext(); var msg = openGammaFudgeContext.GetSerializer().SerializeToMsg(obj); var roundTripped = openGammaFudgeContext.GetSerializer().Deserialize <T>(msg); Assert.Equal(obj, roundTripped); }
private static RemoteEngineContextFactory GetContextFactory(Uri serviceUri) { var fudgeContext = new OpenGammaFudgeContext(); return new RemoteEngineContextFactory(fudgeContext, serviceUri) { GlobalLogger = new ConsoleLogger(LoggerLevel.Debug) }; }
public void SerializerIsThreadSafe() { for (int i = 0; i < 1000; i++) { var context = new OpenGammaFudgeContext(); Parallel.For(1, 4 * Environment.ProcessorCount, _ => Thrash(context)); } }
public TReq Deserialize <TReq>(OpenGammaFudgeContext context, IFudgeStreamReader stream, SerializationTypeMap typeMap) { if (typeof(TReq) != typeof(T)) { throw new ArgumentException(string.Format("Unexpected type {0}", typeof(TReq))); } return((TReq)(object)Deserialize(context, stream, typeMap)); }
public RemoteEngineContextFactory(OpenGammaFudgeContext fudgeContext, Uri rootUri) { _fudgeContext = fudgeContext; _rootUri = rootUri; _rootRest = new RestTarget(_fudgeContext, rootUri); _componentsMessage = new Lazy <IFudgeFieldContainer>(GetComponentsMessage); _componentRepository = new Lazy <ComponentRepository>(() => GetComponentRepository(_componentsMessage.Value)); }
protected RestfulJmsResultConsumerBase(OpenGammaFudgeContext fudgeContext, RestTarget clientUri, MQTemplate mqTemplate, Action <object, TListener> resultAction) { FudgeContext = fudgeContext; _mqTemplate = mqTemplate; REST = clientUri; _listenerReference = new ListenerReference(resultAction); //TODO: check that this doesn't reference us _heartbeatSender = new HeartbeatSender(TimeSpan.FromSeconds(10), REST.Resolve("heartbeat")); }
private static RemoteEngineContextFactory GetContextFactory(Uri serviceUri) { var fudgeContext = new OpenGammaFudgeContext(); return(new RemoteEngineContextFactory(fudgeContext, serviceUri) { GlobalLogger = new ConsoleLogger(LoggerLevel.Debug) }); }
protected T1 DeserializeStandard <T1>(OpenGammaFudgeContext context, IFudgeStreamReader reader, SerializationTypeMap typeMap) { //Called just after SubmessageFieldStart for a field containing a T1 //TODO: should handle T1 being stream serializable FudgeMsg dequeueMessage = ReadOneSubmessage(context, reader); var fudgeSerializer = new FudgeSerializer(context, typeMap); return(fudgeSerializer.Deserialize <T1>(dequeueMessage)); }
public void SerializerIsFast() { var context = new OpenGammaFudgeContext(); for (int i = 0; i < 200000; i++) { Thrash(context); } }
public RemoteEngineContextFactory(OpenGammaFudgeContext fudgeContext, Uri rootUri) { _fudgeContext = fudgeContext; _rootUri = rootUri; _rootRest = new RestTarget(_fudgeContext, rootUri); _componentsMessage = new Lazy<IFudgeFieldContainer>(GetComponentsMessage); _componentRepository = new Lazy<ComponentRepository>(() => GetComponentRepository(_componentsMessage.Value)); }
protected override FudgeListWrapper <T> Deserialize(OpenGammaFudgeContext context, IFudgeStreamReader stream, SerializationTypeMap typeMap) { bool inList = false; var items = new List <T>(); while (stream.HasNext) { switch (stream.MoveNext()) { case FudgeStreamElement.MessageStart: break; case FudgeStreamElement.MessageEnd: return(new FudgeListWrapper <T>(items)); case FudgeStreamElement.SimpleField: if (stream.FieldName == null && stream.FieldOrdinal == 0) { continue; } throw new ArgumentException(); case FudgeStreamElement.SubmessageFieldStart: if (stream.FieldName == "list" && stream.FieldOrdinal == null) { if (inList) { throw new ArgumentException(); } inList = true; } else if (inList) { var deserializeStandard = DeserializeStandard <T>(context, stream, typeMap); items.Add(deserializeStandard); } else { throw new ArgumentException(); } break; case FudgeStreamElement.SubmessageFieldEnd: if (!inList) { throw new ArgumentException(); } inList = false; break; default: break; // Unknown } } throw new ArgumentException(); }
private static FudgeSerializer Thrash(OpenGammaFudgeContext context) { var fudgeSerializer = context.GetSerializer(); var graph = new A { B = new B { C = new C { A = new A { B = new B() } } } }; var msg = fudgeSerializer.SerializeToMsg(graph); A graphRet = fudgeSerializer.Deserialize<A>(msg); Assert.NotNull(graphRet.B.C.A.B); Assert.Null(graphRet.B.C.A.B.C); return fudgeSerializer; }
public ClientResultStream(OpenGammaFudgeContext fudgeContext, MQTemplate mqTemplate, bool checkSeqNumber) { _mqTemplate = mqTemplate; _fudgeMessageDecoder = new FudgeMessageDecoder(fudgeContext, checkSeqNumber); _connection = _mqTemplate.CreateConnection(); _session = _connection.CreateSession(); _destination = _session.CreateTemporaryQueue(); _consumer = _session.CreateConsumer(_destination); _consumer.Listener += RawMessageReceived; _connection.Start(); }
public static void CheckEquality <T>(IEquatable <T> obj, Type mappedType) { if (!obj.Equals((T)obj)) { throw new Exception("Object is not self equal"); } var openGammaFudgeContext = new OpenGammaFudgeContext(); var fudgeSerializer = openGammaFudgeContext.GetSerializer(); //TODO type hint FudgeMsg msg = fudgeSerializer.SerializeToMsg(obj); object rehydrated = fudgeSerializer.Deserialize(msg, mappedType); if (!obj.Equals((T)rehydrated)) { throw new Exception("roundtripped object not equals"); } }
private static FudgeMsg ReadOneSubmessage(OpenGammaFudgeContext context, IFudgeStreamReader reader) { var writer = new FudgeMsgStreamWriter(context); writer.StartMessage(); int depth = 1; while (reader.HasNext) { switch (reader.MoveNext()) { case FudgeStreamElement.MessageStart: throw new ArgumentException(); case FudgeStreamElement.MessageEnd: throw new ArgumentException(); case FudgeStreamElement.SimpleField: writer.WriteField(reader.FieldName, reader.FieldOrdinal, reader.FieldType, reader.FieldValue); break; case FudgeStreamElement.SubmessageFieldStart: depth++; writer.StartSubMessage(reader.FieldName, reader.FieldOrdinal); break; case FudgeStreamElement.SubmessageFieldEnd: depth--; if (depth == 0) { writer.EndMessage(); return(writer.DequeueMessage()); } writer.EndSubMessage(); break; default: break; // Unknown } } throw new ArgumentException(); }
private static FudgeSerializer Thrash(OpenGammaFudgeContext context) { var fudgeSerializer = context.GetSerializer(); var graph = new A { B = new B { C = new C { A = new A { B = new B() } } } }; var msg = fudgeSerializer.SerializeToMsg(graph); A graphRet = fudgeSerializer.Deserialize <A>(msg); Assert.NotNull(graphRet.B.C.A.B); Assert.Null(graphRet.B.C.A.B.C); return(fudgeSerializer); }
public RemoteViewClient(OpenGammaFudgeContext fudgeContext, RestTarget clientUri, MQTemplate mqTemplate, RemoteViewProcessor viewProcessor) : base(fudgeContext, clientUri, mqTemplate, (o, l) => new ResultEvent(o).ApplyTo(l)) { _viewProcessor = viewProcessor; }
public FudgeMessageDecoder(OpenGammaFudgeContext fudgeContext, bool checkSeqNumber) { _fudgeContext = fudgeContext; _checkSeqNumber = checkSeqNumber; }
private readonly ManualResetEventSlim _startSignalReceivedEvent = new ManualResetEventSlim(); //NOTE: can't dispose this easily #endregion Fields #region Constructors public ClientResultStream(OpenGammaFudgeContext fudgeContext, MQTemplate mqTemplate) : this(fudgeContext, mqTemplate, true) { }
public ClientResultStream(OpenGammaFudgeContext fudgeContext, MQTemplate mqTemplate) : this(fudgeContext, mqTemplate, true) { }
public FinancialClient(RestTarget rest, OpenGammaFudgeContext fudgeContext) { _rest = rest; _fudgeContext = fudgeContext; _heartbeatSender = new HeartbeatSender(TimeSpan.FromMinutes(5), _rest.Resolve("heartbeat")); }
public RemoteHistoricalTimeSeriesSource(OpenGammaFudgeContext fudgeContext, RestTarget rest) { _fudgeContext = fudgeContext; _rest = rest; }
public FinancialUser(OpenGammaFudgeContext fudgeContext, RestTarget restTarget, string userName) { _fudgeContext = fudgeContext; _restTarget = restTarget; _userName = userName; }
public RemoteChangeManger(RestTarget restTarget, OpenGammaFudgeContext fudgeContext) { _topicTemplate = new Lazy<MQTopicTemplate>(() => GetTopicTemplate(restTarget)); _fudgeDecoder = new FudgeMessageDecoder(fudgeContext, false); }
protected abstract T Deserialize(OpenGammaFudgeContext context, IFudgeStreamReader stream, SerializationTypeMap typeMap);
public RemoteChangeManger(RestTarget restTarget, OpenGammaFudgeContext fudgeContext) { _topicTemplate = new Lazy <MQTopicTemplate>(() => GetTopicTemplate(restTarget)); _fudgeDecoder = new FudgeMessageDecoder(fudgeContext, false); }
public RemoteMarketDataSnapshotMaster(RestTarget restTarget, OpenGammaFudgeContext fudgeContext) { _restTarget = restTarget; _fudgeContext = fudgeContext; }
protected override IDependencyGraph Deserialize(OpenGammaFudgeContext context, IFudgeStreamReader stream, SerializationTypeMap typeMap) { string calcConfigName = null; var nodes = new List <DependencyNode>(); int edgeFrom = -1; while (stream.HasNext) { switch (stream.MoveNext()) { case FudgeStreamElement.MessageStart: break; case FudgeStreamElement.MessageEnd: return(new DependencyGraph(calcConfigName, nodes)); case FudgeStreamElement.SimpleField: switch (stream.FieldName) { case "edge": var int32 = Convert.ToInt32(stream.FieldValue); if (edgeFrom < 0) { edgeFrom = int32; } else { int to = int32; DependencyNode inputNode = nodes[edgeFrom]; DependencyNode dependentNode = nodes[to]; dependentNode.AddInputNode(inputNode); edgeFrom = -1; } break; case "calculationConfigurationName": if (calcConfigName != null) { throw new ArgumentException(); } calcConfigName = (string)stream.FieldValue; break; default: if (stream.FieldOrdinal == 0 && stream.FieldType == StringFieldType.Instance) { break; } throw new ArgumentException(); } break; case FudgeStreamElement.SubmessageFieldStart: if (stream.FieldName == "dependencyNode" && stream.FieldOrdinal == null) { var deserializeStandard = DeserializeStandard <DependencyNode>(context, stream, typeMap); nodes.Add(deserializeStandard); } else { throw new ArgumentException(); } break; case FudgeStreamElement.SubmessageFieldEnd: throw new ArgumentException(); default: break; // Unknown } } throw new ArgumentException(); }
public RemotePortfolioMaster(RestTarget restTarget, OpenGammaFudgeContext fudgeContext) { _restTarget = restTarget; _fudgeContext = fudgeContext; }
public void SerializerKindOfWorks() { var context = new OpenGammaFudgeContext(); Thrash(context); }
public RemoteViewProcessor(OpenGammaFudgeContext fudgeContext, RestTarget rest, MQTemplate mqTemplate) { _fudgeContext = fudgeContext; _rest = rest; _mqTemplate = mqTemplate; }
public StreamingFudgeBuilder(OpenGammaFudgeContext context) { _context = context; }
internal RemoteEngineContext(OpenGammaFudgeContext fudgeContext, Uri rootUri, ComponentRepository repository) { _fudgeContext = fudgeContext; _rootUri = rootUri; _repository = repository; }