bool Client::Start ( void ) { CheckIfTerminated (); int value; CallServer (Message::START, &value); return (bool) value; }
Client::~Client ( void ) { if (! this->terminated) CallServer (Message::GOODBYE); // tell server we're leaving free (this->hostname); free (this->key); free (this->curDir); }
Milestone Client::Stop ( void ) { CheckIfTerminated (); int value; CallServer (Message::STOP, &value); return (Milestone) value; }
bool Client::Terminate ( void ) { CheckIfTerminated (); int value; CallServer (Message::TERMINATE, &value); return this->terminated = (bool) value; }
char * Client::GetThreadName ( int id ) { CheckIfTerminated (); char * reply = CallServer (Message::GET_THREADNAME, &id); char * name = strdup (reply); delete [] reply; return name; }
int Client::GetThreadCount ( void ) { CheckIfTerminated (); int count = 0; CallServer (Message::GET_THREADCOUNT, &count); return count; }
Milestone Client::Step ( int steps ) { CheckIfTerminated (); int value = steps; CallServer (Message::STEP, &value); return (Milestone) value; }
int Client::CallFunction ( const char * funcname, int argument ) { CheckIfTerminated (); int result = argument; CallServer (Message::CALL_FUNCTION, &result, funcname, strlen (funcname) + 1); return result; }
Status * Client::ServerStatus ( void ) { CheckIfTerminated (); Status * status = new Status; char * reply = CallServer (Message::SERVER_STATUS); memcpy (status, reply, sizeof (Status)); delete [] reply; return status; }
char * Client::GetDescription ( void ) { CheckIfTerminated (); char * reply = CallServer (Message::GET_DESCRIPTION); if (reply == NULL) return NULL; char * description = strdup (reply); delete [] reply; return description; }
Client::Directory * Client::GetDirectory ( const char * dirname ) { CheckIfTerminated (); char * reply = CallServer (Message::GET_DIR, NULL, dirname, strlen (dirname) + 1); if (reply == NULL) throw new Exception (false, "Directory \"%s\" not found", dirname); Directory * dir = new Directory (); dir->Unserialize (reply); delete [] reply; return dir; }
char * Client::ChangeDirectory ( const char * dirname ) { CheckIfTerminated (); char * reply = CallServer (Message::CHANGE_DIR, NULL, dirname, strlen (dirname) + 1); if (reply == NULL) return NULL; free (this->curDir); this->curDir = strdup (reply); delete [] reply; return strdup (this->curDir); }
void Client::PutData ( const char * eltname, const unsigned char * buffer, size_t size ) { CheckIfTerminated (); size_t namelen = strlen (eltname) + 1; char * sendbuf = new char [namelen + size]; strcpy (sendbuf, eltname); memcpy (sendbuf + namelen, buffer, size); CallServer (Message::PUT_DATA, (int *) &namelen, sendbuf, namelen + size); delete [] sendbuf; }
Client::DataElement * Client::GetDataElement ( const char * eltname ) { CheckIfTerminated (); size_t replysize; char * reply = CallServer (Message::GET_ELEMENT, NULL, eltname, strlen (eltname) + 1, &replysize); if (reply == NULL) return NULL; DataElement * elt = new DataElement (); elt->Unserialize (reply); delete [] reply; return elt; }
Client::Function * Client::GetFunction ( const char * funcname ) { CheckIfTerminated (); size_t replysize; char * reply = CallServer (Message::GET_FUNCTION, NULL, funcname, strlen (funcname) + 1, &replysize); if (reply == NULL) return NULL; Function * func = new Function (); func->Unserialize (reply); delete [] reply; return func; }
int _cdecl main( IN INT argc, IN PCSTR argv[] ) { DWORD dwError = ERROR_SUCCESS; SSPI_CLIENT_PARAMS params = { 0 }; params.pszMessage = DEFAULT_MESSAGE; params.pszServerName = DEFAULT_SERVER_NAME; params.usServerPort = DEFAULT_SERVER_PORT; params.pszSecurityPackage = DEFAULT_SECURITY_PACKAGE; params.ulIscFlags = DEFAULT_ISC_FLAGS; ParseArgs(argc, argv, ¶ms); if (params.bSignOnly) { printf("No encryption - sign only\n"); } printf("Context req flags:\n"); DumpIscReqFlags(params.ulIscFlags); printf("\n"); dwError = CallServer( params.pszServerName, params.usServerPort, params.pszServerPrincipalName, params.pszUserName, params.pszUserPassword, params.pszUserDomain, params.ulIscFlags, params.pszMessage, params.pszSecurityPackage, params.bSignOnly ); BAIL_ON_ERROR(dwError); error: return dwError; }
void Client::GetData ( const char * eltname, unsigned char * buffer, size_t size ) { CheckIfTerminated (); size_t replysize; char * reply = CallServer (Message::GET_DATA, NULL, eltname, strlen (eltname) + 1, &replysize); if (reply == NULL) throw new Exception (false, "Server does not return any data for element \"%s\"", eltname); if (replysize > size) throw new Exception (false, "Data returned by server for element \"%s\" does not fit in supplied buffer (%d < %d)\n", eltname, size, replysize); memcpy (buffer, reply, replysize); delete [] reply; }
Client::ArrayShape * Client::GetArrayShape ( const char * arrayname ) { CheckIfTerminated (); int value; char * reply = CallServer (Message::ARRAY_SHAPE, &value, arrayname, strlen (arrayname) + 1); if (reply == NULL) return NULL; if ((bool) value == false) { delete [] reply; return NULL; } ArrayShape * ash = new ArrayShape (); ash->Unserialize (reply); delete [] reply; return ash; }