Loading Rakefile +26 −6 Original line number Diff line number Diff line Loading @@ -12,20 +12,40 @@ def report_banner(message) report "\n#{message}\n#{'='*message.length}\n\n" end def execute_command(cmd, banner=nil) report_banner banner unless banner.nil? report "Executing: #{cmd}" sh cmd report unless banner.nil? end HERE = File.expand_path(File.dirname(__FILE__)) PROTO_IN = File.expand_path(File.join(HERE, 'vendor', 'kinetic-protocol')) PROTO_OUT = File.join(HERE, 'build', 'temp', 'proto') directory PROTO_OUT desc "Generate protocol buffers" task :proto => [PROTO_OUT] do report_banner "Generating Kinetic C protocol buffers" cd PROTO_OUT do rm Dir["*.h", "*.c", "*.proto"] cp "#{PROTO_IN}/kinetic.proto", "." execute_command "protoc-c --c_out=. kinetic.proto" report "Generated #{Dir['*.h', '*.c'].join(', ')}\n\n" end end desc "Analyze code w/CppCheck" task :cppcheck do raise "CppCheck not found!" unless `cppcheck --version` =~ /cppcheck \d+.\d+/mi report_banner "Analyzing code w/CppCheck" sh "cppcheck ./src" report '' execute_command "cppcheck ./src ./build/temp/proto", "Analyzing code w/CppCheck" end task :default => ['cppcheck', 'test:all', 'release'] task :default => ['proto', 'cppcheck', 'test:all', 'release'] desc "Run client test utility" task :run do report_banner "Running client test utility" sh "./build/release/kinetic-c-client" execute_command "./build/release/kinetic-c-client", "Running client test utility" end desc "Build all and run test utility" Loading src/lib/KineticApi.c +24 −2 Original line number Diff line number Diff line #include "KineticApi.h" #include "KineticConnection.h" #include "KineticLogger.h" #include <stdio.h> const KineticConnection KineticApi_Connect(void) void KineticApi_Init(const char* log_file) { return KineticConnection_Create(); KineticLogger_Init(log_file); } const KineticConnection KineticApi_Connect(const char* host, int port, bool blocking) { KineticConnection connection = KineticConnection_Create(); if (!KineticConnection_Connect(&connection, host, port, blocking)) { connection.Connected = false; connection.FileDescriptor = -1; char message[64]; sprintf(message, "Failed creating connection to %s:%d", host, port); LOG(message); } else { connection.Connected = true; } return connection; } KineticProto_Status_StatusCode KineticApi_SendNoop(const KineticConnection* connection) Loading src/lib/KineticApi.h +2 −2 Original line number Diff line number Diff line Loading @@ -2,9 +2,9 @@ #define _KINETIC_API_H #include "KineticTypes.h" #include "KineticConnection.h" const KineticConnection KineticApi_Connect(void); void KineticApi_Init(const char* log_file); const KineticConnection KineticApi_Connect(const char* host, int port, bool blocking); KineticProto_Status_StatusCode KineticApi_SendNoop(const KineticConnection* connection); #endif // _KINETIC_API_H src/lib/KineticConnection.c +17 −14 Original line number Diff line number Diff line #include "KineticConnection.h" #include "KineticNetwork.h" #include <netinet/in.h> #include "KineticSocket.h" #include <string.h> KineticConnection KineticConnection_Create(void) { KineticConnection connection; memset(&connection, 0, sizeof(connection)); connection.Blocking = true; connection.FileDescriptor = -1; return connection; } KineticProto_Status_StatusCode KineticConnection_Connect(KineticConnection* connection) bool KineticConnection_Connect(KineticConnection* connection, const char* host, int port, bool blocking) { struct ifaddrs addr = KineticNetwork_GetDestinationIP(); connection->Connected = true; strcpy(connection->Name, addr.ifa_name); connection->Flags = addr.ifa_flags; memcpy(&connection->Addr, addr.ifa_addr, sizeof(struct sockaddr)); memcpy(&connection->NetMask, addr.ifa_netmask, sizeof(struct sockaddr)); memcpy(&connection->DestAddr, addr.ifa_dstaddr, sizeof(struct sockaddr)); return KINETIC_PROTO_STATUS_STATUS_CODE_SUCCESS; connection->Connected = false; connection->Blocking = blocking; connection->Port = port; connection->FileDescriptor = -1; strcpy(connection->Host, host); connection->FileDescriptor = KineticSocket_Connect(connection->Host, connection->Port); connection->Connected = (connection->FileDescriptor >= 0); return connection->Connected; } src/lib/KineticConnection.h +1 −13 Original line number Diff line number Diff line Loading @@ -3,19 +3,7 @@ #include "KineticTypes.h" #define MAX_NET_NAME 128 typedef struct _KineticConnection { bool Connected; char Name[MAX_NET_NAME]; unsigned int Flags; struct sockaddr Addr; struct sockaddr NetMask; struct sockaddr DestAddr; } KineticConnection; KineticConnection KineticConnection_Create(void); KineticProto_Status_StatusCode KineticConnection_Connect(KineticConnection* connection); bool KineticConnection_Connect(KineticConnection* connection, const char* host, int port, bool blocking); #endif // _KINETIC_CONNECTION_H Loading
Rakefile +26 −6 Original line number Diff line number Diff line Loading @@ -12,20 +12,40 @@ def report_banner(message) report "\n#{message}\n#{'='*message.length}\n\n" end def execute_command(cmd, banner=nil) report_banner banner unless banner.nil? report "Executing: #{cmd}" sh cmd report unless banner.nil? end HERE = File.expand_path(File.dirname(__FILE__)) PROTO_IN = File.expand_path(File.join(HERE, 'vendor', 'kinetic-protocol')) PROTO_OUT = File.join(HERE, 'build', 'temp', 'proto') directory PROTO_OUT desc "Generate protocol buffers" task :proto => [PROTO_OUT] do report_banner "Generating Kinetic C protocol buffers" cd PROTO_OUT do rm Dir["*.h", "*.c", "*.proto"] cp "#{PROTO_IN}/kinetic.proto", "." execute_command "protoc-c --c_out=. kinetic.proto" report "Generated #{Dir['*.h', '*.c'].join(', ')}\n\n" end end desc "Analyze code w/CppCheck" task :cppcheck do raise "CppCheck not found!" unless `cppcheck --version` =~ /cppcheck \d+.\d+/mi report_banner "Analyzing code w/CppCheck" sh "cppcheck ./src" report '' execute_command "cppcheck ./src ./build/temp/proto", "Analyzing code w/CppCheck" end task :default => ['cppcheck', 'test:all', 'release'] task :default => ['proto', 'cppcheck', 'test:all', 'release'] desc "Run client test utility" task :run do report_banner "Running client test utility" sh "./build/release/kinetic-c-client" execute_command "./build/release/kinetic-c-client", "Running client test utility" end desc "Build all and run test utility" Loading
src/lib/KineticApi.c +24 −2 Original line number Diff line number Diff line #include "KineticApi.h" #include "KineticConnection.h" #include "KineticLogger.h" #include <stdio.h> const KineticConnection KineticApi_Connect(void) void KineticApi_Init(const char* log_file) { return KineticConnection_Create(); KineticLogger_Init(log_file); } const KineticConnection KineticApi_Connect(const char* host, int port, bool blocking) { KineticConnection connection = KineticConnection_Create(); if (!KineticConnection_Connect(&connection, host, port, blocking)) { connection.Connected = false; connection.FileDescriptor = -1; char message[64]; sprintf(message, "Failed creating connection to %s:%d", host, port); LOG(message); } else { connection.Connected = true; } return connection; } KineticProto_Status_StatusCode KineticApi_SendNoop(const KineticConnection* connection) Loading
src/lib/KineticApi.h +2 −2 Original line number Diff line number Diff line Loading @@ -2,9 +2,9 @@ #define _KINETIC_API_H #include "KineticTypes.h" #include "KineticConnection.h" const KineticConnection KineticApi_Connect(void); void KineticApi_Init(const char* log_file); const KineticConnection KineticApi_Connect(const char* host, int port, bool blocking); KineticProto_Status_StatusCode KineticApi_SendNoop(const KineticConnection* connection); #endif // _KINETIC_API_H
src/lib/KineticConnection.c +17 −14 Original line number Diff line number Diff line #include "KineticConnection.h" #include "KineticNetwork.h" #include <netinet/in.h> #include "KineticSocket.h" #include <string.h> KineticConnection KineticConnection_Create(void) { KineticConnection connection; memset(&connection, 0, sizeof(connection)); connection.Blocking = true; connection.FileDescriptor = -1; return connection; } KineticProto_Status_StatusCode KineticConnection_Connect(KineticConnection* connection) bool KineticConnection_Connect(KineticConnection* connection, const char* host, int port, bool blocking) { struct ifaddrs addr = KineticNetwork_GetDestinationIP(); connection->Connected = true; strcpy(connection->Name, addr.ifa_name); connection->Flags = addr.ifa_flags; memcpy(&connection->Addr, addr.ifa_addr, sizeof(struct sockaddr)); memcpy(&connection->NetMask, addr.ifa_netmask, sizeof(struct sockaddr)); memcpy(&connection->DestAddr, addr.ifa_dstaddr, sizeof(struct sockaddr)); return KINETIC_PROTO_STATUS_STATUS_CODE_SUCCESS; connection->Connected = false; connection->Blocking = blocking; connection->Port = port; connection->FileDescriptor = -1; strcpy(connection->Host, host); connection->FileDescriptor = KineticSocket_Connect(connection->Host, connection->Port); connection->Connected = (connection->FileDescriptor >= 0); return connection->Connected; }
src/lib/KineticConnection.h +1 −13 Original line number Diff line number Diff line Loading @@ -3,19 +3,7 @@ #include "KineticTypes.h" #define MAX_NET_NAME 128 typedef struct _KineticConnection { bool Connected; char Name[MAX_NET_NAME]; unsigned int Flags; struct sockaddr Addr; struct sockaddr NetMask; struct sockaddr DestAddr; } KineticConnection; KineticConnection KineticConnection_Create(void); KineticProto_Status_StatusCode KineticConnection_Connect(KineticConnection* connection); bool KineticConnection_Connect(KineticConnection* connection, const char* host, int port, bool blocking); #endif // _KINETIC_CONNECTION_H