Clients/AmbrosiaJS/Ambrosia-Node/src/Meta.ts (18 lines): - line 674: // TODO: This message would be better if it could reference the actual published types involved (simply looking - line 699: // TODO: We could fix this by finding/replacing all compound types in the complex type below (but this would be tricky). - line 1209: // See checkType() and getNativeType() for more on the "boxed-primitive vs. primitive" issue. [TODO: This needs a better explanation]. - line 1372: * TODO: This method needs more testing. - line 1585: if (((type === "null") || (type === "undefined")) && (typeDescription.indexOf("union") === -1)) // TODO: Checking typeDescription is brittle - line 2718: let codeGenComment: string = "// TODO: Add your [non-async] handler here"; - line 2726: codeGenComment = `// TODO: Add an exported [non-async] function '${signature}' to ${makeRelativePath(assertDefined(fileOptions.outputPath), sourceFileName)}, then (after the next code-gen) a call to it will be generated here`; - line 2942: postResultDispatcher += tab.repeat(4) + `// TODO: Handle the method completion (it returns void), optionally using the callContextData passed in the call` + NL; - line 2947: postResultDispatcher += tab.repeat(4) + `// TODO: Handle the result, optionally using the callContextData passed in the call` + NL; - line 3148: const gitExitCode: number = (err as any).status; // TODO: Hack to make compiler happy - line 3317: lines.push(`// TODO: It's recommended that you move this namespace to your input file (${makeRelativePath(assertDefined(fileOptions.outputPath), sourceFileName)}) then re-run code-gen`); - line 3323: lines.push(tab.repeat(2) + "// TODO: Define your application state here" + NL); - line 3333: lines.push(tab.repeat(4) + "// TODO: Re-initialize your application state from restoredAppState here"); - line 3338: lines.push(tab.repeat(4) + "// TODO: Initialize your application state here"); - line 3486: lines.push(`{${NL}${tab}// TODO: Implement this method`); - line 3533: lines.push(`${blockTab}// TODO: Add your [non-async] handler here`); - line 3760: // TODO: The cast to 'any' here is a workaround for a "bug" in getSymbolAtLocation() [see https://github.com/Microsoft/TypeScript/issues/5218]. - line 3990: // TODO: This is brittle, since the target variable may not be the first matching variable we find (it may be declared later in the input file). Clients/AmbrosiaJS/TestApp-Node/PublisherFramework.g.ts (16 lines): - line 12: // TODO: It's recommended that you move this namespace to your input file (./PI.ts) then re-run code-gen - line 17: // TODO: Define your application state here - line 29: // TODO: Re-initialize your application state from restoredAppState here - line 34: // TODO: Initialize your application state here - line 197: // TODO: Add an exported [non-async] function 'onICStarting(): void' to ./PI.ts, then (after the next code-gen) a call to it will be generated here - line 201: // TODO: Add an exported [non-async] function 'onICStarted(): void' to ./PI.ts, then (after the next code-gen) a call to it will be generated here - line 205: // TODO: Add an exported [non-async] function 'onICStopped(exitCode: number): void' to ./PI.ts, then (after the next code-gen) a call to it will be generated here - line 209: // TODO: Add an exported [non-async] function 'onICReadyForSelfCallRpc(): void' to ./PI.ts, then (after the next code-gen) a call to it will be generated here - line 213: // TODO: Add an exported [non-async] function 'onRecoveryComplete(): void' to ./PI.ts, then (after the next code-gen) a call to it will be generated here - line 217: // TODO: Add an exported [non-async] function 'onUpgradeState(upgradeMode: Messages.AppUpgradeMode): void' to ./PI.ts, then (after the next code-gen) a call to it will be generated here - line 224: // TODO: Add an exported [non-async] function 'onUpgradeCode(upgradeMode: Messages.AppUpgradeMode): void' to ./PI.ts, then (after the next code-gen) a call to it will be generated here - line 231: // TODO: Add an exported [non-async] function 'onIncomingCheckpointStreamSize(): void' to ./PI.ts, then (after the next code-gen) a call to it will be generated here - line 235: // TODO: Add an exported [non-async] function 'onFirstStart(): void' to ./PI.ts, then (after the next code-gen) a call to it will be generated here - line 243: // TODO: Add an exported [non-async] function 'onCheckpointLoaded(checkpointSizeInBytes: number): void' to ./PI.ts, then (after the next code-gen) a call to it will be generated here - line 247: // TODO: Add an exported [non-async] function 'onCheckpointSaved(): void' to ./PI.ts, then (after the next code-gen) a call to it will be generated here - line 251: // TODO: Add an exported [non-async] function 'onUpgradeComplete(): void' to ./PI.ts, then (after the next code-gen) a call to it will be generated here Clients/C/src/ambrosia_client.c (7 lines): - line 36: // FIXME: looks like we need a hashtable after all... - line 70: // TODO: could use FormatMessage here... - line 143: // FIXME - need to match what's in the AMBROSIA code. - line 161: // FIXME -- all write_* functions need to take a BOUND to avoid buffer - line 279: // FIXME: NEED BACKOFF! - line 751: // Application loop (FIXME: Move into the client library!) - line 824: // FIXME: InitialMessage should be an arbitrary blob... Clients/CSharp/AmbrosiaLibCS/Immortal.cs (7 lines): - line 385: // TODO: this message should contain a (serialized - doh!) checkpoint. Restore the state. - line 1197: // TODO: dispose managed state (managed objects). - line 1201: // TODO: free unmanaged resources (unmanaged objects) and override a finalizer below. - line 1202: // TODO: set large fields to null. - line 1208: // TODO: override a finalizer only if Dispose(bool disposing) above has code to free unmanaged resources. - line 1219: // TODO: uncomment the following line if the finalizer is overridden above. - line 1397: // TODO: this message should contain a (serialized - doh!) checkpoint. Restore the state. Clients/AmbrosiaJS/Ambrosia-Node/src/ICProcess.ts (7 lines): - line 17: // TODO: Revisit all "NonNullAssertion [for 'strictNullChecks']" comments and try to eliminate use of the non-null assertion - line 179: // TODO: The downside of handling this internally (rather than via code-gen), is that the user never gets to know the callID - line 678: const instanceLogFolder: string = Path.join(config.icLogFolder, `${config.instanceName}_${config.appVersion}`); // TODO: There may (one day) also be a "shardID" (Int64) subfolder (see: \AMBROSIA\AmbrosiaLib\Ambrosia\Program.cs) - line 930: // the callID of the post method, which may make writing the postResult handler more difficult. TODO: This could be resolved - line 1248: // TODO: This needs more testing. - line 1360: // TODO: This version check is brittle: It would be better for the IC to support a --version parameter which makes it simply echo its version to the console (like "node --version"). - line 2152: setImmediate(() => resumeReadingFromIC()); // TODO: Rather than polling, it's probably more efficient to use: _outgoingMessageStream.once("drain", resumeReadingFromIC); UWPLogPicker/UWPLogPicker.cs (6 lines): - line 18: // TODO: figure out proper way to handle synchronous LogWriter methods when underlying UWP - line 21: // TODO: figure out proper way to handle async LogWriter methods when underlying UWP class only - line 202: // TODO: Figure out if there is a better way to implement Read(). - line 204: // TODO: Figure out if there's a way to avoid having so much duplicated code - line 207: // TODO: Figure out proper way to handle async LogReader methods when the - line 210: // TODO: Figure out if waiting on a Task in the Position setter will cause Clients/AmbrosiaJS/Ambrosia-Node/src/Storage.ts (6 lines): - line 38: * TODO: This is brittle [to CRA internal data structure changes] so we need a better way to do this (eg. UnsafeDeregisterInstance.exe [which, as of 3/22/21, does only partial cleanup of Azure data]). - line 297: // 7) TODO: Delete rows from the CraShardedVertexTable - line 455: * TODO: This is brittle [to CRA internal data structure changes] so we need a better way to do this. - line 659: * TODO: Ideally We would get/do this using either ImmortalCoordinator.exe or Ambrosia.exe, but no such mechanism currently exists. - line 693: // TODO: This is just temporary until we have a 'DeleteConnection' message implemented in the IC. - line 727: // TODO: Again, this is just temporary until we have a 'DeleteConnection' message implemented in the IC. InternalImmortals/NativeService/service.c (6 lines): - line 37: // TODO: remove internal dependency: - line 143: // ^ TODO: may want to memcpy instead (like PerformanceTestInterruptable) - line 245: // FIXME: add g_numRPCBytes as an argument to startup.... - line 379: // FIXME: this is currently called by libambrosiaclient - line 430: // Application loop (FIXME: Move into the client library!) - line 476: // FIXME: InitialMessage should be an arbitrary blob... but here we're following the convention that it's an actual message. Clients/AmbrosiaJS/PTI-Node/App/src/PublisherFramework.g.ts (5 lines): - line 174: // TODO: Add an exported [non-async] function 'onICStarting(): void' to ./PTI.ts, then (after the next code-gen) a call to it will be generated here - line 178: // TODO: Add an exported [non-async] function 'onICStarted(): void' to ./PTI.ts, then (after the next code-gen) a call to it will be generated here - line 194: // TODO: Add an exported [non-async] function 'onICStopped(exitCode: number): void' to ./PTI.ts, then (after the next code-gen) a call to it will be generated here - line 198: // TODO: Add an exported [non-async] function 'onICReadyForSelfCallRpc(): void' to ./PTI.ts, then (after the next code-gen) a call to it will be generated here - line 220: // TODO: Add an exported [non-async] function 'onIncomingCheckpointStreamSize(): void' to ./PTI.ts, then (after the next code-gen) a call to it will be generated here Clients/AmbrosiaJS/Ambrosia-Node/src/Configuration.ts (4 lines): - line 472: const settingName: string | undefined = new Error().stack?.split("\n")[2].trim().split(" ")[2]; // TODO: Is there a better way? - line 557: // TODO: Is there a better (cleaner/faster) way to detect this? - line 631: // TODO: This assumes setting names are unique across all setting groups - line 970: // TODO: Do we need to handle these 2 RegisterInstance settings? They're for testing only. Clients/AmbrosiaJS/Ambrosia-Node/src/ICTest.ts (3 lines): - line 15: // TODO: This is just a placeholder while we work on developing AppState.upgrade(). - line 497: // TODO: This is just a test stream - line 524: // TODO: This is just a test stream Clients/C/include/ambrosia/client.h (3 lines): - line 55: // FIXME: these should become PRIVATE to the library: - line 104: // USER DEFINED: FIXME: REPLACE W CALLBACK - line 107: // USER-DEFINED: FIXME: turn into a callback (currently defined by application): ICGUI/ICGUI.UWP/App.xaml.cs (2 lines): - line 64: //TODO: Load state from previously suspended application - line 102: //TODO: Save application state and stop any background activity InternalImmortals/XamarinSample/XamarinSample.UWP/App.xaml.cs (2 lines): - line 64: //TODO: Load state from previously suspended application - line 102: //TODO: Save application state and stop any background activity InternalImmortals/UWPExample/GraphicalAppUWP/App.xaml.cs (2 lines): - line 55: //TODO: Load state from previously suspended application - line 96: //TODO: Save application state and stop any background activity Clients/C/src/spsc_rring.c (2 lines): - line 15: // FIXME: replace globals with a proper API for dynamically allocating buffers: - line 18: // TODO: FACTOR THESE INTO A STRUCT TO ALLOW MORE THAN ONE INSTANCE: Clients/AmbrosiaJS/Ambrosia-Node/src/DataFormat.ts (2 lines): - line 89: let buffer: Buffer = Buffer.from(bytes.slice(startIndex, startIndex + 8)); // TODO: Would using bytes.subarray() be faster? - line 374: // TODO: We're only encoding into the positive range (ie. zigZagValue will always be positive), which is why we're limiting 'value' to only 53-bits instead of the maximum 54-bits Clients/C/native_hello.c (2 lines): - line 35: // FIXME: add g_numRPCBytes as an argument to startup.... - line 39: // TODO: send n-1 and count down... Clients/CSharp/AmbrosiaLibCS/TaskCheckpoint.cs (2 lines): - line 13: // TODO: - line 34: // TODO: make sure that we're already awaiting the RunWithCheckpointingAwaiter before DustBin/KubernetesLocalDemo/local-kube-ambrosia-demo.yml (2 lines): - line 31: # FIXME: see VSTS bug 127: - line 70: # FIXME: see VSTS bug 127: Clients/AmbrosiaJS/Ambrosia-Node/src/Messages.ts (1 line): - line 963: // TODO: JonGold needs to address issue #158 ("Clarify Ambrosia protocol") since the C# LB has (obsolete?) code that: Clients/AmbrosiaJS/Ambrosia-Node/PublisherFramework.template.ts (1 line): - line 2: // import Ambrosia = require("./src/Ambrosia"); // TODO: This is for development ONLY: Use the import below for the "release" version [DEV-ONLY COMMENT] Clients/AmbrosiaJS/PTI-Node/App/src/Main.ts (1 line): - line 38: // TODO: Performance is worse if main() is not async: but why? It almost seems like additional thread(s) get spun up by node.exe, which then allows CPU usage to exceed 50%.