Function to listen to chaincode event
func listenEvents() {
    cnfg := config.FromFile("./connection.json")
    fmt.Println(reflect.TypeOf(cnfg))
    sdk, err := fabsdk.New(cnfg)
    if err != nil {
        fmt.Printf("Failed to create new SDK: %s", err)
    }
    defer sdk.Close()
    clientChannelContext := sdk.ChannelContext(channelID, fabsdk.WithUser(orgAdmin), fabsdk.WithOrg(orgName))
    eventClient, err := event.New(clientChannelContext, event.WithBlockEvents(),
        event.WithSeekType(seek.Oldest))
    if err != nil {
        fmt.Printf("Not be able to create new events client: %s", err)
    }
    reg, notifier, err := eventClient.RegisterChaincodeEvent("offering", "OFFERING SUBMITTED")
    defer eventClient.Unregister(reg)
    donechannel := make(chan string)
    go func() {
        // Just a function to demostrate that we can send signal to end the listening loop
        time.Sleep(1 * time.Minute)
        donechannel <- "QUIT NOW"
    }()
    defer close(donechannel)
end:
    for {
        select {
        case ccEvent := <-notifier:
            fmt.Printf("Received cc event: %#v", ccEvent)
            fmt.Printf("The payload is %v", ccEvent.Payload)
            fmt.Printf("TxID is %s", ccEvent.TxID)
        case msg := <-donechannel:
            fmt.Printf(msg)
            break end
        }
    }
    fmt.Println("Process finished")
}
No comments:
Post a Comment