Skip to content

Commit

Permalink
Merge pull request #5 from firecomm/bind
Browse files Browse the repository at this point in the history
changes added and getPeer fixed
  • Loading branch information
iangeckeler committed Aug 14, 2019
2 parents a5fa831 + f50b0f2 commit c743801
Show file tree
Hide file tree
Showing 5 changed files with 177 additions and 72 deletions.
34 changes: 34 additions & 0 deletions examples/firecomm/chattyMathHandlers.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
// /server/chattyMathHandlers.js
function BidiMathHandler(bidi) {
let start;
let end;
bidi
.on('metadata', (metadata) => {
start = Number(process.hrtime.bigint());
bidi.set({thisSetsMetadata: 'responses incoming'})
console.log(metadata.getMap());
})
.on('error', (err) => {
console.exception(err)
})
.on('data', (benchmark) => {
bidi.send(
{
requests: benchmark.requests,
responses: benchmark.responses + 1
}
);
if (benchmark.requests % 10000 === 0) {
end = Number(process.hrtime.bigint());
console.log(
'client address:', bidi.getPeer(),
'\nnumber of requests:', benchmark.requests,
'\navg millisecond speed per request:', ((end - start) /1000000) / benchmark.requests
);
}
})
}

module.exports = {
BidiMathHandler,
}
83 changes: 58 additions & 25 deletions examples/firecomm/client.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,48 @@
const grpc = require("grpc");
const fs = require("fs");
const path = require("path");
const routeguide = require("./routeguide.js");
const { Stub } = require( "../../index" );
const package = require( './package.js' )
const stub = new Stub(
package.ChattyMath,
'localhost: 3000',
);

let start;
let end;
const bidi = stub.bidiMath({thisIsMetadata: 'let the races begin'})
.send({requests: 0, responses: 0})
.on( 'metadata', (metadata) => {
start = Number(process.hrtime.bigint());
console.log(metadata.getMap())
})
.on( 'error', (err) => console.error(err))
.on( 'data', (benchmark) => {
bidi.send(
{
requests: benchmark.requests + 1,
responses: benchmark.responses
}
)
if (benchmark.responses % 10000 === 0) {
end = Number(process.hrtime.bigint());
console.log(
'server address:', bidi.getPeer(),
'\ntotal number of responses:', benchmark.responses,
'\navg millisecond speed per response:', ((end - start) /1000000) / benchmark.responses
)
}
});
// const grpc = require("grpc");
// const fs = require("fs");
// const path = require("path");
// const routeguide = require("./routeguide.js");

const firecomm = require("../../index");
// const firecomm = require("../../index");

let certificate = path.join(__dirname, "/server.crt");
// let certificate = path.join(__dirname, "/server.crt");

// const stub = new firecomm.Stub(routeguide.RouteGuide, "localhost:3000", {
// certificate
// });

const stub = new firecomm.Stub(routeguide.RouteGuide, "localhost:3000", {
certificate
});

// const healthStub = new firecomm.HealthStub("localhost:3000");

Expand All @@ -33,13 +66,13 @@ const stub = new firecomm.Stub(routeguide.RouteGuide, "localhost:3000", {
// 'localhost:3000', new grpc.credentials.createSsl(certificate));
// console.log(stub);

const interceptorProvider = require("./interceptorProvider");
// const interceptorProvider = require("./interceptorProvider");

// console.log(stub.getChannel().getConnectivityState(true))
// // console.log(stub.getChannel().getConnectivityState(true))

const firstChat = {
message: "Hello"
};
// const firstChat = {
// message: "Hello"
// };

// const newClient = stub
// .clientStream({ meta: "data" }, [interceptorProvider])
Expand Down Expand Up @@ -141,18 +174,18 @@ const firstChat = {
// console.log({ err });
// });

const duplexStream = stub
.bidiChat({ meta: "data" }, [interceptorProvider])
.send({ message: "from client" })
.on(data => console.log(data));
// const duplexStream = stub
// .bidiChat({ meta: "data" }, [interceptorProvider])
// .send({ message: "from client" })
// .on(data => console.log(data));

duplexStream.on(({ message }) => {
console.log(message);
duplexStream.send({ message: "from client2" });
});
// duplexStream.on(({ message }) => {
// console.log(message);
// duplexStream.send({ message: "from client2" });
// });

duplexStream.catch(err => {
console.log({ err });
});
// duplexStream.catch(err => {
// console.log({ err });
// });

// testBidiChat();
11 changes: 11 additions & 0 deletions examples/firecomm/package.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// package.js
const { build } = require( '../../index.js' );
const path = require( 'path' );
const PROTO_PATH = path.join( __dirname, './proto/exampleAPI.proto' );

const CONFIG_OBJECT = {
keepCase: true, // keeps everything camelCased
longs: Number, // compiles the potentially enormous `double`s for our BenchmarkMsg requests and responses into a JavaScript Number rather than a String
}
const package = build( PROTO_PATH, CONFIG_OBJECT );
module.exports = package;
13 changes: 13 additions & 0 deletions examples/firecomm/proto/exampleAPI.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
// proto/exampleAPI.proto
syntax = "proto3";

package exampleAPI;

service ChattyMath {
rpc BidiMath (stream Benchmark) returns (stream Benchmark) {};
}

message Benchmark {
double requests = 1;
double responses = 2;
}
108 changes: 61 additions & 47 deletions examples/firecomm/server.js
Original file line number Diff line number Diff line change
@@ -1,51 +1,65 @@
const grpc = require("grpc");
const firecomm = require("../../index");
const fs = require("fs");
const path = require("path");

const package = require("./packageDefinition");

const {
unaryChat,
serverStream,
clientStream,
bidiChat
} = require("./methodHandlers");
const waitFor = require("./middleware");

const server = new firecomm.Server();

server.addService(
package.RouteGuide,
{ unaryChat: unaryChat, serverStream, clientStream, bidiChat }
// context => {
// console.log("inside of service level middleware");
// },
// (err, call) => {
// console.log("error from error handler:", err);
// console.log("call in error:", call);
// call.send({ message: "BULLDOZE THROUGH ERRORS" });
// }
);

// console.log({ server });
// console.log("server proto", server.__proto__);
// console.log(
// "proto of server handler",
// server.handlers["/routeguide.RouteGuide/UnaryChat"]
// /server/server.js
const { Server } = require( '../../index.js' );
const package = require( './package.js' );
const { BidiMathHandler } = require ( './chattyMathHandlers.js' );

new Server()
.addService(
package.ChattyMath,
{ BidiMath: BidiMathHandler }
)
.bind('0.0.0.0: 3000')
.start();


// const grpc = require("grpc");
// const firecomm = require("../../index");
// const fs = require("fs");
// const path = require("path");

// const package = require("./packageDefinition");

// const {
// unaryChat,
// serverStream,
// clientStream,
// bidiChat
// } = require("./methodHandlers");
// const waitFor = require("./middleware");

// const server = new firecomm.Server();

// server.addService(
// package.RouteGuide,
// { unaryChat: unaryChat, serverStream, clientStream, bidiChat }
// // context => {
// // console.log("inside of service level middleware");
// // },
// // (err, call) => {
// // console.log("error from error handler:", err);
// // console.log("call in error:", call);
// // call.send({ message: "BULLDOZE THROUGH ERRORS" });
// // }
// );

let certPath = path.join(__dirname, "/server.crt");
let keyPath = path.join(__dirname, "/server.key");
// // console.log({ server });
// // console.log("server proto", server.__proto__);
// // console.log(
// // "proto of server handler",
// // server.handlers["/routeguide.RouteGuide/UnaryChat"]
// // );

// let certPath = path.join(__dirname, "/server.crt");
// let keyPath = path.join(__dirname, "/server.key");

// const result =
server.bind(["0.0.0.0:3000", "0.0.0.0:2999"], [{
privateKey: keyPath,
certificate: certPath
}, null]);
// console.log({ result });
// console.log({ server });
// console.log(server.__proto__);
// console.log(new grpc.Server().__proto__)
// // const result =
// server.bind(["0.0.0.0:3000", "0.0.0.0:2999"], [{
// privateKey: keyPath,
// certificate: certPath
// }, null]);
// // console.log({ result });
// // console.log({ server });
// // console.log(server.__proto__);
// // console.log(new grpc.Server().__proto__)

server.start();
// server.start();

0 comments on commit c743801

Please sign in to comment.