Skip to content

Commit

Permalink
replace horrible network code
Browse files Browse the repository at this point in the history
  • Loading branch information
lenerd committed Nov 15, 2018
1 parent 0e86ff8 commit 2f9a8f0
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 248 deletions.
158 changes: 29 additions & 129 deletions mains/otmain.cpp
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
#include "otmain.h"
#include <cstdlib>
#include <ENCRYPTO_utils/connection.h>

//pthread_mutex_t CLock::share_mtx = PTHREAD_MUTEX_INITIALIZER;

BOOL Init(crypto* crypt)
{
m_vSocket = new CSocket();//*) malloc(sizeof(CSocket) * m_nNumOTThreads);

return TRUE;
}

Expand All @@ -19,134 +18,31 @@ BOOL Cleanup()
delete rcvthread;

//std::cout << "Cleaning" << std::endl;
delete m_vSocket;
//std::cout << "done" << std::endl;
return true;
}


BOOL Connect()
{
bool bFail = FALSE;
uint64_t lTO = CONNECT_TIMEO_MILISEC;

#ifndef BATCH
std::cout << "Connecting to party "<< !m_nPID << ": " << m_nAddr << ", " << m_nPort << std::endl;
#endif
for(int k = 0; k >= 0 ; k--)
{
for( int i=0; i<RETRY_CONNECT; i++ )
{
if( !m_vSocket->Socket() )
{
printf("Socket failure: ");
goto connect_failure;
}

if( m_vSocket->Connect( m_nAddr, m_nPort, lTO))
{
// send pid when connected
m_vSocket->Send( &k, sizeof(int) );
#ifndef BATCH
std::cout << " (" << !m_nPID << ") (" << k << ") connected" << std::endl;
#endif
if(k == 0)
{
//std::cout << "connected" << std::endl;
return TRUE;
}
else
{
break;
}
SleepMiliSec(10);
m_vSocket->Close();
}
SleepMiliSec(20);
if(i+1 == RETRY_CONNECT)
goto server_not_available;
}
}
server_not_available:
printf("Server not available: ");
connect_failure:
std::cout << " (" << !m_nPID << ") connection failed" << std::endl;
return FALSE;
}



BOOL Listen()
{
#ifndef BATCH
std::cout << "Listening: " << m_nAddr << ":" << m_nPort << ", with size: " << m_nNumOTThreads << std::endl;
#endif
if( !m_vSocket->Socket() )
{
goto listen_failure;
}
if( !m_vSocket->Bind(m_nPort, m_nAddr) )
goto listen_failure;
if( !m_vSocket->Listen() )
goto listen_failure;

for( int i = 0; i<1; i++ ) //twice the actual number, due to double sockets for OT
{
CSocket sock;
//std::cout << "New round! " << std::endl;
if( !m_vSocket->Accept(sock) )
{
std::cerr << "Error in accept" << std::endl;
goto listen_failure;
}

UINT threadID;
sock.Receive(&threadID, sizeof(int));

if( threadID >= 1)
{
sock.Close();
i--;
continue;
}

#ifndef BATCH
std::cout << " (" << m_nPID <<") (" << threadID << ") connection accepted" << std::endl;
#endif
// locate the socket appropriately
m_vSocket->AttachFrom(sock);
sock.Detach();
}

#ifndef BATCH
std::cout << "Listening finished" << std::endl;
#endif
return TRUE;

listen_failure:
std::cout << "Listen failed" << std::endl;
return FALSE;
}




void InitOTSender(const char* address, int port, crypto* crypt, CLock *glock)
{
#ifdef OTTiming
timespec np_begin, np_end;
#endif
m_nPort = (USHORT) port;
m_nAddr = address;

//Initialize values
Init(crypt);

//Server listen
Listen();
m_Socket = Listen(address, port);
if (!m_Socket) {
std::cerr << "Listen failed on " << address << ":" << port << "\n";
std::exit(1);
}

sndthread = new SndThread(m_vSocket, glock);
rcvthread = new RcvThread(m_vSocket, glock);
sndthread = new SndThread(m_Socket.get(), glock);
rcvthread = new RcvThread(m_Socket.get(), glock);

rcvthread->Start();
sndthread->Start();
Expand All @@ -171,13 +67,17 @@ void InitOTReceiver(const char* address, int port, crypto* crypt, CLock *glock)

//Initialize values
Init(crypt);

//Client connect
Connect();
m_Socket = Connect(address, port);
if (!m_Socket) {
std::cerr << "Connect failed on " << address << ":" << port << "\n";
std::exit(1);
}

sndthread = new SndThread(m_Socket.get(), glock);
rcvthread = new RcvThread(m_Socket.get(), glock);

sndthread = new SndThread(m_vSocket, glock);
rcvthread = new RcvThread(m_vSocket, glock);

rcvthread->Start();
sndthread->Start();

Expand All @@ -201,8 +101,8 @@ BOOL ObliviouslySend(CBitVector** X, int numOTs, int bitlength, uint32_t nsndval
{
bool success = FALSE;

m_vSocket->ResetSndCnt();
m_vSocket->ResetRcvCnt();
m_Socket->ResetSndCnt();
m_Socket->ResetRcvCnt();
timespec ot_begin, ot_end;

clock_gettime(CLOCK_MONOTONIC, &ot_begin);
Expand All @@ -212,10 +112,10 @@ BOOL ObliviouslySend(CBitVector** X, int numOTs, int bitlength, uint32_t nsndval

#ifndef BATCH
printf("Time spent:\t%f\n", getMillies(ot_begin, ot_end) + rndgentime);
std::cout << "Sent:\t\t" << m_vSocket->getSndCnt() << " bytes" << std::endl;
std::cout << "Received:\t" << m_vSocket->getRcvCnt() <<" bytes" << std::endl;
std::cout << "Sent:\t\t" << m_Socket->getSndCnt() << " bytes" << std::endl;
std::cout << "Received:\t" << m_Socket->getRcvCnt() <<" bytes" << std::endl;
#else
std::cout << getMillies(ot_begin, ot_end) + rndgentime << "\t" << m_vSocket->getSndCnt() << "\t" << m_vSocket->getRcvCnt() << std::endl;
std::cout << getMillies(ot_begin, ot_end) + rndgentime << "\t" << m_Socket->getSndCnt() << "\t" << m_Socket->getRcvCnt() << std::endl;
#endif


Expand All @@ -227,8 +127,8 @@ BOOL ObliviouslyReceive(CBitVector* choices, CBitVector* ret, int numOTs, int bi
{
bool success = FALSE;

m_vSocket->ResetSndCnt();
m_vSocket->ResetRcvCnt();
m_Socket->ResetSndCnt();
m_Socket->ResetRcvCnt();


timespec ot_begin, ot_end;
Expand All @@ -240,10 +140,10 @@ BOOL ObliviouslyReceive(CBitVector* choices, CBitVector* ret, int numOTs, int bi
#ifndef BATCH
printf("Time spent:\t%f\n", getMillies(ot_begin, ot_end) + rndgentime);

std::cout << "Sent:\t\t" << m_vSocket->getSndCnt() << " bytes" << std::endl;
std::cout << "Received:\t" << m_vSocket->getRcvCnt() <<" bytes" << std::endl;
std::cout << "Sent:\t\t" << m_Socket->getSndCnt() << " bytes" << std::endl;
std::cout << "Received:\t" << m_Socket->getRcvCnt() <<" bytes" << std::endl;
#else
std::cout << getMillies(ot_begin, ot_end) + rndgentime << "\t" << m_vSocket->getSndCnt() << "\t" << m_vSocket->getRcvCnt() << std::endl;
std::cout << getMillies(ot_begin, ot_end) + rndgentime << "\t" << m_Socket->getSndCnt() << "\t" << m_Socket->getRcvCnt() << std::endl;
#endif


Expand Down
5 changes: 2 additions & 3 deletions mains/otmain.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
#include <limits.h>
#include <iomanip>
#include <iostream>
#include <memory>
#include <string>

//TODO only for debugging purpose!!
Expand All @@ -36,8 +37,6 @@ const char* m_nAddr ;// = "localhost";

BOOL Init(crypto* crypt);
BOOL Cleanup();
BOOL Connect();
BOOL Listen();

void InitOTSender(const char* address, int port, crypto* crypt);
void InitOTReceiver(const char* address, int port, crypto* crypt);
Expand All @@ -46,7 +45,7 @@ BOOL ObliviouslyReceive(CBitVector* choices, CBitVector* ret, int numOTs, int bi
BOOL ObliviouslySend(CBitVector** X, int numOTs, int bitlength, uint32_t nsndvals, snd_ot_flavor stype, rec_ot_flavor rtype, crypto* crypt);

// Network Communication
CSocket* m_vSocket;
std::unique_ptr<CSocket> m_Socket;
uint32_t m_nPID; // thread id
field_type m_eFType;
uint32_t m_nBitLength;
Expand Down
Loading

0 comments on commit 2f9a8f0

Please sign in to comment.