refactor: replace GetRandom with IoT sensing data update scenario

This commit is contained in:
2026-07-17 15:51:10 +09:00
parent 50edea0225
commit 902af18555
10 changed files with 446 additions and 346 deletions
+13 -21
View File
@@ -11,7 +11,7 @@ import (
"google.golang.org/grpc/credentials/insecure"
)
func AskingDateTime(ctx context.Context, m protoapi.RandomClient) (*protoapi.DateTime, error) {
func AskingDateTime(ctx context.Context, m protoapi.IoTServiceClient) (*protoapi.DateTime, error) {
request := &protoapi.RequestDateTime{
Value: "Please send me the date and time",
}
@@ -19,7 +19,7 @@ func AskingDateTime(ctx context.Context, m protoapi.RandomClient) (*protoapi.Dat
return m.GetDate(ctx, request)
}
func AskPass(ctx context.Context, m protoapi.RandomClient, seed int64, length int64) (*protoapi.RandomPass, error) {
func AskPass(ctx context.Context, m protoapi.IoTServiceClient, seed int64, length int64) (*protoapi.RandomPass, error) {
request := &protoapi.RequestPass{
Seed: seed,
Length: length,
@@ -28,13 +28,14 @@ func AskPass(ctx context.Context, m protoapi.RandomClient, seed int64, length in
return m.GetRandomPass(ctx, request)
}
func AskRandom(ctx context.Context, m protoapi.RandomClient, seed int64, place int64) (*protoapi.RandomInt, error) {
request := &protoapi.RandomParams{
Seed: seed,
Place: place,
func AskUpdateSensingData(ctx context.Context, m protoapi.IoTServiceClient, deviceId string, temp float64, humid float64) (*protoapi.SensingResponse, error) {
request := &protoapi.SensingData{
DeviceId: deviceId,
Temperature: temp,
Humidity: humid,
}
return m.GetRandom(ctx, request)
return m.UpdateSensingData(ctx, request)
}
func ClientRun(addr string) {
@@ -44,10 +45,7 @@ func ClientRun(addr string) {
return
}
rand.Seed(time.Now().Unix())
seed := int64(rand.Intn(100))
client := protoapi.NewRandomClient(conn)
client := protoapi.NewIoTServiceClient(conn)
r, err := AskingDateTime(context.Background(), client)
if err != nil {
fmt.Println(err)
@@ -55,6 +53,7 @@ func ClientRun(addr string) {
}
fmt.Println("Server Date and Time:", r.Value)
rand.Seed(time.Now().Unix())
length := int64(rand.Intn(20))
p, err := AskPass(context.Background(), client, 100, length+1)
if err != nil {
@@ -63,18 +62,11 @@ func ClientRun(addr string) {
}
fmt.Println("Random Password:", p.Password)
place := int64(rand.Intn(100))
i, err := AskRandom(context.Background(), client, seed, place)
res, err := AskUpdateSensingData(context.Background(), client, "sensor-room-01", 24.5, 52.3)
if err != nil {
fmt.Println(err)
return
}
fmt.Println("Random Integer 1:", i.Value)
k, err := AskRandom(context.Background(), client, seed, place-1)
if err != nil {
fmt.Println(err)
return
}
fmt.Println("Random Integer 2:", k.Value)
fmt.Println("Sensing Update Success:", res.Success)
fmt.Println("Sensing Update Message:", res.Message)
}
+11 -19
View File
@@ -50,11 +50,11 @@ func getString(len int64) string {
return temp
}
type RandomServer struct {
protoapi.UnimplementedRandomServer
type IoTServer struct {
protoapi.UnimplementedIoTServiceServer
}
func (RandomServer) GetDate(ctx context.Context, r *protoapi.RequestDateTime) (*protoapi.DateTime, error) {
func (IoTServer) GetDate(ctx context.Context, r *protoapi.RequestDateTime) (*protoapi.DateTime, error) {
currentTime := time.Now()
response := &protoapi.DateTime{
Value: currentTime.String(),
@@ -63,26 +63,18 @@ func (RandomServer) GetDate(ctx context.Context, r *protoapi.RequestDateTime) (*
return response, nil
}
func (RandomServer) GetRandom(ctx context.Context, r *protoapi.RandomParams) (*protoapi.RandomInt, error) {
src := rand.NewSource(r.GetSeed())
place := r.GetPlace()
temp := random(min, max, src)
for {
place--
if place <= 0 {
break
}
temp = random(min, max, src)
}
func (IoTServer) UpdateSensingData(ctx context.Context, r *protoapi.SensingData) (*protoapi.SensingResponse, error) {
fmt.Printf("Received sensing data - Device: %s, Temp: %.2f°C, Humid: %.2f%%\n", r.GetDeviceId(), r.GetTemperature(), r.GetHumidity())
response := &protoapi.RandomInt{
Value: int64(temp),
response := &protoapi.SensingResponse{
Success: true,
Message: fmt.Sprintf("Sensing data updated successfully for device %s", r.GetDeviceId()),
}
return response, nil
}
func (RandomServer) GetRandomPass(ctx context.Context, r *protoapi.RequestPass) (*protoapi.RandomPass, error) {
func (IoTServer) GetRandomPass(ctx context.Context, r *protoapi.RequestPass) (*protoapi.RandomPass, error) {
rand.Seed(r.GetSeed())
temp := getString(r.GetLength())
@@ -95,8 +87,8 @@ func (RandomServer) GetRandomPass(ctx context.Context, r *protoapi.RequestPass)
func ServerRun(addr string) {
server := grpc.NewServer()
var randomServer RandomServer
protoapi.RegisterRandomServer(server, randomServer)
var iotServer IoTServer
protoapi.RegisterIoTServiceServer(server, iotServer)
reflection.Register(server)