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 9RPC 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
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
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