Skip to content
Snippets Groups Projects
Commit e3631d02 authored by Naveen Kr. Sharma's avatar Naveen Kr. Sharma
Browse files

Adding timeserver to Makefile, and fixing compilation issues

parent a090e8dd
No related branches found
No related tags found
No related merge requests found
...@@ -7,8 +7,8 @@ CXX = g++ ...@@ -7,8 +7,8 @@ CXX = g++
LD = g++ LD = g++
EXPAND = lib/tmpl/expand EXPAND = lib/tmpl/expand
#CFLAGS := -g -Wall -pthread -iquote.obj/gen -Wno-uninitialized -O2 -DNASSERT CFLAGS := -g -Wall -pthread -iquote.obj/gen -Wno-uninitialized -O2 -DNASSERT
CFLAGS := -g -Wall -pthread -iquote.obj/gen -Wno-uninitialized #CFLAGS := -g -Wall -pthread -iquote.obj/gen -Wno-uninitialized
CXXFLAGS := -g -std=c++0x CXXFLAGS := -g -std=c++0x
LDFLAGS := -levent_pthreads LDFLAGS := -levent_pthreads
## Debian package: check ## Debian package: check
...@@ -131,6 +131,7 @@ include store/strongstore/Rules.mk ...@@ -131,6 +131,7 @@ include store/strongstore/Rules.mk
include store/weakstore/Rules.mk include store/weakstore/Rules.mk
include store/benchmark/Rules.mk include store/benchmark/Rules.mk
include lockserver/Rules.mk include lockserver/Rules.mk
include timeserver/Rules.mk
include libtapir/Rules.mk include libtapir/Rules.mk
################################################################## ##################################################################
# General rules # General rules
......
...@@ -28,81 +28,77 @@ TimeStampServer::ReplicaUpcall(opnum_t opnum, ...@@ -28,81 +28,77 @@ TimeStampServer::ReplicaUpcall(opnum_t opnum,
string &str2) string &str2)
{ {
Debug("Received Upcall: %lu, %s", opnum, str1.c_str()); Debug("Received Upcall: %lu, %s", opnum, str1.c_str());
// Get a new timestamp from the TimeStampServer // Get a new timestamp from the TimeStampServer
str2 = newTimeStamp(); str2 = newTimeStamp();
} }
static void Usage(const char *progName) static void
Usage(const char *progName)
{ {
fprintf(stderr, "usage: %s -c conf-file -i replica-index\n", fprintf(stderr, "usage: %s -c conf-file -i replica-index\n", progName);
progName);
exit(1); exit(1);
} }
int int
main(int argc, char **argv) main(int argc, char **argv)
{ {
int index = -1; int index = -1;
const char *configPath = NULL; const char *configPath = NULL;
char *strtolPtr;
// Parse arguments
int opt; // Parse arguments
while ((opt = getopt(argc, argv, "c:i:")) != -1) { int opt;
switch (opt) { while ((opt = getopt(argc, argv, "c:i:")) != -1) {
case 'c': switch (opt) {
configPath = optarg; case 'c':
break; configPath = optarg;
break;
case 'i':
{ case 'i':
char *strtolPtr; index = strtoul(optarg, &strtolPtr, 10);
index = strtoul(optarg, &strtolPtr, 10); if ((*optarg == '\0') || (*strtolPtr != '\0') || (index < 0)) {
if ((*optarg == '\0') || (*strtolPtr != '\0') || (index < 0)) fprintf(stderr, "option -i requires a numeric arg\n");
{ Usage(argv[0]);
fprintf(stderr, }
"option -i requires a numeric arg\n"); break;
Usage(argv[0]);
} default:
break; fprintf(stderr, "Unknown argument %s\n", argv[optind]);
break;
} }
}
if (!configPath) {
fprintf(stderr, "option -c is required\n");
Usage(argv[0]);
}
if (index == -1) {
fprintf(stderr, "option -i is required\n");
Usage(argv[0]);
}
default: // Load configuration
fprintf(stderr, "Unknown argument %s\n", argv[optind]); std::ifstream configStream(configPath);
break; if (configStream.fail()) {
fprintf(stderr, "unable to read configuration file: %s\n", configPath);
Usage(argv[0]);
} }
} transport::Configuration config(configStream);
if (!configPath) { if (index >= config.n) {
fprintf(stderr, "option -c is required\n"); fprintf(stderr, "replica index %d is out of bounds; "
Usage(argv[0]); "only %d replicas defined\n", index, config.n);
} Usage(argv[0]);
}
if (index == -1) {
fprintf(stderr, "option -i is required\n"); UDPTransport transport(0.0, 0.0, 0);
Usage(argv[0]);
} TimeStampServer server;
replication::vr::VRReplica replica(config, index, &transport, 1, &server);
// Load configuration
std::ifstream configStream(configPath); transport.Run();
if (configStream.fail()) {
fprintf(stderr, "unable to read configuration file: %s\n", return 0;
configPath);
Usage(argv[0]);
}
specpaxos::Configuration config(configStream);
if (index >= config.n) {
fprintf(stderr, "replica index %d is out of bounds; "
"only %d replicas defined\n", index, config.n);
Usage(argv[0]);
}
UDPTransport transport(0.0, 0.0, 0);
TimeStampServer server;
specpaxos::vr::VRReplica replica(config, index, &transport, 1, &server);
transport.Run();
return 0;
} }
...@@ -9,25 +9,26 @@ ...@@ -9,25 +9,26 @@
#ifndef _TIME_SERVER_H_ #ifndef _TIME_SERVER_H_
#define _TIME_SERVER_H_ #define _TIME_SERVER_H_
#include "paxos-lib/lib/configuration.h" #include "lib/configuration.h"
#include "paxos-lib/common/replica.h" #include "replication/common/replica.h"
#include "paxos-lib/lib/udptransport.h" #include "lib/udptransport.h"
#include "paxos-lib/vr/replica.h" #include "replication/vr/replica.h"
#include <string> #include <string>
using namespace std; using namespace std;
class TimeStampServer : public specpaxos::AppReplica class TimeStampServer : public replication::AppReplica
{ {
public: public:
TimeStampServer(); TimeStampServer();
~TimeStampServer(); ~TimeStampServer();
void ReplicaUpcall(opnum_t opnum, const string &str1, string &str2); void ReplicaUpcall(opnum_t opnum, const string &str1, string &str2);
private: private:
long ts; long ts;
string newTimeStamp(); string newTimeStamp();
}; };
#endif /* _TIME_SERVER_H_ */ #endif /* _TIME_SERVER_H_ */
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment