merge from muduo lib