TransactionalNodeService.QueryResponse.GetPage C# (CSharp) Method

GetPage() public method

public GetPage ( int startingObjectIndex ) : QueryResponse
startingObjectIndex int
return QueryResponse
        public QueryResponse GetPage(int startingObjectIndex)
        {
            SortedList<Guid, object> sortedObjects = new SortedList<Guid, object>();

            QueryResponse pagedQueryResponse = new QueryResponse();
            pagedQueryResponse.Nodes = new Dictionary<Guid, Node>();
            pagedQueryResponse.Relationships = new Dictionary<Guid, Relationship>();

            pagedQueryResponse.Domain = Domain;
            pagedQueryResponse.NodeContext = NodeContext;
            pagedQueryResponse.StartingObjectIndex = startingObjectIndex;
            //pagedQueryResponse.LastObjectIndex = startingObjectIndex + 2000;
            pagedQueryResponse.FinalObjectIndex = 0;

            foreach (KeyValuePair<Guid, Node> nodePair in Nodes)
            {
                sortedObjects.Add(nodePair.Key, nodePair.Value);

                pagedQueryResponse.FinalObjectIndex++;

                /// Adding up all the metadata.
                //pagedQueryResponse.FinalObjectIndex += nodePair.Value.Metadata.Count;
            }

            foreach (KeyValuePair<Guid, Relationship> relationshipPair in Relationships)
            {
                sortedObjects.Add(relationshipPair.Key, relationshipPair.Value);

                pagedQueryResponse.FinalObjectIndex++;

                /// Adding up all the descriptors.
                //pagedQueryResponse.FinalObjectIndex += relationshipPair.Value.Nodes.Count;
            }

            int sortedObjectIndex = pagedQueryResponse.StartingObjectIndex - 1;
            int totalObjectCount = 0;

            while (totalObjectCount < 3000)
            {
                sortedObjectIndex++;

                if (sortedObjectIndex >= sortedObjects.Count)
                {
                    break;
                }

                object sortedObject = sortedObjects.Values[sortedObjectIndex];

                if (sortedObject is Node)
                {
                    Node node = sortedObject as Node;

                    /// Add one for the node;
                    totalObjectCount++;

                    /// Add the number of metadata;
                    totalObjectCount += node.Metadata.Count;

                    pagedQueryResponse.Nodes.Add(node.NodeUid, node);
                }
                else if (sortedObject is Relationship)
                {
                    Relationship relationship = sortedObject as Relationship;

                    /// Add one for the relationship.
                    totalObjectCount++;

                    // Add the number of descriptors.
                    totalObjectCount += relationship.Nodes.Count;

                    pagedQueryResponse.Relationships.Add(relationship.RelationshipUid, relationship);
                }
            }

            pagedQueryResponse.LastObjectIndex = sortedObjectIndex;
            pagedQueryResponse.FinalObjectIndex = sortedObjects.Count;

            return pagedQueryResponse;
        }
    }