Skip to content

Commit

Permalink
real audio client 工程 添加控制台操作。
Browse files Browse the repository at this point in the history
  • Loading branch information
prudens committed Oct 25, 2017
1 parent 37bfdf4 commit 245e7f9
Show file tree
Hide file tree
Showing 19 changed files with 760 additions and 1,342 deletions.
87 changes: 12 additions & 75 deletions outsource/real_audio_client/main.cpp
Original file line number Diff line number Diff line change
@@ -1,80 +1,17 @@
//#define _TEST
#ifdef _TEST
#include <cstdlib>
#include <cstring>
#include <iostream>
#include "asio.hpp"
#include "base/time_cvt.hpp"
using asio::ip::udp;

enum { max_length = 1024 };

int main( int argc, char* argv[] )
{
try
{

asio::io_context io_context;

udp::socket s( io_context, udp::endpoint( udp::v4(), 0 ) );

int64_t t[3];
t[0] = timestamp();
size_t request_length = sizeof( t );
s.send_to( asio::buffer( (char*)t, request_length ), udp::endpoint( asio::ip::make_address_v4("127.0.0.1"), 8080 ) );

udp::endpoint sender_endpoint;
size_t reply_length = s.receive_from(
asio::buffer( (char*)t, request_length ), sender_endpoint );
t[2] = timestamp();
std::cout << "t1:" << t[0] << " t2:" << t[1] << " t3:" << t[2];
std::cout << "相差了:" << ( t[0] + t[2] ) / 2 - t[1] << "ms";
}
catch ( std::exception& e )
{
std::cerr << "Exception: " << e.what() << "\n";
}

return 0;
}
#else
#include <stdlib.h>
#include <iostream>
#include <memory>
#include "client_module.h"
#include "audio_error.h"
#include "base/async_task.h"
#include "base/timer.h"
#include "user_manager.h"
#include <random>
int main( int argc, char** argv )
#include <thread>
#include "engine.h"
int main(int argc, char** argv)
{
ClientModule::CreateInstance();
std::string filename;
if (argc == 2)
{
filename = argv[1];
}
std::thread(run_engine, filename, "d:/").join();

return 0;
}

auto user_mgr = std::make_shared<UserManager>();
user_mgr->SetEventCallback( [] ( UID userid, int status )
{
if ( status == 4)
{
printf( "[%s]登录失败\n",userid.c_str() );
}
else
{
printf("[%s]登陆失败", userid.c_str());
}
});
std::random_device rd; //Will be used to obtain a seed for the random number engine
std::mt19937 gen( rd() ); //Standard mersenne_twister_engine seeded with rd()
std::uniform_int_distribution<> dis( 1000, 60000 );

auto userid = std::to_string( dis(gen) );
user_mgr->Login( userid );
system("pause");
user_mgr->Logout();
system( "pause" );
user_mgr.reset();
ClientModule::DestroyInstance();

return 0;
}
#endif
4 changes: 2 additions & 2 deletions outsource/real_audio_client/real_audio_client.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ class RealAudioClient
RealAudioClient();
~RealAudioClient();
public:
int Start(UID userid, RID roomid);
int Start(std::string userid, RID roomid);
int Stop();
int Login();
int Logout();
Expand All @@ -21,7 +21,7 @@ class RealAudioClient
int GetMessage(RAMsg *msg);
public:
private:
UID userid = 0;
std::string userid;
RID roomid = 0;

};
79 changes: 51 additions & 28 deletions outsource/real_audio_client/real_audio_client.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,56 @@
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\packet.cpp" />
<ClCompile Include="..\protobuf_packet.cpp" />
<ClCompile Include="..\user_service.pb.cc" />
<ClCompile Include="api\audio_typedef.cpp" />
<ClCompile Include="api\module_debug_impl.cpp" />
<ClCompile Include="api\snail_audio_engine_impl.cpp" />
<ClCompile Include="audio_client.cpp" />
<ClCompile Include="audio_error.cpp" />
<ClCompile Include="client_manager.cpp" />
<ClCompile Include="client_module.cpp" />
<ClCompile Include="engine.cpp" />
<ClCompile Include="file_process.cpp" />
<ClCompile Include="import_lib.cpp" />
<ClCompile Include="io_thread.cpp" />
<ClCompile Include="main.cpp" />
<ClCompile Include="message_queue.cpp" />
<ClCompile Include="real_audio_client.cpp" />
<ClCompile Include="server_config.cpp" />
<ClCompile Include="user_list.cpp" />
<ClCompile Include="user_manager.cpp" />
<ClCompile Include="user_service.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\packet.h" />
<ClInclude Include="..\protobuf_packet.h" />
<ClInclude Include="..\user_service.pb.h" />
<ClInclude Include="api\audio_typedef.h" />
<ClInclude Include="api\IModuleDebuger.h" />
<ClInclude Include="api\IModuleDebuger_OC.h" />
<ClInclude Include="api\ISnailAudioEngine.h" />
<ClInclude Include="api\ISnailAudioModule.h" />
<ClInclude Include="api\module_debug_impl.h" />
<ClInclude Include="api\SnailAudioEngineHelper.h" />
<ClInclude Include="api\SnailAudioEngine_OC.h" />
<ClInclude Include="api\snail_audio_engine_impl.h" />
<ClInclude Include="audio_client.h" />
<ClInclude Include="audio_error.h" />
<ClInclude Include="client_manager.h" />
<ClInclude Include="client_module.h" />
<ClInclude Include="cmd.h" />
<ClInclude Include="config.h" />
<ClInclude Include="engine.h" />
<ClInclude Include="message_queue.h" />
<ClInclude Include="real_audio_client.h" />
<ClInclude Include="server_config.h" />
<ClInclude Include="user_list.h" />
<ClInclude Include="user_manager.h" />
<ClInclude Include="user_service.h" />
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{B3780BDA-F699-447E-A998-12ED78C8681A}</ProjectGuid>
<RootNamespace>real_audio_client</RootNamespace>
Expand Down Expand Up @@ -48,7 +98,7 @@
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>..\..\;..\..\processing\src;../../network/asio/asio/include;../;</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>..\..\;..\..\processing\src;../../network/asio/asio/include;../;./api;</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_MBCS;_WIN32_WINNT=0x0501;ASIO_STANDALONE; _CRT_SECURE_NO_WARNINGS;PROTOBUF_INLINE_NOT_IN_HEADERS;ASIO_ENABLE_CANCELIO;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
Expand All @@ -73,33 +123,6 @@
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\packet.cpp" />
<ClCompile Include="..\protobuf_packet.cpp" />
<ClCompile Include="..\user_service.pb.cc" />
<ClCompile Include="audio_error.cpp" />
<ClCompile Include="client_module.cpp" />
<ClCompile Include="import_lib.cpp" />
<ClCompile Include="main.cpp" />
<ClCompile Include="real_audio_client.cpp" />
<ClCompile Include="server_config.cpp" />
<ClCompile Include="user_list.cpp" />
<ClCompile Include="user_manager.cpp" />
<ClCompile Include="user_service.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\packet.h" />
<ClInclude Include="..\protobuf_packet.h" />
<ClInclude Include="..\real_audio_common.h" />
<ClInclude Include="..\user_service.pb.h" />
<ClInclude Include="audio_error.h" />
<ClInclude Include="client_module.h" />
<ClInclude Include="real_audio_client.h" />
<ClInclude Include="server_config.h" />
<ClInclude Include="user_list.h" />
<ClInclude Include="user_manager.h" />
<ClInclude Include="user_service.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
Expand Down
88 changes: 78 additions & 10 deletions outsource/real_audio_client/user_list.cpp
Original file line number Diff line number Diff line change
@@ -1,12 +1,79 @@
#include "user_list.h"

bool UserList::Add(tUserPtr ptr)

struct UserImpl : public IUser
{
virtual void SetUserID(std::string user_id)
{
_user_id = user_id;
}
virtual void SetUserName(std::string user_name)
{
_user_name = user_name;
}
virtual void SetUserExtend(std::string user_extend)
{
_user_extend = user_extend;
}
virtual void SetDeviceType(int dev_type)
{
_device_type = dev_type;
}
virtual void SetStatus(int status)
{
_status = status;
}

virtual const std::string& GetUserID()const
{
return _user_id;
}
virtual const std::string& GetUserName()const
{
return _user_name;
}
virtual const std::string& GetUserExtend()const
{
return _user_extend;
}
virtual int GetDeviceType()const
{
return _device_type;
}
virtual int GetStatus()const
{
return _status;
}

virtual void CopyFrom(const IUser* user)
{
_user_id = user->GetUserID();
_user_name = user->GetUserName();
_user_extend = user->GetUserExtend();
_device_type = user->GetDeviceType();
_status = user->GetStatus();
}
private:
std::string _user_id;
std::string _user_name;
std::string _user_extend;
int _device_type = 0;
int _status = 0;

};

UserPtr CreateUser()
{
return std::make_shared<UserImpl>();
}

bool UserList::Add(UserPtr ptr)
{
if (!ptr)
{
return false;
}
_users[ptr->user_id] = ptr;
_users[ptr->GetUserID()] = ptr;
return true;
}

Expand All @@ -21,7 +88,7 @@ bool UserList::Remove(std::string user_id)
return true;
}

bool UserList::Update(std::string user_id, tUserPtr ptr)
bool UserList::Update(std::string user_id, UserPtr ptr)
{
auto it = _users.find(user_id);
if (it == _users.end())
Expand All @@ -40,15 +107,16 @@ bool UserList::Update(std::string user_id, std::string user_name)
{
return false;
}
tUserPtr new_ptr = std::make_shared<tUser>();
new_ptr->device_type = it->second->device_type;
new_ptr->user_name = user_name;
new_ptr->user_id = it->second->user_id;
it->second = new_ptr;
UserPtr new_user = CreateUser();
new_user->SetDeviceType( it->second->GetDeviceType());
new_user->SetUserID(it->second->GetUserID());
new_user->SetUserName(user_name);
new_user->SetUserExtend(it->second->GetUserExtend());
it->second = new_user;
return true;
}

const tUserPtr UserList::GetUser(std::string user_id)const
ConstUserPtr UserList::GetUser(std::string user_id)const
{
auto it = _users.find(user_id);
if (it == _users.end())
Expand All @@ -61,4 +129,4 @@ const tUserPtr UserList::GetUser(std::string user_id)const
void UserList::Clear()
{
_users.clear();
}
}
30 changes: 21 additions & 9 deletions outsource/real_audio_client/user_list.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,36 @@
#include <memory>
#include <unordered_map>
#include <mutex>
struct tUser
struct IUser
{
std::string user_id;
std::string user_name;
int device_type;
virtual void SetUserID(std::string user_id ) = 0;
virtual void SetUserName(std::string user_name) = 0;
virtual void SetUserExtend(std::string extend) = 0;
virtual void SetDeviceType(int dev_type) = 0;
virtual void SetStatus(int status) = 0;

virtual const std::string& GetUserID()const = 0;
virtual const std::string& GetUserName()const = 0;
virtual const std::string& GetUserExtend()const = 0;
virtual int GetDeviceType()const = 0;
virtual int GetStatus()const = 0;
virtual void CopyFrom(const IUser* user) = 0;
};
typedef std::shared_ptr<tUser> tUserPtr;

typedef std::shared_ptr<IUser> UserPtr;
typedef std::shared_ptr<const IUser> ConstUserPtr;
UserPtr CreateUser();
class UserList
{
public:
bool Add(tUserPtr ptr);
bool Add(UserPtr ptr);
bool Remove(std::string user_id);
bool Update(std::string user_id, tUserPtr ptr);
bool Update(std::string user_id, UserPtr ptr);
bool Update(std::string user_id, std::string user_name);
const tUserPtr GetUser(std::string user_id)const;
ConstUserPtr GetUser(std::string user_id)const;
void Clear();
private:
typedef std::unordered_map<std::string,tUserPtr> UserMap;
typedef std::unordered_map<std::string, UserPtr> UserMap;
UserMap _users;
std::mutex _mutex;
};
Loading

0 comments on commit 245e7f9

Please sign in to comment.