Ejemplo n.º 1
0
            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));
            }
Ejemplo n.º 2
0
            public NetworkNodeType GetNodeType(int nodeId)
            {
                NodeTypesPage page = LoadNodeTypePage(NetworkObjectSerializer.Page(nodeId));

                if (page == null)
                {
                    return(NetworkNodeType.Unknown);
                }

                return(page.GetNodeType(nodeId));
            }
Ejemplo n.º 3
0
            public int GetNodeFcid(int nodeId)
            {
                NodeFcIdsPage page = LoadNodeFcIdPage(NetworkObjectSerializer.Page(nodeId));

                if (page == null)
                {
                    return(-1);
                }

                return(page.GetNodeFcId(nodeId));
            }
Ejemplo n.º 4
0
            public bool GetSwitchState(int nodeId)
            {
                SwitchPage page = LoadSwitchPage(NetworkObjectSerializer.Page(nodeId));

                if (page == null)
                {
                    return(false);
                }

                return(page.GetSwitchState(nodeId));
            }
Ejemplo n.º 5
0
            public IGraphEdge GetEdge(int eid)
            {
                EdgePage page = LoadEdgePage(NetworkObjectSerializer.Page(eid));

                if (page == null)
                {
                    return(null);
                }

                return(page.GetEdge(eid));
            }
Ejemplo n.º 6
0
            public GraphTableRows QueryN1(int n1)
            {
                GraphPage page = LoadGraphPage(NetworkObjectSerializer.Page(n1));

                if (page == null)
                {
                    return(new GraphTableRows());
                }

                return(page.QueryN1(n1));
            }
Ejemplo n.º 7
0
            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);
            }
Ejemplo n.º 8
0
            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);
                }
            }
Ejemplo n.º 9
0
            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); }
            }