コード例 #1
0
ファイル: SessionNodes.cs プロジェクト: branan/PlasmaDotNet
        private void IFetchNodeRefs()
        {
            pnCli2Vault_FetchNodeRefs req = new pnCli2Vault_FetchNodeRefs();
            req.Read(fStream);

            // Go ahead and prepare the response in case anything terrible happens
            pnVault2Cli_NodeRefsFetched reply = new pnVault2Cli_NodeRefsFetched();
            reply.fResult = ENetError.kNetSuccess;
            reply.fTransID = req.fTransID;

            // Let's spider the tree now :)
            List<uint> toFetch = new List<uint>();
            List<pnVaultNodeRef> refs = new List<pnVaultNodeRef>();
            toFetch.Add(req.fNodeID);
            for (int i = 0; i < toFetch.Count; i++) {
                pnSqlSelectStatement select = new pnSqlSelectStatement();
                select.AddColumn("ChildIdx");
                select.AddColumn("SaverIdx");
                select.AddWhere("ParentIdx", toFetch[i]);
                select.Table = "NodeRefs";

                try {
                    IDataReader r = select.Execute(fDb);
                    while (r.Read()) {
                        pnVaultNodeRef vnr = new pnVaultNodeRef(toFetch[i], (uint)r["ChildIdx"], (uint)r["SaverIdx"]);
                        if (!toFetch.Contains(vnr.fChild))
                            toFetch.Add(vnr.fChild);
                        refs.Add(vnr);
                    }

                    r.Close();
                } catch (pnDbException e) {
                    Error(e, "Failed to fetch NodeRefs");
                    reply.fResult = ENetError.kNetErrInternalError;
                }
            }

            if (refs.Count == 0)
                // The vault node may actually exist, but it certainly has no children.
                // Maybe FIXME at some point?
                reply.fResult = ENetError.kNetErrVaultNodeNotFound;
            else if (reply.fResult == ENetError.kNetSuccess)
                reply.fNodeRefs = refs.ToArray();
            reply.Send(fStream);
        }
コード例 #2
0
ファイル: VaultClient.cs プロジェクト: branan/PlasmaDotNet
 private void INodeRefsFetched()
 {
     pnVault2Cli_NodeRefsFetched reply = new pnVault2Cli_NodeRefsFetched();
     reply.Read(fStream);
     FireCallback(reply.fTransID, new object[] { reply.fResult, reply.fNodeRefs, null });
 }