diff --git a/doc/db/.back_so-im/so-im-backup-2022522232935.pdma.json b/doc/db/.back_so-im/so-im-backup-2022523162225.pdma.json similarity index 99% rename from doc/db/.back_so-im/so-im-backup-2022522232935.pdma.json rename to doc/db/.back_so-im/so-im-backup-2022523162225.pdma.json index 8f2532f..f365a36 100644 --- a/doc/db/.back_so-im/so-im-backup-2022522232935.pdma.json +++ b/doc/db/.back_so-im/so-im-backup-2022523162225.pdma.json @@ -4,7 +4,7 @@ "avatar": "", "version": "4.1.1", "createdTime": "2022-3-7 15:11:08", - "updatedTime": "2022-5-22 23:29:29", + "updatedTime": "2022-5-23 16:22:23", "profile": { "default": { "db": "8FE7C65E-40EB-41B6-B60E-79063AFF6273", @@ -1145,7 +1145,7 @@ }, { "defKey": "status", - "defName": "状态:1.正常,2.禁用,3删除", + "defName": "状态:0删除,1.正常,2.禁用", "comment": "", "type": "", "len": "", @@ -1443,7 +1443,7 @@ "len": "", "scale": "", "primaryKey": false, - "notNull": false, + "notNull": true, "autoIncrement": false, "defaultValue": "", "hideInGraph": false, diff --git a/doc/db/.back_so-im/so-im-backup-2022522232940.pdma.json b/doc/db/.back_so-im/so-im-backup-2022523173150.pdma.json similarity index 99% rename from doc/db/.back_so-im/so-im-backup-2022522232940.pdma.json rename to doc/db/.back_so-im/so-im-backup-2022523173150.pdma.json index 9a6c749..dd8ce7a 100644 --- a/doc/db/.back_so-im/so-im-backup-2022522232940.pdma.json +++ b/doc/db/.back_so-im/so-im-backup-2022523173150.pdma.json @@ -4,7 +4,7 @@ "avatar": "", "version": "4.1.1", "createdTime": "2022-3-7 15:11:08", - "updatedTime": "2022-5-22 23:29:38", + "updatedTime": "2022-5-23 16:22:25", "profile": { "default": { "db": "8FE7C65E-40EB-41B6-B60E-79063AFF6273", @@ -1145,7 +1145,7 @@ }, { "defKey": "status", - "defName": "状态:1.正常,2.禁用,3删除", + "defName": "状态:0删除,1.正常,2.禁用", "comment": "", "type": "", "len": "", @@ -1443,7 +1443,7 @@ "len": "", "scale": "", "primaryKey": false, - "notNull": false, + "notNull": true, "autoIncrement": false, "defaultValue": "", "hideInGraph": false, diff --git a/doc/db/.back_so-im/so-im-backup-2022522232938.pdma.json b/doc/db/.back_so-im/so-im-backup-2022523173156.pdma.json similarity index 99% rename from doc/db/.back_so-im/so-im-backup-2022522232938.pdma.json rename to doc/db/.back_so-im/so-im-backup-2022523173156.pdma.json index e7f77d7..b62a7ac 100644 --- a/doc/db/.back_so-im/so-im-backup-2022522232938.pdma.json +++ b/doc/db/.back_so-im/so-im-backup-2022523173156.pdma.json @@ -4,7 +4,7 @@ "avatar": "", "version": "4.1.1", "createdTime": "2022-3-7 15:11:08", - "updatedTime": "2022-5-22 23:29:35", + "updatedTime": "2022-5-23 17:31:50", "profile": { "default": { "db": "8FE7C65E-40EB-41B6-B60E-79063AFF6273", @@ -1145,7 +1145,7 @@ }, { "defKey": "status", - "defName": "状态:1.正常,2.禁用,3删除", + "defName": "状态:0删除,1.正常,2.禁用", "comment": "", "type": "", "len": "", @@ -1422,7 +1422,7 @@ "defKey": "fid", "defName": "好友id", "comment": "", - "type": "bigint", + "type": "", "len": "", "scale": "", "primaryKey": false, @@ -1432,7 +1432,7 @@ "hideInGraph": false, "refDict": "", "extProps": {}, - "domain": "", + "domain": "1E5537DF-B204-49BC-AC1D-457BC6DEE707", "id": "E8A2D3BB-2D91-42C5-9403-FE6B103C2712" }, { @@ -1443,7 +1443,7 @@ "len": "", "scale": "", "primaryKey": false, - "notNull": false, + "notNull": true, "autoIncrement": false, "defaultValue": "", "hideInGraph": false, diff --git a/doc/db/so-im.chnr.json b/doc/db/so-im.chnr.json index 1d8ad47..561643c 100644 --- a/doc/db/so-im.chnr.json +++ b/doc/db/so-im.chnr.json @@ -4,7 +4,7 @@ "avatar": "", "version": "4.1.1", "createdTime": "2022-3-7 15:11:08", - "updatedTime": "2022-5-22 23:29:40", + "updatedTime": "2022-5-23 17:31:56", "profile": { "default": { "db": "8FE7C65E-40EB-41B6-B60E-79063AFF6273", @@ -1145,7 +1145,7 @@ }, { "defKey": "status", - "defName": "状态:1.正常,2.禁用,3删除", + "defName": "状态:0删除,1.正常,2.禁用", "comment": "", "type": "", "len": "", diff --git a/im-client/src/main/java/net/sopod/soim/client/handler/msg/ResFriendSearchHandler.java b/im-client/src/main/java/net/sopod/soim/client/handler/msg/ResFriendSearchHandler.java index 2cb212d..f4aa449 100644 --- a/im-client/src/main/java/net/sopod/soim/client/handler/msg/ResFriendSearchHandler.java +++ b/im-client/src/main/java/net/sopod/soim/client/handler/msg/ResFriendSearchHandler.java @@ -3,7 +3,9 @@ package net.sopod.soim.client.handler.msg; import com.google.inject.Singleton; import net.sopod.soim.client.logger.Logger; import net.sopod.soim.client.session.MessageHandler; -import net.sopod.soim.data.msg.friend.Friend; +import net.sopod.soim.data.msg.user.AccountSearch; +import net.sopod.soim.data.msg.user.UserGroup; +import net.sopod.soim.data.msg.user.UserMsg; import java.util.List; import java.util.stream.Collectors; @@ -15,11 +17,11 @@ import java.util.stream.Collectors; * @date 2022-05-17 23:41 */ @Singleton -public class ResFriendSearchHandler implements MessageHandler { +public class ResFriendSearchHandler implements MessageHandler { @Override - public void handleMsg(Friend.ResFriendSearch msg) { - List usersList = msg.getUsersList(); + public void handleMsg(AccountSearch.ResAccountSearch msg) { + List usersList = msg.getUsersList(); List userLines = usersList.stream() .map(u -> u.getUid() + "|" + u.getAccount() + "|" + u.getNickname()) .collect(Collectors.toList()); diff --git a/im-common/src/main/java/net/sopod/soim/common/constant/LogicConsts.java b/im-common/src/main/java/net/sopod/soim/common/constant/LogicConsts.java index 7b3c81e..989b56a 100644 --- a/im-common/src/main/java/net/sopod/soim/common/constant/LogicConsts.java +++ b/im-common/src/main/java/net/sopod/soim/common/constant/LogicConsts.java @@ -8,10 +8,11 @@ package net.sopod.soim.common.constant; */ public interface LogicConsts { + Integer STATUS_DELETED = 0; + Integer STATUS_NORMAL = 1; Integer STATUS_DISABLED = 2; - Integer STATUS_DELETED = 3; } diff --git a/im-das-api/im-das-user-api/src/main/java/net/sopod/soim/das/user/api/model/entity/ImUser.java b/im-das-api/im-das-user-api/src/main/java/net/sopod/soim/das/user/api/model/entity/ImUser.java index d9bdd80..d70f675 100644 --- a/im-das-api/im-das-user-api/src/main/java/net/sopod/soim/das/user/api/model/entity/ImUser.java +++ b/im-das-api/im-das-user-api/src/main/java/net/sopod/soim/das/user/api/model/entity/ImUser.java @@ -28,7 +28,7 @@ public class ImUser implements Serializable { @TableId(value = "id", type= IdType.INPUT) private Long id; - /** 状态:1.正常,2.禁用,3删除 */ + /** 状态:0删除,1.正常,2.禁用 */ @TableField(value = "status") private Integer status; diff --git a/im-das-api/im-das-user-api/src/main/java/net/sopod/soim/das/user/api/service/FriendDas.java b/im-das-api/im-das-user-api/src/main/java/net/sopod/soim/das/user/api/service/FriendDas.java new file mode 100644 index 0000000..56207a2 --- /dev/null +++ b/im-das-api/im-das-user-api/src/main/java/net/sopod/soim/das/user/api/service/FriendDas.java @@ -0,0 +1,50 @@ +package net.sopod.soim.das.user.api.service; + +import net.sopod.soim.das.user.api.model.entity.ImUser; + +import java.util.List; + +/** + * FriendDas + * + * @author tmy + * @date 2022-05-23 15:45 + */ +public interface FriendDas { + + /** + * 新增好友 + * + * @param uid 用户id + * @param fid 好友id + * @return 影响行数 + */ + int insert(Long uid, Long fid); + + /** + * 好友是否存在 + * + * @param uid 用户id + * @param fid 好友id + * @return 影响行数 + */ + Boolean isExists(Long uid, Long fid); + + /** + * 删除好友 + * + * @param uid 用户id + * @param fid 好友id + * @return 影响行数 + */ + int remove(Long uid, Long fid); + + /** + * 查询所有好友 + * + * @param uid 主键 + * @return 好友列表 + */ + List queryAllFriend(Long uid); + +} diff --git a/im-das/im-das-user/src/main/java/net/sopod/soim/das/user/dao/FriendMapper.java b/im-das/im-das-user/src/main/java/net/sopod/soim/das/user/dao/FriendMapper.java index 862b02f..caf4386 100644 --- a/im-das/im-das-user/src/main/java/net/sopod/soim/das/user/dao/FriendMapper.java +++ b/im-das/im-das-user/src/main/java/net/sopod/soim/das/user/dao/FriendMapper.java @@ -2,8 +2,11 @@ package net.sopod.soim.das.user.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import net.sopod.soim.das.user.api.model.entity.ImFriend; +import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; +import java.util.List; + /** * FriendMapper * @@ -13,4 +16,6 @@ import org.springframework.stereotype.Repository; @Repository public interface FriendMapper extends BaseMapper { + List selectAllFriendId(@Param("uid") Long uid); + } diff --git a/im-das/im-das-user/src/main/java/net/sopod/soim/das/user/service/FriendDasImpl.java b/im-das/im-das-user/src/main/java/net/sopod/soim/das/user/service/FriendDasImpl.java new file mode 100644 index 0000000..f37a685 --- /dev/null +++ b/im-das/im-das-user/src/main/java/net/sopod/soim/das/user/service/FriendDasImpl.java @@ -0,0 +1,80 @@ +package net.sopod.soim.das.user.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import lombok.AllArgsConstructor; +import net.sopod.soim.common.constant.LogicConsts; +import net.sopod.soim.common.util.Collects; +import net.sopod.soim.common.util.ImClock; +import net.sopod.soim.das.user.api.model.entity.ImFriend; +import net.sopod.soim.das.user.api.model.entity.ImUser; +import net.sopod.soim.das.user.api.service.FriendDas; +import net.sopod.soim.das.user.dao.FriendMapper; +import net.sopod.soim.das.user.dao.UserMapper; +import org.apache.dubbo.config.annotation.DubboService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.List; + +/** + * FriendDasImpl + * + * @author tmy + * @date 2022-05-23 16:07 + */ +@DubboService +@AllArgsConstructor +public class FriendDasImpl implements FriendDas { + + private static Logger logger = LoggerFactory.getLogger(FriendDasImpl.class); + + private FriendMapper friendMapper; + + private UserMapper userMapper; + + @Override + public int insert(Long uid, Long fid) { + ImFriend imFriend = new ImFriend() + .setUid(uid) + .setFid(fid) + .setStatus(1) + .setCreateTime(ImClock.date()); + return friendMapper.insert(imFriend); + } + + @Override + public Boolean isExists(Long uid, Long fid) { + LambdaQueryWrapper friendQuery = new QueryWrapper().lambda() + .eq(ImFriend::getUid, uid) + .eq(ImFriend::getFid, fid) + .eq(ImFriend::getStatus, 1); + List imFriends = friendMapper.selectList(friendQuery); + if (Collects.isEmpty(imFriends)) { + return Boolean.FALSE; + } + if (imFriends.size() > 1) { + logger.warn("重复的好友数据: user={}, friend={}", uid, fid); + } + return Boolean.TRUE; + } + + @Override + public int remove(Long uid, Long fid) { + LambdaQueryWrapper friendQuery = new QueryWrapper().lambda() + .eq(ImFriend::getUid, uid) + .eq(ImFriend::getFid, fid) + .eq(ImFriend::getStatus, 1); + return friendMapper.update(new ImFriend().setStatus(0), friendQuery); + } + + @Override + public List queryAllFriend(Long uid) { + List fids = friendMapper.selectAllFriendId(uid); + LambdaQueryWrapper userQuery = new QueryWrapper().lambda() + .in(ImUser::getId, fids) + .eq(ImUser::getStatus, LogicConsts.STATUS_NORMAL); + return userMapper.selectList(userQuery); + } + +} diff --git a/im-das/im-das-user/src/main/java/net/sopod/soim/das/user/service/UserDasImpl.java b/im-das/im-das-user/src/main/java/net/sopod/soim/das/user/service/UserDasImpl.java index f29b331..39fd59a 100644 --- a/im-das/im-das-user/src/main/java/net/sopod/soim/das/user/service/UserDasImpl.java +++ b/im-das/im-das-user/src/main/java/net/sopod/soim/das/user/service/UserDasImpl.java @@ -26,7 +26,10 @@ public class UserDasImpl implements UserDas { @Override public ImUser getUserById(Long id) { - return userMapper.selectById(id); + LambdaQueryWrapper userQuery = new QueryWrapper().lambda() + .eq(ImUser::getId, id) + .eq(ImUser::getStatus, LogicConsts.STATUS_NORMAL); + return userMapper.selectOne(userQuery); } @Override diff --git a/im-das/im-das-user/src/main/resources/application.properties b/im-das/im-das-user/src/main/resources/application.properties index 2441421..63a7e3d 100644 --- a/im-das/im-das-user/src/main/resources/application.properties +++ b/im-das/im-das-user/src/main/resources/application.properties @@ -26,7 +26,7 @@ spring.shardingsphere.rules.sharding.sharding-algorithms.im-user-inline.type=INL spring.shardingsphere.rules.sharding.sharding-algorithms.im-user-inline.props.algorithm-expression=im_user_$->{id % 4} # im_friend spring.shardingsphere.rules.sharding.tables.im_friend.actual-data-nodes=ds1.im_user_$->{0..7} -spring.shardingsphere.rules.sharding.tables.im_friend.table-strategy.standard.sharding-column=id +spring.shardingsphere.rules.sharding.tables.im_friend.table-strategy.standard.sharding-column=uid spring.shardingsphere.rules.sharding.tables.im_friend.table-strategy.standard.sharding-algorithm-name=im-friend-inline spring.shardingsphere.rules.sharding.sharding-algorithms.im-friend-inline.type=INLINE spring.shardingsphere.rules.sharding.sharding-algorithms.im-friend-inline.props.algorithm-expression=im-friend-_$->{uid % 8} diff --git a/im-das/im-das-user/src/main/resources/mapper/FriendMapper.xml b/im-das/im-das-user/src/main/resources/mapper/FriendMapper.xml index f218f25..a15823d 100644 --- a/im-das/im-das-user/src/main/resources/mapper/FriendMapper.xml +++ b/im-das/im-das-user/src/main/resources/mapper/FriendMapper.xml @@ -2,4 +2,8 @@ + + diff --git a/im-entry/src/main/java/net/sopod/soim/entry/EntryApplication.java b/im-entry/src/main/java/net/sopod/soim/entry/EntryApplication.java index 951bb1f..63b73af 100644 --- a/im-entry/src/main/java/net/sopod/soim/entry/EntryApplication.java +++ b/im-entry/src/main/java/net/sopod/soim/entry/EntryApplication.java @@ -1,9 +1,6 @@ package net.sopod.soim.entry; -import com.alibaba.nacos.api.exception.NacosException; import org.apache.dubbo.config.spring.context.annotation.EnableDubbo; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/im-entry/src/main/java/net/sopod/soim/entry/handlers/user/ReqAccountSearchHandler.java b/im-entry/src/main/java/net/sopod/soim/entry/handlers/user/ReqAccountSearchHandler.java index 45d8646..09dcb30 100644 --- a/im-entry/src/main/java/net/sopod/soim/entry/handlers/user/ReqAccountSearchHandler.java +++ b/im-entry/src/main/java/net/sopod/soim/entry/handlers/user/ReqAccountSearchHandler.java @@ -3,6 +3,7 @@ package net.sopod.soim.entry.handlers.user; import com.google.protobuf.MessageLite; import net.sopod.soim.data.msg.user.AccountSearch; import net.sopod.soim.data.msg.user.UserGroup; +import net.sopod.soim.data.msg.user.UserMsg; import net.sopod.soim.entry.server.handler.AccountMessageHandler; import net.sopod.soim.entry.server.session.Account; import net.sopod.soim.logic.api.user.service.AccountService; @@ -30,8 +31,8 @@ public class ReqAccountSearchHandler extends AccountMessageHandler> future = accountService.searchAccountLikely(msg.getKeyword()); future.thenAccept(userInfos -> { - List infos = userInfos.stream().map( - acc -> UserGroup.UserInfo.newBuilder() + List infos = userInfos.stream().map( + acc -> UserMsg.UserInfo.newBuilder() .setAccount(acc.getAccount()) .setNickname(acc.getNickname()) .setUid(acc.getUid()) diff --git a/im-entry/src/main/java/net/sopod/soim/entry/handlers/user/ReqAddFriendHandler.java b/im-entry/src/main/java/net/sopod/soim/entry/handlers/user/ReqAddFriendHandler.java new file mode 100644 index 0000000..b605edc --- /dev/null +++ b/im-entry/src/main/java/net/sopod/soim/entry/handlers/user/ReqAddFriendHandler.java @@ -0,0 +1,50 @@ +package net.sopod.soim.entry.handlers.user; + +import com.google.protobuf.MessageLite; +import net.sopod.soim.data.msg.user.AccountSearch; +import net.sopod.soim.data.msg.user.Friend; +import net.sopod.soim.entry.server.handler.AccountMessageHandler; +import net.sopod.soim.entry.server.session.Account; +import net.sopod.soim.logic.api.user.service.FriendService; +import org.apache.dubbo.config.annotation.DubboReference; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import java.util.concurrent.CompletableFuture; + +/** + * ReqAddFriendHandler + * + * @author tmy + * @date 2022-05-23 15:39 + */ +@Service +public class ReqAddFriendHandler extends AccountMessageHandler { + + private static final Logger logger = LoggerFactory.getLogger(ReqAddFriendHandler.class); + + @DubboReference + private FriendService friendService; + + @Override + public MessageLite handle(Account account, Friend.ReqAddFriend req) { + // 好友id + long fid = req.getFid(); + long uid = account.getUid(); + logger.info("添加好友: {}, {}", uid, fid); + CompletableFuture addFuture = friendService.addFriend(uid, fid); + addFuture.whenComplete((msg, err) -> { + if (err != null) { + logger.error("添加好友失败:", err); + return; + } + Friend.ResAddFriend res = Friend.ResAddFriend.newBuilder() + .setSuccess(msg == null).setMsg(msg).build(); + account.writeNow(res); + logger.info("添加好友成功"); + }); + return null; + } + +} diff --git a/im-entry/src/main/java/net/sopod/soim/entry/handlers/user/ReqFriendListHandler.java b/im-entry/src/main/java/net/sopod/soim/entry/handlers/user/ReqFriendListHandler.java new file mode 100644 index 0000000..451a9c7 --- /dev/null +++ b/im-entry/src/main/java/net/sopod/soim/entry/handlers/user/ReqFriendListHandler.java @@ -0,0 +1,29 @@ +package net.sopod.soim.entry.handlers.user; + +import com.google.protobuf.MessageLite; +import net.sopod.soim.data.msg.user.Friend; +import net.sopod.soim.entry.server.handler.AccountMessageHandler; +import net.sopod.soim.entry.server.session.Account; +import net.sopod.soim.logic.api.user.service.FriendService; +import org.apache.dubbo.config.annotation.DubboReference; +import org.springframework.stereotype.Service; + +/** + * ReqFriendListHandler + * + * @author tmy + * @date 2022-05-23 17:42 + */ +@Service +public class ReqFriendListHandler extends AccountMessageHandler { + + @DubboReference + private FriendService friendService; + + @Override + public MessageLite handle(Account account, Friend.ReqFriendList req) { + + return null; + } + +} diff --git a/im-entry/src/main/java/net/sopod/soim/entry/handlers/user/ReqOnlineUserListHandler.java b/im-entry/src/main/java/net/sopod/soim/entry/handlers/user/ReqOnlineUserListHandler.java index de8c87c..27e0cdb 100644 --- a/im-entry/src/main/java/net/sopod/soim/entry/handlers/user/ReqOnlineUserListHandler.java +++ b/im-entry/src/main/java/net/sopod/soim/entry/handlers/user/ReqOnlineUserListHandler.java @@ -1,6 +1,7 @@ package net.sopod.soim.entry.handlers.user; import com.google.protobuf.MessageLite; +import net.sopod.soim.data.msg.user.UserMsg; import net.sopod.soim.entry.server.session.Account; import net.sopod.soim.data.msg.user.UserGroup; import net.sopod.soim.entry.server.handler.AccountMessageHandler; @@ -32,7 +33,7 @@ public class ReqOnlineUserListHandler extends AccountMessageHandler userInfos = userBizService.onlineUserList(msg.getKeyword()); - List resUserInfos = userInfos.stream().map(user -> UserGroup.UserInfo.newBuilder() + List resUserInfos = userInfos.stream().map(user -> UserMsg.UserInfo.newBuilder() .setUid(user.getUid()) .setAccount(user.getAccount()) .build()) diff --git a/im-entry/src/main/java/net/sopod/soim/entry/server/handler/AccountMessageHandler.java b/im-entry/src/main/java/net/sopod/soim/entry/server/handler/AccountMessageHandler.java index a47483a..12e1d31 100644 --- a/im-entry/src/main/java/net/sopod/soim/entry/server/handler/AccountMessageHandler.java +++ b/im-entry/src/main/java/net/sopod/soim/entry/server/handler/AccountMessageHandler.java @@ -14,16 +14,16 @@ import net.sopod.soim.entry.server.session.NetUser; public abstract class AccountMessageHandler implements MessageHandler { @Override - public final void exec(NetUser netUser, T msg) { + public final void exec(NetUser netUser, T req) { if (!netUser.isAccount()) { throw new IllegalStateException("NetUser is not account!" + netUser); } - MessageLite res = handle((Account) netUser, msg); + MessageLite res = handle((Account) netUser, req); if (res != null) { netUser.writeNow(res); } } - public abstract MessageLite handle(Account account, T msg); + public abstract MessageLite handle(Account account, T req); } diff --git a/im-service-api/im-entry-protocol/src/main/java/net/sopod/soim/data/msg/user/AccountSearch.java b/im-service-api/im-entry-protocol/src/main/java/net/sopod/soim/data/msg/user/AccountSearch.java index 9d08135..a9330bb 100644 --- a/im-service-api/im-entry-protocol/src/main/java/net/sopod/soim/data/msg/user/AccountSearch.java +++ b/im-service-api/im-entry-protocol/src/main/java/net/sopod/soim/data/msg/user/AccountSearch.java @@ -589,12 +589,12 @@ public final class AccountSearch { /** * repeated .net.sopod.soim.data.msg.user.UserInfo users = 8; */ - java.util.List + java.util.List getUsersList(); /** * repeated .net.sopod.soim.data.msg.user.UserInfo users = 8; */ - net.sopod.soim.data.msg.user.UserGroup.UserInfo getUsers(int index); + net.sopod.soim.data.msg.user.UserMsg.UserInfo getUsers(int index); /** * repeated .net.sopod.soim.data.msg.user.UserInfo users = 8; */ @@ -602,12 +602,12 @@ public final class AccountSearch { /** * repeated .net.sopod.soim.data.msg.user.UserInfo users = 8; */ - java.util.List + java.util.List getUsersOrBuilderList(); /** * repeated .net.sopod.soim.data.msg.user.UserInfo users = 8; */ - net.sopod.soim.data.msg.user.UserGroup.UserInfoOrBuilder getUsersOrBuilder( + net.sopod.soim.data.msg.user.UserMsg.UserInfoOrBuilder getUsersOrBuilder( int index); } /** @@ -659,11 +659,11 @@ public final class AccountSearch { break; case 66: { if (!((mutable_bitField0_ & 0x00000001) != 0)) { - users_ = new java.util.ArrayList(); + users_ = new java.util.ArrayList(); mutable_bitField0_ |= 0x00000001; } users_.add( - input.readMessage(net.sopod.soim.data.msg.user.UserGroup.UserInfo.parser(), extensionRegistry)); + input.readMessage(net.sopod.soim.data.msg.user.UserMsg.UserInfo.parser(), extensionRegistry)); break; } default: { @@ -702,19 +702,19 @@ public final class AccountSearch { } public static final int USERS_FIELD_NUMBER = 8; - private java.util.List users_; + private java.util.List users_; /** * repeated .net.sopod.soim.data.msg.user.UserInfo users = 8; */ @java.lang.Override - public java.util.List getUsersList() { + public java.util.List getUsersList() { return users_; } /** * repeated .net.sopod.soim.data.msg.user.UserInfo users = 8; */ @java.lang.Override - public java.util.List + public java.util.List getUsersOrBuilderList() { return users_; } @@ -729,14 +729,14 @@ public final class AccountSearch { * repeated .net.sopod.soim.data.msg.user.UserInfo users = 8; */ @java.lang.Override - public net.sopod.soim.data.msg.user.UserGroup.UserInfo getUsers(int index) { + public net.sopod.soim.data.msg.user.UserMsg.UserInfo getUsers(int index) { return users_.get(index); } /** * repeated .net.sopod.soim.data.msg.user.UserInfo users = 8; */ @java.lang.Override - public net.sopod.soim.data.msg.user.UserGroup.UserInfoOrBuilder getUsersOrBuilder( + public net.sopod.soim.data.msg.user.UserMsg.UserInfoOrBuilder getUsersOrBuilder( int index) { return users_.get(index); } @@ -1083,22 +1083,22 @@ public final class AccountSearch { } private int bitField0_; - private java.util.List users_ = + private java.util.List users_ = java.util.Collections.emptyList(); private void ensureUsersIsMutable() { if (!((bitField0_ & 0x00000001) != 0)) { - users_ = new java.util.ArrayList(users_); + users_ = new java.util.ArrayList(users_); bitField0_ |= 0x00000001; } } private com.google.protobuf.RepeatedFieldBuilderV3< - net.sopod.soim.data.msg.user.UserGroup.UserInfo, net.sopod.soim.data.msg.user.UserGroup.UserInfo.Builder, net.sopod.soim.data.msg.user.UserGroup.UserInfoOrBuilder> usersBuilder_; + net.sopod.soim.data.msg.user.UserMsg.UserInfo, net.sopod.soim.data.msg.user.UserMsg.UserInfo.Builder, net.sopod.soim.data.msg.user.UserMsg.UserInfoOrBuilder> usersBuilder_; /** * repeated .net.sopod.soim.data.msg.user.UserInfo users = 8; */ - public java.util.List getUsersList() { + public java.util.List getUsersList() { if (usersBuilder_ == null) { return java.util.Collections.unmodifiableList(users_); } else { @@ -1118,7 +1118,7 @@ public final class AccountSearch { /** * repeated .net.sopod.soim.data.msg.user.UserInfo users = 8; */ - public net.sopod.soim.data.msg.user.UserGroup.UserInfo getUsers(int index) { + public net.sopod.soim.data.msg.user.UserMsg.UserInfo getUsers(int index) { if (usersBuilder_ == null) { return users_.get(index); } else { @@ -1129,7 +1129,7 @@ public final class AccountSearch { * repeated .net.sopod.soim.data.msg.user.UserInfo users = 8; */ public Builder setUsers( - int index, net.sopod.soim.data.msg.user.UserGroup.UserInfo value) { + int index, net.sopod.soim.data.msg.user.UserMsg.UserInfo value) { if (usersBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -1146,7 +1146,7 @@ public final class AccountSearch { * repeated .net.sopod.soim.data.msg.user.UserInfo users = 8; */ public Builder setUsers( - int index, net.sopod.soim.data.msg.user.UserGroup.UserInfo.Builder builderForValue) { + int index, net.sopod.soim.data.msg.user.UserMsg.UserInfo.Builder builderForValue) { if (usersBuilder_ == null) { ensureUsersIsMutable(); users_.set(index, builderForValue.build()); @@ -1159,7 +1159,7 @@ public final class AccountSearch { /** * repeated .net.sopod.soim.data.msg.user.UserInfo users = 8; */ - public Builder addUsers(net.sopod.soim.data.msg.user.UserGroup.UserInfo value) { + public Builder addUsers(net.sopod.soim.data.msg.user.UserMsg.UserInfo value) { if (usersBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -1176,7 +1176,7 @@ public final class AccountSearch { * repeated .net.sopod.soim.data.msg.user.UserInfo users = 8; */ public Builder addUsers( - int index, net.sopod.soim.data.msg.user.UserGroup.UserInfo value) { + int index, net.sopod.soim.data.msg.user.UserMsg.UserInfo value) { if (usersBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -1193,7 +1193,7 @@ public final class AccountSearch { * repeated .net.sopod.soim.data.msg.user.UserInfo users = 8; */ public Builder addUsers( - net.sopod.soim.data.msg.user.UserGroup.UserInfo.Builder builderForValue) { + net.sopod.soim.data.msg.user.UserMsg.UserInfo.Builder builderForValue) { if (usersBuilder_ == null) { ensureUsersIsMutable(); users_.add(builderForValue.build()); @@ -1207,7 +1207,7 @@ public final class AccountSearch { * repeated .net.sopod.soim.data.msg.user.UserInfo users = 8; */ public Builder addUsers( - int index, net.sopod.soim.data.msg.user.UserGroup.UserInfo.Builder builderForValue) { + int index, net.sopod.soim.data.msg.user.UserMsg.UserInfo.Builder builderForValue) { if (usersBuilder_ == null) { ensureUsersIsMutable(); users_.add(index, builderForValue.build()); @@ -1221,7 +1221,7 @@ public final class AccountSearch { * repeated .net.sopod.soim.data.msg.user.UserInfo users = 8; */ public Builder addAllUsers( - java.lang.Iterable values) { + java.lang.Iterable values) { if (usersBuilder_ == null) { ensureUsersIsMutable(); com.google.protobuf.AbstractMessageLite.Builder.addAll( @@ -1261,14 +1261,14 @@ public final class AccountSearch { /** * repeated .net.sopod.soim.data.msg.user.UserInfo users = 8; */ - public net.sopod.soim.data.msg.user.UserGroup.UserInfo.Builder getUsersBuilder( + public net.sopod.soim.data.msg.user.UserMsg.UserInfo.Builder getUsersBuilder( int index) { return getUsersFieldBuilder().getBuilder(index); } /** * repeated .net.sopod.soim.data.msg.user.UserInfo users = 8; */ - public net.sopod.soim.data.msg.user.UserGroup.UserInfoOrBuilder getUsersOrBuilder( + public net.sopod.soim.data.msg.user.UserMsg.UserInfoOrBuilder getUsersOrBuilder( int index) { if (usersBuilder_ == null) { return users_.get(index); } else { @@ -1278,7 +1278,7 @@ public final class AccountSearch { /** * repeated .net.sopod.soim.data.msg.user.UserInfo users = 8; */ - public java.util.List + public java.util.List getUsersOrBuilderList() { if (usersBuilder_ != null) { return usersBuilder_.getMessageOrBuilderList(); @@ -1289,31 +1289,31 @@ public final class AccountSearch { /** * repeated .net.sopod.soim.data.msg.user.UserInfo users = 8; */ - public net.sopod.soim.data.msg.user.UserGroup.UserInfo.Builder addUsersBuilder() { + public net.sopod.soim.data.msg.user.UserMsg.UserInfo.Builder addUsersBuilder() { return getUsersFieldBuilder().addBuilder( - net.sopod.soim.data.msg.user.UserGroup.UserInfo.getDefaultInstance()); + net.sopod.soim.data.msg.user.UserMsg.UserInfo.getDefaultInstance()); } /** * repeated .net.sopod.soim.data.msg.user.UserInfo users = 8; */ - public net.sopod.soim.data.msg.user.UserGroup.UserInfo.Builder addUsersBuilder( + public net.sopod.soim.data.msg.user.UserMsg.UserInfo.Builder addUsersBuilder( int index) { return getUsersFieldBuilder().addBuilder( - index, net.sopod.soim.data.msg.user.UserGroup.UserInfo.getDefaultInstance()); + index, net.sopod.soim.data.msg.user.UserMsg.UserInfo.getDefaultInstance()); } /** * repeated .net.sopod.soim.data.msg.user.UserInfo users = 8; */ - public java.util.List + public java.util.List getUsersBuilderList() { return getUsersFieldBuilder().getBuilderList(); } private com.google.protobuf.RepeatedFieldBuilderV3< - net.sopod.soim.data.msg.user.UserGroup.UserInfo, net.sopod.soim.data.msg.user.UserGroup.UserInfo.Builder, net.sopod.soim.data.msg.user.UserGroup.UserInfoOrBuilder> + net.sopod.soim.data.msg.user.UserMsg.UserInfo, net.sopod.soim.data.msg.user.UserMsg.UserInfo.Builder, net.sopod.soim.data.msg.user.UserMsg.UserInfoOrBuilder> getUsersFieldBuilder() { if (usersBuilder_ == null) { usersBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< - net.sopod.soim.data.msg.user.UserGroup.UserInfo, net.sopod.soim.data.msg.user.UserGroup.UserInfo.Builder, net.sopod.soim.data.msg.user.UserGroup.UserInfoOrBuilder>( + net.sopod.soim.data.msg.user.UserMsg.UserInfo, net.sopod.soim.data.msg.user.UserMsg.UserInfo.Builder, net.sopod.soim.data.msg.user.UserMsg.UserInfoOrBuilder>( users_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), @@ -1395,16 +1395,16 @@ public final class AccountSearch { static { java.lang.String[] descriptorData = { "\n\036proto/user/AccountSearch.proto\022\034net.so" + - "pod.soim.data.msg.user\032\032proto/user/UserG" + - "roup.proto\"#\n\020ReqAccountSearch\022\017\n\007keywor" + - "d\030\001 \001(\t\"I\n\020ResAccountSearch\0225\n\005users\030\010 \003" + - "(\0132&.net.sopod.soim.data.msg.user.UserIn" + - "foB\021B\rAccountSearchP\000b\006proto3" + "pod.soim.data.msg.user\032\030proto/user/UserM" + + "sg.proto\"#\n\020ReqAccountSearch\022\017\n\007keyword\030" + + "\001 \001(\t\"I\n\020ResAccountSearch\0225\n\005users\030\010 \003(\013" + + "2&.net.sopod.soim.data.msg.user.UserInfo" + + "B\021B\rAccountSearchP\000b\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, new com.google.protobuf.Descriptors.FileDescriptor[] { - net.sopod.soim.data.msg.user.UserGroup.getDescriptor(), + net.sopod.soim.data.msg.user.UserMsg.getDescriptor(), }); internal_static_net_sopod_soim_data_msg_user_ReqAccountSearch_descriptor = getDescriptor().getMessageTypes().get(0); @@ -1418,7 +1418,7 @@ public final class AccountSearch { com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_net_sopod_soim_data_msg_user_ResAccountSearch_descriptor, new java.lang.String[] { "Users", }); - net.sopod.soim.data.msg.user.UserGroup.getDescriptor(); + net.sopod.soim.data.msg.user.UserMsg.getDescriptor(); } // @@protoc_insertion_point(outer_class_scope) diff --git a/im-service-api/im-entry-protocol/src/main/java/net/sopod/soim/data/msg/user/AddFriend.java b/im-service-api/im-entry-protocol/src/main/java/net/sopod/soim/data/msg/user/AddFriend.java deleted file mode 100644 index 04e0d0b..0000000 --- a/im-service-api/im-entry-protocol/src/main/java/net/sopod/soim/data/msg/user/AddFriend.java +++ /dev/null @@ -1,1038 +0,0 @@ -// Generated by the protocol buffer compiler. DO NOT EDIT! -// source: proto/user/AddFriend.proto - -package net.sopod.soim.data.msg.user; - -public final class AddFriend { - private AddFriend() {} - public static void registerAllExtensions( - com.google.protobuf.ExtensionRegistryLite registry) { - } - - public static void registerAllExtensions( - com.google.protobuf.ExtensionRegistry registry) { - registerAllExtensions( - (com.google.protobuf.ExtensionRegistryLite) registry); - } - public interface ReqAddFriendOrBuilder extends - // @@protoc_insertion_point(interface_extends:net.sopod.soim.data.msg.user.ReqAddFriend) - com.google.protobuf.MessageOrBuilder { - - /** - * int64 uid = 1; - * @return The uid. - */ - long getUid(); - } - /** - * Protobuf type {@code net.sopod.soim.data.msg.user.ReqAddFriend} - */ - public static final class ReqAddFriend extends - com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:net.sopod.soim.data.msg.user.ReqAddFriend) - ReqAddFriendOrBuilder { - private static final long serialVersionUID = 0L; - // Use ReqAddFriend.newBuilder() to construct. - private ReqAddFriend(com.google.protobuf.GeneratedMessageV3.Builder builder) { - super(builder); - } - private ReqAddFriend() { - } - - @java.lang.Override - @SuppressWarnings({"unused"}) - protected java.lang.Object newInstance( - UnusedPrivateParameter unused) { - return new ReqAddFriend(); - } - - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet - getUnknownFields() { - return this.unknownFields; - } - private ReqAddFriend( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch (tag) { - case 0: - done = true; - break; - case 8: { - - uid_ = input.readInt64(); - break; - } - default: { - if (!parseUnknownField( - input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException( - e).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return net.sopod.soim.data.msg.user.AddFriend.internal_static_net_sopod_soim_data_msg_user_ReqAddFriend_descriptor; - } - - @java.lang.Override - protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internalGetFieldAccessorTable() { - return net.sopod.soim.data.msg.user.AddFriend.internal_static_net_sopod_soim_data_msg_user_ReqAddFriend_fieldAccessorTable - .ensureFieldAccessorsInitialized( - net.sopod.soim.data.msg.user.AddFriend.ReqAddFriend.class, net.sopod.soim.data.msg.user.AddFriend.ReqAddFriend.Builder.class); - } - - public static final int UID_FIELD_NUMBER = 1; - private long uid_; - /** - * int64 uid = 1; - * @return The uid. - */ - @java.lang.Override - public long getUid() { - return uid_; - } - - private byte memoizedIsInitialized = -1; - @java.lang.Override - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized == 1) return true; - if (isInitialized == 0) return false; - - memoizedIsInitialized = 1; - return true; - } - - @java.lang.Override - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - if (uid_ != 0L) { - output.writeInt64(1, uid_); - } - unknownFields.writeTo(output); - } - - @java.lang.Override - public int getSerializedSize() { - int size = memoizedSize; - if (size != -1) return size; - - size = 0; - if (uid_ != 0L) { - size += com.google.protobuf.CodedOutputStream - .computeInt64Size(1, uid_); - } - size += unknownFields.getSerializedSize(); - memoizedSize = size; - return size; - } - - @java.lang.Override - public boolean equals(final java.lang.Object obj) { - if (obj == this) { - return true; - } - if (!(obj instanceof net.sopod.soim.data.msg.user.AddFriend.ReqAddFriend)) { - return super.equals(obj); - } - net.sopod.soim.data.msg.user.AddFriend.ReqAddFriend other = (net.sopod.soim.data.msg.user.AddFriend.ReqAddFriend) obj; - - if (getUid() - != other.getUid()) return false; - if (!unknownFields.equals(other.unknownFields)) return false; - return true; - } - - @java.lang.Override - public int hashCode() { - if (memoizedHashCode != 0) { - return memoizedHashCode; - } - int hash = 41; - hash = (19 * hash) + getDescriptor().hashCode(); - hash = (37 * hash) + UID_FIELD_NUMBER; - hash = (53 * hash) + com.google.protobuf.Internal.hashLong( - getUid()); - hash = (29 * hash) + unknownFields.hashCode(); - memoizedHashCode = hash; - return hash; - } - - public static net.sopod.soim.data.msg.user.AddFriend.ReqAddFriend parseFrom( - java.nio.ByteBuffer data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static net.sopod.soim.data.msg.user.AddFriend.ReqAddFriend parseFrom( - java.nio.ByteBuffer data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static net.sopod.soim.data.msg.user.AddFriend.ReqAddFriend parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static net.sopod.soim.data.msg.user.AddFriend.ReqAddFriend parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static net.sopod.soim.data.msg.user.AddFriend.ReqAddFriend parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static net.sopod.soim.data.msg.user.AddFriend.ReqAddFriend parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static net.sopod.soim.data.msg.user.AddFriend.ReqAddFriend parseFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static net.sopod.soim.data.msg.user.AddFriend.ReqAddFriend parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - public static net.sopod.soim.data.msg.user.AddFriend.ReqAddFriend parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input); - } - public static net.sopod.soim.data.msg.user.AddFriend.ReqAddFriend parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input, extensionRegistry); - } - public static net.sopod.soim.data.msg.user.AddFriend.ReqAddFriend parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static net.sopod.soim.data.msg.user.AddFriend.ReqAddFriend parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - - @java.lang.Override - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder() { - return DEFAULT_INSTANCE.toBuilder(); - } - public static Builder newBuilder(net.sopod.soim.data.msg.user.AddFriend.ReqAddFriend prototype) { - return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); - } - @java.lang.Override - public Builder toBuilder() { - return this == DEFAULT_INSTANCE - ? new Builder() : new Builder().mergeFrom(this); - } - - @java.lang.Override - protected Builder newBuilderForType( - com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { - Builder builder = new Builder(parent); - return builder; - } - /** - * Protobuf type {@code net.sopod.soim.data.msg.user.ReqAddFriend} - */ - public static final class Builder extends - com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:net.sopod.soim.data.msg.user.ReqAddFriend) - net.sopod.soim.data.msg.user.AddFriend.ReqAddFriendOrBuilder { - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return net.sopod.soim.data.msg.user.AddFriend.internal_static_net_sopod_soim_data_msg_user_ReqAddFriend_descriptor; - } - - @java.lang.Override - protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internalGetFieldAccessorTable() { - return net.sopod.soim.data.msg.user.AddFriend.internal_static_net_sopod_soim_data_msg_user_ReqAddFriend_fieldAccessorTable - .ensureFieldAccessorsInitialized( - net.sopod.soim.data.msg.user.AddFriend.ReqAddFriend.class, net.sopod.soim.data.msg.user.AddFriend.ReqAddFriend.Builder.class); - } - - // Construct using net.sopod.soim.data.msg.user.AddFriend.ReqAddFriend.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private Builder( - com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { - super(parent); - maybeForceBuilderInitialization(); - } - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3 - .alwaysUseFieldBuilders) { - } - } - @java.lang.Override - public Builder clear() { - super.clear(); - uid_ = 0L; - - return this; - } - - @java.lang.Override - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return net.sopod.soim.data.msg.user.AddFriend.internal_static_net_sopod_soim_data_msg_user_ReqAddFriend_descriptor; - } - - @java.lang.Override - public net.sopod.soim.data.msg.user.AddFriend.ReqAddFriend getDefaultInstanceForType() { - return net.sopod.soim.data.msg.user.AddFriend.ReqAddFriend.getDefaultInstance(); - } - - @java.lang.Override - public net.sopod.soim.data.msg.user.AddFriend.ReqAddFriend build() { - net.sopod.soim.data.msg.user.AddFriend.ReqAddFriend result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - @java.lang.Override - public net.sopod.soim.data.msg.user.AddFriend.ReqAddFriend buildPartial() { - net.sopod.soim.data.msg.user.AddFriend.ReqAddFriend result = new net.sopod.soim.data.msg.user.AddFriend.ReqAddFriend(this); - result.uid_ = uid_; - onBuilt(); - return result; - } - - @java.lang.Override - public Builder clone() { - return super.clone(); - } - @java.lang.Override - public Builder setField( - com.google.protobuf.Descriptors.FieldDescriptor field, - java.lang.Object value) { - return super.setField(field, value); - } - @java.lang.Override - public Builder clearField( - com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - @java.lang.Override - public Builder clearOneof( - com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - @java.lang.Override - public Builder setRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - @java.lang.Override - public Builder addRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - java.lang.Object value) { - return super.addRepeatedField(field, value); - } - @java.lang.Override - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof net.sopod.soim.data.msg.user.AddFriend.ReqAddFriend) { - return mergeFrom((net.sopod.soim.data.msg.user.AddFriend.ReqAddFriend)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(net.sopod.soim.data.msg.user.AddFriend.ReqAddFriend other) { - if (other == net.sopod.soim.data.msg.user.AddFriend.ReqAddFriend.getDefaultInstance()) return this; - if (other.getUid() != 0L) { - setUid(other.getUid()); - } - this.mergeUnknownFields(other.unknownFields); - onChanged(); - return this; - } - - @java.lang.Override - public final boolean isInitialized() { - return true; - } - - @java.lang.Override - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - net.sopod.soim.data.msg.user.AddFriend.ReqAddFriend parsedMessage = null; - try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (net.sopod.soim.data.msg.user.AddFriend.ReqAddFriend) e.getUnfinishedMessage(); - throw e.unwrapIOException(); - } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } - } - return this; - } - - private long uid_ ; - /** - * int64 uid = 1; - * @return The uid. - */ - @java.lang.Override - public long getUid() { - return uid_; - } - /** - * int64 uid = 1; - * @param value The uid to set. - * @return This builder for chaining. - */ - public Builder setUid(long value) { - - uid_ = value; - onChanged(); - return this; - } - /** - * int64 uid = 1; - * @return This builder for chaining. - */ - public Builder clearUid() { - - uid_ = 0L; - onChanged(); - return this; - } - @java.lang.Override - public final Builder setUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return super.setUnknownFields(unknownFields); - } - - @java.lang.Override - public final Builder mergeUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return super.mergeUnknownFields(unknownFields); - } - - - // @@protoc_insertion_point(builder_scope:net.sopod.soim.data.msg.user.ReqAddFriend) - } - - // @@protoc_insertion_point(class_scope:net.sopod.soim.data.msg.user.ReqAddFriend) - private static final net.sopod.soim.data.msg.user.AddFriend.ReqAddFriend DEFAULT_INSTANCE; - static { - DEFAULT_INSTANCE = new net.sopod.soim.data.msg.user.AddFriend.ReqAddFriend(); - } - - public static net.sopod.soim.data.msg.user.AddFriend.ReqAddFriend getDefaultInstance() { - return DEFAULT_INSTANCE; - } - - private static final com.google.protobuf.Parser - PARSER = new com.google.protobuf.AbstractParser() { - @java.lang.Override - public ReqAddFriend parsePartialFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return new ReqAddFriend(input, extensionRegistry); - } - }; - - public static com.google.protobuf.Parser parser() { - return PARSER; - } - - @java.lang.Override - public com.google.protobuf.Parser getParserForType() { - return PARSER; - } - - @java.lang.Override - public net.sopod.soim.data.msg.user.AddFriend.ReqAddFriend getDefaultInstanceForType() { - return DEFAULT_INSTANCE; - } - - } - - public interface ResAddFriendOrBuilder extends - // @@protoc_insertion_point(interface_extends:net.sopod.soim.data.msg.user.ResAddFriend) - com.google.protobuf.MessageOrBuilder { - - /** - * bool success = 1; - * @return The success. - */ - boolean getSuccess(); - } - /** - * Protobuf type {@code net.sopod.soim.data.msg.user.ResAddFriend} - */ - public static final class ResAddFriend extends - com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:net.sopod.soim.data.msg.user.ResAddFriend) - ResAddFriendOrBuilder { - private static final long serialVersionUID = 0L; - // Use ResAddFriend.newBuilder() to construct. - private ResAddFriend(com.google.protobuf.GeneratedMessageV3.Builder builder) { - super(builder); - } - private ResAddFriend() { - } - - @java.lang.Override - @SuppressWarnings({"unused"}) - protected java.lang.Object newInstance( - UnusedPrivateParameter unused) { - return new ResAddFriend(); - } - - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet - getUnknownFields() { - return this.unknownFields; - } - private ResAddFriend( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch (tag) { - case 0: - done = true; - break; - case 8: { - - success_ = input.readBool(); - break; - } - default: { - if (!parseUnknownField( - input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException( - e).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return net.sopod.soim.data.msg.user.AddFriend.internal_static_net_sopod_soim_data_msg_user_ResAddFriend_descriptor; - } - - @java.lang.Override - protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internalGetFieldAccessorTable() { - return net.sopod.soim.data.msg.user.AddFriend.internal_static_net_sopod_soim_data_msg_user_ResAddFriend_fieldAccessorTable - .ensureFieldAccessorsInitialized( - net.sopod.soim.data.msg.user.AddFriend.ResAddFriend.class, net.sopod.soim.data.msg.user.AddFriend.ResAddFriend.Builder.class); - } - - public static final int SUCCESS_FIELD_NUMBER = 1; - private boolean success_; - /** - * bool success = 1; - * @return The success. - */ - @java.lang.Override - public boolean getSuccess() { - return success_; - } - - private byte memoizedIsInitialized = -1; - @java.lang.Override - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized == 1) return true; - if (isInitialized == 0) return false; - - memoizedIsInitialized = 1; - return true; - } - - @java.lang.Override - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - if (success_ != false) { - output.writeBool(1, success_); - } - unknownFields.writeTo(output); - } - - @java.lang.Override - public int getSerializedSize() { - int size = memoizedSize; - if (size != -1) return size; - - size = 0; - if (success_ != false) { - size += com.google.protobuf.CodedOutputStream - .computeBoolSize(1, success_); - } - size += unknownFields.getSerializedSize(); - memoizedSize = size; - return size; - } - - @java.lang.Override - public boolean equals(final java.lang.Object obj) { - if (obj == this) { - return true; - } - if (!(obj instanceof net.sopod.soim.data.msg.user.AddFriend.ResAddFriend)) { - return super.equals(obj); - } - net.sopod.soim.data.msg.user.AddFriend.ResAddFriend other = (net.sopod.soim.data.msg.user.AddFriend.ResAddFriend) obj; - - if (getSuccess() - != other.getSuccess()) return false; - if (!unknownFields.equals(other.unknownFields)) return false; - return true; - } - - @java.lang.Override - public int hashCode() { - if (memoizedHashCode != 0) { - return memoizedHashCode; - } - int hash = 41; - hash = (19 * hash) + getDescriptor().hashCode(); - hash = (37 * hash) + SUCCESS_FIELD_NUMBER; - hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( - getSuccess()); - hash = (29 * hash) + unknownFields.hashCode(); - memoizedHashCode = hash; - return hash; - } - - public static net.sopod.soim.data.msg.user.AddFriend.ResAddFriend parseFrom( - java.nio.ByteBuffer data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static net.sopod.soim.data.msg.user.AddFriend.ResAddFriend parseFrom( - java.nio.ByteBuffer data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static net.sopod.soim.data.msg.user.AddFriend.ResAddFriend parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static net.sopod.soim.data.msg.user.AddFriend.ResAddFriend parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static net.sopod.soim.data.msg.user.AddFriend.ResAddFriend parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static net.sopod.soim.data.msg.user.AddFriend.ResAddFriend parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static net.sopod.soim.data.msg.user.AddFriend.ResAddFriend parseFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static net.sopod.soim.data.msg.user.AddFriend.ResAddFriend parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - public static net.sopod.soim.data.msg.user.AddFriend.ResAddFriend parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input); - } - public static net.sopod.soim.data.msg.user.AddFriend.ResAddFriend parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input, extensionRegistry); - } - public static net.sopod.soim.data.msg.user.AddFriend.ResAddFriend parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static net.sopod.soim.data.msg.user.AddFriend.ResAddFriend parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - - @java.lang.Override - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder() { - return DEFAULT_INSTANCE.toBuilder(); - } - public static Builder newBuilder(net.sopod.soim.data.msg.user.AddFriend.ResAddFriend prototype) { - return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); - } - @java.lang.Override - public Builder toBuilder() { - return this == DEFAULT_INSTANCE - ? new Builder() : new Builder().mergeFrom(this); - } - - @java.lang.Override - protected Builder newBuilderForType( - com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { - Builder builder = new Builder(parent); - return builder; - } - /** - * Protobuf type {@code net.sopod.soim.data.msg.user.ResAddFriend} - */ - public static final class Builder extends - com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:net.sopod.soim.data.msg.user.ResAddFriend) - net.sopod.soim.data.msg.user.AddFriend.ResAddFriendOrBuilder { - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return net.sopod.soim.data.msg.user.AddFriend.internal_static_net_sopod_soim_data_msg_user_ResAddFriend_descriptor; - } - - @java.lang.Override - protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internalGetFieldAccessorTable() { - return net.sopod.soim.data.msg.user.AddFriend.internal_static_net_sopod_soim_data_msg_user_ResAddFriend_fieldAccessorTable - .ensureFieldAccessorsInitialized( - net.sopod.soim.data.msg.user.AddFriend.ResAddFriend.class, net.sopod.soim.data.msg.user.AddFriend.ResAddFriend.Builder.class); - } - - // Construct using net.sopod.soim.data.msg.user.AddFriend.ResAddFriend.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private Builder( - com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { - super(parent); - maybeForceBuilderInitialization(); - } - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3 - .alwaysUseFieldBuilders) { - } - } - @java.lang.Override - public Builder clear() { - super.clear(); - success_ = false; - - return this; - } - - @java.lang.Override - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return net.sopod.soim.data.msg.user.AddFriend.internal_static_net_sopod_soim_data_msg_user_ResAddFriend_descriptor; - } - - @java.lang.Override - public net.sopod.soim.data.msg.user.AddFriend.ResAddFriend getDefaultInstanceForType() { - return net.sopod.soim.data.msg.user.AddFriend.ResAddFriend.getDefaultInstance(); - } - - @java.lang.Override - public net.sopod.soim.data.msg.user.AddFriend.ResAddFriend build() { - net.sopod.soim.data.msg.user.AddFriend.ResAddFriend result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - @java.lang.Override - public net.sopod.soim.data.msg.user.AddFriend.ResAddFriend buildPartial() { - net.sopod.soim.data.msg.user.AddFriend.ResAddFriend result = new net.sopod.soim.data.msg.user.AddFriend.ResAddFriend(this); - result.success_ = success_; - onBuilt(); - return result; - } - - @java.lang.Override - public Builder clone() { - return super.clone(); - } - @java.lang.Override - public Builder setField( - com.google.protobuf.Descriptors.FieldDescriptor field, - java.lang.Object value) { - return super.setField(field, value); - } - @java.lang.Override - public Builder clearField( - com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - @java.lang.Override - public Builder clearOneof( - com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - @java.lang.Override - public Builder setRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - @java.lang.Override - public Builder addRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - java.lang.Object value) { - return super.addRepeatedField(field, value); - } - @java.lang.Override - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof net.sopod.soim.data.msg.user.AddFriend.ResAddFriend) { - return mergeFrom((net.sopod.soim.data.msg.user.AddFriend.ResAddFriend)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(net.sopod.soim.data.msg.user.AddFriend.ResAddFriend other) { - if (other == net.sopod.soim.data.msg.user.AddFriend.ResAddFriend.getDefaultInstance()) return this; - if (other.getSuccess() != false) { - setSuccess(other.getSuccess()); - } - this.mergeUnknownFields(other.unknownFields); - onChanged(); - return this; - } - - @java.lang.Override - public final boolean isInitialized() { - return true; - } - - @java.lang.Override - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - net.sopod.soim.data.msg.user.AddFriend.ResAddFriend parsedMessage = null; - try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (net.sopod.soim.data.msg.user.AddFriend.ResAddFriend) e.getUnfinishedMessage(); - throw e.unwrapIOException(); - } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } - } - return this; - } - - private boolean success_ ; - /** - * bool success = 1; - * @return The success. - */ - @java.lang.Override - public boolean getSuccess() { - return success_; - } - /** - * bool success = 1; - * @param value The success to set. - * @return This builder for chaining. - */ - public Builder setSuccess(boolean value) { - - success_ = value; - onChanged(); - return this; - } - /** - * bool success = 1; - * @return This builder for chaining. - */ - public Builder clearSuccess() { - - success_ = false; - onChanged(); - return this; - } - @java.lang.Override - public final Builder setUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return super.setUnknownFields(unknownFields); - } - - @java.lang.Override - public final Builder mergeUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return super.mergeUnknownFields(unknownFields); - } - - - // @@protoc_insertion_point(builder_scope:net.sopod.soim.data.msg.user.ResAddFriend) - } - - // @@protoc_insertion_point(class_scope:net.sopod.soim.data.msg.user.ResAddFriend) - private static final net.sopod.soim.data.msg.user.AddFriend.ResAddFriend DEFAULT_INSTANCE; - static { - DEFAULT_INSTANCE = new net.sopod.soim.data.msg.user.AddFriend.ResAddFriend(); - } - - public static net.sopod.soim.data.msg.user.AddFriend.ResAddFriend getDefaultInstance() { - return DEFAULT_INSTANCE; - } - - private static final com.google.protobuf.Parser - PARSER = new com.google.protobuf.AbstractParser() { - @java.lang.Override - public ResAddFriend parsePartialFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return new ResAddFriend(input, extensionRegistry); - } - }; - - public static com.google.protobuf.Parser parser() { - return PARSER; - } - - @java.lang.Override - public com.google.protobuf.Parser getParserForType() { - return PARSER; - } - - @java.lang.Override - public net.sopod.soim.data.msg.user.AddFriend.ResAddFriend getDefaultInstanceForType() { - return DEFAULT_INSTANCE; - } - - } - - private static final com.google.protobuf.Descriptors.Descriptor - internal_static_net_sopod_soim_data_msg_user_ReqAddFriend_descriptor; - private static final - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_net_sopod_soim_data_msg_user_ReqAddFriend_fieldAccessorTable; - private static final com.google.protobuf.Descriptors.Descriptor - internal_static_net_sopod_soim_data_msg_user_ResAddFriend_descriptor; - private static final - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_net_sopod_soim_data_msg_user_ResAddFriend_fieldAccessorTable; - - public static com.google.protobuf.Descriptors.FileDescriptor - getDescriptor() { - return descriptor; - } - private static com.google.protobuf.Descriptors.FileDescriptor - descriptor; - static { - java.lang.String[] descriptorData = { - "\n\032proto/user/AddFriend.proto\022\034net.sopod." + - "soim.data.msg.user\"\033\n\014ReqAddFriend\022\013\n\003ui" + - "d\030\001 \001(\003\"\037\n\014ResAddFriend\022\017\n\007success\030\001 \001(\010" + - "B\rB\tAddFriendP\000b\006proto3" - }; - descriptor = com.google.protobuf.Descriptors.FileDescriptor - .internalBuildGeneratedFileFrom(descriptorData, - new com.google.protobuf.Descriptors.FileDescriptor[] { - }); - internal_static_net_sopod_soim_data_msg_user_ReqAddFriend_descriptor = - getDescriptor().getMessageTypes().get(0); - internal_static_net_sopod_soim_data_msg_user_ReqAddFriend_fieldAccessorTable = new - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_net_sopod_soim_data_msg_user_ReqAddFriend_descriptor, - new java.lang.String[] { "Uid", }); - internal_static_net_sopod_soim_data_msg_user_ResAddFriend_descriptor = - getDescriptor().getMessageTypes().get(1); - internal_static_net_sopod_soim_data_msg_user_ResAddFriend_fieldAccessorTable = new - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_net_sopod_soim_data_msg_user_ResAddFriend_descriptor, - new java.lang.String[] { "Success", }); - } - - // @@protoc_insertion_point(outer_class_scope) -} diff --git a/im-service-api/im-entry-protocol/src/main/java/net/sopod/soim/data/msg/user/Friend.java b/im-service-api/im-entry-protocol/src/main/java/net/sopod/soim/data/msg/user/Friend.java new file mode 100644 index 0000000..0579fe7 --- /dev/null +++ b/im-service-api/im-entry-protocol/src/main/java/net/sopod/soim/data/msg/user/Friend.java @@ -0,0 +1,2426 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: proto/user/Friend.proto + +package net.sopod.soim.data.msg.user; + +public final class Friend { + private Friend() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistryLite registry) { + } + + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + registerAllExtensions( + (com.google.protobuf.ExtensionRegistryLite) registry); + } + public interface ReqAddFriendOrBuilder extends + // @@protoc_insertion_point(interface_extends:net.sopod.soim.data.msg.user.ReqAddFriend) + com.google.protobuf.MessageOrBuilder { + + /** + * int64 fid = 1; + * @return The fid. + */ + long getFid(); + } + /** + * Protobuf type {@code net.sopod.soim.data.msg.user.ReqAddFriend} + */ + public static final class ReqAddFriend extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:net.sopod.soim.data.msg.user.ReqAddFriend) + ReqAddFriendOrBuilder { + private static final long serialVersionUID = 0L; + // Use ReqAddFriend.newBuilder() to construct. + private ReqAddFriend(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private ReqAddFriend() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new ReqAddFriend(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private ReqAddFriend( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + + fid_ = input.readInt64(); + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return net.sopod.soim.data.msg.user.Friend.internal_static_net_sopod_soim_data_msg_user_ReqAddFriend_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return net.sopod.soim.data.msg.user.Friend.internal_static_net_sopod_soim_data_msg_user_ReqAddFriend_fieldAccessorTable + .ensureFieldAccessorsInitialized( + net.sopod.soim.data.msg.user.Friend.ReqAddFriend.class, net.sopod.soim.data.msg.user.Friend.ReqAddFriend.Builder.class); + } + + public static final int FID_FIELD_NUMBER = 1; + private long fid_; + /** + * int64 fid = 1; + * @return The fid. + */ + @java.lang.Override + public long getFid() { + return fid_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (fid_ != 0L) { + output.writeInt64(1, fid_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (fid_ != 0L) { + size += com.google.protobuf.CodedOutputStream + .computeInt64Size(1, fid_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof net.sopod.soim.data.msg.user.Friend.ReqAddFriend)) { + return super.equals(obj); + } + net.sopod.soim.data.msg.user.Friend.ReqAddFriend other = (net.sopod.soim.data.msg.user.Friend.ReqAddFriend) obj; + + if (getFid() + != other.getFid()) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + FID_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + getFid()); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static net.sopod.soim.data.msg.user.Friend.ReqAddFriend parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static net.sopod.soim.data.msg.user.Friend.ReqAddFriend parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static net.sopod.soim.data.msg.user.Friend.ReqAddFriend parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static net.sopod.soim.data.msg.user.Friend.ReqAddFriend parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static net.sopod.soim.data.msg.user.Friend.ReqAddFriend parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static net.sopod.soim.data.msg.user.Friend.ReqAddFriend parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static net.sopod.soim.data.msg.user.Friend.ReqAddFriend parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static net.sopod.soim.data.msg.user.Friend.ReqAddFriend parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static net.sopod.soim.data.msg.user.Friend.ReqAddFriend parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static net.sopod.soim.data.msg.user.Friend.ReqAddFriend parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static net.sopod.soim.data.msg.user.Friend.ReqAddFriend parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static net.sopod.soim.data.msg.user.Friend.ReqAddFriend parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(net.sopod.soim.data.msg.user.Friend.ReqAddFriend prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code net.sopod.soim.data.msg.user.ReqAddFriend} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:net.sopod.soim.data.msg.user.ReqAddFriend) + net.sopod.soim.data.msg.user.Friend.ReqAddFriendOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return net.sopod.soim.data.msg.user.Friend.internal_static_net_sopod_soim_data_msg_user_ReqAddFriend_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return net.sopod.soim.data.msg.user.Friend.internal_static_net_sopod_soim_data_msg_user_ReqAddFriend_fieldAccessorTable + .ensureFieldAccessorsInitialized( + net.sopod.soim.data.msg.user.Friend.ReqAddFriend.class, net.sopod.soim.data.msg.user.Friend.ReqAddFriend.Builder.class); + } + + // Construct using net.sopod.soim.data.msg.user.Friend.ReqAddFriend.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + fid_ = 0L; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return net.sopod.soim.data.msg.user.Friend.internal_static_net_sopod_soim_data_msg_user_ReqAddFriend_descriptor; + } + + @java.lang.Override + public net.sopod.soim.data.msg.user.Friend.ReqAddFriend getDefaultInstanceForType() { + return net.sopod.soim.data.msg.user.Friend.ReqAddFriend.getDefaultInstance(); + } + + @java.lang.Override + public net.sopod.soim.data.msg.user.Friend.ReqAddFriend build() { + net.sopod.soim.data.msg.user.Friend.ReqAddFriend result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public net.sopod.soim.data.msg.user.Friend.ReqAddFriend buildPartial() { + net.sopod.soim.data.msg.user.Friend.ReqAddFriend result = new net.sopod.soim.data.msg.user.Friend.ReqAddFriend(this); + result.fid_ = fid_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof net.sopod.soim.data.msg.user.Friend.ReqAddFriend) { + return mergeFrom((net.sopod.soim.data.msg.user.Friend.ReqAddFriend)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(net.sopod.soim.data.msg.user.Friend.ReqAddFriend other) { + if (other == net.sopod.soim.data.msg.user.Friend.ReqAddFriend.getDefaultInstance()) return this; + if (other.getFid() != 0L) { + setFid(other.getFid()); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + net.sopod.soim.data.msg.user.Friend.ReqAddFriend parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (net.sopod.soim.data.msg.user.Friend.ReqAddFriend) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private long fid_ ; + /** + * int64 fid = 1; + * @return The fid. + */ + @java.lang.Override + public long getFid() { + return fid_; + } + /** + * int64 fid = 1; + * @param value The fid to set. + * @return This builder for chaining. + */ + public Builder setFid(long value) { + + fid_ = value; + onChanged(); + return this; + } + /** + * int64 fid = 1; + * @return This builder for chaining. + */ + public Builder clearFid() { + + fid_ = 0L; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:net.sopod.soim.data.msg.user.ReqAddFriend) + } + + // @@protoc_insertion_point(class_scope:net.sopod.soim.data.msg.user.ReqAddFriend) + private static final net.sopod.soim.data.msg.user.Friend.ReqAddFriend DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new net.sopod.soim.data.msg.user.Friend.ReqAddFriend(); + } + + public static net.sopod.soim.data.msg.user.Friend.ReqAddFriend getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public ReqAddFriend parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new ReqAddFriend(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public net.sopod.soim.data.msg.user.Friend.ReqAddFriend getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface ResAddFriendOrBuilder extends + // @@protoc_insertion_point(interface_extends:net.sopod.soim.data.msg.user.ResAddFriend) + com.google.protobuf.MessageOrBuilder { + + /** + * bool success = 1; + * @return The success. + */ + boolean getSuccess(); + + /** + * string msg = 2; + * @return The msg. + */ + java.lang.String getMsg(); + /** + * string msg = 2; + * @return The bytes for msg. + */ + com.google.protobuf.ByteString + getMsgBytes(); + } + /** + * Protobuf type {@code net.sopod.soim.data.msg.user.ResAddFriend} + */ + public static final class ResAddFriend extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:net.sopod.soim.data.msg.user.ResAddFriend) + ResAddFriendOrBuilder { + private static final long serialVersionUID = 0L; + // Use ResAddFriend.newBuilder() to construct. + private ResAddFriend(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private ResAddFriend() { + msg_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new ResAddFriend(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private ResAddFriend( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + + success_ = input.readBool(); + break; + } + case 18: { + java.lang.String s = input.readStringRequireUtf8(); + + msg_ = s; + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return net.sopod.soim.data.msg.user.Friend.internal_static_net_sopod_soim_data_msg_user_ResAddFriend_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return net.sopod.soim.data.msg.user.Friend.internal_static_net_sopod_soim_data_msg_user_ResAddFriend_fieldAccessorTable + .ensureFieldAccessorsInitialized( + net.sopod.soim.data.msg.user.Friend.ResAddFriend.class, net.sopod.soim.data.msg.user.Friend.ResAddFriend.Builder.class); + } + + public static final int SUCCESS_FIELD_NUMBER = 1; + private boolean success_; + /** + * bool success = 1; + * @return The success. + */ + @java.lang.Override + public boolean getSuccess() { + return success_; + } + + public static final int MSG_FIELD_NUMBER = 2; + private volatile java.lang.Object msg_; + /** + * string msg = 2; + * @return The msg. + */ + @java.lang.Override + public java.lang.String getMsg() { + java.lang.Object ref = msg_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + msg_ = s; + return s; + } + } + /** + * string msg = 2; + * @return The bytes for msg. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getMsgBytes() { + java.lang.Object ref = msg_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + msg_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (success_ != false) { + output.writeBool(1, success_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(msg_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, msg_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (success_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(1, success_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(msg_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, msg_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof net.sopod.soim.data.msg.user.Friend.ResAddFriend)) { + return super.equals(obj); + } + net.sopod.soim.data.msg.user.Friend.ResAddFriend other = (net.sopod.soim.data.msg.user.Friend.ResAddFriend) obj; + + if (getSuccess() + != other.getSuccess()) return false; + if (!getMsg() + .equals(other.getMsg())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + SUCCESS_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getSuccess()); + hash = (37 * hash) + MSG_FIELD_NUMBER; + hash = (53 * hash) + getMsg().hashCode(); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static net.sopod.soim.data.msg.user.Friend.ResAddFriend parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static net.sopod.soim.data.msg.user.Friend.ResAddFriend parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static net.sopod.soim.data.msg.user.Friend.ResAddFriend parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static net.sopod.soim.data.msg.user.Friend.ResAddFriend parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static net.sopod.soim.data.msg.user.Friend.ResAddFriend parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static net.sopod.soim.data.msg.user.Friend.ResAddFriend parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static net.sopod.soim.data.msg.user.Friend.ResAddFriend parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static net.sopod.soim.data.msg.user.Friend.ResAddFriend parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static net.sopod.soim.data.msg.user.Friend.ResAddFriend parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static net.sopod.soim.data.msg.user.Friend.ResAddFriend parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static net.sopod.soim.data.msg.user.Friend.ResAddFriend parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static net.sopod.soim.data.msg.user.Friend.ResAddFriend parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(net.sopod.soim.data.msg.user.Friend.ResAddFriend prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code net.sopod.soim.data.msg.user.ResAddFriend} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:net.sopod.soim.data.msg.user.ResAddFriend) + net.sopod.soim.data.msg.user.Friend.ResAddFriendOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return net.sopod.soim.data.msg.user.Friend.internal_static_net_sopod_soim_data_msg_user_ResAddFriend_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return net.sopod.soim.data.msg.user.Friend.internal_static_net_sopod_soim_data_msg_user_ResAddFriend_fieldAccessorTable + .ensureFieldAccessorsInitialized( + net.sopod.soim.data.msg.user.Friend.ResAddFriend.class, net.sopod.soim.data.msg.user.Friend.ResAddFriend.Builder.class); + } + + // Construct using net.sopod.soim.data.msg.user.Friend.ResAddFriend.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + success_ = false; + + msg_ = ""; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return net.sopod.soim.data.msg.user.Friend.internal_static_net_sopod_soim_data_msg_user_ResAddFriend_descriptor; + } + + @java.lang.Override + public net.sopod.soim.data.msg.user.Friend.ResAddFriend getDefaultInstanceForType() { + return net.sopod.soim.data.msg.user.Friend.ResAddFriend.getDefaultInstance(); + } + + @java.lang.Override + public net.sopod.soim.data.msg.user.Friend.ResAddFriend build() { + net.sopod.soim.data.msg.user.Friend.ResAddFriend result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public net.sopod.soim.data.msg.user.Friend.ResAddFriend buildPartial() { + net.sopod.soim.data.msg.user.Friend.ResAddFriend result = new net.sopod.soim.data.msg.user.Friend.ResAddFriend(this); + result.success_ = success_; + result.msg_ = msg_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof net.sopod.soim.data.msg.user.Friend.ResAddFriend) { + return mergeFrom((net.sopod.soim.data.msg.user.Friend.ResAddFriend)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(net.sopod.soim.data.msg.user.Friend.ResAddFriend other) { + if (other == net.sopod.soim.data.msg.user.Friend.ResAddFriend.getDefaultInstance()) return this; + if (other.getSuccess() != false) { + setSuccess(other.getSuccess()); + } + if (!other.getMsg().isEmpty()) { + msg_ = other.msg_; + onChanged(); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + net.sopod.soim.data.msg.user.Friend.ResAddFriend parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (net.sopod.soim.data.msg.user.Friend.ResAddFriend) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private boolean success_ ; + /** + * bool success = 1; + * @return The success. + */ + @java.lang.Override + public boolean getSuccess() { + return success_; + } + /** + * bool success = 1; + * @param value The success to set. + * @return This builder for chaining. + */ + public Builder setSuccess(boolean value) { + + success_ = value; + onChanged(); + return this; + } + /** + * bool success = 1; + * @return This builder for chaining. + */ + public Builder clearSuccess() { + + success_ = false; + onChanged(); + return this; + } + + private java.lang.Object msg_ = ""; + /** + * string msg = 2; + * @return The msg. + */ + public java.lang.String getMsg() { + java.lang.Object ref = msg_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + msg_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string msg = 2; + * @return The bytes for msg. + */ + public com.google.protobuf.ByteString + getMsgBytes() { + java.lang.Object ref = msg_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + msg_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string msg = 2; + * @param value The msg to set. + * @return This builder for chaining. + */ + public Builder setMsg( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + msg_ = value; + onChanged(); + return this; + } + /** + * string msg = 2; + * @return This builder for chaining. + */ + public Builder clearMsg() { + + msg_ = getDefaultInstance().getMsg(); + onChanged(); + return this; + } + /** + * string msg = 2; + * @param value The bytes for msg to set. + * @return This builder for chaining. + */ + public Builder setMsgBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + msg_ = value; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:net.sopod.soim.data.msg.user.ResAddFriend) + } + + // @@protoc_insertion_point(class_scope:net.sopod.soim.data.msg.user.ResAddFriend) + private static final net.sopod.soim.data.msg.user.Friend.ResAddFriend DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new net.sopod.soim.data.msg.user.Friend.ResAddFriend(); + } + + public static net.sopod.soim.data.msg.user.Friend.ResAddFriend getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public ResAddFriend parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new ResAddFriend(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public net.sopod.soim.data.msg.user.Friend.ResAddFriend getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface ReqFriendListOrBuilder extends + // @@protoc_insertion_point(interface_extends:net.sopod.soim.data.msg.user.ReqFriendList) + com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code net.sopod.soim.data.msg.user.ReqFriendList} + */ + public static final class ReqFriendList extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:net.sopod.soim.data.msg.user.ReqFriendList) + ReqFriendListOrBuilder { + private static final long serialVersionUID = 0L; + // Use ReqFriendList.newBuilder() to construct. + private ReqFriendList(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private ReqFriendList() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new ReqFriendList(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private ReqFriendList( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return net.sopod.soim.data.msg.user.Friend.internal_static_net_sopod_soim_data_msg_user_ReqFriendList_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return net.sopod.soim.data.msg.user.Friend.internal_static_net_sopod_soim_data_msg_user_ReqFriendList_fieldAccessorTable + .ensureFieldAccessorsInitialized( + net.sopod.soim.data.msg.user.Friend.ReqFriendList.class, net.sopod.soim.data.msg.user.Friend.ReqFriendList.Builder.class); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof net.sopod.soim.data.msg.user.Friend.ReqFriendList)) { + return super.equals(obj); + } + net.sopod.soim.data.msg.user.Friend.ReqFriendList other = (net.sopod.soim.data.msg.user.Friend.ReqFriendList) obj; + + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static net.sopod.soim.data.msg.user.Friend.ReqFriendList parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static net.sopod.soim.data.msg.user.Friend.ReqFriendList parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static net.sopod.soim.data.msg.user.Friend.ReqFriendList parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static net.sopod.soim.data.msg.user.Friend.ReqFriendList parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static net.sopod.soim.data.msg.user.Friend.ReqFriendList parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static net.sopod.soim.data.msg.user.Friend.ReqFriendList parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static net.sopod.soim.data.msg.user.Friend.ReqFriendList parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static net.sopod.soim.data.msg.user.Friend.ReqFriendList parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static net.sopod.soim.data.msg.user.Friend.ReqFriendList parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static net.sopod.soim.data.msg.user.Friend.ReqFriendList parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static net.sopod.soim.data.msg.user.Friend.ReqFriendList parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static net.sopod.soim.data.msg.user.Friend.ReqFriendList parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(net.sopod.soim.data.msg.user.Friend.ReqFriendList prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code net.sopod.soim.data.msg.user.ReqFriendList} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:net.sopod.soim.data.msg.user.ReqFriendList) + net.sopod.soim.data.msg.user.Friend.ReqFriendListOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return net.sopod.soim.data.msg.user.Friend.internal_static_net_sopod_soim_data_msg_user_ReqFriendList_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return net.sopod.soim.data.msg.user.Friend.internal_static_net_sopod_soim_data_msg_user_ReqFriendList_fieldAccessorTable + .ensureFieldAccessorsInitialized( + net.sopod.soim.data.msg.user.Friend.ReqFriendList.class, net.sopod.soim.data.msg.user.Friend.ReqFriendList.Builder.class); + } + + // Construct using net.sopod.soim.data.msg.user.Friend.ReqFriendList.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return net.sopod.soim.data.msg.user.Friend.internal_static_net_sopod_soim_data_msg_user_ReqFriendList_descriptor; + } + + @java.lang.Override + public net.sopod.soim.data.msg.user.Friend.ReqFriendList getDefaultInstanceForType() { + return net.sopod.soim.data.msg.user.Friend.ReqFriendList.getDefaultInstance(); + } + + @java.lang.Override + public net.sopod.soim.data.msg.user.Friend.ReqFriendList build() { + net.sopod.soim.data.msg.user.Friend.ReqFriendList result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public net.sopod.soim.data.msg.user.Friend.ReqFriendList buildPartial() { + net.sopod.soim.data.msg.user.Friend.ReqFriendList result = new net.sopod.soim.data.msg.user.Friend.ReqFriendList(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof net.sopod.soim.data.msg.user.Friend.ReqFriendList) { + return mergeFrom((net.sopod.soim.data.msg.user.Friend.ReqFriendList)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(net.sopod.soim.data.msg.user.Friend.ReqFriendList other) { + if (other == net.sopod.soim.data.msg.user.Friend.ReqFriendList.getDefaultInstance()) return this; + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + net.sopod.soim.data.msg.user.Friend.ReqFriendList parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (net.sopod.soim.data.msg.user.Friend.ReqFriendList) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:net.sopod.soim.data.msg.user.ReqFriendList) + } + + // @@protoc_insertion_point(class_scope:net.sopod.soim.data.msg.user.ReqFriendList) + private static final net.sopod.soim.data.msg.user.Friend.ReqFriendList DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new net.sopod.soim.data.msg.user.Friend.ReqFriendList(); + } + + public static net.sopod.soim.data.msg.user.Friend.ReqFriendList getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public ReqFriendList parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new ReqFriendList(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public net.sopod.soim.data.msg.user.Friend.ReqFriendList getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface ResFriendListOrBuilder extends + // @@protoc_insertion_point(interface_extends:net.sopod.soim.data.msg.user.ResFriendList) + com.google.protobuf.MessageOrBuilder { + + /** + * repeated .net.sopod.soim.data.msg.user.UserInfo friends = 6; + */ + java.util.List + getFriendsList(); + /** + * repeated .net.sopod.soim.data.msg.user.UserInfo friends = 6; + */ + net.sopod.soim.data.msg.user.UserMsg.UserInfo getFriends(int index); + /** + * repeated .net.sopod.soim.data.msg.user.UserInfo friends = 6; + */ + int getFriendsCount(); + /** + * repeated .net.sopod.soim.data.msg.user.UserInfo friends = 6; + */ + java.util.List + getFriendsOrBuilderList(); + /** + * repeated .net.sopod.soim.data.msg.user.UserInfo friends = 6; + */ + net.sopod.soim.data.msg.user.UserMsg.UserInfoOrBuilder getFriendsOrBuilder( + int index); + } + /** + * Protobuf type {@code net.sopod.soim.data.msg.user.ResFriendList} + */ + public static final class ResFriendList extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:net.sopod.soim.data.msg.user.ResFriendList) + ResFriendListOrBuilder { + private static final long serialVersionUID = 0L; + // Use ResFriendList.newBuilder() to construct. + private ResFriendList(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private ResFriendList() { + friends_ = java.util.Collections.emptyList(); + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new ResFriendList(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private ResFriendList( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 50: { + if (!((mutable_bitField0_ & 0x00000001) != 0)) { + friends_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000001; + } + friends_.add( + input.readMessage(net.sopod.soim.data.msg.user.UserMsg.UserInfo.parser(), extensionRegistry)); + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000001) != 0)) { + friends_ = java.util.Collections.unmodifiableList(friends_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return net.sopod.soim.data.msg.user.Friend.internal_static_net_sopod_soim_data_msg_user_ResFriendList_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return net.sopod.soim.data.msg.user.Friend.internal_static_net_sopod_soim_data_msg_user_ResFriendList_fieldAccessorTable + .ensureFieldAccessorsInitialized( + net.sopod.soim.data.msg.user.Friend.ResFriendList.class, net.sopod.soim.data.msg.user.Friend.ResFriendList.Builder.class); + } + + public static final int FRIENDS_FIELD_NUMBER = 6; + private java.util.List friends_; + /** + * repeated .net.sopod.soim.data.msg.user.UserInfo friends = 6; + */ + @java.lang.Override + public java.util.List getFriendsList() { + return friends_; + } + /** + * repeated .net.sopod.soim.data.msg.user.UserInfo friends = 6; + */ + @java.lang.Override + public java.util.List + getFriendsOrBuilderList() { + return friends_; + } + /** + * repeated .net.sopod.soim.data.msg.user.UserInfo friends = 6; + */ + @java.lang.Override + public int getFriendsCount() { + return friends_.size(); + } + /** + * repeated .net.sopod.soim.data.msg.user.UserInfo friends = 6; + */ + @java.lang.Override + public net.sopod.soim.data.msg.user.UserMsg.UserInfo getFriends(int index) { + return friends_.get(index); + } + /** + * repeated .net.sopod.soim.data.msg.user.UserInfo friends = 6; + */ + @java.lang.Override + public net.sopod.soim.data.msg.user.UserMsg.UserInfoOrBuilder getFriendsOrBuilder( + int index) { + return friends_.get(index); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + for (int i = 0; i < friends_.size(); i++) { + output.writeMessage(6, friends_.get(i)); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + for (int i = 0; i < friends_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(6, friends_.get(i)); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof net.sopod.soim.data.msg.user.Friend.ResFriendList)) { + return super.equals(obj); + } + net.sopod.soim.data.msg.user.Friend.ResFriendList other = (net.sopod.soim.data.msg.user.Friend.ResFriendList) obj; + + if (!getFriendsList() + .equals(other.getFriendsList())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (getFriendsCount() > 0) { + hash = (37 * hash) + FRIENDS_FIELD_NUMBER; + hash = (53 * hash) + getFriendsList().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static net.sopod.soim.data.msg.user.Friend.ResFriendList parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static net.sopod.soim.data.msg.user.Friend.ResFriendList parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static net.sopod.soim.data.msg.user.Friend.ResFriendList parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static net.sopod.soim.data.msg.user.Friend.ResFriendList parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static net.sopod.soim.data.msg.user.Friend.ResFriendList parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static net.sopod.soim.data.msg.user.Friend.ResFriendList parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static net.sopod.soim.data.msg.user.Friend.ResFriendList parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static net.sopod.soim.data.msg.user.Friend.ResFriendList parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static net.sopod.soim.data.msg.user.Friend.ResFriendList parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static net.sopod.soim.data.msg.user.Friend.ResFriendList parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static net.sopod.soim.data.msg.user.Friend.ResFriendList parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static net.sopod.soim.data.msg.user.Friend.ResFriendList parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(net.sopod.soim.data.msg.user.Friend.ResFriendList prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code net.sopod.soim.data.msg.user.ResFriendList} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:net.sopod.soim.data.msg.user.ResFriendList) + net.sopod.soim.data.msg.user.Friend.ResFriendListOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return net.sopod.soim.data.msg.user.Friend.internal_static_net_sopod_soim_data_msg_user_ResFriendList_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return net.sopod.soim.data.msg.user.Friend.internal_static_net_sopod_soim_data_msg_user_ResFriendList_fieldAccessorTable + .ensureFieldAccessorsInitialized( + net.sopod.soim.data.msg.user.Friend.ResFriendList.class, net.sopod.soim.data.msg.user.Friend.ResFriendList.Builder.class); + } + + // Construct using net.sopod.soim.data.msg.user.Friend.ResFriendList.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + getFriendsFieldBuilder(); + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + if (friendsBuilder_ == null) { + friends_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + } else { + friendsBuilder_.clear(); + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return net.sopod.soim.data.msg.user.Friend.internal_static_net_sopod_soim_data_msg_user_ResFriendList_descriptor; + } + + @java.lang.Override + public net.sopod.soim.data.msg.user.Friend.ResFriendList getDefaultInstanceForType() { + return net.sopod.soim.data.msg.user.Friend.ResFriendList.getDefaultInstance(); + } + + @java.lang.Override + public net.sopod.soim.data.msg.user.Friend.ResFriendList build() { + net.sopod.soim.data.msg.user.Friend.ResFriendList result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public net.sopod.soim.data.msg.user.Friend.ResFriendList buildPartial() { + net.sopod.soim.data.msg.user.Friend.ResFriendList result = new net.sopod.soim.data.msg.user.Friend.ResFriendList(this); + int from_bitField0_ = bitField0_; + if (friendsBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0)) { + friends_ = java.util.Collections.unmodifiableList(friends_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.friends_ = friends_; + } else { + result.friends_ = friendsBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof net.sopod.soim.data.msg.user.Friend.ResFriendList) { + return mergeFrom((net.sopod.soim.data.msg.user.Friend.ResFriendList)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(net.sopod.soim.data.msg.user.Friend.ResFriendList other) { + if (other == net.sopod.soim.data.msg.user.Friend.ResFriendList.getDefaultInstance()) return this; + if (friendsBuilder_ == null) { + if (!other.friends_.isEmpty()) { + if (friends_.isEmpty()) { + friends_ = other.friends_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureFriendsIsMutable(); + friends_.addAll(other.friends_); + } + onChanged(); + } + } else { + if (!other.friends_.isEmpty()) { + if (friendsBuilder_.isEmpty()) { + friendsBuilder_.dispose(); + friendsBuilder_ = null; + friends_ = other.friends_; + bitField0_ = (bitField0_ & ~0x00000001); + friendsBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ? + getFriendsFieldBuilder() : null; + } else { + friendsBuilder_.addAllMessages(other.friends_); + } + } + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + net.sopod.soim.data.msg.user.Friend.ResFriendList parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (net.sopod.soim.data.msg.user.Friend.ResFriendList) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private java.util.List friends_ = + java.util.Collections.emptyList(); + private void ensureFriendsIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + friends_ = new java.util.ArrayList(friends_); + bitField0_ |= 0x00000001; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + net.sopod.soim.data.msg.user.UserMsg.UserInfo, net.sopod.soim.data.msg.user.UserMsg.UserInfo.Builder, net.sopod.soim.data.msg.user.UserMsg.UserInfoOrBuilder> friendsBuilder_; + + /** + * repeated .net.sopod.soim.data.msg.user.UserInfo friends = 6; + */ + public java.util.List getFriendsList() { + if (friendsBuilder_ == null) { + return java.util.Collections.unmodifiableList(friends_); + } else { + return friendsBuilder_.getMessageList(); + } + } + /** + * repeated .net.sopod.soim.data.msg.user.UserInfo friends = 6; + */ + public int getFriendsCount() { + if (friendsBuilder_ == null) { + return friends_.size(); + } else { + return friendsBuilder_.getCount(); + } + } + /** + * repeated .net.sopod.soim.data.msg.user.UserInfo friends = 6; + */ + public net.sopod.soim.data.msg.user.UserMsg.UserInfo getFriends(int index) { + if (friendsBuilder_ == null) { + return friends_.get(index); + } else { + return friendsBuilder_.getMessage(index); + } + } + /** + * repeated .net.sopod.soim.data.msg.user.UserInfo friends = 6; + */ + public Builder setFriends( + int index, net.sopod.soim.data.msg.user.UserMsg.UserInfo value) { + if (friendsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureFriendsIsMutable(); + friends_.set(index, value); + onChanged(); + } else { + friendsBuilder_.setMessage(index, value); + } + return this; + } + /** + * repeated .net.sopod.soim.data.msg.user.UserInfo friends = 6; + */ + public Builder setFriends( + int index, net.sopod.soim.data.msg.user.UserMsg.UserInfo.Builder builderForValue) { + if (friendsBuilder_ == null) { + ensureFriendsIsMutable(); + friends_.set(index, builderForValue.build()); + onChanged(); + } else { + friendsBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .net.sopod.soim.data.msg.user.UserInfo friends = 6; + */ + public Builder addFriends(net.sopod.soim.data.msg.user.UserMsg.UserInfo value) { + if (friendsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureFriendsIsMutable(); + friends_.add(value); + onChanged(); + } else { + friendsBuilder_.addMessage(value); + } + return this; + } + /** + * repeated .net.sopod.soim.data.msg.user.UserInfo friends = 6; + */ + public Builder addFriends( + int index, net.sopod.soim.data.msg.user.UserMsg.UserInfo value) { + if (friendsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureFriendsIsMutable(); + friends_.add(index, value); + onChanged(); + } else { + friendsBuilder_.addMessage(index, value); + } + return this; + } + /** + * repeated .net.sopod.soim.data.msg.user.UserInfo friends = 6; + */ + public Builder addFriends( + net.sopod.soim.data.msg.user.UserMsg.UserInfo.Builder builderForValue) { + if (friendsBuilder_ == null) { + ensureFriendsIsMutable(); + friends_.add(builderForValue.build()); + onChanged(); + } else { + friendsBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * repeated .net.sopod.soim.data.msg.user.UserInfo friends = 6; + */ + public Builder addFriends( + int index, net.sopod.soim.data.msg.user.UserMsg.UserInfo.Builder builderForValue) { + if (friendsBuilder_ == null) { + ensureFriendsIsMutable(); + friends_.add(index, builderForValue.build()); + onChanged(); + } else { + friendsBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .net.sopod.soim.data.msg.user.UserInfo friends = 6; + */ + public Builder addAllFriends( + java.lang.Iterable values) { + if (friendsBuilder_ == null) { + ensureFriendsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, friends_); + onChanged(); + } else { + friendsBuilder_.addAllMessages(values); + } + return this; + } + /** + * repeated .net.sopod.soim.data.msg.user.UserInfo friends = 6; + */ + public Builder clearFriends() { + if (friendsBuilder_ == null) { + friends_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + friendsBuilder_.clear(); + } + return this; + } + /** + * repeated .net.sopod.soim.data.msg.user.UserInfo friends = 6; + */ + public Builder removeFriends(int index) { + if (friendsBuilder_ == null) { + ensureFriendsIsMutable(); + friends_.remove(index); + onChanged(); + } else { + friendsBuilder_.remove(index); + } + return this; + } + /** + * repeated .net.sopod.soim.data.msg.user.UserInfo friends = 6; + */ + public net.sopod.soim.data.msg.user.UserMsg.UserInfo.Builder getFriendsBuilder( + int index) { + return getFriendsFieldBuilder().getBuilder(index); + } + /** + * repeated .net.sopod.soim.data.msg.user.UserInfo friends = 6; + */ + public net.sopod.soim.data.msg.user.UserMsg.UserInfoOrBuilder getFriendsOrBuilder( + int index) { + if (friendsBuilder_ == null) { + return friends_.get(index); } else { + return friendsBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .net.sopod.soim.data.msg.user.UserInfo friends = 6; + */ + public java.util.List + getFriendsOrBuilderList() { + if (friendsBuilder_ != null) { + return friendsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(friends_); + } + } + /** + * repeated .net.sopod.soim.data.msg.user.UserInfo friends = 6; + */ + public net.sopod.soim.data.msg.user.UserMsg.UserInfo.Builder addFriendsBuilder() { + return getFriendsFieldBuilder().addBuilder( + net.sopod.soim.data.msg.user.UserMsg.UserInfo.getDefaultInstance()); + } + /** + * repeated .net.sopod.soim.data.msg.user.UserInfo friends = 6; + */ + public net.sopod.soim.data.msg.user.UserMsg.UserInfo.Builder addFriendsBuilder( + int index) { + return getFriendsFieldBuilder().addBuilder( + index, net.sopod.soim.data.msg.user.UserMsg.UserInfo.getDefaultInstance()); + } + /** + * repeated .net.sopod.soim.data.msg.user.UserInfo friends = 6; + */ + public java.util.List + getFriendsBuilderList() { + return getFriendsFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilderV3< + net.sopod.soim.data.msg.user.UserMsg.UserInfo, net.sopod.soim.data.msg.user.UserMsg.UserInfo.Builder, net.sopod.soim.data.msg.user.UserMsg.UserInfoOrBuilder> + getFriendsFieldBuilder() { + if (friendsBuilder_ == null) { + friendsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< + net.sopod.soim.data.msg.user.UserMsg.UserInfo, net.sopod.soim.data.msg.user.UserMsg.UserInfo.Builder, net.sopod.soim.data.msg.user.UserMsg.UserInfoOrBuilder>( + friends_, + ((bitField0_ & 0x00000001) != 0), + getParentForChildren(), + isClean()); + friends_ = null; + } + return friendsBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:net.sopod.soim.data.msg.user.ResFriendList) + } + + // @@protoc_insertion_point(class_scope:net.sopod.soim.data.msg.user.ResFriendList) + private static final net.sopod.soim.data.msg.user.Friend.ResFriendList DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new net.sopod.soim.data.msg.user.Friend.ResFriendList(); + } + + public static net.sopod.soim.data.msg.user.Friend.ResFriendList getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public ResFriendList parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new ResFriendList(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public net.sopod.soim.data.msg.user.Friend.ResFriendList getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_net_sopod_soim_data_msg_user_ReqAddFriend_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_net_sopod_soim_data_msg_user_ReqAddFriend_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_net_sopod_soim_data_msg_user_ResAddFriend_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_net_sopod_soim_data_msg_user_ResAddFriend_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_net_sopod_soim_data_msg_user_ReqFriendList_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_net_sopod_soim_data_msg_user_ReqFriendList_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_net_sopod_soim_data_msg_user_ResFriendList_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_net_sopod_soim_data_msg_user_ResFriendList_fieldAccessorTable; + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + private static com.google.protobuf.Descriptors.FileDescriptor + descriptor; + static { + java.lang.String[] descriptorData = { + "\n\027proto/user/Friend.proto\022\034net.sopod.soi" + + "m.data.msg.user\032\030proto/user/UserMsg.prot" + + "o\"\033\n\014ReqAddFriend\022\013\n\003fid\030\001 \001(\003\",\n\014ResAdd" + + "Friend\022\017\n\007success\030\001 \001(\010\022\013\n\003msg\030\002 \001(\t\"\017\n\r" + + "ReqFriendList\"H\n\rResFriendList\0227\n\007friend" + + "s\030\006 \003(\0132&.net.sopod.soim.data.msg.user.U" + + "serInfoB\nB\006FriendP\000b\006proto3" + }; + descriptor = com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + net.sopod.soim.data.msg.user.UserMsg.getDescriptor(), + }); + internal_static_net_sopod_soim_data_msg_user_ReqAddFriend_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_net_sopod_soim_data_msg_user_ReqAddFriend_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_net_sopod_soim_data_msg_user_ReqAddFriend_descriptor, + new java.lang.String[] { "Fid", }); + internal_static_net_sopod_soim_data_msg_user_ResAddFriend_descriptor = + getDescriptor().getMessageTypes().get(1); + internal_static_net_sopod_soim_data_msg_user_ResAddFriend_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_net_sopod_soim_data_msg_user_ResAddFriend_descriptor, + new java.lang.String[] { "Success", "Msg", }); + internal_static_net_sopod_soim_data_msg_user_ReqFriendList_descriptor = + getDescriptor().getMessageTypes().get(2); + internal_static_net_sopod_soim_data_msg_user_ReqFriendList_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_net_sopod_soim_data_msg_user_ReqFriendList_descriptor, + new java.lang.String[] { }); + internal_static_net_sopod_soim_data_msg_user_ResFriendList_descriptor = + getDescriptor().getMessageTypes().get(3); + internal_static_net_sopod_soim_data_msg_user_ResFriendList_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_net_sopod_soim_data_msg_user_ResFriendList_descriptor, + new java.lang.String[] { "Friends", }); + net.sopod.soim.data.msg.user.UserMsg.getDescriptor(); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/im-service-api/im-entry-protocol/src/main/java/net/sopod/soim/data/msg/user/UserGroup.java b/im-service-api/im-entry-protocol/src/main/java/net/sopod/soim/data/msg/user/UserGroup.java index 9ec6175..09c0c47 100644 --- a/im-service-api/im-entry-protocol/src/main/java/net/sopod/soim/data/msg/user/UserGroup.java +++ b/im-service-api/im-entry-protocol/src/main/java/net/sopod/soim/data/msg/user/UserGroup.java @@ -637,7 +637,7 @@ public final class UserGroup { * * repeated .net.sopod.soim.data.msg.user.UserInfo users = 2; */ - java.util.List + java.util.List getUsersList(); /** *
@@ -646,7 +646,7 @@ public final class UserGroup {
      *
      * repeated .net.sopod.soim.data.msg.user.UserInfo users = 2;
      */
-    net.sopod.soim.data.msg.user.UserGroup.UserInfo getUsers(int index);
+    net.sopod.soim.data.msg.user.UserMsg.UserInfo getUsers(int index);
     /**
      * 
      * 查询用户列表
@@ -662,7 +662,7 @@ public final class UserGroup {
      *
      * repeated .net.sopod.soim.data.msg.user.UserInfo users = 2;
      */
-    java.util.List 
+    java.util.List 
         getUsersOrBuilderList();
     /**
      * 
@@ -671,7 +671,7 @@ public final class UserGroup {
      *
      * repeated .net.sopod.soim.data.msg.user.UserInfo users = 2;
      */
-    net.sopod.soim.data.msg.user.UserGroup.UserInfoOrBuilder getUsersOrBuilder(
+    net.sopod.soim.data.msg.user.UserMsg.UserInfoOrBuilder getUsersOrBuilder(
         int index);
   }
   /**
@@ -727,11 +727,11 @@ public final class UserGroup {
               break;
             case 18: {
               if (!((mutable_bitField0_ & 0x00000001) != 0)) {
-                users_ = new java.util.ArrayList();
+                users_ = new java.util.ArrayList();
                 mutable_bitField0_ |= 0x00000001;
               }
               users_.add(
-                  input.readMessage(net.sopod.soim.data.msg.user.UserGroup.UserInfo.parser(), extensionRegistry));
+                  input.readMessage(net.sopod.soim.data.msg.user.UserMsg.UserInfo.parser(), extensionRegistry));
               break;
             }
             default: {
@@ -770,7 +770,7 @@ public final class UserGroup {
     }
 
     public static final int USERS_FIELD_NUMBER = 2;
-    private java.util.List users_;
+    private java.util.List users_;
     /**
      * 
      * 查询用户列表
@@ -779,7 +779,7 @@ public final class UserGroup {
      * repeated .net.sopod.soim.data.msg.user.UserInfo users = 2;
      */
     @java.lang.Override
-    public java.util.List getUsersList() {
+    public java.util.List getUsersList() {
       return users_;
     }
     /**
@@ -790,7 +790,7 @@ public final class UserGroup {
      * repeated .net.sopod.soim.data.msg.user.UserInfo users = 2;
      */
     @java.lang.Override
-    public java.util.List 
+    public java.util.List 
         getUsersOrBuilderList() {
       return users_;
     }
@@ -813,7 +813,7 @@ public final class UserGroup {
      * repeated .net.sopod.soim.data.msg.user.UserInfo users = 2;
      */
     @java.lang.Override
-    public net.sopod.soim.data.msg.user.UserGroup.UserInfo getUsers(int index) {
+    public net.sopod.soim.data.msg.user.UserMsg.UserInfo getUsers(int index) {
       return users_.get(index);
     }
     /**
@@ -824,7 +824,7 @@ public final class UserGroup {
      * repeated .net.sopod.soim.data.msg.user.UserInfo users = 2;
      */
     @java.lang.Override
-    public net.sopod.soim.data.msg.user.UserGroup.UserInfoOrBuilder getUsersOrBuilder(
+    public net.sopod.soim.data.msg.user.UserMsg.UserInfoOrBuilder getUsersOrBuilder(
         int index) {
       return users_.get(index);
     }
@@ -1175,17 +1175,17 @@ public final class UserGroup {
       }
       private int bitField0_;
 
-      private java.util.List users_ =
+      private java.util.List users_ =
         java.util.Collections.emptyList();
       private void ensureUsersIsMutable() {
         if (!((bitField0_ & 0x00000001) != 0)) {
-          users_ = new java.util.ArrayList(users_);
+          users_ = new java.util.ArrayList(users_);
           bitField0_ |= 0x00000001;
          }
       }
 
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          net.sopod.soim.data.msg.user.UserGroup.UserInfo, net.sopod.soim.data.msg.user.UserGroup.UserInfo.Builder, net.sopod.soim.data.msg.user.UserGroup.UserInfoOrBuilder> usersBuilder_;
+          net.sopod.soim.data.msg.user.UserMsg.UserInfo, net.sopod.soim.data.msg.user.UserMsg.UserInfo.Builder, net.sopod.soim.data.msg.user.UserMsg.UserInfoOrBuilder> usersBuilder_;
 
       /**
        * 
@@ -1194,7 +1194,7 @@ public final class UserGroup {
        *
        * repeated .net.sopod.soim.data.msg.user.UserInfo users = 2;
        */
-      public java.util.List getUsersList() {
+      public java.util.List getUsersList() {
         if (usersBuilder_ == null) {
           return java.util.Collections.unmodifiableList(users_);
         } else {
@@ -1222,7 +1222,7 @@ public final class UserGroup {
        *
        * repeated .net.sopod.soim.data.msg.user.UserInfo users = 2;
        */
-      public net.sopod.soim.data.msg.user.UserGroup.UserInfo getUsers(int index) {
+      public net.sopod.soim.data.msg.user.UserMsg.UserInfo getUsers(int index) {
         if (usersBuilder_ == null) {
           return users_.get(index);
         } else {
@@ -1237,7 +1237,7 @@ public final class UserGroup {
        * repeated .net.sopod.soim.data.msg.user.UserInfo users = 2;
        */
       public Builder setUsers(
-          int index, net.sopod.soim.data.msg.user.UserGroup.UserInfo value) {
+          int index, net.sopod.soim.data.msg.user.UserMsg.UserInfo value) {
         if (usersBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -1258,7 +1258,7 @@ public final class UserGroup {
        * repeated .net.sopod.soim.data.msg.user.UserInfo users = 2;
        */
       public Builder setUsers(
-          int index, net.sopod.soim.data.msg.user.UserGroup.UserInfo.Builder builderForValue) {
+          int index, net.sopod.soim.data.msg.user.UserMsg.UserInfo.Builder builderForValue) {
         if (usersBuilder_ == null) {
           ensureUsersIsMutable();
           users_.set(index, builderForValue.build());
@@ -1275,7 +1275,7 @@ public final class UserGroup {
        *
        * repeated .net.sopod.soim.data.msg.user.UserInfo users = 2;
        */
-      public Builder addUsers(net.sopod.soim.data.msg.user.UserGroup.UserInfo value) {
+      public Builder addUsers(net.sopod.soim.data.msg.user.UserMsg.UserInfo value) {
         if (usersBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -1296,7 +1296,7 @@ public final class UserGroup {
        * repeated .net.sopod.soim.data.msg.user.UserInfo users = 2;
        */
       public Builder addUsers(
-          int index, net.sopod.soim.data.msg.user.UserGroup.UserInfo value) {
+          int index, net.sopod.soim.data.msg.user.UserMsg.UserInfo value) {
         if (usersBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
@@ -1317,7 +1317,7 @@ public final class UserGroup {
        * repeated .net.sopod.soim.data.msg.user.UserInfo users = 2;
        */
       public Builder addUsers(
-          net.sopod.soim.data.msg.user.UserGroup.UserInfo.Builder builderForValue) {
+          net.sopod.soim.data.msg.user.UserMsg.UserInfo.Builder builderForValue) {
         if (usersBuilder_ == null) {
           ensureUsersIsMutable();
           users_.add(builderForValue.build());
@@ -1335,7 +1335,7 @@ public final class UserGroup {
        * repeated .net.sopod.soim.data.msg.user.UserInfo users = 2;
        */
       public Builder addUsers(
-          int index, net.sopod.soim.data.msg.user.UserGroup.UserInfo.Builder builderForValue) {
+          int index, net.sopod.soim.data.msg.user.UserMsg.UserInfo.Builder builderForValue) {
         if (usersBuilder_ == null) {
           ensureUsersIsMutable();
           users_.add(index, builderForValue.build());
@@ -1353,7 +1353,7 @@ public final class UserGroup {
        * repeated .net.sopod.soim.data.msg.user.UserInfo users = 2;
        */
       public Builder addAllUsers(
-          java.lang.Iterable values) {
+          java.lang.Iterable values) {
         if (usersBuilder_ == null) {
           ensureUsersIsMutable();
           com.google.protobuf.AbstractMessageLite.Builder.addAll(
@@ -1405,7 +1405,7 @@ public final class UserGroup {
        *
        * repeated .net.sopod.soim.data.msg.user.UserInfo users = 2;
        */
-      public net.sopod.soim.data.msg.user.UserGroup.UserInfo.Builder getUsersBuilder(
+      public net.sopod.soim.data.msg.user.UserMsg.UserInfo.Builder getUsersBuilder(
           int index) {
         return getUsersFieldBuilder().getBuilder(index);
       }
@@ -1416,7 +1416,7 @@ public final class UserGroup {
        *
        * repeated .net.sopod.soim.data.msg.user.UserInfo users = 2;
        */
-      public net.sopod.soim.data.msg.user.UserGroup.UserInfoOrBuilder getUsersOrBuilder(
+      public net.sopod.soim.data.msg.user.UserMsg.UserInfoOrBuilder getUsersOrBuilder(
           int index) {
         if (usersBuilder_ == null) {
           return users_.get(index);  } else {
@@ -1430,7 +1430,7 @@ public final class UserGroup {
        *
        * repeated .net.sopod.soim.data.msg.user.UserInfo users = 2;
        */
-      public java.util.List 
+      public java.util.List 
            getUsersOrBuilderList() {
         if (usersBuilder_ != null) {
           return usersBuilder_.getMessageOrBuilderList();
@@ -1445,9 +1445,9 @@ public final class UserGroup {
        *
        * repeated .net.sopod.soim.data.msg.user.UserInfo users = 2;
        */
-      public net.sopod.soim.data.msg.user.UserGroup.UserInfo.Builder addUsersBuilder() {
+      public net.sopod.soim.data.msg.user.UserMsg.UserInfo.Builder addUsersBuilder() {
         return getUsersFieldBuilder().addBuilder(
-            net.sopod.soim.data.msg.user.UserGroup.UserInfo.getDefaultInstance());
+            net.sopod.soim.data.msg.user.UserMsg.UserInfo.getDefaultInstance());
       }
       /**
        * 
@@ -1456,10 +1456,10 @@ public final class UserGroup {
        *
        * repeated .net.sopod.soim.data.msg.user.UserInfo users = 2;
        */
-      public net.sopod.soim.data.msg.user.UserGroup.UserInfo.Builder addUsersBuilder(
+      public net.sopod.soim.data.msg.user.UserMsg.UserInfo.Builder addUsersBuilder(
           int index) {
         return getUsersFieldBuilder().addBuilder(
-            index, net.sopod.soim.data.msg.user.UserGroup.UserInfo.getDefaultInstance());
+            index, net.sopod.soim.data.msg.user.UserMsg.UserInfo.getDefaultInstance());
       }
       /**
        * 
@@ -1468,16 +1468,16 @@ public final class UserGroup {
        *
        * repeated .net.sopod.soim.data.msg.user.UserInfo users = 2;
        */
-      public java.util.List 
+      public java.util.List 
            getUsersBuilderList() {
         return getUsersFieldBuilder().getBuilderList();
       }
       private com.google.protobuf.RepeatedFieldBuilderV3<
-          net.sopod.soim.data.msg.user.UserGroup.UserInfo, net.sopod.soim.data.msg.user.UserGroup.UserInfo.Builder, net.sopod.soim.data.msg.user.UserGroup.UserInfoOrBuilder> 
+          net.sopod.soim.data.msg.user.UserMsg.UserInfo, net.sopod.soim.data.msg.user.UserMsg.UserInfo.Builder, net.sopod.soim.data.msg.user.UserMsg.UserInfoOrBuilder> 
           getUsersFieldBuilder() {
         if (usersBuilder_ == null) {
           usersBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
-              net.sopod.soim.data.msg.user.UserGroup.UserInfo, net.sopod.soim.data.msg.user.UserGroup.UserInfo.Builder, net.sopod.soim.data.msg.user.UserGroup.UserInfoOrBuilder>(
+              net.sopod.soim.data.msg.user.UserMsg.UserInfo, net.sopod.soim.data.msg.user.UserMsg.UserInfo.Builder, net.sopod.soim.data.msg.user.UserMsg.UserInfoOrBuilder>(
                   users_,
                   ((bitField0_ & 0x00000001) != 0),
                   getParentForChildren(),
@@ -1539,795 +1539,6 @@ public final class UserGroup {
 
   }
 
-  public interface UserInfoOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:net.sopod.soim.data.msg.user.UserInfo)
-      com.google.protobuf.MessageOrBuilder {
-
-    /**
-     * int64 uid = 1;
-     * @return The uid.
-     */
-    long getUid();
-
-    /**
-     * string account = 2;
-     * @return The account.
-     */
-    java.lang.String getAccount();
-    /**
-     * string account = 2;
-     * @return The bytes for account.
-     */
-    com.google.protobuf.ByteString
-        getAccountBytes();
-
-    /**
-     * string nickname = 3;
-     * @return The nickname.
-     */
-    java.lang.String getNickname();
-    /**
-     * string nickname = 3;
-     * @return The bytes for nickname.
-     */
-    com.google.protobuf.ByteString
-        getNicknameBytes();
-  }
-  /**
-   * Protobuf type {@code net.sopod.soim.data.msg.user.UserInfo}
-   */
-  public static final class UserInfo extends
-      com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:net.sopod.soim.data.msg.user.UserInfo)
-      UserInfoOrBuilder {
-  private static final long serialVersionUID = 0L;
-    // Use UserInfo.newBuilder() to construct.
-    private UserInfo(com.google.protobuf.GeneratedMessageV3.Builder builder) {
-      super(builder);
-    }
-    private UserInfo() {
-      account_ = "";
-      nickname_ = "";
-    }
-
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new UserInfo();
-    }
-
-    @java.lang.Override
-    public final com.google.protobuf.UnknownFieldSet
-    getUnknownFields() {
-      return this.unknownFields;
-    }
-    private UserInfo(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
-      try {
-        boolean done = false;
-        while (!done) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              done = true;
-              break;
-            case 8: {
-
-              uid_ = input.readInt64();
-              break;
-            }
-            case 18: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              account_ = s;
-              break;
-            }
-            case 26: {
-              java.lang.String s = input.readStringRequireUtf8();
-
-              nickname_ = s;
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
-          }
-        }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(
-            e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
-      }
-    }
-    public static final com.google.protobuf.Descriptors.Descriptor
-        getDescriptor() {
-      return net.sopod.soim.data.msg.user.UserGroup.internal_static_net_sopod_soim_data_msg_user_UserInfo_descriptor;
-    }
-
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return net.sopod.soim.data.msg.user.UserGroup.internal_static_net_sopod_soim_data_msg_user_UserInfo_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              net.sopod.soim.data.msg.user.UserGroup.UserInfo.class, net.sopod.soim.data.msg.user.UserGroup.UserInfo.Builder.class);
-    }
-
-    public static final int UID_FIELD_NUMBER = 1;
-    private long uid_;
-    /**
-     * int64 uid = 1;
-     * @return The uid.
-     */
-    @java.lang.Override
-    public long getUid() {
-      return uid_;
-    }
-
-    public static final int ACCOUNT_FIELD_NUMBER = 2;
-    private volatile java.lang.Object account_;
-    /**
-     * string account = 2;
-     * @return The account.
-     */
-    @java.lang.Override
-    public java.lang.String getAccount() {
-      java.lang.Object ref = account_;
-      if (ref instanceof java.lang.String) {
-        return (java.lang.String) ref;
-      } else {
-        com.google.protobuf.ByteString bs = 
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        account_ = s;
-        return s;
-      }
-    }
-    /**
-     * string account = 2;
-     * @return The bytes for account.
-     */
-    @java.lang.Override
-    public com.google.protobuf.ByteString
-        getAccountBytes() {
-      java.lang.Object ref = account_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        account_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    public static final int NICKNAME_FIELD_NUMBER = 3;
-    private volatile java.lang.Object nickname_;
-    /**
-     * string nickname = 3;
-     * @return The nickname.
-     */
-    @java.lang.Override
-    public java.lang.String getNickname() {
-      java.lang.Object ref = nickname_;
-      if (ref instanceof java.lang.String) {
-        return (java.lang.String) ref;
-      } else {
-        com.google.protobuf.ByteString bs = 
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        nickname_ = s;
-        return s;
-      }
-    }
-    /**
-     * string nickname = 3;
-     * @return The bytes for nickname.
-     */
-    @java.lang.Override
-    public com.google.protobuf.ByteString
-        getNicknameBytes() {
-      java.lang.Object ref = nickname_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        nickname_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    private byte memoizedIsInitialized = -1;
-    @java.lang.Override
-    public final boolean isInitialized() {
-      byte isInitialized = memoizedIsInitialized;
-      if (isInitialized == 1) return true;
-      if (isInitialized == 0) return false;
-
-      memoizedIsInitialized = 1;
-      return true;
-    }
-
-    @java.lang.Override
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      if (uid_ != 0L) {
-        output.writeInt64(1, uid_);
-      }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(account_)) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, account_);
-      }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(nickname_)) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, nickname_);
-      }
-      unknownFields.writeTo(output);
-    }
-
-    @java.lang.Override
-    public int getSerializedSize() {
-      int size = memoizedSize;
-      if (size != -1) return size;
-
-      size = 0;
-      if (uid_ != 0L) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeInt64Size(1, uid_);
-      }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(account_)) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, account_);
-      }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(nickname_)) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, nickname_);
-      }
-      size += unknownFields.getSerializedSize();
-      memoizedSize = size;
-      return size;
-    }
-
-    @java.lang.Override
-    public boolean equals(final java.lang.Object obj) {
-      if (obj == this) {
-       return true;
-      }
-      if (!(obj instanceof net.sopod.soim.data.msg.user.UserGroup.UserInfo)) {
-        return super.equals(obj);
-      }
-      net.sopod.soim.data.msg.user.UserGroup.UserInfo other = (net.sopod.soim.data.msg.user.UserGroup.UserInfo) obj;
-
-      if (getUid()
-          != other.getUid()) return false;
-      if (!getAccount()
-          .equals(other.getAccount())) return false;
-      if (!getNickname()
-          .equals(other.getNickname())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
-    }
-
-    @java.lang.Override
-    public int hashCode() {
-      if (memoizedHashCode != 0) {
-        return memoizedHashCode;
-      }
-      int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
-      hash = (37 * hash) + UID_FIELD_NUMBER;
-      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
-          getUid());
-      hash = (37 * hash) + ACCOUNT_FIELD_NUMBER;
-      hash = (53 * hash) + getAccount().hashCode();
-      hash = (37 * hash) + NICKNAME_FIELD_NUMBER;
-      hash = (53 * hash) + getNickname().hashCode();
-      hash = (29 * hash) + unknownFields.hashCode();
-      memoizedHashCode = hash;
-      return hash;
-    }
-
-    public static net.sopod.soim.data.msg.user.UserGroup.UserInfo parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static net.sopod.soim.data.msg.user.UserGroup.UserInfo parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static net.sopod.soim.data.msg.user.UserGroup.UserInfo parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static net.sopod.soim.data.msg.user.UserGroup.UserInfo parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static net.sopod.soim.data.msg.user.UserGroup.UserInfo parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static net.sopod.soim.data.msg.user.UserGroup.UserInfo parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static net.sopod.soim.data.msg.user.UserGroup.UserInfo parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static net.sopod.soim.data.msg.user.UserGroup.UserInfo parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static net.sopod.soim.data.msg.user.UserGroup.UserInfo parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input);
-    }
-    public static net.sopod.soim.data.msg.user.UserGroup.UserInfo parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
-    }
-    public static net.sopod.soim.data.msg.user.UserGroup.UserInfo parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input);
-    }
-    public static net.sopod.soim.data.msg.user.UserGroup.UserInfo parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return com.google.protobuf.GeneratedMessageV3
-          .parseWithIOException(PARSER, input, extensionRegistry);
-    }
-
-    @java.lang.Override
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder() {
-      return DEFAULT_INSTANCE.toBuilder();
-    }
-    public static Builder newBuilder(net.sopod.soim.data.msg.user.UserGroup.UserInfo prototype) {
-      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
-    }
-    @java.lang.Override
-    public Builder toBuilder() {
-      return this == DEFAULT_INSTANCE
-          ? new Builder() : new Builder().mergeFrom(this);
-    }
-
-    @java.lang.Override
-    protected Builder newBuilderForType(
-        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-      Builder builder = new Builder(parent);
-      return builder;
-    }
-    /**
-     * Protobuf type {@code net.sopod.soim.data.msg.user.UserInfo}
-     */
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageV3.Builder implements
-        // @@protoc_insertion_point(builder_implements:net.sopod.soim.data.msg.user.UserInfo)
-        net.sopod.soim.data.msg.user.UserGroup.UserInfoOrBuilder {
-      public static final com.google.protobuf.Descriptors.Descriptor
-          getDescriptor() {
-        return net.sopod.soim.data.msg.user.UserGroup.internal_static_net_sopod_soim_data_msg_user_UserInfo_descriptor;
-      }
-
-      @java.lang.Override
-      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-          internalGetFieldAccessorTable() {
-        return net.sopod.soim.data.msg.user.UserGroup.internal_static_net_sopod_soim_data_msg_user_UserInfo_fieldAccessorTable
-            .ensureFieldAccessorsInitialized(
-                net.sopod.soim.data.msg.user.UserGroup.UserInfo.class, net.sopod.soim.data.msg.user.UserGroup.UserInfo.Builder.class);
-      }
-
-      // Construct using net.sopod.soim.data.msg.user.UserGroup.UserInfo.newBuilder()
-      private Builder() {
-        maybeForceBuilderInitialization();
-      }
-
-      private Builder(
-          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
-        super(parent);
-        maybeForceBuilderInitialization();
-      }
-      private void maybeForceBuilderInitialization() {
-        if (com.google.protobuf.GeneratedMessageV3
-                .alwaysUseFieldBuilders) {
-        }
-      }
-      @java.lang.Override
-      public Builder clear() {
-        super.clear();
-        uid_ = 0L;
-
-        account_ = "";
-
-        nickname_ = "";
-
-        return this;
-      }
-
-      @java.lang.Override
-      public com.google.protobuf.Descriptors.Descriptor
-          getDescriptorForType() {
-        return net.sopod.soim.data.msg.user.UserGroup.internal_static_net_sopod_soim_data_msg_user_UserInfo_descriptor;
-      }
-
-      @java.lang.Override
-      public net.sopod.soim.data.msg.user.UserGroup.UserInfo getDefaultInstanceForType() {
-        return net.sopod.soim.data.msg.user.UserGroup.UserInfo.getDefaultInstance();
-      }
-
-      @java.lang.Override
-      public net.sopod.soim.data.msg.user.UserGroup.UserInfo build() {
-        net.sopod.soim.data.msg.user.UserGroup.UserInfo result = buildPartial();
-        if (!result.isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return result;
-      }
-
-      @java.lang.Override
-      public net.sopod.soim.data.msg.user.UserGroup.UserInfo buildPartial() {
-        net.sopod.soim.data.msg.user.UserGroup.UserInfo result = new net.sopod.soim.data.msg.user.UserGroup.UserInfo(this);
-        result.uid_ = uid_;
-        result.account_ = account_;
-        result.nickname_ = nickname_;
-        onBuilt();
-        return result;
-      }
-
-      @java.lang.Override
-      public Builder clone() {
-        return super.clone();
-      }
-      @java.lang.Override
-      public Builder setField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
-      }
-      @java.lang.Override
-      public Builder clearField(
-          com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
-      }
-      @java.lang.Override
-      public Builder clearOneof(
-          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
-      }
-      @java.lang.Override
-      public Builder setRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
-      }
-      @java.lang.Override
-      public Builder addRepeatedField(
-          com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
-      }
-      @java.lang.Override
-      public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof net.sopod.soim.data.msg.user.UserGroup.UserInfo) {
-          return mergeFrom((net.sopod.soim.data.msg.user.UserGroup.UserInfo)other);
-        } else {
-          super.mergeFrom(other);
-          return this;
-        }
-      }
-
-      public Builder mergeFrom(net.sopod.soim.data.msg.user.UserGroup.UserInfo other) {
-        if (other == net.sopod.soim.data.msg.user.UserGroup.UserInfo.getDefaultInstance()) return this;
-        if (other.getUid() != 0L) {
-          setUid(other.getUid());
-        }
-        if (!other.getAccount().isEmpty()) {
-          account_ = other.account_;
-          onChanged();
-        }
-        if (!other.getNickname().isEmpty()) {
-          nickname_ = other.nickname_;
-          onChanged();
-        }
-        this.mergeUnknownFields(other.unknownFields);
-        onChanged();
-        return this;
-      }
-
-      @java.lang.Override
-      public final boolean isInitialized() {
-        return true;
-      }
-
-      @java.lang.Override
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        net.sopod.soim.data.msg.user.UserGroup.UserInfo parsedMessage = null;
-        try {
-          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
-        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (net.sopod.soim.data.msg.user.UserGroup.UserInfo) e.getUnfinishedMessage();
-          throw e.unwrapIOException();
-        } finally {
-          if (parsedMessage != null) {
-            mergeFrom(parsedMessage);
-          }
-        }
-        return this;
-      }
-
-      private long uid_ ;
-      /**
-       * int64 uid = 1;
-       * @return The uid.
-       */
-      @java.lang.Override
-      public long getUid() {
-        return uid_;
-      }
-      /**
-       * int64 uid = 1;
-       * @param value The uid to set.
-       * @return This builder for chaining.
-       */
-      public Builder setUid(long value) {
-        
-        uid_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * int64 uid = 1;
-       * @return This builder for chaining.
-       */
-      public Builder clearUid() {
-        
-        uid_ = 0L;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object account_ = "";
-      /**
-       * string account = 2;
-       * @return The account.
-       */
-      public java.lang.String getAccount() {
-        java.lang.Object ref = account_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          account_ = s;
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * string account = 2;
-       * @return The bytes for account.
-       */
-      public com.google.protobuf.ByteString
-          getAccountBytes() {
-        java.lang.Object ref = account_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          account_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * string account = 2;
-       * @param value The account to set.
-       * @return This builder for chaining.
-       */
-      public Builder setAccount(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  
-        account_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * string account = 2;
-       * @return This builder for chaining.
-       */
-      public Builder clearAccount() {
-        
-        account_ = getDefaultInstance().getAccount();
-        onChanged();
-        return this;
-      }
-      /**
-       * string account = 2;
-       * @param value The bytes for account to set.
-       * @return This builder for chaining.
-       */
-      public Builder setAccountBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        account_ = value;
-        onChanged();
-        return this;
-      }
-
-      private java.lang.Object nickname_ = "";
-      /**
-       * string nickname = 3;
-       * @return The nickname.
-       */
-      public java.lang.String getNickname() {
-        java.lang.Object ref = nickname_;
-        if (!(ref instanceof java.lang.String)) {
-          com.google.protobuf.ByteString bs =
-              (com.google.protobuf.ByteString) ref;
-          java.lang.String s = bs.toStringUtf8();
-          nickname_ = s;
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * string nickname = 3;
-       * @return The bytes for nickname.
-       */
-      public com.google.protobuf.ByteString
-          getNicknameBytes() {
-        java.lang.Object ref = nickname_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          nickname_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * string nickname = 3;
-       * @param value The nickname to set.
-       * @return This builder for chaining.
-       */
-      public Builder setNickname(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  
-        nickname_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * string nickname = 3;
-       * @return This builder for chaining.
-       */
-      public Builder clearNickname() {
-        
-        nickname_ = getDefaultInstance().getNickname();
-        onChanged();
-        return this;
-      }
-      /**
-       * string nickname = 3;
-       * @param value The bytes for nickname to set.
-       * @return This builder for chaining.
-       */
-      public Builder setNicknameBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  checkByteStringIsUtf8(value);
-        
-        nickname_ = value;
-        onChanged();
-        return this;
-      }
-      @java.lang.Override
-      public final Builder setUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
-      }
-
-      @java.lang.Override
-      public final Builder mergeUnknownFields(
-          final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
-      }
-
-
-      // @@protoc_insertion_point(builder_scope:net.sopod.soim.data.msg.user.UserInfo)
-    }
-
-    // @@protoc_insertion_point(class_scope:net.sopod.soim.data.msg.user.UserInfo)
-    private static final net.sopod.soim.data.msg.user.UserGroup.UserInfo DEFAULT_INSTANCE;
-    static {
-      DEFAULT_INSTANCE = new net.sopod.soim.data.msg.user.UserGroup.UserInfo();
-    }
-
-    public static net.sopod.soim.data.msg.user.UserGroup.UserInfo getDefaultInstance() {
-      return DEFAULT_INSTANCE;
-    }
-
-    private static final com.google.protobuf.Parser
-        PARSER = new com.google.protobuf.AbstractParser() {
-      @java.lang.Override
-      public UserInfo parsePartialFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        return new UserInfo(input, extensionRegistry);
-      }
-    };
-
-    public static com.google.protobuf.Parser parser() {
-      return PARSER;
-    }
-
-    @java.lang.Override
-    public com.google.protobuf.Parser getParserForType() {
-      return PARSER;
-    }
-
-    @java.lang.Override
-    public net.sopod.soim.data.msg.user.UserGroup.UserInfo getDefaultInstanceForType() {
-      return DEFAULT_INSTANCE;
-    }
-
-  }
-
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_net_sopod_soim_data_msg_user_ReqOnlineUserList_descriptor;
   private static final 
@@ -2338,11 +1549,6 @@ public final class UserGroup {
   private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_net_sopod_soim_data_msg_user_ResOnlineUserList_fieldAccessorTable;
-  private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_net_sopod_soim_data_msg_user_UserInfo_descriptor;
-  private static final 
-    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_net_sopod_soim_data_msg_user_UserInfo_fieldAccessorTable;
 
   public static com.google.protobuf.Descriptors.FileDescriptor
       getDescriptor() {
@@ -2353,17 +1559,16 @@ public final class UserGroup {
   static {
     java.lang.String[] descriptorData = {
       "\n\032proto/user/UserGroup.proto\022\034net.sopod." +
-      "soim.data.msg.user\"$\n\021ReqOnlineUserList\022" +
-      "\017\n\007keyword\030\002 \001(\t\"J\n\021ResOnlineUserList\0225\n" +
-      "\005users\030\002 \003(\0132&.net.sopod.soim.data.msg.u" +
-      "ser.UserInfo\":\n\010UserInfo\022\013\n\003uid\030\001 \001(\003\022\017\n" +
-      "\007account\030\002 \001(\t\022\020\n\010nickname\030\003 \001(\tB+\n\034net." +
-      "sopod.soim.data.msg.userB\tUserGroupP\000b\006p" +
-      "roto3"
+      "soim.data.msg.user\032\030proto/user/UserMsg.p" +
+      "roto\"$\n\021ReqOnlineUserList\022\017\n\007keyword\030\002 \001" +
+      "(\t\"J\n\021ResOnlineUserList\0225\n\005users\030\002 \003(\0132&" +
+      ".net.sopod.soim.data.msg.user.UserInfoB\r" +
+      "B\tUserGroupP\000b\006proto3"
     };
     descriptor = com.google.protobuf.Descriptors.FileDescriptor
       .internalBuildGeneratedFileFrom(descriptorData,
         new com.google.protobuf.Descriptors.FileDescriptor[] {
+          net.sopod.soim.data.msg.user.UserMsg.getDescriptor(),
         });
     internal_static_net_sopod_soim_data_msg_user_ReqOnlineUserList_descriptor =
       getDescriptor().getMessageTypes().get(0);
@@ -2377,12 +1582,7 @@ public final class UserGroup {
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_net_sopod_soim_data_msg_user_ResOnlineUserList_descriptor,
         new java.lang.String[] { "Users", });
-    internal_static_net_sopod_soim_data_msg_user_UserInfo_descriptor =
-      getDescriptor().getMessageTypes().get(2);
-    internal_static_net_sopod_soim_data_msg_user_UserInfo_fieldAccessorTable = new
-      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_net_sopod_soim_data_msg_user_UserInfo_descriptor,
-        new java.lang.String[] { "Uid", "Account", "Nickname", });
+    net.sopod.soim.data.msg.user.UserMsg.getDescriptor();
   }
 
   // @@protoc_insertion_point(outer_class_scope)
diff --git a/im-service-api/im-entry-protocol/src/main/java/net/sopod/soim/data/msg/user/UserMsg.java b/im-service-api/im-entry-protocol/src/main/java/net/sopod/soim/data/msg/user/UserMsg.java
new file mode 100644
index 0000000..391e356
--- /dev/null
+++ b/im-service-api/im-entry-protocol/src/main/java/net/sopod/soim/data/msg/user/UserMsg.java
@@ -0,0 +1,839 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: proto/user/UserMsg.proto
+
+package net.sopod.soim.data.msg.user;
+
+public final class UserMsg {
+  private UserMsg() {}
+  public static void registerAllExtensions(
+      com.google.protobuf.ExtensionRegistryLite registry) {
+  }
+
+  public static void registerAllExtensions(
+      com.google.protobuf.ExtensionRegistry registry) {
+    registerAllExtensions(
+        (com.google.protobuf.ExtensionRegistryLite) registry);
+  }
+  public interface UserInfoOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:net.sopod.soim.data.msg.user.UserInfo)
+      com.google.protobuf.MessageOrBuilder {
+
+    /**
+     * int64 uid = 1;
+     * @return The uid.
+     */
+    long getUid();
+
+    /**
+     * string account = 2;
+     * @return The account.
+     */
+    java.lang.String getAccount();
+    /**
+     * string account = 2;
+     * @return The bytes for account.
+     */
+    com.google.protobuf.ByteString
+        getAccountBytes();
+
+    /**
+     * string nickname = 3;
+     * @return The nickname.
+     */
+    java.lang.String getNickname();
+    /**
+     * string nickname = 3;
+     * @return The bytes for nickname.
+     */
+    com.google.protobuf.ByteString
+        getNicknameBytes();
+  }
+  /**
+   * Protobuf type {@code net.sopod.soim.data.msg.user.UserInfo}
+   */
+  public static final class UserInfo extends
+      com.google.protobuf.GeneratedMessageV3 implements
+      // @@protoc_insertion_point(message_implements:net.sopod.soim.data.msg.user.UserInfo)
+      UserInfoOrBuilder {
+  private static final long serialVersionUID = 0L;
+    // Use UserInfo.newBuilder() to construct.
+    private UserInfo(com.google.protobuf.GeneratedMessageV3.Builder builder) {
+      super(builder);
+    }
+    private UserInfo() {
+      account_ = "";
+      nickname_ = "";
+    }
+
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new UserInfo();
+    }
+
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+    getUnknownFields() {
+      return this.unknownFields;
+    }
+    private UserInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      this();
+      if (extensionRegistry == null) {
+        throw new java.lang.NullPointerException();
+      }
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            case 8: {
+
+              uid_ = input.readInt64();
+              break;
+            }
+            case 18: {
+              java.lang.String s = input.readStringRequireUtf8();
+
+              account_ = s;
+              break;
+            }
+            case 26: {
+              java.lang.String s = input.readStringRequireUtf8();
+
+              nickname_ = s;
+              break;
+            }
+            default: {
+              if (!parseUnknownField(
+                  input, unknownFields, extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return net.sopod.soim.data.msg.user.UserMsg.internal_static_net_sopod_soim_data_msg_user_UserInfo_descriptor;
+    }
+
+    @java.lang.Override
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return net.sopod.soim.data.msg.user.UserMsg.internal_static_net_sopod_soim_data_msg_user_UserInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              net.sopod.soim.data.msg.user.UserMsg.UserInfo.class, net.sopod.soim.data.msg.user.UserMsg.UserInfo.Builder.class);
+    }
+
+    public static final int UID_FIELD_NUMBER = 1;
+    private long uid_;
+    /**
+     * int64 uid = 1;
+     * @return The uid.
+     */
+    @java.lang.Override
+    public long getUid() {
+      return uid_;
+    }
+
+    public static final int ACCOUNT_FIELD_NUMBER = 2;
+    private volatile java.lang.Object account_;
+    /**
+     * string account = 2;
+     * @return The account.
+     */
+    @java.lang.Override
+    public java.lang.String getAccount() {
+      java.lang.Object ref = account_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        account_ = s;
+        return s;
+      }
+    }
+    /**
+     * string account = 2;
+     * @return The bytes for account.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getAccountBytes() {
+      java.lang.Object ref = account_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        account_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int NICKNAME_FIELD_NUMBER = 3;
+    private volatile java.lang.Object nickname_;
+    /**
+     * string nickname = 3;
+     * @return The nickname.
+     */
+    @java.lang.Override
+    public java.lang.String getNickname() {
+      java.lang.Object ref = nickname_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        nickname_ = s;
+        return s;
+      }
+    }
+    /**
+     * string nickname = 3;
+     * @return The bytes for nickname.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getNicknameBytes() {
+      java.lang.Object ref = nickname_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        nickname_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private byte memoizedIsInitialized = -1;
+    @java.lang.Override
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
+
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    @java.lang.Override
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      if (uid_ != 0L) {
+        output.writeInt64(1, uid_);
+      }
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(account_)) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, account_);
+      }
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(nickname_)) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, nickname_);
+      }
+      unknownFields.writeTo(output);
+    }
+
+    @java.lang.Override
+    public int getSerializedSize() {
+      int size = memoizedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (uid_ != 0L) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeInt64Size(1, uid_);
+      }
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(account_)) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, account_);
+      }
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(nickname_)) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, nickname_);
+      }
+      size += unknownFields.getSerializedSize();
+      memoizedSize = size;
+      return size;
+    }
+
+    @java.lang.Override
+    public boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
+      }
+      if (!(obj instanceof net.sopod.soim.data.msg.user.UserMsg.UserInfo)) {
+        return super.equals(obj);
+      }
+      net.sopod.soim.data.msg.user.UserMsg.UserInfo other = (net.sopod.soim.data.msg.user.UserMsg.UserInfo) obj;
+
+      if (getUid()
+          != other.getUid()) return false;
+      if (!getAccount()
+          .equals(other.getAccount())) return false;
+      if (!getNickname()
+          .equals(other.getNickname())) return false;
+      if (!unknownFields.equals(other.unknownFields)) return false;
+      return true;
+    }
+
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptor().hashCode();
+      hash = (37 * hash) + UID_FIELD_NUMBER;
+      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+          getUid());
+      hash = (37 * hash) + ACCOUNT_FIELD_NUMBER;
+      hash = (53 * hash) + getAccount().hashCode();
+      hash = (37 * hash) + NICKNAME_FIELD_NUMBER;
+      hash = (53 * hash) + getNickname().hashCode();
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static net.sopod.soim.data.msg.user.UserMsg.UserInfo parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static net.sopod.soim.data.msg.user.UserMsg.UserInfo parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static net.sopod.soim.data.msg.user.UserMsg.UserInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static net.sopod.soim.data.msg.user.UserMsg.UserInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static net.sopod.soim.data.msg.user.UserMsg.UserInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static net.sopod.soim.data.msg.user.UserMsg.UserInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static net.sopod.soim.data.msg.user.UserMsg.UserInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static net.sopod.soim.data.msg.user.UserMsg.UserInfo parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+    public static net.sopod.soim.data.msg.user.UserMsg.UserInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
+    }
+    public static net.sopod.soim.data.msg.user.UserMsg.UserInfo parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+    }
+    public static net.sopod.soim.data.msg.user.UserMsg.UserInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static net.sopod.soim.data.msg.user.UserMsg.UserInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    @java.lang.Override
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
+    public static Builder newBuilder(net.sopod.soim.data.msg.user.UserMsg.UserInfo prototype) {
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+    @java.lang.Override
+    public Builder toBuilder() {
+      return this == DEFAULT_INSTANCE
+          ? new Builder() : new Builder().mergeFrom(this);
+    }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code net.sopod.soim.data.msg.user.UserInfo}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageV3.Builder implements
+        // @@protoc_insertion_point(builder_implements:net.sopod.soim.data.msg.user.UserInfo)
+        net.sopod.soim.data.msg.user.UserMsg.UserInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return net.sopod.soim.data.msg.user.UserMsg.internal_static_net_sopod_soim_data_msg_user_UserInfo_descriptor;
+      }
+
+      @java.lang.Override
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return net.sopod.soim.data.msg.user.UserMsg.internal_static_net_sopod_soim_data_msg_user_UserInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                net.sopod.soim.data.msg.user.UserMsg.UserInfo.class, net.sopod.soim.data.msg.user.UserMsg.UserInfo.Builder.class);
+      }
+
+      // Construct using net.sopod.soim.data.msg.user.UserMsg.UserInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessageV3
+                .alwaysUseFieldBuilders) {
+        }
+      }
+      @java.lang.Override
+      public Builder clear() {
+        super.clear();
+        uid_ = 0L;
+
+        account_ = "";
+
+        nickname_ = "";
+
+        return this;
+      }
+
+      @java.lang.Override
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return net.sopod.soim.data.msg.user.UserMsg.internal_static_net_sopod_soim_data_msg_user_UserInfo_descriptor;
+      }
+
+      @java.lang.Override
+      public net.sopod.soim.data.msg.user.UserMsg.UserInfo getDefaultInstanceForType() {
+        return net.sopod.soim.data.msg.user.UserMsg.UserInfo.getDefaultInstance();
+      }
+
+      @java.lang.Override
+      public net.sopod.soim.data.msg.user.UserMsg.UserInfo build() {
+        net.sopod.soim.data.msg.user.UserMsg.UserInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      @java.lang.Override
+      public net.sopod.soim.data.msg.user.UserMsg.UserInfo buildPartial() {
+        net.sopod.soim.data.msg.user.UserMsg.UserInfo result = new net.sopod.soim.data.msg.user.UserMsg.UserInfo(this);
+        result.uid_ = uid_;
+        result.account_ = account_;
+        result.nickname_ = nickname_;
+        onBuilt();
+        return result;
+      }
+
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
+      @java.lang.Override
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof net.sopod.soim.data.msg.user.UserMsg.UserInfo) {
+          return mergeFrom((net.sopod.soim.data.msg.user.UserMsg.UserInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(net.sopod.soim.data.msg.user.UserMsg.UserInfo other) {
+        if (other == net.sopod.soim.data.msg.user.UserMsg.UserInfo.getDefaultInstance()) return this;
+        if (other.getUid() != 0L) {
+          setUid(other.getUid());
+        }
+        if (!other.getAccount().isEmpty()) {
+          account_ = other.account_;
+          onChanged();
+        }
+        if (!other.getNickname().isEmpty()) {
+          nickname_ = other.nickname_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.unknownFields);
+        onChanged();
+        return this;
+      }
+
+      @java.lang.Override
+      public final boolean isInitialized() {
+        return true;
+      }
+
+      @java.lang.Override
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        net.sopod.soim.data.msg.user.UserMsg.UserInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (net.sopod.soim.data.msg.user.UserMsg.UserInfo) e.getUnfinishedMessage();
+          throw e.unwrapIOException();
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+
+      private long uid_ ;
+      /**
+       * int64 uid = 1;
+       * @return The uid.
+       */
+      @java.lang.Override
+      public long getUid() {
+        return uid_;
+      }
+      /**
+       * int64 uid = 1;
+       * @param value The uid to set.
+       * @return This builder for chaining.
+       */
+      public Builder setUid(long value) {
+        
+        uid_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * int64 uid = 1;
+       * @return This builder for chaining.
+       */
+      public Builder clearUid() {
+        
+        uid_ = 0L;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object account_ = "";
+      /**
+       * string account = 2;
+       * @return The account.
+       */
+      public java.lang.String getAccount() {
+        java.lang.Object ref = account_;
+        if (!(ref instanceof java.lang.String)) {
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          account_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * string account = 2;
+       * @return The bytes for account.
+       */
+      public com.google.protobuf.ByteString
+          getAccountBytes() {
+        java.lang.Object ref = account_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          account_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * string account = 2;
+       * @param value The account to set.
+       * @return This builder for chaining.
+       */
+      public Builder setAccount(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  
+        account_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * string account = 2;
+       * @return This builder for chaining.
+       */
+      public Builder clearAccount() {
+        
+        account_ = getDefaultInstance().getAccount();
+        onChanged();
+        return this;
+      }
+      /**
+       * string account = 2;
+       * @param value The bytes for account to set.
+       * @return This builder for chaining.
+       */
+      public Builder setAccountBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
+        
+        account_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object nickname_ = "";
+      /**
+       * string nickname = 3;
+       * @return The nickname.
+       */
+      public java.lang.String getNickname() {
+        java.lang.Object ref = nickname_;
+        if (!(ref instanceof java.lang.String)) {
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          nickname_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * string nickname = 3;
+       * @return The bytes for nickname.
+       */
+      public com.google.protobuf.ByteString
+          getNicknameBytes() {
+        java.lang.Object ref = nickname_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          nickname_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * string nickname = 3;
+       * @param value The nickname to set.
+       * @return This builder for chaining.
+       */
+      public Builder setNickname(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  
+        nickname_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * string nickname = 3;
+       * @return This builder for chaining.
+       */
+      public Builder clearNickname() {
+        
+        nickname_ = getDefaultInstance().getNickname();
+        onChanged();
+        return this;
+      }
+      /**
+       * string nickname = 3;
+       * @param value The bytes for nickname to set.
+       * @return This builder for chaining.
+       */
+      public Builder setNicknameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
+        
+        nickname_ = value;
+        onChanged();
+        return this;
+      }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
+
+      // @@protoc_insertion_point(builder_scope:net.sopod.soim.data.msg.user.UserInfo)
+    }
+
+    // @@protoc_insertion_point(class_scope:net.sopod.soim.data.msg.user.UserInfo)
+    private static final net.sopod.soim.data.msg.user.UserMsg.UserInfo DEFAULT_INSTANCE;
+    static {
+      DEFAULT_INSTANCE = new net.sopod.soim.data.msg.user.UserMsg.UserInfo();
+    }
+
+    public static net.sopod.soim.data.msg.user.UserMsg.UserInfo getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    private static final com.google.protobuf.Parser
+        PARSER = new com.google.protobuf.AbstractParser() {
+      @java.lang.Override
+      public UserInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new UserInfo(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser getParserForType() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public net.sopod.soim.data.msg.user.UserMsg.UserInfo getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
+  }
+
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_net_sopod_soim_data_msg_user_UserInfo_descriptor;
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_net_sopod_soim_data_msg_user_UserInfo_fieldAccessorTable;
+
+  public static com.google.protobuf.Descriptors.FileDescriptor
+      getDescriptor() {
+    return descriptor;
+  }
+  private static  com.google.protobuf.Descriptors.FileDescriptor
+      descriptor;
+  static {
+    java.lang.String[] descriptorData = {
+      "\n\030proto/user/UserMsg.proto\022\034net.sopod.so" +
+      "im.data.msg.user\":\n\010UserInfo\022\013\n\003uid\030\001 \001(" +
+      "\003\022\017\n\007account\030\002 \001(\t\022\020\n\010nickname\030\003 \001(\tB)\n\034" +
+      "net.sopod.soim.data.msg.userB\007UserMsgP\000b" +
+      "\006proto3"
+    };
+    descriptor = com.google.protobuf.Descriptors.FileDescriptor
+      .internalBuildGeneratedFileFrom(descriptorData,
+        new com.google.protobuf.Descriptors.FileDescriptor[] {
+        });
+    internal_static_net_sopod_soim_data_msg_user_UserInfo_descriptor =
+      getDescriptor().getMessageTypes().get(0);
+    internal_static_net_sopod_soim_data_msg_user_UserInfo_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_net_sopod_soim_data_msg_user_UserInfo_descriptor,
+        new java.lang.String[] { "Uid", "Account", "Nickname", });
+  }
+
+  // @@protoc_insertion_point(outer_class_scope)
+}
diff --git a/im-service-api/im-entry-protocol/src/main/resources/proto/user/AccountSearch.proto b/im-service-api/im-entry-protocol/src/main/resources/proto/user/AccountSearch.proto
index b4d5e66..3ee3d71 100644
--- a/im-service-api/im-entry-protocol/src/main/resources/proto/user/AccountSearch.proto
+++ b/im-service-api/im-entry-protocol/src/main/resources/proto/user/AccountSearch.proto
@@ -5,7 +5,7 @@ option java_outer_classname = "AccountSearch";
 
 package net.sopod.soim.data.msg.user;
 
-import "proto/user/UserGroup.proto";
+import "proto/user/UserMsg.proto";
 
 message ReqAccountSearch {
   string keyword = 1;
diff --git a/im-service-api/im-entry-protocol/src/main/resources/proto/user/AddFriend.proto b/im-service-api/im-entry-protocol/src/main/resources/proto/user/AddFriend.proto
deleted file mode 100644
index 14da0e9..0000000
--- a/im-service-api/im-entry-protocol/src/main/resources/proto/user/AddFriend.proto
+++ /dev/null
@@ -1,14 +0,0 @@
-syntax="proto3";
-
-option java_multiple_files = false;
-option java_outer_classname = "AddFriend";
-
-package net.sopod.soim.data.msg.user;
-
-message ReqAddFriend {
-  int64 uid = 1;
-}
-
-message ResAddFriend {
-  bool success = 1;
-}
diff --git a/im-service-api/im-entry-protocol/src/main/resources/proto/user/Friend.proto b/im-service-api/im-entry-protocol/src/main/resources/proto/user/Friend.proto
new file mode 100644
index 0000000..ef93198
--- /dev/null
+++ b/im-service-api/im-entry-protocol/src/main/resources/proto/user/Friend.proto
@@ -0,0 +1,26 @@
+syntax="proto3";
+
+option java_multiple_files = false;
+option java_outer_classname = "Friend";
+
+package net.sopod.soim.data.msg.user;
+
+import "proto/user/UserMsg.proto";
+
+message ReqAddFriend {
+  int64 fid = 1;
+}
+
+message ResAddFriend {
+  bool success = 1;
+  string msg = 2;
+}
+
+
+message ReqFriendList {
+
+}
+
+message ResFriendList {
+  repeated UserInfo friends = 6;
+}
diff --git a/im-service-api/im-entry-protocol/src/main/resources/proto/user/UserGroup.proto b/im-service-api/im-entry-protocol/src/main/resources/proto/user/UserGroup.proto
index 1854171..6ac3060 100644
--- a/im-service-api/im-entry-protocol/src/main/resources/proto/user/UserGroup.proto
+++ b/im-service-api/im-entry-protocol/src/main/resources/proto/user/UserGroup.proto
@@ -1,9 +1,11 @@
 syntax="proto3";
-package net.sopod.soim.data.msg.user;
 
 option java_multiple_files = false;
 option java_outer_classname = "UserGroup";
-option java_package = "net.sopod.soim.data.msg.user";
+
+package net.sopod.soim.data.msg.user;
+
+import "proto/user/UserMsg.proto";
 
 // 请求在线用户列表
 message ReqOnlineUserList {
@@ -14,8 +16,3 @@ message ReqOnlineUserList {
 message ResOnlineUserList {
   repeated UserInfo users = 2; // 查询用户列表
 }
-message UserInfo {
-  int64 uid = 1;
-  string account = 2;
-  string nickname = 3;
-}
diff --git a/im-service-api/im-entry-protocol/src/main/resources/proto/user/UserMsg.proto b/im-service-api/im-entry-protocol/src/main/resources/proto/user/UserMsg.proto
new file mode 100644
index 0000000..b746774
--- /dev/null
+++ b/im-service-api/im-entry-protocol/src/main/resources/proto/user/UserMsg.proto
@@ -0,0 +1,12 @@
+syntax="proto3";
+package net.sopod.soim.data.msg.user;
+
+option java_multiple_files = false;
+option java_outer_classname = "UserMsg";
+option java_package = "net.sopod.soim.data.msg.user";
+
+message UserInfo {
+  int64 uid = 1;
+  string account = 2;
+  string nickname = 3;
+}
\ No newline at end of file
diff --git a/im-service-api/im-entry-protocol/src/main/resources/protoSerialNoTable.txt b/im-service-api/im-entry-protocol/src/main/resources/protoSerialNoTable.txt
index 275654b..32daa53 100644
--- a/im-service-api/im-entry-protocol/src/main/resources/protoSerialNoTable.txt
+++ b/im-service-api/im-entry-protocol/src/main/resources/protoSerialNoTable.txt
@@ -1,15 +1,17 @@
-net.sopod.soim.data.msg.hello.HelloPB$Hello=10000
-net.sopod.soim.data.msg.net.HeartBeat$Ping=10001
-net.sopod.soim.data.msg.user.UserGroup$UserInfo=10002
-net.sopod.soim.data.msg.user.UserGroup$ResOnlineUserList=10003
-net.sopod.soim.data.msg.chat.Chat$TextChat=10004
-net.sopod.soim.data.msg.task.Tasks$NetUserDelayCloseTask=10005
-net.sopod.soim.data.msg.auth.Auth$ResTokenAuth=10006
-net.sopod.soim.data.msg.hello.HelloPB$World=10007
-net.sopod.soim.data.msg.user.AddFriend$ReqAddFriend=10008
-net.sopod.soim.data.msg.user.AddFriend$ResAddFriend=10009
-net.sopod.soim.data.msg.auth.Auth$ReqTokenAuth=10010
-net.sopod.soim.data.msg.user.AccountSearch$ReqAccountSearch=10011
-net.sopod.soim.data.msg.user.UserGroup$ReqOnlineUserList=10012
-net.sopod.soim.data.msg.net.HeartBeat$Pong=10013
-net.sopod.soim.data.msg.user.AccountSearch$ResAccountSearch=10014
+net.sopod.soim.data.msg.user.Friend$ResAddFriend=10000
+net.sopod.soim.data.msg.chat.Chat$TextChat=10001
+net.sopod.soim.data.msg.user.Friend$ReqFriendList=10002
+net.sopod.soim.data.msg.user.AccountSearch$ResAccountSearch=10003
+net.sopod.soim.data.msg.user.UserGroup$ResOnlineUserList=10004
+net.sopod.soim.data.msg.hello.HelloPB$World=10005
+net.sopod.soim.data.msg.net.HeartBeat$Pong=10006
+net.sopod.soim.data.msg.user.AccountSearch$ReqAccountSearch=10007
+net.sopod.soim.data.msg.net.HeartBeat$Ping=10008
+net.sopod.soim.data.msg.user.Friend$ReqAddFriend=10009
+net.sopod.soim.data.msg.task.Tasks$NetUserDelayCloseTask=10010
+net.sopod.soim.data.msg.auth.Auth$ResTokenAuth=10011
+net.sopod.soim.data.msg.user.UserMsg$UserInfo=10012
+net.sopod.soim.data.msg.user.UserGroup$ReqOnlineUserList=10013
+net.sopod.soim.data.msg.auth.Auth$ReqTokenAuth=10014
+net.sopod.soim.data.msg.user.Friend$ResFriendList=10015
+net.sopod.soim.data.msg.hello.HelloPB$Hello=10016
diff --git a/im-service-api/im-logic-user-api/src/main/java/net/sopod/soim/logic/api/user/service/FriendService.java b/im-service-api/im-logic-user-api/src/main/java/net/sopod/soim/logic/api/user/service/FriendService.java
new file mode 100644
index 0000000..a987f31
--- /dev/null
+++ b/im-service-api/im-logic-user-api/src/main/java/net/sopod/soim/logic/api/user/service/FriendService.java
@@ -0,0 +1,27 @@
+package net.sopod.soim.logic.api.user.service;
+
+import net.sopod.soim.logic.common.model.UserInfo;
+
+import java.util.List;
+import java.util.concurrent.CompletableFuture;
+
+/**
+ * FriendService
+ *
+ * @author tmy
+ * @date 2022-05-23 15:42
+ */
+public interface FriendService {
+
+    /**
+     * 添加好友
+     * @return 成功返回 null,失败返回失败原因
+     */
+    CompletableFuture addFriend(Long uid, Long fid);
+
+    /**
+     * 获取好友列表
+     */
+    CompletableFuture> listFriend(Long uid);
+
+}
diff --git a/im-service/im-logic-user/src/main/java/net/sopod/soim/logic/user/service/FriendServiceImpl.java b/im-service/im-logic-user/src/main/java/net/sopod/soim/logic/user/service/FriendServiceImpl.java
new file mode 100644
index 0000000..858499c
--- /dev/null
+++ b/im-service/im-logic-user/src/main/java/net/sopod/soim/logic/user/service/FriendServiceImpl.java
@@ -0,0 +1,59 @@
+package net.sopod.soim.logic.user.service;
+
+import net.sopod.soim.das.user.api.model.entity.ImUser;
+import net.sopod.soim.das.user.api.service.FriendDas;
+import net.sopod.soim.das.user.api.service.UserDas;
+import net.sopod.soim.logic.api.user.service.FriendService;
+import net.sopod.soim.logic.common.model.UserInfo;
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.apache.dubbo.config.annotation.DubboService;
+
+import java.util.List;
+import java.util.concurrent.CompletableFuture;
+import java.util.stream.Collectors;
+
+/**
+ * FriendServiceImpl
+ *
+ * @author tmy
+ * @date 2022-05-23 15:44
+ */
+@DubboService
+public class FriendServiceImpl implements FriendService {
+
+    @DubboReference
+    private FriendDas friendDas;
+
+    @DubboReference
+    private UserDas userDas;
+
+    /**
+     * TODO 幂等性处理
+     */
+    @Override
+    public CompletableFuture addFriend(Long uid, Long fid) {
+        ImUser friend = userDas.getUserById(fid);
+        CompletableFuture future = new CompletableFuture<>();
+        if (friend == null) {
+            return CompletableFuture.completedFuture("不存在的账号");
+        }
+        if (Boolean.TRUE.equals(friendDas.isExists(uid, fid))) {
+            return CompletableFuture.completedFuture("该用户已是你的好友");
+        }
+        // 添加好友数据
+        friendDas.insert(uid, fid);
+        return CompletableFuture.completedFuture(null);
+    }
+
+    @Override
+    public CompletableFuture> listFriend(Long uid) {
+        List imUsers = friendDas.queryAllFriend(uid);
+        List userInfos = imUsers.stream().map(imUser -> new UserInfo()
+                .setUid(imUser.getId())
+                .setAccount(imUser.getAccount())
+                .setNickname(imUser.getNickname())
+        ).collect(Collectors.toList());
+        return CompletableFuture.completedFuture(userInfos);
+    }
+
+}