Skip to content

Commit

Permalink
fixup!: wip gateway refactoring
Browse files Browse the repository at this point in the history
Signed-off-by: Rafael Belchior <rafael.belchior@tecnico.ulisboa.pt>
  • Loading branch information
RafaelAPB committed Apr 23, 2024
1 parent 7e60fd9 commit db916c5
Show file tree
Hide file tree
Showing 28 changed files with 919 additions and 539 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
.gitignore
.openapi-generator-ignore
.travis.yml
README.md
api/openapi.yaml
Expand Down Expand Up @@ -119,6 +118,4 @@ model_transact_default_response.go
model_transact_request.go
model_transact_response.go
response.go
test/api_admin_test.go
test/api_transaction_test.go
utils.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
syntax = "proto3";
package cacti.satp.v02.common;
import "cacti/satp/v02/common/message.proto";

message HealthCheckRequest {}

service HealthService {
rpc CheckHealth(HealthCheckRequest) returns (Ack);
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ message TransferProposalRequestMessage {
bool multiple_cancels_allowed = 6;
}

message TransferProposalReceiptRejectMessage {
message TransferProposalReceiptMessage {
cacti.satp.v02.common.CommonSatp common = 1;
string hash_transfer_init_claims = 2;
cacti.satp.v02.common.TransferClaims transfer_counter_claims = 3;
Expand All @@ -31,6 +31,6 @@ message TransferCommenceResponseMessage {
}

service SatpStage1Service {
rpc TransferProposal(TransferProposalRequestMessage) returns (TransferProposalReceiptRejectMessage) {}
rpc TransferProposal(TransferProposalRequestMessage) returns (TransferProposalReceiptMessage) {}
rpc TransferCommence(TransferCommenceRequestMessage) returns (TransferCommenceResponseMessage) {}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import { v4 as uuidv4 } from "uuid";
import { SessionData } from "../generated/proto/cacti/satp/v02/common/session_pb";


export interface ISATPSessionOptions {
contextID: string;
}

export class SATPSession {
private static readonly CLASS_NAME = "SATPSession";
private sessionData: SessionData;

constructor(ops: ISATPSessionOptions) {
this.sessionData = new SessionData();
this.sessionData.transferContextId = ops.contextID;

// TODO algorithm to create session ID from context ID
this.sessionData.id = ops.contextID + "-" + uuidv4();

}

private initializeSessionID(): void {
if (this.sessionData.id === undefined) {
this.sessionData.id = uuidv4() + "-" + this.sessionData.transferContextId;
} else {
throw new Error("Session ID already initialized");
}
}

public getSessionData(): SessionData {
return this.sessionData;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,12 @@ import { SATPGateway } from "../../gateway-refactor";
import { Stage1ServerService } from "../stage-services/server/stage1-server-service";
import { TimestampType, saveTimestamp } from "../session-utils";
import { MessageType } from "../../generated/proto/cacti/satp/v02/common/message_pb";
import { SATPSession } from "../satp-session";
import { Stage1ClientService } from "../stage-services/client/stage1-client-service";
import { ServiceType } from "@bufbuild/protobuf";
import { SupportedGatewayImplementations } from "../types";

export default (gateway: SATPGateway, service: Stage1ServerService) =>
export const Stage1Handler = (session: SATPSession | undefined, serverService: Stage1ServerService, clientService: Stage1ClientService, connectClients: ServiceType[], supportedDLTs: SupportedGatewayImplementations[]) =>
(router: ConnectRouter) =>
router.service(SatpStage1Service, {
async transferProposal(
Expand All @@ -20,8 +24,8 @@ export default (gateway: SATPGateway, service: Stage1ServerService) =>
console.log("Received TransferProposalRequest", req, context);
const recvTimestamp: string = Date.now().toString();

const [sessionData, reject] =
await service.checkTransferProposalRequestMessage(req, gateway);
const sessionData =
await serverService.checkTransferProposalRequestMessage(req, session, supportedDLTs);

saveTimestamp(
sessionData,
Expand All @@ -30,16 +34,16 @@ export default (gateway: SATPGateway, service: Stage1ServerService) =>
recvTimestamp,
);

const message = await service.transferProposalResponse(
const message = await serverService.transferProposalResponse(
req,
reject,
gateway,
session,
);

if (!message) {
throw new Error("No message returned from transferProposalResponse");
}

/*
if (reject) {
saveTimestamp(
sessionData,
Expand All @@ -53,21 +57,23 @@ export default (gateway: SATPGateway, service: Stage1ServerService) =>
TimestampType.PROCESSED,
);
}

*/
console.log("Returning response", message);

return message;
},

// TODO phase, step
async transferCommence(
req: TransferCommenceRequestMessage,
context: HandlerContext,
) {
console.log("Received TransferCommenceRequest", req, context);
const recvTimestamp: string = Date.now().toString();

const sessionData = await service.checkTransferCommenceRequestMessage(
const sessionData = await serverService.checkTransferCommenceRequestMessage(
req,
gateway,
session,
);

saveTimestamp(
Expand All @@ -77,7 +83,7 @@ export default (gateway: SATPGateway, service: Stage1ServerService) =>
recvTimestamp,
);

const message = await service.transferCommenceResponse(req, gateway);
const message = await serverService.transferCommenceResponse(req, session);

if (!message) {
throw new Error("No message returned from transferProposalResponse");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,11 @@ import { SATPGateway } from "../../gateway-refactor";
import { Stage2ServerService } from "../stage-services/server/stage2-server-service";
import { TimestampType, saveTimestamp } from "../session-utils";
import { MessageType } from "../../generated/proto/cacti/satp/v02/common/message_pb";
import { SATPSession } from "../satp-session";
import { ServiceType } from "@bufbuild/protobuf";
import { SupportedGatewayImplementations } from "../types";

export default (gateway: SATPGateway, service: Stage2ServerService) =>
export const Stage2Handler = (session: SATPSession, service: Stage2ServerService, connectClients: ServiceType[], supportedDLTs: SupportedGatewayImplementations[]) =>
(router: ConnectRouter) =>
router.service(SatpStage2Service, {
async lockAssertion(
Expand All @@ -18,7 +21,7 @@ export default (gateway: SATPGateway, service: Stage2ServerService) =>

const sessionData = await service.checkLockAssertionRequestMessage(
req,
gateway,
session,
);

saveTimestamp(
Expand All @@ -28,7 +31,7 @@ export default (gateway: SATPGateway, service: Stage2ServerService) =>
recvTimestamp,
);

const message = await service.lockAssertionResponse(req, gateway);
const message = await service.lockAssertionResponse(req, session);

if (!message) {
throw new Error("No message returned from lockAssertionResponse");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,15 @@ import {
CommitPreparationRequestMessage,
TransferCompleteRequestMessage,
} from "../../generated/proto/cacti/satp/v02/stage_3_pb";
import { Empty } from "@bufbuild/protobuf";
import { Empty, ServiceType } from "@bufbuild/protobuf";
import { Stage3ServerService } from "../stage-services/server/stage3-server-service";
import { SATPGateway } from "../../gateway-refactor";
import { TimestampType, saveTimestamp } from "../session-utils";
import { MessageType } from "../../generated/proto/cacti/satp/v02/common/message_pb";
import { SATPSession } from "../satp-session";
import { SupportedGatewayImplementations } from "../types";

export default (gateway: SATPGateway, service: Stage3ServerService) =>
export const Stage3Handler = (session: SATPSession, service: Stage3ServerService, connectClients: ServiceType[], supportedDLTs: SupportedGatewayImplementations[]) =>
(router: ConnectRouter) =>
router.service(SatpStage3Service, {
async commitPreparation(
Expand All @@ -23,7 +25,7 @@ export default (gateway: SATPGateway, service: Stage3ServerService) =>

const sessionData = await service.checkCommitPreparationRequestMessage(
req,
gateway,
session,
);

saveTimestamp(
Expand All @@ -33,7 +35,7 @@ export default (gateway: SATPGateway, service: Stage3ServerService) =>
recvTimestamp,
);

const message = await service.commitReady(req, gateway);
const message = await service.commitReady(req, session);

if (!message) {
throw new Error("No message returned from commitPreparation");
Expand All @@ -57,7 +59,7 @@ export default (gateway: SATPGateway, service: Stage3ServerService) =>
const recvTimestamp: string = Date.now().toString();

const sessionData =
await service.checkCommitFinalAssertionRequestMessage(req, gateway);
await service.checkCommitFinalAssertionRequestMessage(req, session);

saveTimestamp(
sessionData,
Expand All @@ -68,7 +70,7 @@ export default (gateway: SATPGateway, service: Stage3ServerService) =>

const message = await service.commitFinalAcknowledgementReceiptResponse(
req,
gateway,
session,
);

if (!message) {
Expand All @@ -92,7 +94,7 @@ export default (gateway: SATPGateway, service: Stage3ServerService) =>

const sessionData = await service.checkTransferCompleteRequestMessage(
req,
gateway,
session,
);

saveTimestamp(
Expand Down

0 comments on commit db916c5

Please sign in to comment.