-
-
Save zeeshanakram3/1fcd75ab5da9b01a710bd41ac2eb3eea to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import { IMemberRemarkedA, IMemberRemarkedB, MemberRemarkedA, MemberRemarkedB} from './compiled/index.js' | |
// both messages have same values | |
let userACreatePostMsg: IMemberRemarkedA = { | |
createPost: { | |
threadId: 1, | |
body: "some text" | |
} | |
} | |
let userBCreateCommentMsg: IMemberRemarkedB = { | |
createComment: { | |
videoId: 1, | |
body: "some text" | |
} | |
} | |
// simple msg validation, can be improved | |
const userAMsgError = MemberRemarkedA.verify(userACreatePostMsg) | |
const userBMsgError = MemberRemarkedB.verify(userBCreateCommentMsg) | |
if (!userAMsgError || !userBMsgError){ | |
throw new Error(userAMsgError+ "; "+ userBMsgError) | |
} | |
const encodedCreatePostMsg = MemberRemarkedA.encode(userACreatePostMsg).finish() | |
// Serialized message: 5a0d08011209736f6d652074657874 | |
// | 5a |0d08011209736f6d652074657874| | |
// |field no.| message | | |
const encodedCreateCommentMsg = MemberRemarkedB.encode(userBCreateCommentMsg).finish() | |
// Serialized message: aa010d08011209736f6d652074657874 | |
// | aa01 |0d08011209736f6d652074657874| | |
// |field no.| message | | |
// Notice the `message` parts of both serialized payloads are same since the values are same | |
// Scenario 1: User A deserializing his own message i.e. CreatePost | |
const userADecodesCreatePostMsg = MemberRemarkedA.decode(encodedCreatePostMsg) | |
console.log(userADecodesCreatePostMsg) | |
/** | |
* Result: | |
* createPost: CreatePost { | |
* threadId: 1, | |
* body: 'some text' | |
* } | |
*/ | |
// Scenario 2: User A deserializing message unknown to him, e.g. CreateComment | |
const userADecodesCreateCommenttMsg = MemberRemarkedA.decode(encodedCreateCommentMsg) | |
console.log(userADecodesCreateCommenttMsg) | |
/** | |
* Result: {} | |
*/ | |
// Scenario 3: User B deserialing his own message i.e. CreateComment | |
const userBDecodesCreateCommentMsg = MemberRemarkedB.decode(encodedCreateCommentMsg) | |
console.log(userBDecodesCreateCommentMsg) | |
/** | |
* Result: | |
* createComment: CreateComment { | |
* videoId: 1, | |
* body: 'some text' | |
* } | |
*/ | |
// Scenario 4: User B deserializing message unknown to him, e.g. CreatePost | |
const userBDecodesCreatePostMsg = MemberRemarkedB.decode(encodedCreatePostMsg) | |
console.log(userBDecodesCreatePostMsg) | |
/** | |
* Result: {} | |
*/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment