- added better live reload. It uses the Retroshare built in server. Grunt is not required anymore.
- removed unused buttons
- started ChatHandler

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@8185 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
electron128 2015-04-29 11:57:56 +00:00
parent 90d6ac6697
commit b05ee805e4
13 changed files with 179 additions and 63 deletions

View file

@ -255,10 +255,13 @@ public:
ApiServer::ApiServer():
mMtx("ApiServer mMtx"),
mStateTokenServer(),
mLivereloadhandler(&mStateTokenServer),
mMainModules(0)
{
mRouter.addResourceHandler("statetokenservice", dynamic_cast<ResourceRouter*>(&mStateTokenServer),
&StateTokenServer::handleRequest);
mRouter.addResourceHandler("livereload", dynamic_cast<ResourceRouter*>(&mLivereloadhandler),
&LivereloadHandler::handleRequest);
}
ApiServer::~ApiServer()

View file

@ -9,6 +9,7 @@
#include "StateTokenServer.h"
#include "FileSearchHandler.h"
#include "TransfersHandler.h"
#include "LivereloadHandler.h"
namespace resource_api{
@ -77,6 +78,7 @@ private:
RsMutex mMtx;
StateTokenServer mStateTokenServer; // goes first, as others may depend on it
// is always loaded, because it has no dependencies
LivereloadHandler mLivereloadhandler;
// only pointers here, to load/unload modules at runtime
ApiServerMainModules* mMainModules; // loaded when RS is started

View file

@ -0,0 +1 @@
#include "ChatHandler.h"

View file

@ -0,0 +1,50 @@
#pragma once
#include "ResourceRouter.h"
#include "StateTokenServer.h"
#include <retroshare/rsnotify.h>
class RsMsgs;
namespace resource_api
{
class ChatHandler: public ResourceRouter, NotifyClient
{
public:
ChatHandler(StateTokenServer* sts, RsNotify* notify, RsMsgs* msgs);
virtual ~ChatHandler();
// from NotifyClient
// note: this may get called from the own and from foreign threads
virtual void notifyChatMessage();
private:
void handleWildcard(Request& req, Response& resp);
StateTokenServer* mStateTokenServer;
RsNotify* mNotify;
RsMsgs* mRsMsgs;
RsMutex mMtx;
StateToken mStateToken; // mutex protected
// msgs flow like this:
// chatservice -> rawMsgs -> processedMsgs -> deletion
std::map<ChatId, std::list<ChatMessage> > mRawMsgs;
class Msg{
public:
bool incoming;
bool was_send;
//std::string chat_type;
std::string author_id; // peer or gxs id or "system" for system messages
std::string author_name;
std::string msg; // plain text only!
};
std::map<ChatId, std::list<Msg> > mProcessedMsgs;
};
} // namespace resource_api

View file

@ -0,0 +1,25 @@
#include "LivereloadHandler.h"
namespace resource_api
{
LivereloadHandler::LivereloadHandler(StateTokenServer *sts):
mStateTokenServer(sts), mStateToken(sts->getNewToken())
{
addResourceHandler("*", this, &LivereloadHandler::handleWildcard);
addResourceHandler("trigger", this, &LivereloadHandler::handleTrigger);
}
void LivereloadHandler::handleWildcard(Request &/*req*/, Response &resp)
{
resp.mStateToken = mStateToken;
resp.setOk();
}
void LivereloadHandler::handleTrigger(Request &/*req*/, Response &resp)
{
mStateTokenServer->replaceToken(mStateToken);
resp.mStateToken = mStateToken;
resp.setOk();
}
} // namespace resource_api

View file

@ -0,0 +1,23 @@
#pragma once
#include "ResourceRouter.h"
#include "StateTokenServer.h"
namespace resource_api
{
// very simple livereload system, integrated into the existing state token system
// the response to / is only a statetoken
// if /trigger is called, then the state token is invalidaten and replaced wiht a new one
class LivereloadHandler: public ResourceRouter
{
public:
LivereloadHandler(StateTokenServer* sts);
private:
void handleWildcard(Request& req, Response& resp);
void handleTrigger(Request& req, Response& resp);
StateTokenServer* mStateTokenServer;
StateToken mStateToken;
};
} // namespace resource_api