blob: 0cac58e1b9c6c43fc94325a3cc4dd851733c66f9 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010 Nokia and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Nokia - Initial API and implementation
*******************************************************************************/
#include "InputBufAdapter.h"
std::map<InputBuf*, TCFInputBufAdpter*> TCFInputBufAdpter::adapterMap;
TCFInputBufAdpter* TCFInputBufAdpter::findInputStream(InputBuf* ibuf) {
std::map<InputBuf*, TCFInputBufAdpter*>::iterator iter = adapterMap.find(ibuf);
if (iter != adapterMap.end()) {
return adapterMap[ibuf];
} else {
// should not get here
check_error(ERR_CHANNEL_CLOSED);
exit(1);
return 0; // quell warning
}
}
TCFInputBufAdpter::TCFInputBufAdpter(InputBuf* ibuf) {
theBuf = ibuf;
//theBuf->cur = theBuf->end = 0;
theBuf->post_read = TCFInputBufAdpter::post_read_impl;
theBuf->wait_read = TCFInputBufAdpter::wait_read_impl;
theBuf->trigger_message = TCFInputBufAdpter::trigger_message_impl;
adapterMap[theBuf] = this;
}
TCFInputBufAdpter::~TCFInputBufAdpter() {
adapterMap.erase(theBuf);
}
void TCFInputBufAdpter::post_read_impl(InputBuf * ibuf,unsigned char *buf, size_t size) {
TCFInputBufAdpter* tcfInputBuf = findInputStream(ibuf);
tcfInputBuf->post_read(ibuf,buf,size);
}
void TCFInputBufAdpter::wait_read_impl(InputBuf * ibuf) {
TCFInputBufAdpter* tcfInputBuf = findInputStream(ibuf);
tcfInputBuf->wait_read(ibuf);
}
void TCFInputBufAdpter::trigger_message_impl(InputBuf * ibuf) {
TCFInputBufAdpter* tcfInputBuf = findInputStream(ibuf);
tcfInputBuf->trigger_message(ibuf);
}