In this problem, we wish to build a repository of functions that a developer can assemble to build a complex program. There can exist several versions of a function, each with its metadata. Function metadata includes the developer's full name and ema address, the language it is implemented in and a set of keywords related to the functionality fulfilled by the function. The versions of a function can be represented as a directed acyclic graph. To manage the repository, we use a remote invocation based GRPC that allows a client to interact with a server and execute the following operations: 1. add_new_fn: to add either a brand new function or a new version to an existing function; 2. add fns: to add multiple functions streamed by the client (note that multiple versions of a function are not allowed); 3. delete fn: to delete a function (this might require reordering the versions of the function); 4. show fn: to view a specific version of a function; 5. show all_fns: to view all versions of a function (the versions are streamed back by the server) 6. show all with_criteria: to view all latest versions of functions implemented in a given language or related to a set of keywords (bi-directional streaming). Your task is to: 1. define the interface of the remote operations using Protocol Buffer: 2. generate the stubs on both the client and server; 3. implement both the client and the server.

Computer Networking: A Top-Down Approach (7th Edition)
7th Edition
ISBN:9780133594140
Author:James Kurose, Keith Ross
Publisher:James Kurose, Keith Ross
Chapter1: Computer Networks And The Internet
Section: Chapter Questions
Problem R1RQ: What is the difference between a host and an end system? List several different types of end...
icon
Related questions
Question
Define the remote interface in protocol buffer Implement the gRPC client and server in the ballerina language Implement the server-side logic in response to the remote invocations
In this problem, we wish to build a repository of functions that a developer can assemble to build a complex program. There
can exist several versions of a function, each with its metadata. Function metadata includes the developer's full name and email
address, the language it is implemented in and a set of keywords related to the functionality fulfilled by the function. The
versions of a function can be represented as a directed acyclic graph. To manage the repository, we use a remote invocation
based GRPC that allows a client to interact with a server and execute the following operations:
1. add_new_fn: to add either a brand new function or a new version to an existing function;
2. add fns: to add multiple functions streamed by the client (note that multiple versions of a function are not allowed);
3. delete_fn: to delete a function (this might require reordering the versions of the function);
4. show_fn: to view a specific version of a function;
5. show all fns: to view all versions of a function (the versions are streamed back by the server)
6. show_all_with_criteria: to view all latest versions of functions implemented in a given language or related to a set of
keywords (bi-directional streaming).
Your task is to:
1. define the interface of the remote operations using Protocol Buffer:
2. generate the stubs on both the client and server;
3. implement both the client and the server.
Transcribed Image Text:In this problem, we wish to build a repository of functions that a developer can assemble to build a complex program. There can exist several versions of a function, each with its metadata. Function metadata includes the developer's full name and email address, the language it is implemented in and a set of keywords related to the functionality fulfilled by the function. The versions of a function can be represented as a directed acyclic graph. To manage the repository, we use a remote invocation based GRPC that allows a client to interact with a server and execute the following operations: 1. add_new_fn: to add either a brand new function or a new version to an existing function; 2. add fns: to add multiple functions streamed by the client (note that multiple versions of a function are not allowed); 3. delete_fn: to delete a function (this might require reordering the versions of the function); 4. show_fn: to view a specific version of a function; 5. show all fns: to view all versions of a function (the versions are streamed back by the server) 6. show_all_with_criteria: to view all latest versions of functions implemented in a given language or related to a set of keywords (bi-directional streaming). Your task is to: 1. define the interface of the remote operations using Protocol Buffer: 2. generate the stubs on both the client and server; 3. implement both the client and the server.
Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 2 steps with 1 images

Blurred answer
Recommended textbooks for you
Computer Networking: A Top-Down Approach (7th Edi…
Computer Networking: A Top-Down Approach (7th Edi…
Computer Engineering
ISBN:
9780133594140
Author:
James Kurose, Keith Ross
Publisher:
PEARSON
Computer Organization and Design MIPS Edition, Fi…
Computer Organization and Design MIPS Edition, Fi…
Computer Engineering
ISBN:
9780124077263
Author:
David A. Patterson, John L. Hennessy
Publisher:
Elsevier Science
Network+ Guide to Networks (MindTap Course List)
Network+ Guide to Networks (MindTap Course List)
Computer Engineering
ISBN:
9781337569330
Author:
Jill West, Tamara Dean, Jean Andrews
Publisher:
Cengage Learning
Concepts of Database Management
Concepts of Database Management
Computer Engineering
ISBN:
9781337093422
Author:
Joy L. Starks, Philip J. Pratt, Mary Z. Last
Publisher:
Cengage Learning
Prelude to Programming
Prelude to Programming
Computer Engineering
ISBN:
9780133750423
Author:
VENIT, Stewart
Publisher:
Pearson Education
Sc Business Data Communications and Networking, T…
Sc Business Data Communications and Networking, T…
Computer Engineering
ISBN:
9781119368830
Author:
FITZGERALD
Publisher:
WILEY