ccs_request_proc.c [plain text]
#include <stdlib.h>
#include <stdio.h>
#include "ccs_request.h" // header file generated by MIDL compiler
#include "cci_debugging.h"
#include "WorkQueue.h"
#include "win-utils.h"
#include "ccs_win_pipe.h"
void ccs_rpc_request(
const long rpcmsg,
const char tspHandle[],
const char* pszUUID,
const long lenRequest,
const char pbRequest[],
const long serverStartTime,
long* return_status ) {
cc_int32 status = 0;
k5_ipc_stream stream;
DWORD* p = (DWORD*)(tspHandle);
WIN_PIPE* pipe = NULL;
#if 0
cci_debug_printf("%s rpcmsg:%d; UUID:<%s> SST:<%s>", __FUNCTION__, rpcmsg, pszUUID, serverStartTime);
#endif
status = (rpcmsg != CCMSG_REQUEST) && (rpcmsg != CCMSG_PING);
if (!status) {
status = k5_ipc_stream_new (&stream);
}
if (!status) {
status = k5_ipc_stream_write (stream, pbRequest, lenRequest);
}
pipe = ccs_win_pipe_new(pszUUID, *p);
worklist_add(rpcmsg, pipe, stream, serverStartTime);
*return_status = status;
}
void ccs_rpc_connect(
const long rpcmsg,
const char tspHandle[],
const char* pszUUID,
long* return_status ) {
DWORD* p = (DWORD*)(tspHandle);
WIN_PIPE* pipe = ccs_win_pipe_new(pszUUID, *p);
#if 0
cci_debug_printf("%s; rpcmsg:%d; UUID: <%s>", __FUNCTION__, rpcmsg, pszUUID);
#endif
worklist_add( rpcmsg,
pipe,
NULL,
(const time_t)0 );
}
CC_UINT32 ccs_authenticate(const CC_CHAR* name) {
HANDLE hMap = 0;
PDWORD pvalue = 0;
CC_UINT32 result = 0;
DWORD status = 0;
#if 0
cci_debug_printf("%s ( %s )", __FUNCTION__, name);
#endif
hMap = OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, (LPSTR)name);
status = !hMap;
if (!status) {
pvalue = (PDWORD)MapViewOfFile(hMap, FILE_MAP_WRITE, 0, 0, 0);
status = !pvalue;
}
if (!status) {
*pvalue += 1;
result = *pvalue;
}
if (pvalue) {
UnmapViewOfFile(pvalue);
}
if (hMap) CloseHandle(hMap);
return result;
}