Skip to content

Releases: usergeek/canistergeek-ic-motoko

New static method `Canistergeek.getInformation` added to reduce information from monitor and logger.

16 Dec 13:07
Compare
Choose a tag to compare

Full example:

import Canistergeek "../canistergeek/canistergeek";

actor {

    stable var _canistergeekMonitorUD: ? Canistergeek.UpgradeData = null;
    private let canistergeekMonitor = Canistergeek.Monitor();
    
    stable var _canistergeekLoggerUD: ? Canistergeek.LoggerUpgradeData = null;
    private let canistergeekLogger = Canistergeek.Logger();
    
    private let adminPrincipal: Text = "xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxx";
    
    system func preupgrade() {
        _canistergeekMonitorUD := ? canistergeekMonitor.preupgrade();
        _canistergeekLoggerUD := ? canistergeekLogger.preupgrade();
    };

    system func postupgrade() { 
        canistergeekMonitor.postupgrade(_canistergeekMonitorUD);
        _canistergeekMonitorUD := null;
        
        canistergeekLogger.postupgrade(_canistergeekLoggerUD);
        _canistergeekLoggerUD := null;
        canistergeekLogger.setMaxMessagesCount(3000);
        
        canistergeekLogger.logMessage("postupgrade");
    };
    
    public query ({caller}) func getCanistergeekInformation(request: Canistergeek.GetInformationRequest): async Canistergeek.GetInformationResponse {
        validateCaller(caller);
        Canistergeek.getInformation(?canistergeekMonitor, ?canistergeekLogger, request);
    };

    public shared ({caller}) func updateCanistergeekInformation(request: Canistergeek.UpdateInformationRequest): async () {
        validateCaller(caller);
        canistergeekMonitor.updateInformation(request);
    };
    
    private func validateCaller(principal: Principal) : () {
        //data is available only for specific principal
        if (not (Principal.toText(principal) == adminPrincipal)) {
            Prelude.unreachable();
        }
    };
    
    public shared ({caller}) func doThis(): async () {
        canistergeekMonitor.collectMetrics();
        canistergeekLogger.logMessage("doThis");
        // rest part of the your method...
    };
    
    public shared ({caller}) func doThat(): async () {
        canistergeekMonitor.collectMetrics();
        canistergeekLogger.logMessage("doThat");
        // rest part of the your method...
    };
    
}

New API: getCanistergeekInformation/updateCanistergeekInformation

07 Nov 07:23
Compare
Choose a tag to compare

API change in 0.0.6 version

Starting from version 0.0.6 Monitor has new API methods:

  • updateInformation method will replace collectMetrics method
  • getInformation method will replace getMetrics method

New methods provide an opportunity to evolve API in the future.

Legacy methods (collectMetrics and getMetrics) still available.

Nat32 custom Hash function

06 Sep 13:38
Compare
Choose a tag to compare

This release removes a lot of warnings in latest DFX versions

Log Messages

23 Feb 16:37
5b17f03
Compare
Choose a tag to compare
Merge pull request #1 from usergeek/logMessages

Log Messages

Initial release

23 Feb 16:37
Compare
Choose a tag to compare
v0.0.1

README