Changeset - b3f59f9bb668
backends/twitter/Requests/CreateFriendRequest.h
Show inline comments
 
#ifndef CREATE_FRIEND
 
#define CREATE_FRIEND
 

	
 
#include "../ThreadPool.h"
 
#include "transport/threadpool.h"
 
#include "../TwitterResponseParser.h"
 
#include "../libtwitcurl/twitcurl.h"
 
#include "transport/logging.h"
 
#include <string>
 
#include <boost/function.hpp>
 
#include <iostream>
 
#include <vector>
 

	
 
using namespace Transport;
 

	
 
class CreateFriendRequest : public Thread
 
{
 
	twitCurl *twitObj;
 
	std::string user;
 
	std::string frnd;
 
	std::string replyMsg;
 
	boost::function< void (std::string&, User&, std::string &, std::string&) > callBack;
 
	User friendInfo;
 
	std::string profileImg;	
 
	bool success;
 

	
 
	public:
 
	CreateFriendRequest(twitCurl *obj, const std::string &_user, const std::string & _frnd,
 
			     		 boost::function< void (std::string&, User&, std::string &, std::string&) >  cb) {
backends/twitter/Requests/DestroyFriendRequest.h
Show inline comments
 
#ifndef DESTROY_FRIEND
 
#define DESTROY_FRIEND
 

	
 
#include "../ThreadPool.h"
 
#include "transport/threadpool.h"
 
#include "../TwitterResponseParser.h"
 
#include "../libtwitcurl/twitcurl.h"
 
#include "transport/logging.h"
 
#include <string>
 
#include <boost/function.hpp>
 
#include <iostream>
 
#include <vector>
 

	
 
using namespace Transport;
 

	
 
class DestroyFriendRequest : public Thread
 
{
 
	twitCurl *twitObj;
 
	std::string user;
 
	std::string frnd;
 
	std::string replyMsg;
 
	boost::function< void (std::string&, User&, std::string&) > callBack;
 
	User friendInfo;	
 
	bool success;
 

	
 
	public:
 
	DestroyFriendRequest(twitCurl *obj, const std::string &_user, const std::string & _frnd,
 
			     		 boost::function< void (std::string&, User&, std::string&) >  cb) {
 
		twitObj = obj->clone();
backends/twitter/Requests/DirectMessageRequest.h
Show inline comments
 
#ifndef DIRECT_MESSAGE
 
#define DIRECT_MESSAGE
 

	
 
#include "../ThreadPool.h"
 
#include "transport/threadpool.h"
 
#include "../TwitterResponseParser.h"
 
#include "../libtwitcurl/twitcurl.h"
 
#include "transport/logging.h"
 
#include <string>
 
#include <boost/function.hpp>
 
#include <iostream>
 

	
 
using namespace Transport;
 

	
 
class DirectMessageRequest : public Thread
 
{
 
	twitCurl *twitObj;
 
	std::string data;
 
	std::string user;
 
	std::string username;
 
	std::string replyMsg;
 
	boost::function< void (std::string&, std::string &, std::vector<DirectMessage>&, std::string&) > callBack;
 
	std::vector<DirectMessage> messages;
 
	bool success;
 

	
 
	public:
 
	DirectMessageRequest(twitCurl *obj, const std::string &_user, const std::string & _username, const std::string &_data,
 
			     		boost::function< void (std::string&, std::string &, std::vector<DirectMessage>&, std::string&) >  cb) {
 
		twitObj = obj->clone();
backends/twitter/Requests/FetchFriends.h
Show inline comments
 
#ifndef FRIENDS_H
 
#define FRIENDS_H
 

	
 
#include "../ThreadPool.h"
 
#include "transport/threadpool.h"
 
#include "../libtwitcurl/twitcurl.h"
 
#include "../TwitterResponseParser.h"
 
#include "transport/logging.h"
 
#include <string>
 
#include <boost/signals.hpp>
 
#include <boost/function.hpp>
 
#include <boost/bind.hpp>
 
#include <iostream>
 

	
 
using namespace Transport;
 

	
 
class FetchFriends : public Thread
 
{
 
	twitCurl *twitObj;
 
	std::string user;
 
	std::string replyMsg;
 
	std::vector<User> friends;
 
	std::vector<std::string> friendAvatars;
 
	bool success;
 
	boost::function< void (std::string, std::vector<User> &, std::vector<std::string> &, std::string) > callBack;
 

	
 
	public:
 
	FetchFriends(twitCurl *obj, const std::string &_user, 
 
			     boost::function< void (std::string, std::vector<User> &, std::vector<std::string> &, std::string) >  cb) {
backends/twitter/Requests/HelpMessageRequest.h
Show inline comments
 
#ifndef HELPMESSAGE_H
 
#define HELPMESSAGE_H
 

	
 
#include "../ThreadPool.h"
 
#include "transport/threadpool.h"
 
#include "../libtwitcurl/twitcurl.h"
 
#include "transport/networkplugin.h"
 
#include "transport/logging.h"
 
#include <string>
 
#include <boost/function.hpp>
 
#include <iostream>
 

	
 
using namespace Transport;
 

	
 
class HelpMessageRequest : public Thread
 
{
 
	std::string user;
 
	std::string helpMsg;
 
	boost::function<void (std::string &, std::string &)> callBack;
 
	
 
	public:
 
	HelpMessageRequest(const std::string &_user, boost::function<void (std::string &, std::string &)> cb) {
 
		user = _user;
 
		callBack = cb;
 
	}
 

	
 
	void run();
 
	void finalize();
 
};
backends/twitter/Requests/OAuthFlow.h
Show inline comments
 
#ifndef OAUTH_FLOW
 
#define OAUTH_FLOW
 

	
 
#include "../ThreadPool.h"
 
#include "transport/threadpool.h"
 
#include "../libtwitcurl/twitcurl.h"
 
#include "../TwitterPlugin.h"
 
#include "transport/logging.h"
 

	
 
#include <string>
 
#include <iostream>
 

	
 
//class TwitterPlugin;
 
using namespace Transport;
 
class OAuthFlow : public Thread
 
{
 
	twitCurl *twitObj;
 
	std::string username;
 
	std::string user;
 
	std::string authUrl;
 
	TwitterPlugin *np;
 
	bool success;
 
	
 
	public:
 
	OAuthFlow(TwitterPlugin *_np, twitCurl *obj, const std::string &_user, const std::string &_username) {
 
		twitObj = obj->clone();
 
		username = _username;
 
		user = _user;
 
		np = _np;
backends/twitter/Requests/PINExchangeProcess.h
Show inline comments
 
#ifndef PIN_EXCHANGE
 
#define PIN_EXCHANGE
 

	
 
#include "../ThreadPool.h"
 
#include "transport/threadpool.h"
 
#include "../libtwitcurl/twitcurl.h"
 
#include "../TwitterPlugin.h"
 
#include "transport/networkplugin.h"
 
#include "transport/logging.h"
 

	
 
#include <string>
 
#include <iostream>
 

	
 
//class TwitterPlugin;
 
using namespace Transport;
 
class PINExchangeProcess : public Thread
 
{
 
	twitCurl *twitObj;
 
	std::string data;
 
	std::string user;
 
	TwitterPlugin *np;
 
	bool success;
 
	
 
	public:
 
	PINExchangeProcess(TwitterPlugin *_np, twitCurl *obj, const std::string &_user, const std::string &_data) {
 
		twitObj = obj->clone();
 
		data = _data;
 
		user = _user;
 
		np = _np;
backends/twitter/Requests/ProfileImageRequest.h
Show inline comments
 
#ifndef PROFILEIMAGE_H
 
#define PROFILEIMAGE_H
 

	
 
#include "../ThreadPool.h"
 
#include "transport/threadpool.h"
 
#include "../TwitterResponseParser.h"
 
#include "transport/logging.h"
 
#include "transport/config.h"
 
#include <string>
 
#include <boost/signals.hpp>
 
#include <boost/function.hpp>
 
#include <boost/bind.hpp>
 
#include <iostream>
 
#include <sstream>
 

	
 
using namespace Transport;
 
using namespace boost::program_options;
 

	
 
class ProfileImageRequest : public Thread
 
{
 
	std::string user;
 
	std::string buddy;
 
	std::string url;
 
	std::string img;
 
	unsigned int reqID;
 
	boost::function< void (std::string&, std::string&, std::string&, int, std::string&) > callBack;
 

	
 
	std::string ip, port, puser, ppasswd;
 

	
backends/twitter/Requests/RetweetRequest.h
Show inline comments
 
#ifndef RETWEET_H
 
#define RETWEET_H
 

	
 
#include "../ThreadPool.h"
 
#include "transport/threadpool.h"
 
#include "../TwitterResponseParser.h"
 
#include "../libtwitcurl/twitcurl.h"
 
#include "transport/networkplugin.h"
 
#include "transport/logging.h"
 
#include <boost/function.hpp>
 
#include <string>
 
#include <iostream>
 

	
 
using namespace Transport;
 
class RetweetRequest : public Thread
 
{
 
	twitCurl *twitObj;
 
	std::string data;
 
	std::string user;
 
	std::string replyMsg;
 
	bool success;
 
	boost::function < void (std::string&, std::string &) > callBack;
 

	
 
	public:
 
	RetweetRequest(twitCurl *obj, const std::string &_user, const std::string &_data,
 
			       boost::function < void (std::string &, std::string &) > _cb) {
 
		twitObj = obj->clone();
 
		data = _data;
 
		user = _user;
backends/twitter/Requests/StatusUpdateRequest.h
Show inline comments
 
#ifndef STATUS_UPDATE
 
#define STATUS_UPDATE
 

	
 
#include "../ThreadPool.h"
 
#include "transport/threadpool.h"
 
#include "../libtwitcurl/twitcurl.h"
 
#include "transport/networkplugin.h"
 
#include "transport/logging.h"
 
#include <boost/function.hpp>
 
#include <string>
 
#include <iostream>
 

	
 
using namespace Transport;
 
class StatusUpdateRequest : public Thread
 
{
 
	twitCurl *twitObj;
 
	std::string data;
 
	std::string user;
 
	std::string replyMsg;
 
	boost::function<void (std::string& user, std::string& errMsg)> callBack;
 
	bool success;
 

	
 
	public:
 
	StatusUpdateRequest(twitCurl *obj, const std::string &_user, const std::string &_data,
 
						boost::function<void (std::string& user, std::string& errMsg)> cb) {
 
		twitObj = obj->clone();
 
		data = _data;
 
		user = _user;
 
		callBack = cb;
backends/twitter/Requests/TimelineRequest.h
Show inline comments
 
#ifndef TIMELINE_H
 
#define TIMELINE_H
 

	
 
#include "../ThreadPool.h"
 
#include "transport/threadpool.h"
 
#include "../libtwitcurl/twitcurl.h"
 
#include "../TwitterResponseParser.h"
 
#include "transport/logging.h"
 
#include <string>
 
#include <iostream>
 
#include <boost/function.hpp>
 

	
 
using namespace Transport;
 

	
 
class TimelineRequest : public Thread
 
{
 
	twitCurl *twitObj;
 
	std::string user;
 
	std::string userRequested;
 
	std::string replyMsg;
 
	std::string since_id;
 
	bool success;
 
	boost::function< void (std::string&, std::string&, std::vector<Status> &, std::string&) > callBack;
 
	std::vector<Status> tweets;
 

	
 
	public:
 
	TimelineRequest(twitCurl *obj, const std::string &_user, const std::string &_user2, const std::string &_since_id,
 
					boost::function< void (std::string&, std::string&, std::vector<Status> &, std::string&) > cb) {
 
		twitObj = obj->clone();
backends/twitter/TwitterPlugin.h
Show inline comments
 
#ifndef TWITTER_PLUGIN
 
#define TWITTER_PLUGIN
 

	
 
#include "transport/config.h"
 
#include "transport/networkplugin.h"
 
#include "transport/logging.h"
 
#include "transport/sqlite3backend.h"
 
#include "transport/mysqlbackend.h"
 
#include "transport/pqxxbackend.h"
 
#include "transport/storagebackend.h"
 
#include "transport/threadpool.h"
 

	
 
#include "Swiften/Swiften.h"
 
#include "unistd.h"
 
#include "signal.h"
 
#include "sys/wait.h"
 
#include "sys/signal.h"
 

	
 
#include <boost/algorithm/string.hpp>
 
#include <boost/signal.hpp>
 
#include <boost/thread.hpp>
 
#include <boost/thread/mutex.hpp>
 

	
 
#include "twitcurl.h"
 
#include "TwitterResponseParser.h"
 

	
 
#include <iostream>
 
#include <sstream>
 
#include <map>
 
#include <vector>
 
#include <queue>
 
#include <set>
 
#include <cstdio>
 

	
 
#include "ThreadPool.h"
 
#include "Swiften/StringCodecs/SHA1.h"
 

	
 
using namespace boost::filesystem;
 
using namespace boost::program_options;
 
using namespace Transport;
 

	
 
#define STR(x) (std::string("(") + x.from + ", " + x.to + ", " + x.message + ")")
 

	
 
class TwitterPlugin;
 
extern TwitterPlugin *np;
 
extern Swift::SimpleEventLoop *loop_; // Event Loop
 

	
 
class TwitterPlugin : public NetworkPlugin {
 
	public:
 
		Swift::BoostNetworkFactories *m_factories;
 
		Swift::BoostIOServiceThread m_boostIOServiceThread;
 
		boost::shared_ptr<Swift::Connection> m_conn;
 
		Swift::Timer::ref tweet_timer;
 
		Swift::Timer::ref message_timer;
 
		StorageBackend *storagebackend;
 

	
 
		TwitterPlugin(Config *config, Swift::SimpleEventLoop *loop, StorageBackend *storagebackend, const std::string &host, int port);
 
		~TwitterPlugin();
 

	
include/transport/threadpool.h
Show inline comments
 
file renamed from backends/twitter/ThreadPool.h to include/transport/threadpool.h
src/threadpool.cpp
Show inline comments
 
file renamed from backends/twitter/ThreadPool.cpp to src/threadpool.cpp
 
#include "ThreadPool.h"
 
#include "transport/threadpool.h"
 
DEFINE_LOGGER(logger, "ThreadPool")
 
boost::signals2::signal< void (Thread*, int) > onWorkCompleted;
 

	
 
static void Worker(Thread *t, int wid, Swift::EventLoop *loop)
 
{
 
	LOG4CXX_INFO(logger, "Starting thread " << wid)
 
	t->run();
 
	loop->postEvent(boost::bind(boost::ref(onWorkCompleted), t, wid), boost::shared_ptr<Swift::EventOwner>());
 
}
 

	
 

	
 
ThreadPool::ThreadPool(Swift::EventLoop *loop, int maxthreads) : MAX_THREADS(maxthreads)
 
{
 
	this->loop = loop;
 
	activeThreads = 0;
 
	worker = new boost::thread*[MAX_THREADS];
 
	for(int i=0 ; i<MAX_THREADS ; i++) {
 
		worker[i] = NULL;
 
		freeThreads.push(i);
 
	}
 
	onWorkCompleted.connect(boost::bind(&ThreadPool::cleandUp, this, _1, _2));
 
	onWorkerAvailable.connect(boost::bind(&ThreadPool::scheduleFromQueue, this));
 
}
 

	
0 comments (0 inline, 0 general)