MCPcopy Create free account
hub / github.com/apache/thrift / Calculate

Method Calculate

tutorial/go/src/handler.go:49–88  ·  view source on GitHub ↗
(ctx context.Context, logid int32, w *tutorial.Work)

Source from the content-addressed store, hash-verified

47}
48
49func (p *CalculatorHandler) Calculate(ctx context.Context, logid int32, w *tutorial.Work) (val int32, err error) {
50 fmt.Print("calculate(", logid, ", {", w.Op, ",", w.Num1, ",", w.Num2, "})\n")
51 switch w.Op {
52 case tutorial.Operation_ADD:
53 val = w.Num1 + w.Num2
54 case tutorial.Operation_SUBTRACT:
55 val = w.Num1 - w.Num2
56 case tutorial.Operation_MULTIPLY:
57 val = w.Num1 * w.Num2
58 case tutorial.Operation_DIVIDE:
59 if w.Num2 == 0 {
60 ouch := tutorial.NewInvalidOperation()
61 ouch.WhatOp = int32(w.Op)
62 ouch.Why = "Cannot divide by 0"
63 err = ouch
64 return
65 }
66 val = w.Num1 / w.Num2
67 default:
68 ouch := tutorial.NewInvalidOperation()
69 ouch.WhatOp = int32(w.Op)
70 ouch.Why = "Unknown operation"
71 err = ouch
72 return
73 }
74 entry := shared.NewSharedStruct()
75 entry.Key = logid
76 entry.Value = strconv.Itoa(int(val))
77 k := int(logid)
78 /*
79 oldvalue, exists := p.log[k]
80 if exists {
81 fmt.Print("Replacing ", oldvalue, " with ", entry, " for key ", k, "\n")
82 } else {
83 fmt.Print("Adding ", entry, " for key ", k, "\n")
84 }
85 */
86 p.log[k] = entry
87 return val, err
88}
89
90func (p *CalculatorHandler) GetStruct(ctx context.Context, key int32) (*shared.SharedStruct, error) {
91 fmt.Print("getStruct(", key, ")\n")

Callers 1

handleClientFunction · 0.45

Calls

no outgoing calls

Tested by

no test coverage detected