public double GetEdgeWeight(Guid guid, int eid) { int pageIndex = NetworkObjectSerializer.Page(eid); IWeightPage page = LoadWeightPage(guid, pageIndex); if (page == null) { return(0.0); } // Page 0: Edge 1...512: weightIndex: 0..511 auf Page 1 // Page 1: Edge 512..1024: weightIndex: 0..511 auf Page 2 // ... .... // Beispiele: // 0-> weightIndex=( 1-1)-0*512=0 // 512-> weightIndex=( 512-1)-0*512=511 // 513-> weightIndex=( 513-1)-1*512=0 // 1024-> weightIndex=(1024-1)-1*512=511 // ... int weightIndex = (eid - 1) - pageIndex * NetworkObjectSerializer.PageSize; return(page.GetWeight(weightIndex)); }
public NetworkNodeType GetNodeType(int nodeId) { NodeTypesPage page = LoadNodeTypePage(NetworkObjectSerializer.Page(nodeId)); if (page == null) { return(NetworkNodeType.Unknown); } return(page.GetNodeType(nodeId)); }
public int GetNodeFcid(int nodeId) { NodeFcIdsPage page = LoadNodeFcIdPage(NetworkObjectSerializer.Page(nodeId)); if (page == null) { return(-1); } return(page.GetNodeFcId(nodeId)); }
public bool GetSwitchState(int nodeId) { SwitchPage page = LoadSwitchPage(NetworkObjectSerializer.Page(nodeId)); if (page == null) { return(false); } return(page.GetSwitchState(nodeId)); }
public IGraphEdge GetEdge(int eid) { EdgePage page = LoadEdgePage(NetworkObjectSerializer.Page(eid)); if (page == null) { return(null); } return(page.GetEdge(eid)); }
public GraphTableRows QueryN1(int n1) { GraphPage page = LoadGraphPage(NetworkObjectSerializer.Page(n1)); if (page == null) { return(new GraphTableRows()); } return(page.QueryN1(n1)); }
public byte[] Serialize() { BinaryWriter writer = new BinaryWriter(new MemoryStream()); writer.Write(_version); writer.Write(_complexEdges); writer.Write(_isSwitch); NetworkObjectSerializer.SerializeString(writer, _switchFieldname); byte[] bytes = new byte[writer.BaseStream.Length]; writer.BaseStream.Position = 0; writer.BaseStream.Read(bytes, (int)0, (int)writer.BaseStream.Length); writer.Close(); return(bytes); }
private EdgePage LoadEdgePage(int page) { lock (_thisLock) { if (_edgePages.ContainsKey(page)) { return(_edgePages[page]); } if (_dbfactory != null) { try { using (DbConnection connection = _dbfactory.CreateConnection()) { connection.ConnectionString = _connectionString; DbCommand command = _dbfactory.CreateCommand(); command.Connection = connection; command.CommandText = "SELECT " + _dbNames.DbColName("Data") + " FROM " + _edgeTableName + " WHERE " + _dbNames.DbColName("Page") + "=" + page; connection.Open(); DbDataReader reader = command.ExecuteReader(); if (reader.Read()) { object obj = reader.GetValue(0); connection.Close(); EdgePage newEdgePage = NetworkObjectSerializer.DeserializeEdges((byte[])obj); _edgePages.Add(page, newEdgePage); return(newEdgePage); } connection.Close(); } } catch { } } return(null); } }
public bool Deserialize(byte[] bytes) { try { BinaryReader r = new BinaryReader(new MemoryStream()); r.BaseStream.Write(bytes, 0, (bytes.Length)); r.BaseStream.Position = 0; _version = r.ReadInt32(); if (_version >= 1) { _complexEdges = r.ReadBoolean(); } if (_version >= 2) { _isSwitch = r.ReadBoolean(); _switchFieldname = NetworkObjectSerializer.DeserializeString(r); } return(true); } catch { return(false); } }